第10章 使用Apache服务部署静态网站
10.1安装网站服务
dnf install httpd
安装完成重启并加入启动项,打开firefox,输入本机的IP,就会出现默认页面。
10.2配置服务文件参数
替换httpd服务程序的默认首页面
echo "HELLO WORLD" > /var/www/html/index.html
此时默认页面就会变成上述输入的内容
修改网站数据保存目录
在默认情况下,网站数据是保存在/var/www/html目录中,而如果想把保存网站数据的目录修改为/home/wwwroot目录
第1步:建立网站数据的保存目录,并创建首页文件。
mkdir /home/wwwroot
echo "The New Web Directory" > /home/wwwroot/index.html
第2步:编辑配置文件,将约第122行用于定义网站数据保存路径的参数DocumentRoot修改为/home/wwwroot,同时还需要将约第127行与134行用于定义目录权限的参数Directory后面的路径也修改。为/home/wwwroot
vim /etc/httpd/conf/httpd.conf
122 DocumentRoot "/home/wwwroot"
127 <Directory "/home/wwwroot">
131 </Directory>
第3步:重启验证,刷新浏览器
systemctl restart httpd
提示权限不足
原因:SElinux权限不足
10.3SELinux安全子系统
SELinux服务有三种配置模式
enforcing:强制启用安全策略模式,将拦截服务的不合法请求。
permissive:遇到服务越权访问时,只发出警告而不强制拦截。
disabled:对于越权的行为不警告也不拦截。
/etc/selinux/config //selinux的配置文件
getenforce命令 //查看当前SElinux服务的运行模式
setenforce 0 //l临时修改,0为禁用,1为启用
getenforce //此时为Permissive
此时刷新,就看到正常的网页内容了。
ls -Zd /var/www/html
ls -Zd /home/wwwroot
两个目录的安全上下文不同
semanage 命令
管理SElinux的策略,semanage [选项][文件]
-l 查询
-a 添加
-m 修改
-d 删除
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*
restorecon -Rv /home/wwwroot/ //让设置立即生效
10.4个人用户主页功能
第1步:编写配置文件,开启个人主页功能
vim /etc/httpd/conf.d/userdir.conf
17 #Userdir disabled //注释该行
24 UserDir public_html //该行的注释取消
第2步:在用户家目录建立保存网站数据的文件
su - zhangsan //切换到普通用户
mkdir public_html
echo "hahaha" > /public_html/index.html
chmod -Rf 755 /home/zhangsan
第3步:重启,访问(网址/~用户名),此时会有报错,SElinux权限不足的原因
第4步:设置SElinux
getsebool -a | grep http //查看所有与http有关的协议
httpd_enable_homedirs --> off //此状态为off,所以第3步报错
setsebool -P httpd_enable_homedirs=on //开启
设置访问密码
第1步:生成密码库,-c表示第一次生成
htpasswd -c /etc/httpd/passwd zhangsan
第2步:编辑配置文件,添加31-37内容
vim /etc/httpd/conf.d/userdir.conf
31 <Directory "/home/*/public_html">
32 AllowOverride all
33 authuserfile /etc/httpd/passwd
34 authname aabbdddkkkk
35 authtype basic
36 require user linuxprobe
37 </Directory>
10.5虚拟主机功能
-
10.5.1基于IP地址
配置三个个不同IP地址并保证网络连通性,例如:
192.168.10.10
192.168.10.20
192.168.10.30第1步:建立网站保存目录,分别写入内容
mkdir -p /home/wwwroot/10 mkdir -p /home/wwwroot/20 mkdir -p /home/wwwroot/30 echo "IP:192.168.10.10" > /home/wwwroot/10/index.html echo "IP:192.168.10.20" > /home/wwwroot/20/index.html echo "IP:192.168.10.30" > /home/wwwroot/30/index.html
第2步:编写配置文件,追加以下内容
vim /etc/httpd/conf/httpd.conf 132 <VirtualHost 192.168.10.10> 133 DocumentRoot /home/wwwroot/10 134 ServerName www.linuxprobe.com 135 <Directory /home/wwwroot/10> 136 AllowOverride None 137 Require all granted 138 </Directory> 139 </VirtualHost> 140 <VirtualHost 192.168.10.20> 141 DocumentRoot /home/wwwroot/20 142 ServerName www.linuxcool.com 143 <Directory /home/wwwroot/20> 144 AllowOverride None 145 Require all granted 146 </Directory> 147 </VirtualHost> 148 <VirtualHost 192.168.10.30> 149 DocumentRoot /home/wwwroot/30 150 ServerName www.linuxdown.com 151 <Directory /home/wwwroot/30> 152 AllowOverride None 153 Require all granted 154 </Directory> 155 </VirtualHost>
第3步:设置SElinux
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10 semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/* semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20 semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/* semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30 semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/* restorecon -Rv /home/wwwroot
-
10.5.2基于主机域名
第1步:编写配置文件vim /etc/hosts 192.168.10.10 www.linux.com bbs.linux.com 编写完成,保存退出,ping一下验证 ping -c 4 www.linux.com
第2步:创建保存目录,写入内容
mkdir -p /home/wwwroot/linux1 mkdir -p /home/wwwroot/linux2 echo "linux1" > /home/wwwroot/linux1/index.html echo "linux2" > /home/wwwroot/linux2/index.html
第3步:编写httpd配置文件,追加以下内容
vim /etc/httpd/conf/httpd.conf 132 <VirtualHost 192.168.10.10> 133 Documentroot /home/wwwroot/linux1 134 ServerName www.linux.com 135 <Directory /home/wwwroot/linux2> 136 AllowOverride None 137 Require all granted 138 </Directory> 139 </VirtualHost> 140 <VirtualHost 192.168.10.10> 141 Documentroot /home/wwwroot/linux2 142 ServerName bbs.linux.com 143 <Directory /home/wwwroot/linux2> 144 AllowOverride None 145 Require all granted 146 </Directory> 147 </VirtualHost>
第4步:设置SElinux
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linux1 semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linux1/* semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linux2 semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linux2/* restorecon -Rv /home/wwwroot