1.简介
1.1 关于www服务器
WWW服务器是被动程序,只有接收到互联网中其他计算机发出的请求后才会响应,然后WWW服务器才会使用HTTP或者HTTPS将指导文件传输到客户机的浏览器上
1.2 关于HTTP协议
HTTP是超文本传输协议,提供了访问超文本信息的功能,是WWW浏览器和WWW服务器之间的应用层通信协议。
2.安装
2.1 安装httpd软件包(Apache服务程序,软件包名为httpd)
[root@Hoster130 Hoster]# yum install httpd
2.2 启动服务,并设置为开机启动
[root@Hoster130 Hoster]# systemctl start httpd
[root@Hoster130 Hoster]# systemctl enable httpd
2.3 打开浏览器查看
Http://127.0.0.1,成功显示
3. 配置服务器参数
3.1 手写文件替换默认页面
各个httpd服务目录路径
默认网站数据是存放在/var/www/html目录中的,首页名称为index.html
添加内容“Hello Web”到index.html
[root@Hoster130 ~]# echo "Hello Web" > /var/www/html/index.html
查看浏览器
3.2 编辑主配置文件httpd.conf
DocumentRoot参数修改为“/home/wwwroot
Directory中的"/var/www"修改为 "/home/wwwroot"
建立网站数据目录
[root@Hoster130 ~]# mkdir /home/wwwroot
创建首页文件
[root@Hoster130 ~]# echo "The New Web Directory" > /home/wwwroot/index.html
重启Apache服务
[root@Hoster130 ~]# systemctl restart httpd
再次查看浏览器,成功
4. 个人用户主页功能
4.1 开启个人用户主页功能
[root@Hoster130 ~]# vi /etc/httpd/conf.d/userdir.conf
重启服务
[root@Hoster130 ~]# systemctl restart httpd
4.2 创建个人用户网站数据
切换为普通用户Hoster
[root@Hoster130 ~]$ su - Hoster
创建网站数据目录(目录名与前面userdir.conf配置文件中UserDir中的参数保持一致)
[Hoster@Hoster130 ~]$ mkdir public_html
写入内容
[Hoster@Hoster130 ~]$ echo "This is Hoster's Web" > public_html/index.html
4.3 授权与访问
授予775访问权限
[Hoster@Hoster130 ~]$ chmod -Rf 755 /
访问浏览器 Http://127.0.0.1~Hoster
结果显示网页无法访问,此时应是SELinux策略的问题,因为SELinux默认不允许Apache服务个人用户主页这项功能。接下来我们需要设置相关策略为允许。
sudo setsebool -P httpd_enable_homedirs=on
如果该命令运行后显示"Selinux is disabled",需要 将 /etc/selinux/config 中的SELINUX值修改为1
访问浏览器,成功进入
4.4 添加密码安全验证
有时候并不希望所有人都可以留意访问到自己的个人网站,可以添加密码加强安全防护
[root@Hoster130 ~]# htpasswd -c /etc/httpd/passwd Hoster
编辑配置文件开启密码验证
[root@Hoster130 ~]# vi /etc/httpd/conf.d/userdir.conf
修改为以下内容,并重启服务
[root@Hoster130 ~]# systemctl restart httpd
注意:每次修改配置文件后,都需要重启服务
4.5 访问浏览器
输入用户密码,登陆成功
注意:这里的User name是Hoster,密码非该用户的系统密码,而是通过htpasswd命令创建的网站密码
5. 虚拟网站主机功能
5.1 基于IP地址
(1) 使用nmtui命令打开网卡,添加多个IP地址
重启网络服务,并用ping命令测试是否成功
[root@Hoster130 ~]# systemctl restart network
(2) 分别创建网站数目录并写入内容
[root@Hoster130 ~]# mkdir -p /home/wwwroot/130
[root@Hoster130 ~]# mkdir -p /home/wwwroot/140
[root@Hoster130 ~]# mkdir -p /home/wwwroot/150
[root@Hoster130 ~]# echo "IP:192.168.161.130" > /home/wwwroot/130/index.html
[root@Hoster130 ~]# echo "IP:192.168.161.140" > /home/wwwroot/140/index.html
[root@Hoster130 ~]# echo "IP:192.168.161.150" > /home/wwwroot/150/index.html
(3) 配置文件httpd.conf中配置基于IP地址的虚拟主机
[root@Hoster130 ~]# vi /etc/httpd/conf/httpd.conf
加入以下内容
<VirtualHost 192.168.161.130>
DocumentRoot /home/wwwroot/130
ServerName
<Directory /home/wwwroot/130>
AllowOverride None Require all granted </Directory>
</VirtualHost>
<VirtualHost 192.168.161.140>
DocumentRoot /home/wwwroot/140
ServerName
<Directory /home/wwwroot/140>
AllowOverride None Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.161.150>
DocumentRoot /home/wwwroot/150
ServerName
<Directory /home/wwwroot/150>
AllowOverride None Require all granted
</Directory>
</VirtualHost>
重启服务
[root@Hoster130 ~]# systemctl restart httpd
(4)分别访问,验证结果,例如下图即为成功
注意:为避免配置文件冲突导致报错,进行"基于主机名"和"基于端口号"的操作时需还原配置文件至"虚拟网站主机功能"之前或注释掉冲突部分
5.2 基于主机名
(1)配置hosts文件
[root@Hoster130 ~]# vi /etc/hosts
(2)分别创建网站数据目录并写入内容
[root@Hoster130 ~]# mkdir -p /home/wwwroot/www
[root@Hoster130 ~]# mkdir -p /home/wwwroot/bbs
[root@Hoster130 ~]# mkdir -p /home/wwwroot/tech
[root@Hoster130 ~]# echo "" > /home/wwwroot/www/index.html
[root@Hoster130 ~]# echo "" > /home/wwwroot/bbs/index.html
[root@Hoster130 ~]# echo "" > /home/wwwroot/tech/index.html
(3) 配置文件httpd.conf中配置基于主机名的虚拟主机
[root@Hoster130 ~]# vi /etc/httpd/conf/httpd.conf
加入以下内容
<VirtualHost 192.168.161.130>
DocumentRoot /home/wwwroot/www
<Directory /home/wwwroot/www>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.161.130>
DocumentRoot /home/wwwroot/bbs
ServerName
<Directory /home/wwwroot/bbs>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.161.130>
DocumentRoot /home/wwwroot/tech
ServerName
<Directory /home/wwwroot/tech>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
重启服务
[root@Hoster130 ~]# systemctl restart httpd
(4)分别访问,验证结果,例如下图即为成功
5.3 基于端口号
(1)分别创建网站数据目录并写入内容
[root@Hoster130 ~]# mkdir -p /home/wwwroot/8008
[root@Hoster130 ~]# mkdir -p /home/wwwroot/8009
[root@Hoster130 ~]# echo "port:8008" > /home/wwwroot/8008/index.html
[root@Hoster130 ~]# echo "port:8009" > /home/wwwroot/8009/index.html
(2)配置文件httpd.conf中配置基于端口号的虚拟主机
[root@Hoster130 ~]# vi /etc/httpd/conf/httpd.conf
在Listen 80后追加一下信息
添加虚拟主机
<VirtualHost 192.168.161.130:8008>
DocumentRoot /home/wwwroot/8008
ServerName
<Directory /home/wwwroot/8008>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.161.130:8009>
DocumentRoot /home/wwwroot/8009
ServerName
<Directory /home/wwwroot/8009>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
重启服务
[root@Hoster130 ~]# systemctl restart httpd