1.Apache的主要配置文件:httpd.conf
/etc/httpd/conf/httpd.conf
或者
/usr/local/apache/conf/httpd.conf
httpd.conf的内容:
Serverroot:设置服务器存在的主目录;
LockFile filename:httpd守护进程的加锁文件,一般不需要设置,如果Serverroot是NFS文件系统,就需要修改参数指定本地文件系统中的路径;
ScoreBoardFile file-path:httpd使用ScoreBoardFile来维护进程的内部数据,因此除非要在一台计算机上运行几个Apache服务器,否则不需要修改;
PidFile /var/run/httpd.pid:指定文件记录httpd的守护进程号;
Timeout number:定义客户程序和服务器连接的超时间隔;
KeepAlive on|off:用于支持http1.1版本的一次连接、多次传输功能,这样就可以在一次连接中传递多个http请求;
MaxKeepAliveRequests number:一次连接可以进行的http请求最大数。如果数值为0,将支持在一次连接内进行无限制的传输请求;
KeepAliveTimeout number:测试一次连接中的多次请求传输之间的时间,如果在完成了一次连接之后没有收到客户程序的下一次请求,超过这个间隔值后,就会断开;
StartServers number:服务器启动时建立的进程数量;
MinSpareServers/MinSpareThreads number:服务器最低维持的空进程数;
MaxSpareServers/MaxSpareThreads number:服务器运行时维持的最大空进程数;
MaxClients number:服务器运行时可以同时处理的客户端最大数量;
MaxRequestsPerChil number:设置每个进程可处理的请求数,达到这个数值后,子进程自动销毁,如果设置为0,则永不销毁子进程;
Listen [IP-address:]portnumber:设置apache监听的端口,默认为80;
LoadModule module filename:在apahce安装过程中,被配置为--enable-module=shared的apache模块,会被独立的编译成*.so的动态共享对象。当服务器需要加载这个动态对象时,必须在httpd.conf中使用LoadModule指令,指定在服务器启动或重新启动时被加载;
举例:LoadModule foo_module modules/foo.so
ExtendedStatus On|Off:apache服务器可以通过特殊的http请求,报告自身的运行状态,打开这个ExtendedStatus参数,可以让服务器报告更全面的运行状态信息;
User unix-userid:服务器以root身分启动以后,改变为设置的用户身份运行;
Group unix-grouprid:服务器以root身分启动以后,改变为设置的组身份进行运行;
ServerName 完整的域名/IP地址[:端口号]:默认不需要修改,如果服务器名字解析有问题,在此修改;
ServerAdmin 邮件地址:设置的在返回给客户端的错误信息中要包含的邮件地址;
UseCanonicalName on|off|dns:on-使用ServerName值生成的默认web站点构造服务器的规范名称,off-使用由客户提供的主机头指令的主机名称和端口号为服务器构造默认的web站点,dns-使用dns执行客户连接IP地址搜索时确定的主机名构造服务器默认的web站点;
DocumentRoot /usr/local/apache/htdocs:设置客户端访问服务器时,可允许访问的根目录;
举例:DocumentRoot /usr/web
注意:最后的目录不要加"/"符号。
<Directory 目录路径>...</Directory>:用于封装一组命令,使之仅对某个目录及其子目录生效;
举例:
<Directory /usr/local/apache/htdocs/pics>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Options [+|-]可选项[+|-]可选项...:设置在特定目录中将使用那些服务器特性,默认为ALL;
AllowOverride All|None|指令类型[指令类型]...:当服务器发现了一个.htaccess文件(由AccessFileName指定)时,它需要知道在这个文件中声明的哪些指令;
Order规则:控制缺省的访问状态和Allow,Deny指令被评估的顺序;
举例:
<Directory /www>
order Allow,Deny
Allow from shuke.com
Deny from no.shuke.com
说明:shuke.com域中的所有主机,除了no.shuke.com子域中包含的主机外都允许访问。所有不在shuke.com域中的主机都不允许访问。
Allow from all|host|env=env-variable [host|env=env-variable]...:哪些主机可以访问服务器的一个区域,可以用主机名,IP地址,IP地址范围或者其他环境变量中捕获的客户端请求特性来对访问进行控制;
Deny from all|host|env=env-variable [host|env=env-variable]...:允许基于主机名,IP地址或者环境变量限制对服务器的访问;
UserDir Directory:设定了用户宿主目录下的一个实际目录,存放了该用户提供访问的文档。apache允许系统的每个用户建立自己的网站,用户只需要在自己的主目录下建立一个目录,并以UserDir指令设置目录名(默认为public_html),把提供访问的文件存放在该目录下,则在客户端可以使用类似的地址访问;
举例:http://webserver/~用户名/guess.html
说明:服务器向客户端返回/home/用户名/guess.html页面。
DirectoryIndex filename:设置默认的网站访问页面;
举例:DirectoryIndex index.html
说明:必须在客户端方式index.html为站点的索引文件。
AccessFileName 文件名:指定所有发布目录中的配置文件名;
举例:AccessFileName .htaccess
说明:在返回文档/usr/local/web/index.html之前,服务器会为此指令读取/.htaccess, /usr/.htaccess, /usr/local/.htaccess和/usr/local/web/.Htaccess,除非此功能已为如下代码所禁用:
<Directory />
AllowOverride None
</Directory>
HostnameLookups on|off|double:此指令起用了DNS查询,使得主机名能被记入日志;
ServerSignature On|Off|Email:配置服务器生成文档的页脚,on-简单的增加一行关于服务器版本和正在伺服的虚拟主机的ServerName,off-没有错误行,Email-额外创建一个指向ServerAdmin的"mailto:"部分;
Alias URL-path file-path|directory-path:使文档可以存储在DocumentRoot以外的本地文件系统中;
举例:Alias /image /ftp/pub/image
说明:对http://webserver/image/shuke.w的请求,服务器将返回/ftp/pub/image/shuke.w文件。
ScriptAlias URL-path file-path|directory-path:ScriptAlias指令的行为与Alias指令相同,但同时,他又表明此目录中含有应该由mod_cgi中cgi-script处理器的CGI脚本;
举例:ScriptAlias /cgi-bin /web/cgi-bin/
说明:对http://myserver/cgi-bin/shuke的请求会引导服务器执行/web/cgi-bin/shuke脚本。
AddType MIME-type extension [extension]...:AddType指令在给定的文件扩展名与特定的内容类型间建立映射关系;
AddHandler handler-name extension [extension]...:指定带extension扩展名的文件应被handler-name处理器来处理。这个映射关系会添加在所有有效的映射上,并覆盖所有相同的extension扩展名映射;
举例:AddHandler cgi-script .cgi
说明:把扩展名为.cgi的文件作为CGI脚本处理,一旦这个定义放在httpd.conf文件中,所有包含.cgi扩展名的文件,都会被当作CGI程序。
<VirtualHost 地址[:端口号][地址[:端口号]]...>...</VirtualHost>:用于封装一组仅作用于特定虚拟主机的指令;
2.基于IP地址的虚拟主机:
1) 需要服务器支持一个网卡绑定多个IP地址,在Red Hat Linux9的内核中已默认支持此功能。首先需要为虚拟主机申请域名和IP,假设为本地地址为www.shuke1.com:202.19.0.23,申请新的域名和IP为:www.shuke2.com:202.19.0.35;
2) 为网卡添加新IP地址;
#/sbin/ifconfig eth0 add 202.19.0.35 netmask 255.255.255.0
3) 重新设置httpd.conf,在文件中加入;
<VirtualHost 202.19.0.35>
ServerAdmin webmaster@ shuke1.com
DocumentRoot /home/httpd/www.shuke2.com
ServerName www.shuke2.com
ErrorLog /var/log/httpd/www.shuke2.com/error.log
</VirtualHost>
4) 建立相应的目录;
#mkdir /home/httpd/www.shuke2.com
#mkdir /var/log/httpd/www.shuke2.com
5) 将相应的主页内容存放在DocumentRoot指定的目录中;
6) 重新启动httpd服务进程,即可提供两个web服务器的功能。
3.基于名字的虚拟主机服务:基于名字的虚拟主机服务是比较适合使用的一种方案。他不需要更多的IP地址,而且配置简单,无需什么特殊的软硬件支持。现代的浏览器大都支持这种虚拟主机地实现方法。
1) 在DNS登记新的域名www.shuke2.com指向本地IP地址;
2) 修改配置文件,增加下面内容:
NameVirtualHost 202.19.0.23
<VirtualHost 202.19.0.23>
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/www.shuke1.com
ServerName www.shuke1.com
ErrorLog /var/log/httpd/www.shuke1.com/error.log
</VirtualHost>
<VirtualHost 202.19.0.23>
ServerAdmain webmaster@yourdomain.com
DocumentRoot /home/httpd/www.shuke2.com
ServerName www.shuke2.com
ErrorLog /var/log/httpd/www.shuke2.com/error.log
</VirtualHost>
也就是在基于IP地址的配置基础上增加一句:NameVirtualHost 202.19.0.23,最后是建立相应的目录,将主页内容放到相应的目录中去。
4.Apache的日志配置:
同样需要在httpd.conf中使用配置命令完成。
ErrorLog 文件路径|syslog[:facility]:指定了当服务器遇到错误时记录错误日志的文件名,默认为logs/error_log
LogLevel级别:设置写入错误日志中信息的详细程度。
注意:建立至少使用crit级别,默认warn级别。
内容:
emerg:紧急-系统无法使用;
举例:Child cannot open lock file. Exiting
alert:必须立即采取错误;
举例:getpwuid: couldn't determine user name from uid
crit:致命情况;
举例:socket: Failed to get a socket, exiting child
error:错误情况;
举例:Premature end of script headers
warn:警告情况;
举例:chile process 1234 did not exit, sending another SIGHUP
notice:一般重要情况;
举例:httpd: caught SIGBUS, attempting to dump core in...
info:普通信息;
举例:Server seems busy, (you may need to increase StarServers, or Min/MaxSpareServers)...
debug:出错级别信息;
举例:Opening config file...
LogFormat format|nickname [nickname]:定义日志文件的记录格式。
CustomLog file|pipe format|nickname [env=[!]environment-variable]:对服务器的请求进行日志记录。
TransferLog file|pipe:不允许直接定义日志格式或根据条件进行日志记录外,与CustomLog指令有完全相同的参数和功能。
5.Apache的安装与验证
1) 安装源代码包httpd-2.0.48.tar.gz
[root@shuke src]#tar -zxvf httpd-2.0.48.tar.gz
[root@shuke src]#cd httpd-2.0.48
[root@shuke httpd-2.0.48]#./configure --prefix=/usr/local/apache --enable-so
[root@shuke httpd-2.0.48]#make
[root@shuke httpd-2.0.48]#make install
[root@shuke httpd-2.0.48]#vi /usr/local/apache/conf/httpd.conf
配置ServerAdmin的值为服务器管理员的邮箱地址:
ServerAdmin webmaster@mail.shuke.com
配置ServerName的值为本机域名:
ServerName webserver.shuke.com:80
[root@shuke httpd-2.0.48]#/usr/local/apache/bin/apachectl start
[root@shuke httpd-2.0.48]#ps -aux | grep httpd
验证apache进程已经启动,通过客户端在浏览器打开站点,看到apache欢迎页面。
2) apache的启动和停止的配置
复制/usr/local/apache/bin/apachectl文件到/etc/rc.d/init.d/目录:
[root@shuke httpd-2.0.48]#cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/
编辑启动文件:
[root@shuke httpd-2.0.48]#vi /etc/rc.d/init.d/apachectl
修改文件,在文件中'#!/bin/sh'后面加入下面两条规则:
#!/bin/sh
#
# chkconfig: 2345 85 15
# description: Apache is a World Wide Web Server
#
使用chkconfig命令把apachectl命令加入到系统启动队列中:
[root@shuke apache]#chkconfig --add apachectl
查看apachectl的状态:
[root@shuke apache]#chkconfig --list apachectl
[root@shuke apache]#reboot
重新启动系统,察看进程,确认apache进程已经伴随系统启动。
3) 查看日志
查看错误日志:
[root@shuke apache]#less /usr/local/apache/logs/error_log
查看访问日志:
[root@shuke apache]#less /usr/local/apache/logs/access_log
6.Apache+Mysql+Php协同服务(顺序:mysql,apache,php)
mysql的安装步骤:
1) 建立一个mysql的组和用户
2) ./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql
3) make
4) make install
5) /usr/local/mysql/bin/mysql_install_db
初始化数据库。
6) chown -R mysql /var/lib/mysql
设置mysql目录的权限。
7) cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
复制配置文件。
8) /usr/local/mysql/bin/mysqld_safe --user=root &
使用root用户启动mysql服务。
9) /usr/local/mysql/bin/mysqladmin -u root -p password 1234
因为初始的root密码是空的,因此修改密码,注意(Enter Password:直接回车)。
php的安装步骤:
1) ./configure --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs
2) make
3) make install
4) cp php.ini-dist /usr/local/lib/php/php.ini
复制php配置文件到php目录。
5) vi /usr/local/apache/conf/httpd.conf
修改apache的配置文件,添加内容:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
安装一个论坛(zorum)的步骤:(用一个已经做好的config.php文件)
1) cp -dpR zorum_3_5/* /usr/local/apache/htdocs/zorum/
将文件拷贝到位于apache下的zorum目录下,并赋予它可以被写被读的权限。
2) 启动mysql和apache服务。
通过客户端访问验证,论坛启动成功,则协同服务正常。