首页 > 操作系统 > Linux专区 > Linux学习日记一:Apache服务器基本配置
2009
02-04

Linux学习日记一:Apache服务器基本配置

好久没来论坛了,放假前在忙着谈恋爱,放假后又忙着在学 Linux,在家里不能上网,所以来论坛的机会就少了很多呵……


把我半个假期学到的东西和大家分享一下吧,有什么不对的地方欢迎大家提出来。


系统环境:Linux Fedora core 7


Linux中相关命令的用法大家可以从网上搜索下,呵呵……


正文开始:


Apache(阿帕奇),是一个开放源代码的服务器,起初由Illinois大学Urbana-Champaign的国家高级计算程序开发中心开发。经过开放源代码团体的成员不断发展和加强,得到全世界许多程序员的支持,因此具有无限扩展功能的优点,并且工作性能和稳定性远远领先于其他同类产品。


1.安装Apache服务器


检查是否已经安装(Apache被重命名为httpd):rpm -q httpd


如果没有安装的话,挂载系统安装盘并找到安装包进行安装:
mount -t iso9660 /dev/scd0 /mnt/cdrom


查找httpd安装包:
find /mnt/cdrom -name httpd*.rpm


找到之后进行安装:
rpm -ivh /mnt/cdrom/……(httpd所在光盘中的路径)/httpd-…….rpm


2.测试Apache服务器


启动Apache服务器:
/etc/init.d/httpd start


启动Apache服务器之后在Web浏览器中输入Linux服务器的IP地址进行访问,若出现Apache的测试页面,则Apache服务器安装正确并正常运行。


3.Apache服务器常用命令


启动服务:/etc/init.d/httpd start
停止服务:/etc/init.d/httpd stop
重启服务:/etc/init.d/httpd restart


4.Apache服务器基本配置


Apache服务器的运行参数是通过编辑Apache的主配置文件httpd.conf来实现的。用rpm方式安装,通常存放在/etc/httpd/conf目录下,可用文本编辑器(如vi)进行编辑。


httpd.conf配置文件主要由全局环境、主服务器配置和虚拟主机3个部分组成。所有配置语句的语法为“配置参数名称 参数值”的形式,配置语句可以放在文件中的任何地方。


httpd.conf中每行包含一条语句,行末使用反斜杠“\”可以换行,但是反斜杠与下一行中间不能有任何其他字符(包括空白)。配置语句除了选项的参数值以外,所有选项指令均不区分大小写,可以在每一行前用“#”号表示注释。


4.1 Web服务器的基本配置


设置主目录路径:
DocumentRoot “/var/www/html”


设置默认文档:
DirectoryIndex index.html index.html.var


设置Apache监听的IP地址和端口号
Listen 80


设置服务器只监听IP地址为192.168.1.177的80端口和192.168.1.178的8080端口请求,配置如下:
Listen 192.168.1.177:80
Listen 192.168.1.178:8080


设置相对根目录的路径(存放配置文件和日志文件):
ServerRoot “/etc/httpd”


设置日志文件:
  错误日志:ErrorLog logs/error_log
  访问日志:CustomLog logs/access_log combined
(combined指明日志使用格式,可以使用common(普通标准格式)或combined(组合记录格式),格式由LogFormat语句定义:
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”" combined
LogFormat “%h %l %u %t \”%r\” %>s %b” common)


设置网络管理员的E-mail地址:
ServerAdmin root@local.local


设置服务器主机名称:
ServerName 127.0.0.1:80


设置默认字符集(解决显示中文出现乱码的问题):
AddDefaultCharset UTF-8 修改为  AddDefaultCharset GB2312
重启Apache服务并清空Web浏览器的缓存


4.2 创建虚拟目录


Alias /icons/ “/var/www/icons/”
Alias /manual “/var/www/manual”


设置目录权限:
<Directory “/var/www/icons”>
   Options Indexes MultiViews   (定义目录特性)
   AllowOverride None   (设置.htaccess文件中的指令类型)
   Order allow,deny   (设置缺省的访问权限与Allow和Deny语句的处理顺序)
   Allow from all   (设置可访问的用户)
</Directory>


4.2.1 定义目录特性
Options选项用于定义目录使用哪些特性,包括Indexes、MultiViews和ExecCGI等,如下所示:


Indexes:允许目录浏览,当用户仅指定要访问的目录,但没有指定要访问目录下的哪个文件,而且目录下不存在默认文档时,Apache以超文本形式返回目录中的文件和子目录列表(虚拟目录不会出现在目录列表中)


MultiViews:允许内容协商的多重视图,MultiViews其实是Apache的一个智能特性。当客户访问目录中一个不存在的对象时,如访问“http://192.168.17.177/icons/a”,则Apache会查找这个目录下所有a.*文件。由于icons目录下存在a.gif文件,因此Apache会将a.gif文件返回给客户,而不是返回出错信息


All:All包含了处MultiViews之外的所有特性,如果没有Options语句,默认为All


ExecCGI:允许在该目录下执行CGI脚本


FollowSymLinks:可以在该目录中使用符号连接


Includes:允许服务器端包含功能


IncludesNoExec:允许服务器端包含功能,但禁用执行CGI脚本


