Apache 服务部署静态网站

Apache 服务部署静态网站
1、配置好自己的yum仓库。
命令:
#mkdir /media/cdrom
#mount /dev/cdrom /media/cdrom
#vim /etc/yum.repos.d/centos7.repo
[centos7]
name=centos7
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

2、检查firewalld是否已经关闭;
命令:systemctl stop firewalld 关闭防火墙
systemctl disable firewalld 关闭开机启动功能
systemctl is-enabled firewalld 检查是否已经禁用开机启动
3、不关闭firewalld的情况下,永久开放httpd的端口;
命令:
查看已开放的端口、服务
#firewall-cmd --list-ports;firewall-cmd --list-services
防火墙开通http服务
#firewall-cmd --permanent --add-service=http
重新加载服务,立刻生效
#firewall-cmd --reload
如果需要开放其它的端口,比如:6000
命令:
开放6000端口
#firewall-cmd --zone=public --add-port=6000/tcp --permanent
关闭端口
#firewall-cmd --zone=public --remove-port=6000/tcp --permanent
重启防火墙
#firewall-cmd --reload

准备工作已经完成,现在开始安装apache服务,其服务的软件包名称为:httpd
#yum -y install httpd
#systemctl start httpd
#systemctl enable httpd
打开网页输入:127.0.0.1会显示Apache的官方网站;

配置服务文件参数:
Linux 系统中的配置文件
服务目录 /etc/httpd
主配置文件 /etc/httpd/conf/httpd.conf
网站数据目录 /var/www/html
访问日志 /var/log/httpd/access_log
错误日志 /var/log/httpd/error_log
配置 httpd 服务程序时最常用的参数以及用途描述
ServerRoot 服务目录
ServerAdmin 管理员邮箱
User 运行服务的用户
Group 运行服务的用户组
ServerName 网站服务器的域名
DocumentRoot 网站数据目录
Directory 网站数据目录的权限
Listen 监听的 IP 地址与端口号
DirectoryIndex 默认的索引页页面
ErrorLog 错误日志文件
CustomLog 访问日志文件
Timeout 网页超时时间,默认为 300 秒
(1)向配置文件中写入数据:
#echo "Welcome to china." >/var/www/html/index.html
#firefox 输入本地IP地址:127.0.0.1 会显示以上echo的内容。
(2)修改默认的网站数据目录:
#mkdir /home/wwwroot
#echo "This new web directroy." >/home/wwwroot/index.html
(3)打开httpd服务的主配置文件:
#vim /etc/httpd/conf/http.conf
将119行;DocumentRoot修改为:/home/wwwroot
将124行;Directory后面的路径修改为:/home/wwwroot
重新启动httpd;systemctl restart httpd,这时候打开网页输入127.0.0.1会提示:Foridden,You don't have permission to access /index.html on this server.而这是SElinux在捣乱。
下面来处理这个问题:SELinux安全子系统;
#setenforce 1
#ls -Zd /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
#ls -Zd /home/wwwroot
drwxrwxrwx. root root unconfined_u:object_r:home_root_t:s0 /home/wwwroot
以上显示由于更改了网站数据的目录,导致SELinux安全上下文不一样,所以网站打无汉打开;只需要更改/home/wwwroot/ 的SELinux上下文值。

semanage命令:
➢ -l 参数用于查询;
➢ -a 参数用于添加;
➢ -m 参数用于修改;
➢ -d 参数用于删除
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
#semanage fcontext -a -t httpd_sys_context_t /home/wwwroot/*
执行上述操作后,还无法立即访问网站,需要使用restorecon命令将设置好的SELinux安全上下文立即生效。
#restorecon -Rv /home/wwwroot/
#firefox 打开网页后可以正常显示:This new web directiory.

