想要实现个人站点的发布必须修改httpd的主配置文件/etc/httpd/conf/httpd.conf
<IfModule mod_userdir.c>
# UserDir disable 把“禁用主目录项” 禁用了
UserDir public_html 指定个人站点的主目录在自己家目录下
</IfModule>
在linux下用user1登录
[user1@ttttttttt ~]$mkdir public_html 在家目录下创建自己的主站点
[user1@ttttttttt ~]$ vim public_html/index.html 在主站点中创建自己的主页
user1 !!!!!!!
更改user1的家目录的权限
[root@ttttttttt home]# chmod a+r user1 改为可读
然后重启httpd
用客户端访问时:
但是每次访问时都加一个“~”,对于用户来说太麻烦了,下面我们试着把“~ ”去掉
编译/etc/httpd/conf/httpd.conf 在该文件中添加下列语句
alias /user1 "/home/user1/public_html" 指定user1的站点主目录
然后重启httpd,再用客户端访问
但是这样使得每个人都能访问,我们要实现身份验证:
用user1在其站点的主目录下创建并编译.htaccess文件,实现访问的验证
authuserfile /home/user1/.htpasswd
authtype basic
authname "please input your name"
require valid-user
[user1@ttttttttt ~]$ htpasswd -c .htpasswd ll 创建一个站点访问账户
New password:
Re-type new password:
Adding password for user ll
设置目录安全性:
编译:/etc/httpd/conf/httpd.conf并添加下列内容:
<Directory /home/*/public_html> 对所有站点目录实行验证
AllowOverride all
</Directory>
重启httpd
再使用客户端访问:
站点的设置:
http主配置文档(/etc/httpd/conf/httpd.conf)的分析
DirectoryIndex index.html index.html.var 显示站点目录中的文件
AccessFileName .htaccess 实现身份验证的文件按
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
TypesConfig /etc/mime.types 多用途邮件扩展,定义相应的程序来出来客户端请求
HostnameLookups Off 记录访问apache的所有客户端
我们访问时的日志记录在/var/log/httpd/
root@ttttttttt httpd]# ll
-rw-r--r-- 1 root root 613 09-05 02:33 access_log 访问成功日志
-rw-r--r-- 1 root root 3739 09-05 05:14 error_log 访问失败日志
-rw-r--r-- 1 root root 982 09-05 05:15 ssl_access_log 加密访问成功日志
-rw-r--r-- 1 root root 2282 09-05 05:14 ssl_error_log 加密访问失败日志
-rw-r--r-- 1 root root 1059 09-05 05:15 ssl_request_log 加密访问请求日志
虚拟主机的制作
一、基于物理目录虚拟主机:(目录位必须于站点的主目录,目录名称固定)
[root@ttttttttt ~]# cd /var/www/html 切换到主目录下
[root@ttttttttt html]# mkdir qq 创建该目录
[root@ttttttttt html]# vim qq/index.html 为该虚拟主机创建主页
hello------qq!!!!!!!!
客户端访问:
访问时还得加上目录,且目录固定,不是太灵活
二、基于虚拟目录虚拟主机:(目录为与任意位置,名称也可以任意取)
[root@ttttttttt html]# mkdir /ll 我们随意找个位置创建目录
[root@ttttttttt html]# cd /ll
[root@ttttttttt ll]# vim index.html 在该目录下创建主页
126!!!!!!!!!!!!!!!!!!!
进入httpd主配置文档
[root@ttttttttt ll]# vim /etc/httpd/conf/httpd.conf
alias /126 "/ll/" 为该网络指定访问目录
重启httpd服务
在客户端运行时
利用虚拟目录实现www服务器的站点的下载
编译/etc/httpd/conf/httpd.conf
alias /download "/ll/"
<Directory "/ll"> 目录浏览特性 指定对应目录
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
[root@ttttttttt ll]# mv index.html index.html.old 去掉网页
[root@ttttttttt ll]# touch f1 创建几个文件和目录
[root@ttttttttt ll]# mkdir rr
[root@ttttttttt ll]# touch f2
重启httpd
在客户端:点击文件另存便可以实现下载
如果客户端显示乱码,可以在/etc/httpd/conf/httpd.conf中把
AddDefaultCharset UTF-8禁用掉
三、基于Ip地址的虚拟主机(资源的浪费)
多个ip地址 多个fqdn(域名) 端口80 多个站点
192.168.20.88 /var/www/html
192.168.20.80 tec.abc.com /var/www/tec
192.168.20.70 mkt.abc.com /var/www/mkt
使用yum安装bind-9.3.6-4.P1.el5_4.2.i386.rpm ,bind-chroot-9.3.6-4.P1.el5_4.2.i386.rpm 俩包
yum install bind bind-chroot -y
在安装一个caching-nameserver-9.3.6-4.P1.el5_4.2.i386.rpm包
yum install caching-nameserver -y
(1)配置dns服务器:
1.产生dns的主配置文件在/var/named/chroot/etc/下
[root@ttttttttt etc]# cp -p named.caching-nameserver.conf named.conf
进入编译:named.conf将四处该为any
options {
listen-on port 53 { any; };
allow-query { any; };
};
view localhost_resolver {
match-clients { any; };
match-destinations { any; };
};
2.生成区域声明:
在/var/named/chroot/etc/目录下编译named.rfc1912.zones,在其中添加
zone "abc.com" IN {
type master;
file "abc.com.db";
allow-update { none; };
};
3.生成数据库文件,并添加记录
切换到/var/named/chroot/var/named/目录下
[root@ttttttttt named]# cp -p localhost.zone abc.com.db 产生数据库文件并编译
$TTL 86400
@ IN SOA ns.abc.com. root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns.abc.com.
ns IN A 192.168.20.88
www IN A 192.168.20.88
tec IN A 192.168.20.80
mkt IN A 192.168.20.70
4.分别检查主配置文件与数据库文件是否有错误
[root@ttttttttt named]# named-checkconf /var/named/chroot/etc/named.conf
[root@ttttttttt named]# named-checkzone abc.com /var/named/chroot/var/named/abc.com.db
zone abc.com/IN: loaded serial 42
OK
5.为各个站点创建目录,并设置主页
[root@ttttttttt named]# cd /var/www/
[root@ttttttttt www]# mkdir mkt
[root@ttttttttt www]# mkdir tec
[root@ttttttttt www]# vim mkt/index.html
mkt!!!!!!!
[root@ttttttttt www]# vim tec/index.html
tec!!!!!!!!
6.在httpd主配置文档中/etc/httpd/conf/httpd.conf添加站点的属性
<VirtualHost 192.168.20.88:80>
ServerAdmin testlt@126.com 管理员邮箱
DocumentRoot /var/www/html 站点的主目录
ServerName 站点的名称
ErrorLog logs/www-error_log 出错日志
CustomLog logs/www-access_log common 成功日志
</VirtualHost>
<VirtualHost 192.168.20.80:80>
ServerAdmin testlt@126.com
DocumentRoot /var/www/tec
ServerName tec.abc.com
ErrorLog logs/tec-error_log
CustomLog logs/tec-access_log common
</VirtualHost>
<VirtualHost 192.168.20.70:80>
ServerAdmin testlt@126.com
DocumentRoot /var/www/mkt
ServerName mkt.abc.com
ErrorLog logs/mkt-error_log
CustomLog logs/mkt-access_log common
</VirtualHost>
7.启动dns服务,重启httpd,经客户端的dns设为该dns服务器进行测试
四、基于端口的虚拟主机 (端口不易被用户记住)
少量的ip 少量的fqdn 多个端口 多个站点
192.168.20.88 80 /var/www/html
800 /var/www/tec
8000 /var/www/mkt
(1)开启多个端口监听:编译/etc/httpd/conf/httpd.conf 添加
Listen 80
Listen 800
Listen 8000
此时使用Getenforce 命令查看sclinux状态
若是被启用了则使用setenforce 0 关闭sclinux 否则会影响虚拟端口的开启
(2)配置站点属性,继续编译/etc/httpd/conf/httpd.conf 添加
<VirtualHost 192.168.20.88:80>
ServerAdmin testlt@126.com
DocumentRoot /var/www/html
ServerName
ErrorLog logs/www-error_log
CustomLog logs/www-access_log common
</VirtualHost>
<VirtualHost 192.168.20.88:800>
ServerAdmin testlt@126.com
DocumentRoot /var/www/tec
ServerName
ErrorLog logs/tec-error_log
CustomLog logs/tec-access_log common
</VirtualHost>
<VirtualHost 192.168.20.88:8000>
ServerAdmin testlt@126.com
DocumentRoot /var/www/mkt
ServerName
ErrorLog logs/mkt-error_log
CustomLog logs/mkt-access_log common
</VirtualHost>
(3)重启httpd,在查看虚拟端口是否都开启了
[root@ttttttttt ll]# netstat -tupln| grep httpd
tcp 0 0 :::8000 :::* LISTEN 6182/httpd
tcp 0 0 :::800 :::* LISTEN 6182/httpd
tcp 0 0 :::80 :::* LISTEN 6182/httpd
tcp 0 0 :::443 :::* LISTEN 6182/httpd
(4)在客户端访问基于端口的结果:
五、基于主机头的虚拟主机
少量ip 多个名字 端口80 多个站点
192.168.101.200 /var/www/html
tec.abc.com /var/www/tec
mkt.abc.com /var/www/mkt
(1)编译数据库文件:/var/named/chroot/var/named/abc.com.db
$TTL 86400
@ IN SOA ns.abc.com. root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS ns.abc.com.
ns IN A 192.168.20.88
www IN A 192.168.20.88
tec IN CNAME www 把他们做成别名
mkt IN CNAME www
(2)编译:/etc/httpd/conf/httpd.conf
Listen 80 取消其他监听的端口
NameVirtualHost 192.168.20.88:80 (990多行) 基于主机头的虚拟主机
更改站点属性:
<VirtualHost 192.168.20.88:80>
ServerAdmin testlt@126.com
DocumentRoot /var/www/html
ServerName
ErrorLog logs/www-error_log
CustomLog logs/www-access_log common
</VirtualHost>
<VirtualHost 192.168.20.88:80>
ServerAdmin testlt@126.com
DocumentRoot /var/www/tec
ServerName tec.abc.com
ErrorLog logs/tec-error_log
CustomLog logs/tec-access_log common
</VirtualHost>
<VirtualHost 192.168.20.88:80>
ServerAdmin testlt@126.com
DocumentRoot /var/www/mkt
ServerName mkt.abc.com
ErrorLog logs/mkt-error_log
CustomLog logs/mkt-access_log common
</VirtualHost>
(3)重启一下httpd,与dns服务,然后在客户端进行访问:
首先清除客户点dns闪存 ipconfig /flushdns
测试站点的承载��力:
ab apache benchmark
ab -c 同时在线的用户数量 -n 并发请求数量