4.2.2 设置.htaccess文件中的指令类型
AllowOverride选项用于定义位于每个目录下.htaccess(访问控制)文件中的指令类型。基于安全和效率的原因,一般设置为“None”,即禁止使用.htaccess文件,而将目录权限的设置放在主配置文件httpd.conf的<Dictory>和</Dictory>语句之间。


4.2.3 设置缺省的访问权限与Allow和Deny语句的处理顺序
Order选项用于定义缺省的访问权限与Allow和Deny语句的处理顺序。Allow和Deny语句可以针对客户机的域名或IP地址进行设置,以决定哪些客户机能够访问服务器。Order语句通常设置为以下两种值之一:
  allow,deny:缺省禁止所有客户机的访问,且Allow语句在Deny语句之前被匹配。如果某条件既匹配Deny语句又匹配Allow语句,则Deny语句会起作用(因为Deny语句覆盖了Allow语句)。
  deny,allow:缺省允许所有客户机的访问,且Deny语句会在Allow语句之前被匹配。如果某条件既匹配Deny语句又匹配Allow语句,则Allow语句会起作用(因为Allow语句覆盖了Deny语句)。


5.用户认证
5.1 建立口令文件:
使用Apache自带的htpasswd命令建立口令文件(注意:口令文件必须放在不能被网络访问的位置,以避免被下载。):
htpasswd -c /etc/httpd/mysecretpwd linden
命令执行后会提示输入用户口令,-c 选项表示无论口令文件是否已经存在,都会重新写入文件并删去原有内容,所以在添加到第二个用户时就不需要使用-c选项了。
htpasswd /etc/httpd/mysecretpwd tom


5.2 建立虚拟目录并配置用户认证
在Apache的主配置文件httpd.conf中加入以下语句建立虚拟目录并配置用户认证:
Alias /mysecret “/usr/local/mysecret”
<Directory “/usr/local/mysecret”>
   AuthType Basic   (设置认证类型)
   AuthName “This is a private directory.Please Login:”  (设置认证领域内容)
   AuthUserFile /etc/httpd/mysecretpwd   (设置口令文件的路径)
   Require user linden tom   (设置允许访问的用户)
</Directory>


6.虚拟主机的配置
6.1 基于IP地址的虚拟主机
基于IP地址的虚拟主机在服务器里绑定多个IP,然后配置Apache,把多个网站绑定在不同的IP上,访问服务器上不同的IP,就看到不同的网站。


假设服务器有192.168.16.201和192.168.16.202两个IP地址,现需使用这两个IP地址分别创建两台虚拟主机,每台虚拟主机都对应不同的主目录,可以在主配置文件httpd.conf中添加以下语句实现:
<VirtualHost 192.168.16.201>
ServerName 192.168.16.201:80
ServerAdmin web1@163.com
DocumentRoot “/usr/www/web1″
DirectoryIndex index.html
ErrorLog logs/web1/error_log
CustomLog logs/web1/access_log combined
</VirtualHost>


<VirtualHost 192.168.16.202>
ServerName 192.168.16.202:80
ServerAdmin web2@163.com
DocumentRoot “/usr/www/web2″
DirectoryIndex default.html
ErrorLog logs/web2/error_log
CustomLog logs/web2/access_log combined
</VirtualHost>


6.2 基于域名的虚拟主机
基于域名的虚拟主机只需服务器有一个IP地址即可创建多台虚拟主机,所有的虚拟主机共享同一个IP地址,各虚拟主机之间通过域名进行区分。
注意:要建立基于域名的虚拟主机,就要更改DNS服务器的配置,在DNS服务器中建立多个主机地址A资源记录,使它们解析到同一个IP地址上。如:
www.abc.com     IN     A     192.168.16.201
www.xyz.com     IN     A     192.168.16.201


假设服务器的IP地址为192.168.16.201,在DNS服务器中有www.abc.comwww.xyz.com主机地址A资源记录映射到该IP地址,现需使用这两个域名分别创建两台虚拟主机,每台虚拟主机都对应不同的主目录,可以在主配置文件httpd.conf中添加以下语句实现:


NameVirtualHost 192.168.16.201


<VirtualHost www.abc.com>
ServerName www.abc.com:80
ServerAdmin web1@163.com
DocumentRoot “/usr/www/web1″
DirectoryIndex index.html
ErrorLog logs/web1/error_log
CustomLog logs/web1/access_log combined
</VirtualHost>


<VirtualHost www.xyz.com>
ServerName www.xyz.com:80
ServerAdmin web2@163.com
DocumentRoot “/usr/www/web2″
DirectoryIndex default.html
ErrorLog logs/web2/error_log
CustomLog logs/web2/access_log combined
</VirtualHost>


创建基于域名的虚拟主机时,必须先用NameVirtualHost指令指定哪个IP地址负责响应对虚拟主机的请求,然后<VirtualHost 虚拟主机的域名>来指明这台虚拟主机使用哪个域名。没有必要为每个虚拟主机指定所有的配置语句,因为虚拟主机中没有指定的配置语句将使用服务器主配置文档中的配置。


Linux学习日记一:Apache服务器基本配置》有 2 条评论

  1. hiroki 说:

    感觉这个linux就是为PHP准备的呢

  2. whos 说:

    呵呵,确实有点偏PHP

留下一个回复