环境:RHEL5.3,DNS已经配置好为: www.station53.com
对Apache全面做了说明,简单的web服务器的实现,虚拟主机的实现,个人主页的时间,主页加密验证的实现,都有详细介绍。
一、Apache服务总览:
1、所需要的软件包:httpd httpd-devel httpd-manual
2、端口:80(http) 443(https)
3、主配置文件:/etc/httpd/*
4、默认主页目录:/var/www/html
5、与Apache服务相关的Selinux环境:
1)system_u:object-r:httpd_config_t
/etc/httpd/conf和/etc/httpd/conf.d 下的文件
2)system_u:object_r:httpd_log_t
/etc/httpd/logs中的日志文件。
3)system_u:object_r:httpd_modules_t
httpd服务使用的相关模块
4)网页内容及网页目录的环境:
System_u:object_r:httpd_sys_content_t:如果不是这个页面将无法访问。
另:对于目录,Other组要有访问和可执行权限。
设置Selinux环境:
Chcon -R —reference=/var/www/html /var/www/html/data
Restorecon -R /var/www/html
建议网站目录都放到/var/www/html防止因为Selinux造成问题。
二、Apache配置文件的简单实现:
1、 相关配置文件修改:/etc/httpd/conf/httpd.conf
1)、ServerRoot”/etc/httpd” 默认配置文件的存放目录;
2)、Timeout 120 客户端访问超时时间120秒;
3)、Listen 80 监听80端口;
4)、ServerAdmin [email protected] 设置管理员邮箱;
5)、ServerName www.station53.com服务器主机名,可以使DNS域名,也可以是IP地址;
6)、DocumentRoot /var/www/html 网页默认存放目录;
7)、DirectoryIndex index.html index.htm 设置主页文件的名字;
2、建立主页文件:
在/var/www/html目录建立主页文件index.html并写上写内容。
3、启动相关服务:
chkconfig httpd on
service httpd restart
4、测试自己的服务器:
三、用户个人主页的实现:
通过配置使我们每个用户都有一个主页可以通过 http://www.station53.com/~Username访问的主页。
主配置文件的修改:
-----------------------------------------------------
#
# UserDir is disabled by default since it can confirm the presence
# of a username on the system (depending on home directory
# permissions).
#UserDir disable //默认 是开启的,禁用掉就可以实现个人网站了。
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disable" line above, and uncomment
# the following line instead:
#
UserDir public_html //个人网站存放目录/home/Username/public_html
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny //allow,deny规则,先判断allow,后判断deny,冲突时,后面的有效;
Allow from all //没有任何限制
# Deny from 192.168.1 //上下冲突,这个时候deny起作用,除了192.168.1网段的外其他的都可以访问你
#
# Order deny,allow
# Deny from all
#
----------------------------------------------------------------------
备注:
1) 目录权限设置:
----------------------------------------------------------------------
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny
Allow from all
-------------------------------------------------------------------
AllowOverride:用于定义位于每个目录下的.htaccess(访问控制)文件中的指令类型。如果要禁用的话:AllowOverride None。
Options MultiViews:定义目录使用那些特性。
Indexes:允许目录浏览,但没有指定访问目录下的那个文件,而其目录下不存在默认文档时Apache以超文本形式返回目录中的文件和子目录列表。
MulitiViews:允许内容协商的多重试图。当访问 http://127.0.0.1/icons/a时,服务会查找目录下的所有a.*的文件,如果目录下有就会显示这个文件,而不是报错信息。
All:包含了除MulitiViews之外的所有特性,如果没有Options语句默认为All。
ExecCGI:允许执行CGI脚本。
FollowSymLinks:在该目录中可以使用符号链接。
Includes:允许服务端包含功能。
IncludesNoExec:允许服务端包含功能但不允许执行CGI脚本。
2)缺省访问权限和allow、deny顺序:
allow,deny规则,先判断allow,后判断deny,冲突时,后面的有效;
例子如下:
---------------------------------------------------------------------
Order deny,allow
allow from all
deny from 192.168.0.250
#全部都可以通行
一、Apache服务总览:
1、所需要的软件包:httpd httpd-devel httpd-manual
2、端口:80(http) 443(https)
3、主配置文件:/etc/httpd/*
4、默认主页目录:/var/www/html
5、与Apache服务相关的Selinux环境:
1)system_u:object-r:httpd_config_t
/etc/httpd/conf和/etc/httpd/conf.d 下的文件
2)system_u:object_r:httpd_log_t
/etc/httpd/logs中的日志文件。
3)system_u:object_r:httpd_modules_t
httpd服务使用的相关模块
4)网页内容及网页目录的环境:
System_u:object_r:httpd_sys_content_t:如果不是这个页面将无法访问。
另:对于目录,Other组要有访问和可执行权限。
设置Selinux环境:
Chcon -R —reference=/var/www/html /var/www/html/data
Restorecon -R /var/www/html
建议网站目录都放到/var/www/html防止因为Selinux造成问题。
二、Apache配置文件的简单实现:
1、 相关配置文件修改:/etc/httpd/conf/httpd.conf
1)、ServerRoot”/etc/httpd” 默认配置文件的存放目录;
2)、Timeout 120 客户端访问超时时间120秒;
3)、Listen 80 监听80端口;
4)、ServerAdmin [email protected] 设置管理员邮箱;
5)、ServerName www.station53.com服务器主机名,可以使DNS域名,也可以是IP地址;
6)、DocumentRoot /var/www/html 网页默认存放目录;
7)、DirectoryIndex index.html index.htm 设置主页文件的名字;
2、建立主页文件:
在/var/www/html目录建立主页文件index.html并写上写内容。
3、启动相关服务:
chkconfig httpd on
service httpd restart
4、测试自己的服务器:
三、用户个人主页的实现:
通过配置使我们每个用户都有一个主页可以通过 http://www.station53.com/~Username访问的主页。
主配置文件的修改:
-----------------------------------------------------
#
# UserDir is disabled by default since it can confirm the presence
# of a username on the system (depending on home directory
# permissions).
#UserDir disable //默认 是开启的,禁用掉就可以实现个人网站了。
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disable" line above, and uncomment
# the following line instead:
#
UserDir public_html //个人网站存放目录/home/Username/public_html
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny //allow,deny规则,先判断allow,后判断deny,冲突时,后面的有效;
Allow from all //没有任何限制
# Deny from 192.168.1 //上下冲突,这个时候deny起作用,除了192.168.1网段的外其他的都可以访问你
#
# Order deny,allow
# Deny from all
#
----------------------------------------------------------------------
备注:
1) 目录权限设置:
----------------------------------------------------------------------
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny
Allow from all
-------------------------------------------------------------------
AllowOverride:用于定义位于每个目录下的.htaccess(访问控制)文件中的指令类型。如果要禁用的话:AllowOverride None。
Options MultiViews:定义目录使用那些特性。
Indexes:允许目录浏览,但没有指定访问目录下的那个文件,而其目录下不存在默认文档时Apache以超文本形式返回目录中的文件和子目录列表。
MulitiViews:允许内容协商的多重试图。当访问 http://127.0.0.1/icons/a时,服务会查找目录下的所有a.*的文件,如果目录下有就会显示这个文件,而不是报错信息。
All:包含了除MulitiViews之外的所有特性,如果没有Options语句默认为All。
ExecCGI:允许执行CGI脚本。
FollowSymLinks:在该目录中可以使用符号链接。
Includes:允许服务端包含功能。
IncludesNoExec:允许服务端包含功能但不允许执行CGI脚本。
2)缺省访问权限和allow、deny顺序:
allow,deny规则,先判断allow,后判断deny,冲突时,后面的有效;
例子如下:
---------------------------------------------------------------------
Order deny,allow
allow from all
deny from 192.168.0.250
#全部都可以通行
Order allow,deny
deny from hacker.com
deny from 192.168.0.250
#只hecker.com和192.168.0.250不能访问
deny from hacker.com
deny from 192.168.0.250
#只hecker.com和192.168.0.250不能访问
Order deny,allow
allow from 192.168.0/24
#允许所有主机访问
allow from 192.168.0/24
#允许所有主机访问
Order allow,deny
allow from 192.168.0/24
#只有192.168.0/24网段可以访问
-------------------------------------------------------
2)个人网站主目录的设置及文件的建立:
在个人目录/home/username目录下创建public_html目录。
建立自己的主页,然后在浏览器输入“http://URL/~username”即可,
备注:注意public_html目录和里面的文件的Selinux环境参数,如果有问题请按照上面讲的调整。
四、虚拟主机的设置:
(默认已经设计好 www.station53.com 下面我们在开通 www.server53.com 和 www.client53.com
1、配置DNS:
1)编辑/var/namde/chroot/etc/named.conf,编辑好文件如下:
----------------------------------------------------------------------------------
……前面省略
zone "server53.com" IN {
type master;
file "server53.com.zone";
};
zone "client53.com" IN {
type master;
file "client53.com.zone";
后面省略…… //红色为新加内容,分别用于解释server53.com和client53.com两个域名。
------------------------------------------------------------------------------------
2)在/var/named/chroot/var/named生成:server53.com.zone和client53.com.zone两个文件:
------------------------------------------------------------------------------------
[root@station1 named]# cp station53.com.zone server53.com.zone
[root@station1 named]# cp station53.com.zone client53.com.zone
----------------------------------------------------------------------------------
3)修改权限及文件内容:
-----------------------------------------------------------------------------
[root@station1 named]# chgrp named server53.com.zone
[root@station1 named]# chgrp named client53.com.zone
[root@station1 named]# vim client53.com.zone
$TTL 86400
@ IN SOA ns.client53.com. root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
allow from 192.168.0/24
#只有192.168.0/24网段可以访问
-------------------------------------------------------
2)个人网站主目录的设置及文件的建立:
在个人目录/home/username目录下创建public_html目录。
建立自己的主页,然后在浏览器输入“http://URL/~username”即可,
备注:注意public_html目录和里面的文件的Selinux环境参数,如果有问题请按照上面讲的调整。
四、虚拟主机的设置:
(默认已经设计好 www.station53.com 下面我们在开通 www.server53.com 和 www.client53.com
1、配置DNS:
1)编辑/var/namde/chroot/etc/named.conf,编辑好文件如下:
----------------------------------------------------------------------------------
……前面省略
zone "server53.com" IN {
type master;
file "server53.com.zone";
};
zone "client53.com" IN {
type master;
file "client53.com.zone";
后面省略…… //红色为新加内容,分别用于解释server53.com和client53.com两个域名。
------------------------------------------------------------------------------------
2)在/var/named/chroot/var/named生成:server53.com.zone和client53.com.zone两个文件:
------------------------------------------------------------------------------------
[root@station1 named]# cp station53.com.zone server53.com.zone
[root@station1 named]# cp station53.com.zone client53.com.zone
----------------------------------------------------------------------------------
3)修改权限及文件内容:
-----------------------------------------------------------------------------
[root@station1 named]# chgrp named server53.com.zone
[root@station1 named]# chgrp named client53.com.zone
[root@station1 named]# vim client53.com.zone
$TTL 86400
@ IN SOA ns.client53.com. root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns.client53.com.
IN NS www.client53.com.
IN MX 5 mail.client53.com.
ns IN A 192.168.0.253
www IN A 192.168.0.253
mail IN A 192.168.0.253
//我做的解析比较多大家可以只做个www就可以。
------------------------------------------------------------------------------------
4)在/var/named目录下建立server53.com.zone、client53.com.zone的连接文件,并调整好权限:
------------------------------------------------------------------------------------
[root@station1 named]# ln -s chroot/var/named/server53.com.zone .
[root@station1 named]# ln -s chroot/var/named/client53.com.zone .
[root@station1 named]# chgrp named server53.com.zone
[root@station1 named]# chgrp named client53.com.zone
--------------------------------------------------------------------------------------
5)重新启动DNS服务并测试新建立的域名。
2、编辑/etc/httpd/conf/httpd.conf文件:
-----------------------------------------------------------------------
NameVirtualHost *:80
# ServerAdmin [email protected]
DocumentRoot /var/www/html/server53
ServerName www.server53.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
DocumentRoot /var/www/html/client53
ServerName
www.client53.com
----------------------------------------------------------------------------
3、重新启动Apache服务,测试设置是否满足要求:
1)在/var/www/html目录下分别建立server53 和 client53两个目录,并添加主页文件,处理其相关的Selinux环境设置。
2)重新启动Apache服务测试:
??什么 www.station53.com 和 www.server53.com显示的一样?
所以我们要继续修改/etc/httpd/conf/httpd.conf,添加如下段内容:
---------------------------------------------------------------------------------------
DocumentRoot /var/www/html/station53
ServerName
www.station53.com
---------------------------------------------------------------------------------------
在/var/www/html目录下建立station53目录,并建立主页文件处理selinux环境。
一旦打开虚拟主机功能,那么每个域名都要在虚拟主机项目相应的位置添加与之对应的项目,否则默认访问第一个虚拟主机的设置。
通过了?OK!!!
五、主页的用户认证的设置:(以redhat的个人目录为例!)
1、配置httpd.conf文件,使目标目录支持认证:
目标目录在httpd.conf中要有 AllowOverride AuthConfig 项,默认开启用户个人主页后,用户个人目录支持这个设置。
---------------------------------------------------------------------------
//用户家目录,也可以针对某个目录单独做个…… 说明项目。
AllowOverride FileInfo AuthConfig Limit //默认就有这个支持。
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny
Allow from all
#
# Order deny,allow
# Deny from all
#
-------------------------------------------------------------------------
2、建立.htaccess文件,建立在站点目录下,这里就是/home/redhat/public_html目录下。
-------------------------------------------------------------
[root@station1 ~]# vim /home/redhat/public_html/.htaccess
AuthType Basic //密码测试方式;
AuthName "密码测试" //弹出的密码检测框里的内容;
AuthUserFile /home/redhat/public_html/.passwords //密码文件的存放位置;
Require user redhat //可以允许密码文件中的所有用户使用正确的密码进行访问。
-----------------------------------------------------------------
3、建立.passwords文件:
--------------------------------------------------------------
[root@station1 ~]# htpasswd -c /home/redhat/public_html/.passwords redhat
New password:
Re-type new password:
Updating password for user redhat
--------------------------------------------------------------
4、测试效果:
肯定OK,注意不要写错,我在配置.htaccess的时候密码文件放置位置的名字写错了,一直在验证密码,怎么都跳不过去,呵呵。注意这两个文件都是隐藏文件名字前面带点。
如果DNS部分配置有问题,请查看Blog中关于DNS部分的心得。
IN NS www.client53.com.
IN MX 5 mail.client53.com.
ns IN A 192.168.0.253
www IN A 192.168.0.253
mail IN A 192.168.0.253
//我做的解析比较多大家可以只做个www就可以。
------------------------------------------------------------------------------------
4)在/var/named目录下建立server53.com.zone、client53.com.zone的连接文件,并调整好权限:
------------------------------------------------------------------------------------
[root@station1 named]# ln -s chroot/var/named/server53.com.zone .
[root@station1 named]# ln -s chroot/var/named/client53.com.zone .
[root@station1 named]# chgrp named server53.com.zone
[root@station1 named]# chgrp named client53.com.zone
--------------------------------------------------------------------------------------
5)重新启动DNS服务并测试新建立的域名。
2、编辑/etc/httpd/conf/httpd.conf文件:
-----------------------------------------------------------------------
NameVirtualHost *:80
# ServerAdmin [email protected]
DocumentRoot /var/www/html/server53
ServerName www.server53.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
DocumentRoot /var/www/html/client53
ServerName
----------------------------------------------------------------------------
3、重新启动Apache服务,测试设置是否满足要求:
1)在/var/www/html目录下分别建立server53 和 client53两个目录,并添加主页文件,处理其相关的Selinux环境设置。
2)重新启动Apache服务测试:
??什么 www.station53.com 和 www.server53.com显示的一样?
所以我们要继续修改/etc/httpd/conf/httpd.conf,添加如下段内容:
---------------------------------------------------------------------------------------
DocumentRoot /var/www/html/station53
ServerName
---------------------------------------------------------------------------------------
在/var/www/html目录下建立station53目录,并建立主页文件处理selinux环境。
一旦打开虚拟主机功能,那么每个域名都要在虚拟主机项目相应的位置添加与之对应的项目,否则默认访问第一个虚拟主机的设置。
通过了?OK!!!
五、主页的用户认证的设置:(以redhat的个人目录为例!)
1、配置httpd.conf文件,使目标目录支持认证:
目标目录在httpd.conf中要有 AllowOverride AuthConfig 项,默认开启用户个人主页后,用户个人目录支持这个设置。
---------------------------------------------------------------------------
AllowOverride FileInfo AuthConfig Limit //默认就有这个支持。
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Order allow,deny
Allow from all
#
# Order deny,allow
# Deny from all
#
-------------------------------------------------------------------------
2、建立.htaccess文件,建立在站点目录下,这里就是/home/redhat/public_html目录下。
-------------------------------------------------------------
[root@station1 ~]# vim /home/redhat/public_html/.htaccess
AuthType Basic //密码测试方式;
AuthName "密码测试" //弹出的密码检测框里的内容;
AuthUserFile /home/redhat/public_html/.passwords //密码文件的存放位置;
Require user redhat //可以允许密码文件中的所有用户使用正确的密码进行访问。
-----------------------------------------------------------------
3、建立.passwords文件:
--------------------------------------------------------------
[root@station1 ~]# htpasswd -c /home/redhat/public_html/.passwords redhat
New password:
Re-type new password:
Updating password for user redhat
--------------------------------------------------------------
4、测试效果:
肯定OK,注意不要写错,我在配置.htaccess的时候密码文件放置位置的名字写错了,一直在验证密码,怎么都跳不过去,呵呵。注意这两个文件都是隐藏文件名字前面带点。
如果DNS部分配置有问题,请查看Blog中关于DNS部分的心得。