1、个人用户主页功能
(1)在httpd服务程序中,默认是没有开启个人主页功能。因此我们需要编辑主配置文件;
#vim /etc/httpd/conf.d/userdir.conf
(1.1)在17行中UserDir disabled 参数前加上#,表示启用个人用户主页功能。
(1.2)在24行中UserDir public_html 参数前去掉#,表示启动用户的家目录功能。
(2)在用户家目录中建立保存网站的数据目录及首面文件,还需要把家目录的权限修改为755,这样才能保证网站其他人可以正常访问;
#su - huangmeng
$mkdir public_html
$echo "This is my website" >public_html/index.html
$chmod -Rf 755 /home/huangmeng
(3)重新启动httpd服务程序;访问网址格式为:“网址/~用户名”,
本例中输入:127.0.0.1/~huangmeng,此时会发现无法访问,下面来排查问题;
(4)使用getsebool命令查询并过滤出所有与 HTTP 协议相关的安全策略。
#getsebool -a |grep http
#http_enabled_homedirs -->off 发现默认是关闭;
#setsebool -P httpd_enable_homedirs=on 修改为开启状态;
#firefox 此时访问已经能正常显示了;
2、对个人网站进行加密;
(1)利用htpasswd命令生成密码数据库,-c参数表示第一次生成。后面再分别添加密码数据库的存放文件,以及验证要用到的用户名称。
#htpasswd -c /etc/httpd/passwd hello
(2)编辑个人用户主页功能的配置文件;把第 31~35 行的参数信息修改成下列内容。
#vim /etc/httpd/conf.d/userdir.conf
31 <Directory "/home/*/public_html">
32 AllowOverride all
33 authuserfile "/etc/httpd/passwd" 密码验证文件保存路径
34 authname "My privately website" 访问个人用户网站时的提示信息
35 authtype basic
36 require user hello 登录时需要验证的用户名称
37 </Directory>
(3)重启 httpd 服务程序即可生效。

虚拟主机功能:主要有三种模式
(1)基于 IP 地址
首先设置三个网卡IP地址进行模拟分别为:192.168.10.10/20/30,保证三个IP地址能正常互通。
(1.1)分别在/home/wwwroot 中创建用于保存不同网站数据的 3 个目录,并且写入数据。
#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
(1.2)在 httpd 服务的配置文件中大约 113 行处开始,分别追加写入三个基于 IP 地址的虚拟主机网站参数,然后保存并退出。
# vim /etc/httpd/conf/httpd.conf
113 <VirtualHost 192.168.10.10>
114 DocumentRoot /home/wwwroot/10
115 ServerName www.huangmeng.com
116 <Directory /home/wwwroot/10 >
117 AllowOverride None
118 Require all granted
119 </Directory>
120 </VirtualHost>

121 <VirtualHost 192.168.10.20>
122 DocumentRoot /home/wwwroot/20
123 ServerName bbs.huangmeng.com
124 <Directory /home/wwwroot/20 >
125 AllowOverride None
126 Require all granted
127 </Directory>
128 </VirtualHost>

129 <VirtualHost 192.168.10.30>
130 DocumentRoot /home/wwwroot/30
131 ServerName tech.huangmeng.com
132 <Directory /home/wwwroot/30 >
133 AllowOverride None
134 Require all granted
135 </Directory>
136 </VirtualHost>
(1.3)重启httpd服务;
此时可以通过IP地址进行访问了;如果显示无法访问,就对比一下网站数据目录的SELinux上下文是否正确。

(2)基于主机域名
(2.1)手工定义 IP 地址与域名之间对应关系的配置文件,保存并退出后会立即生效。
# vim /etc/hosts
192.168.10.10 www.huangmeng.com bbs.huangmeng.com tech.huangmeng.com
#ping www.huangmeng.com 保证能ping通。
(2.2)分别在/home/wwwroot 中创建用于保存不同网站数据的三个目录,并向其中分别写入网站的首页文件。
# mkdir -p /home/wwwroot/www
# mkdir -p /home/wwwroot/bbs
# mkdir -p /home/wwwroot/tech
# echo "www.huangmeng.com" > /home/wwwroot/www/index.html
# echo "bbs.huangmeng.com" > /home/wwwroot/bbs/index.html
# echo "tech.huangmeng.com" > /home/wwwroot/tech/index.html
(2.3)在 httpd 服务的配置文件中大约 113 行处开始,分别追加写入三个基于主机名的
虚拟主机网站参数,然后保存并退出。
# vim /etc/httpd/conf/httpd.conf
113 <VirtualHost 192.168.10.10>
114 DocumentRoot "/home/wwwroot/www"
115 ServerName "www.huangmeng.com"
116 <Directory "/home/wwwroot/www">
117 AllowOverride None
118 Require all granted
119 </directory>
120 </VirtualHost>

121 <VirtualHost 192.168.10.10>
122 DocumentRoot "/home/wwwroot/bbs"
123 ServerName "bbs.huangmeng.com"
124 <Directory "/home/wwwroot/bbs">
125 AllowOverride None
126 Require all granted
127 </Directory>
128 </VirtualHost>

