一、查看apache的相关信息
1、查看apache软件的版本信息:apachectl -V[root@apache bin]# /usr/local/apache2/bin/apachectl -V
Server version: Apache/2.4.7 (Unix)
Server built: Mar 16 2014 21:09:47
Server's Module Magic Number: 20120211:27
Server loaded: APR 1.4.5, APR-UTIL 1.5.3
Compiled using: APR 1.4.5, APR-UTIL 1.5.3
Architecture: 32-bit ---->版本信息
Server MPM: worker
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/usr/local/apache2"
-D SUEXEC_BIN="/usr/local/apache2/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
apachectl -v
[root@apache bin]# /usr/local/apache2/bin/apachectl -v
Server version: Apache/2.4.7 (Unix)
Server built: Mar 16 2014 21:09:47
2、查看已经被编译的模块:apachectl -l
[root@apache bin]# /usr/local/apache2/bin/apachectl -l
Compiled in modules: ----已经安装的模块
core.c
mod_so.c
http_core.c
worker.c
3、使用apachectl程序控制apache
[root@apache bin]# /usr/local/apache2/bin/apachectl -hapachectl程序是apache服务器自带的一个脚本程序,被存放在配置文件httpd.conf指定的ServerRoot目录下的bin目录下,它是用于帮助管理员控制apache的后台程序httpd的工具。可以使用它来完成启动、停止、测试配置文件等工作。
Usage: /usr/local/apache2/bin/httpd [-D name] [-d directory] [-f file]
[-C "directive"] [-c "directive"]
[-k start|restart|graceful|graceful-stop|stop]
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X]
Options:
-D name : define a name for use in <IfDefine name> directives
-d directory : specify an alternate initial ServerRoot
-f file : specify an alternate ServerConfigFile
-C "directive" : process directive before reading config files
-c "directive" : process directive after reading config files
-e level : show startup errors of level (see LogLevel)
-E file : log startup errors to file
-v : show version number
-V : show compile settings
-h : list available command line options (this page)
-l : list compiled in modules
-L : list available configuration directives
-t -D DUMP_VHOSTS : show parsed vhost settings
-t -D DUMP_RUN_CFG : show parsed run settings
-S : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG
-t -D DUMP_MODULES : show all loaded modules
-M : a synonym for -t -D DUMP_MODULES
-t : run syntax check for config files
-T : start without DocumentRoot(s) check
-X : debug mode (only one worker, do not detach)
补充说明:apachectl是slackware内附Apache HTTP服务器的script文件,可供管理员控制服务器,但在其他Linux的Apache HTTP服务器不一定有这个文件。
apachectl程序的参数如下:
(1)start:首先检查httpd的配置文件,如果没有问题,则启动httpd程序,如果已经启动了httpd,则会显示出错信息;
(2)stop:用于停止httpd程序,同样,如果已经停止了httpd,则会显示出错信息;
(3)restart:重启启动httpd,如果httpd没有启动则启动它。同样会在启动前检查httpd的配置文件;
(4)graceful:和start参数一样,区别在于它不会中断当前正在处理的连接,也不会关闭日志。推荐使用;
(5)graceful-stop:和stop参数一样,区别在于它不会中断当前正在处理的连接,也不会关闭日志。推荐使用;
(6)configtest:解析并检查配置文件语法。如果没有问题则报告Syntax OK,如果检查没有通过则显示出语法错误或者是其他详细信息;
(7)status:显示简要的状态报告,类似于fullstatus选项,区别在于省略了正在处理的请求;
(8)fullstatus:显示出由mod_status提供的状态报告,使用此功能需要启动mod_ststus模块,并且安装lynx浏览器。
(9)help:显示帮助信息;
(10)startssl、sshstart、start-SSL:此三项仅仅在早起版本中使用,现在已经废弃了,其作用主要是以SSL方式启动httpd。
二、httpd命令行参数
httpd是apache的主程序,由它来实现apache的所有功能,通过参数可以很好控制它。(1)-D name:通过指定<IfDefine>容器的名称来确实是否使用<IfDefine>容器的内容。
(2)-d directory:指定一个新的ServerRoot目录。例如:
/usr/local/apache2/bin/httpd -C /home/lee
(3)-f file:使用指定的文件作为apache的配置文件。例如:
/usr/local/apache2/bin/httpd -f /usr/local/apache2/conf/httpd.conf
(4)-C "directive":在读取配置文件之前,先处理directive的配置。例如:
/usr/local/apache2/bin/httpd -C "DocumentHome" /home/lee
(5)-c "directive":在读取配置文件之后,再处理directive的配置。例如:
/usr/local/apache2/bin/httpd -c "DocumentHome" /home/lee
(6)-e level:设置LogLevel为level。临时增加出错信息的周详程度,以帮助排错。例如:
/usr/local/apache2/bin/httpd -e warn
(7)-E file:将出错信息送入到一个指定的文件中。例如:
/usr/local/apache2/bin/httpd -E /home/lee/log
(8)-v:显示版本信息及编译时间。例如:
[root@apache bin]# /usr/local/apache2/bin/httpd -v
Server version: Apache/2.4.7 (Unix)
Server built: Mar 16 2014 21:09:47
(9)-V:显示httpd的版本信息以及编译时的参数。例如:
(10)-h:显示命令行的帮助。
(11)-l:列出编译到的Apache中的模块。例如:
(12)-L:列出可以用到的指令的有效参数和使用区域。例如:
(13)-t -D DUMP_VHOSTS:分析配置文件(现在只用于虚拟主机的配置中)。
(14)-S:同-t -D DUMP_VHOSTS
(15)-t -D DUMP_MODULES:显示所有可供加载的模块。例如:
[root@apache ~]# /usr/local/apache2/bin/httpd -t -D DUMP_MODULES(16)-M:同-t -D DUMP_MODULES
Loaded Modules:
core_module (static)
so_module (static)
http_module (static)
mpm_worker_module (static)
authn_file_module (shared)
authn_core_module (shared)
authz_host_module (shared)
authz_groupfile_module (shared)
authz_user_module (shared)
authz_core_module (shared)
access_compat_module (shared)
auth_basic_module (shared)
reqtimeout_module (shared)
filter_module (shared)
mime_module (shared)
log_config_module (shared)
env_module (shared)
headers_module (shared)
setenvif_module (shared)
version_module (shared)
unixd_module (shared)
status_module (shared)
autoindex_module (shared)
dir_module (shared)
alias_module (shared)
userdir_module (shared)
(17)-t:测试配置文件。
三、httpd.conf配置文件
httpd.conf是apache的配置文件,apache中的常见配置主要都是通过修改该文件来实现的,该文件更改后需要重启apache服务使更改的配置生效。httpd.conf配置文件的默认内容如下:
[root@apache conf]# cat httpd.conf
ServerRoot "/usr/local/apache2"
Listen 80
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
#LoadModule authn_socache_module modules/mod_authn_socache.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_dbd_module modules/mod_authz_dbd.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_form_module modules/mod_auth_form.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule allowmethods_module modules/mod_allowmethods.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule cache_disk_module modules/mod_cache_disk.so
#LoadModule cache_socache_module modules/mod_cache_socache.so
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule socache_dbm_module modules/mod_socache_dbm.so
#LoadModule socache_memcache_module modules/mod_socache_memcache.so
#LoadModule macro_module modules/mod_macro.so
#LoadModule dbd_module modules/mod_dbd.so
#LoadModule dumpio_module modules/mod_dumpio.so
#LoadModule buffer_module modules/mod_buffer.so
#LoadModule ratelimit_module modules/mod_ratelimit.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule request_module modules/mod_request.so
#LoadModule include_module modules/mod_include.so
LoadModule filter_module modules/mod_filter.so
#LoadModule substitute_module modules/mod_substitute.so
#LoadModule sed_module modules/mod_sed.so
#LoadModule deflate_module modules/mod_deflate.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule log_debug_module modules/mod_log_debug.so
#LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
#LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
#LoadModule remoteip_module modules/mod_remoteip.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_express_module modules/mod_proxy_express.so
#LoadModule session_module modules/mod_session.so
#LoadModule session_cookie_module modules/mod_session_cookie.so
#LoadModule session_dbd_module modules/mod_session_dbd.so
#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
#LoadModule ssl_module modules/mod_ssl.so
#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
#LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
LoadModule unixd_module modules/mod_unixd.so
#LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule info_module modules/mod_info.so
#LoadModule cgid_module modules/mod_cgid.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
#LoadModule rewrite_module modules/mod_rewrite.so
<IfModule unixd_module>
User daemon
Group daemon
</IfModule>
ServerAdmin you@example.com
ServerName localhost:80
<Directory />
AllowOverride none
Require all denied
</Directory>
DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
<Files ".ht*">
Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" common
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
</IfModule>
<IfModule cgid_module>
</IfModule>
<Directory "/usr/local/apache2/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
(一)与apache网络和系统相关的选项如下:
ServerRoot "/usr/local/apache2" #使用ServerRoot参数设置apache安装目录(二)与Apache文件和目录权限相关的选项如下:
Listen 80 #使用Listen参数设置apache监听端口
<IfModule unixd_module>
User daemon #使用User参数设置apache进程的执行者
Group daemon #使用Group参数设置apache进程执行者所属的用户组
</IfModule>
ServerAdmin you@example.com#使用ServerAdmin参数设置网站管理员的邮箱地址
#使用DocumentRoot参数设置网站根目录(三)与Apache日志相关的选项如下所示:
DocumentRoot "/usr/local/apache2/htdocs"
#使用Directory段设置根目录权限
<Directory />
AllowOverride none
Require all denied
</Directory>
#使用Directory段设置/usr/local/apache2/htdocs目录权限
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
#设置首页为index.html
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
#.ht后缀文件的访问权限控制
<Files ".ht*">
Require all denied
</Files>
#使用ErrorLog参数设置错误日志的位置
ErrorLog "logs/error_log"
#使用LogLevel参数设置错误日志的级别
LogLevel warn
<IfModule log_config_module>
#使用LogFormat参数设置访问日志的格式模板
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
#使用CustomLog参数设置访问日志的位置和格式
CustomLog "logs/access_log" common
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
</IfModule>
<IfModule cgid_module>
</IfModule>
#使用Directory段设置/usr/local/apache2/cgi-bin目录权限
<Directory "/usr/local/apache2/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
#mime模块的相关设置
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>
#ssl模块的相关设置
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
对一些httpd.conf配置文件中一些常用配置选项进行解释:
1、ServerRoot参数
ServerRoot指令用于定义服务器所在的目录,这个路径通常是在编译过程中由“-prefix=ServerRoot”选项来指定的,它作为apache的根目录会包含bin、conf、htdocs等文件夹。如果使用二进制包来安装,那么这个ServerRoot通常位于/etc/apache2目录下,例如:
ServerRoot /etc/apache2也可以在启动apache时使用-d参数来指定一个ServerRoot的位置,不过通常只是用来测试同一个版本的apache在多个环境下的配置,因此在生产环境中不推荐使用这样的方法来启动apache。
2、Listen参数
用来定义apache的监听端口号,默认是80,端口号的范围是0~65535,但0~1024都是为系统服务所保留的,所以不推荐使用。
Listen:80如果使用了除80外的其他端口,那么客户端就需要在访问服务器时加上端口号。
3、User和Group参数
用于定义运行apache服务器的账号和工作组,它用来定义用户请求时所创建的子进程的账号与工作组,并在所定义的账号与工作组的权利范围内工作。
User daemon在Apache启动后可以使用如下命令来查看apache是否使用了daemon来启动子进程。如下:
Group daemon
[root@apache conf]# ps -ef | grep httpd注意:
root 3478 1 0 Mar17 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
daemon 3481 3478 0 Mar17 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
daemon 3482 3478 0 Mar17 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
daemon 3484 3478 0 Mar17 ? 00:00:00 /usr/local/apache2/bin/httpd -k start
root 3836 3778 0 00:35 pts/1 00:00:00 grep httpd
上述列表中有一个httpd的进程的权限是root,这个是apache的主进程。这个进程不响应任何请求,它只是负责通过建立子进程来响应用户请求。
4、ServerAdmin参数
ServerAdmin用于定义当服务器出现错误后提示给客户端的管理员邮件地址。
ServerAdmin lee@mail.com
5、DocumentRoot参数
DocumentRoot用于指定apache所提供页面服务的根目录,这个目录包含了apache所收到的URL请求的根(/)目录。
DocumentRoot /srv/www/httpd/此路径需要使用绝对路径来表示,而不能使用相对路径。如果路径中有空格,那么必须使用引号将它括起来。
6、ErrorLog参数
该参数用于指定记录Apache运行过程中所产生的错误信息的日志文件位置。参数格式如下:
ErrorLog [文件的绝对或者相对路径]
7、LogLevel参数
该参数用于指定LogLevel文件中记录的错误信息的级别,设置不同的级别,输出日志信息的详细程度也会有所变化,参数值设置越往右边,则错误的输出信息越简单,建议值为warn。参数格式如下所示:
LogLevel [debug/info/notice/warn/error/crit/alert/emerg]
四、配置文件的修改
修改配置文件后需要重启Apache服务才能使更改生效。在进行配置文件httpd.conf修改后,为方便用户验证httpd.conf配置文件中的参数是否配置正确,可以使用如下的命令进行测试:apachectl -configtest如果配置文件没有错误,则返回Syntax OK。
如果配置文件出现错误,则会返回如下类似的错误:
Syntax error on line XXXXXXXX
具体的出错信息