129 <VirtualHost 192.168.10.10>
130 DocumentRoot "/home/wwwroot/tech"
131 ServerName "tech.huangmeng.com"
132 <Directory "/home/wwwroot/tech">
133 AllowOverride None
134 Require all granted
135 </directory>
136 </VirtualHost>

(2.3)重启httpd程序服务;
此时可以通过域名(www.huangmeng.com)进行访问了;如果显示无法访问,就对比一下网站数据目录的SELinux上下文是否正确。

(3)基于端口号
(3.1)分别在/home/wwwroot 中创建用于保存不同网站数据的两个目录,并向其中分别写入网站的首页文件。
# mkdir -p /home/wwwroot/6111
# mkdir -p /home/wwwroot/6222
# echo "port:6111" > /home/wwwroot/6111/index.html
# echo "port:6222" > /home/wwwroot/6222/index.html
# echo "port:6333" > /home/wwwroot/6333/index.html
(3.2)在 httpd 服务配置文件分别添加用于监听 6111、6222、6333 端口的参数。
# vim /etc/httpd/conf/httpd.conf
43 Listen 6111
44 Listen 6222
45 Listen 6333
(3.3)在 httpd 服务的配置文件中大约 113 行处开始,分别追加写入两个基于端口号的虚拟主机网站参数,然后保存并退出。
# vim /etc/httpd/conf/httpd.conf
113 <VirtualHost 192.168.10.10:6111>
114 DocumentRoot "/home/wwwroot/6111"
115 ServerName www.huangmeng.com
116 <Directory "/home/wwwroot/6111">
117 AllowOverride None
118 Require all granted
119 </Directory>
120 </VirtualHost>

121 <VirtualHost 192.168.10.10:6222>
122 DocumentRoot "/home/wwwroot/6222"
123 ServerName bbs.huangmeng.com
124 <Directory "/home/wwwroot/6222">
125 AllowOverride None
126 Require all granted
127 </Directory>
128 </VirtualHost>

129 <VirtualHost 192.168.10.10:6333>
130 DocumentRoot "/home/wwwroot/tech"
131 ServerName "tech.huangmeng.com"
132 <Directory "/home/wwwroot/6333">
133 AllowOverride None
134 Require all granted
135 </directory>
136 </VirtualHost>
(3.4)我们可以使用 semanage 命令查询并过滤出所有与 HTTP 协议相关且SELinux 服务允许的端口列表。
# semanage port -l | grep http
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
(3.5)SELinux 允许的与 HTTP 协议相关的端口号中默认没有包含 6111 和 6222, 因此需要将这两个端口号手动添加进去。
# semanage port -a -t http_port_t -p tcp 6111
# semanage port -a -t http_port_t -p tcp 6222
# semanage port -l| grep http
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 6333,6222, 6111, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
(3.6)重启httpd程序服务;
此时可以通过IP:端口(192.168.10.10:61111)进行访问了;如果显示无法访问,就对比一下网站数据目录的SELinux上下文是否正确。

Apache 的访问控制:禁止使用firefox以外的浏览器登入网站
(1)禁止使用firefox以外的浏览器登入网站
# mkdir /home/wwwroot/server
# echo "Successful" > /home/wwwroot/server/index.html
(2)打开 httpd 服务的配置文件,在第 129 行后面添加下述规则来限制源主机的访问。
# vim /etc/httpd/conf/httpd.conf
129 <Directory "/home/wwwroot/server">
130 SetEnvIf User-Agent "Firefox" ff=1
131 Order allow,deny
132 Allow from env=ff
133 </Directory>
(3)重启httpd程序服务,可以测试效果,除firefox以外其它的浏览器无法打开网站。

Apache 的访问控制:禁止其它IP登入浏览网站
(1)例如,我们只允许 IP 地址为 192.168.10.20 的主机访问网站资源,那么就可以在 httpd 服务配置
文件的第 129 行后面添加下述规则。
# vim /etc/httpd/conf/httpd.conf
129 <Directory "/var/www/html/server">
130 Order allow,deny
131 Allow from 192.168.10.20
132 Order allow,deny
133 </Directory>
(2)重启httpd程序服务,可以测试效果,除配置文件中的IP可访问网站,其它都禁止访问。

猜你喜欢

转载自www.cnblogs.com/comprehensive/p/12120015.html