使用 Apache 服务部署静态网站(RHEL7) —学习笔记
配置安装httpd
mkdir -p /media/cdrom
mount /dev/cdrom /media/cdrom
vim /etc/yum.repos.d/rhel7.repo
[rhel7]
name=rhel7
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
yum install httpd
systemctl start httpd
systemctl enable httpd
http://127.0.0.1 # 可看到提供 Web 服务的 httpd 服务程序的默认页面
#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 秒
替换掉 httpd 服务程序的默认首页面
echo "Welcome To LinuxProbe.Com" > /var/www/html/index.html
把保存网站数据的目录修改为/home/wwwroot 目录
mkdir /home/wwwroot
echo "The New Web Directory" > /home/wwwroot/index.html
vim /etc/httpd/conf/httpd.conf
119 DocumentRoot "/home/wwwroot" # 用于定义网站数据保存路径
124 <Directory "/home/wwwroot"> # 用于定义目录权限
systemctl restart httpd
vim /etc/selinux/config # SELINUX=enforcing permissive disabled
SELINUX=enforcing # 强制启用 # 只警告不拦截 # 不警告也不拦截
getenforce
setenforce 0 # 0 为禁用, 1 为启用
getenforce
firefox
setenforce 1
ls -Zd /var/www/html # SELinux 安全上下文
system_u:object_r:httpd_sys_content_t:s0 /var/www/html
# 用户段: 角色段 :类型段
# 用户段 system_u 代表系统进程的身份
# 角色段 object_r 代表文件目录的角色
# 类型段 httpd_sys_content_t 代表网站服务的系统文件
ls -Zd /home/wwwroot
unconfined_u:object_r:home_root_t:s0 /home/wwwroot
#semanage 命令 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/ # 将设置好的SELinux 安全上下文立即生效
# -Rv 参数对指定的目录进行递归操作
# 个人用户主页功能
vim /etc/httpd/conf.d/userdir.conf
17 # UserDir disabled # 让 httpd 服务程序开启个人用户主页功能
24 UserDir public_html # 网站数据在用户家目录中的保存目录名称,即 public_html 目录
su - linuxprobe
mkdir public_html
echo "This is linuxprobe's website" > public_html/index.html
chmod -Rf 755 /home/linuxprobe
getsebool -a | grep http
setsebool -P httpd_enable_homedirs=on # -P 参数,让修改后的 SELinux 策略规则永久生效且立即生效
firefox
http://127.0.0.1/-linuxprobe/
网页密码
htpasswd -c /etc/httpd/passwd linuxprobe # -c 参数表示第一次生成
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 linuxprobe #用户进行账户密码登录时需要验证的用户名称
systemctl restart httpd
虚拟主机功能
基于 IP 地址
// 配置网卡
vim /etc/sysconfig/network-scripts/ifcfg-bond0
IPADDR0=192.168.10.10
IPADDR1=192.168.10.20
IPADDR2=192.168.10.30
systemctl restart network
mkdir -p /home/wwwroot/10 # 创建用于保存不同网站数据的 3 个目录
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
vim /etc/httpd/conf/httpd.conf
113 <VirtualHost 192.168.10.10> #追加写入基于 IP 地址的虚拟主机网站参数
114 DocumentRoot /home/wwwroot/10
115 ServerName www.linuxprobe.com
116 <Directory /home/wwwroot/10 >
117 AllowOverride None
118 Require all granted
119 </Directory>
120 </VirtualHost>
121 <VirtualHost 192.168.10.20> #追加写入基于 IP 地址的虚拟主机网站参数
122 DocumentRoot /home/wwwroot/20
123 ServerName bbs.linuxprobe.com
124 <Directory /home/wwwroot/20 >
125 AllowOverride None
126 Require all granted
127 </Directory>
128 </VirtualHost>
129 <VirtualHost 192.168.10.30> #追加写入基于 IP 地址的虚拟主机网站参数
130 DocumentRoot /home/wwwroot/30
131 ServerName tech.linuxprobe.com
132 <Directory /home/wwwroot/30 >
133 AllowOverride None
134 Require all granted
135 </Directory>
136 </VirtualHost>
systemctl restart httpd
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
firefox
exit
基于主机域名
vim /etc/hosts
192.168.10.10 www.linuxprobe.com bbs.linuxprobe.com tech.linuxprobe.com
ping -c 4 www.linuxprobe.com
mkdir -p /home/wwwroot/www
mkdir -p /home/wwwroot/bbs
mkdir -p /home/wwwroot/tech
echo "WWW.linuxprobe.com" > /home/wwwroot/www/index.html
echo "BBS.linuxprobe.com" > /home/wwwroot/bbs/index.html
echo "TECH.linuxprobe.com" > /home/wwwroot/tech/index.html
vim /etc/httpd/conf/httpd.conf
113 <VirtualHost 192.168.10.10>
114 DocumentRoot "/home/wwwroot/www"
115 ServerName "www.linuxprobe.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.linuxprobe.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.linuxprobe.com"
132 <Directory "/home/wwwroot/tech">
133 AllowOverride None
134 Require all granted
135 </directory>
136 </VirtualHost>
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www/*
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs/*
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech/*
restorecon -Rv /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
vim /etc/httpd/conf/httpd.conf
43 Listen 6111
44 Listen 6222
113 <VirtualHost 192.168.10.10:6111>
114 DocumentRoot "/home/wwwroot/6111"
115 ServerName www.linuxprobe.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.linuxprobe.com
124 <Directory "/home/wwwroot/6222">
125 AllowOverride None
126 Require all granted
127 </Directory>
128 </VirtualHost>
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111/*
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222/*
restorecon -Rv /home/wwwroot/
systemctl restart httpd
semanage port -l | grep http
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
systemctl restart httpd
firefox
# Apache 的访问控制
mkdir /var/www/html/server
echo "Successful" > /var/www/html/server/index.html
vim /etc/httpd/conf/httpd.conf
129 <Directory "/var/www/html/server">
130 SetEnvIf User-Agent "Firefox" ff=1
131 Order allow,deny # Order 指令,定义 Allow 或 Deny 指令起作用的顺序
132 Allow from env=ff
133 </Directory>
systemctl restart httpd
firefox
vim /etc/httpd/conf/httpd.conf
129 <Directory "/var/www/html/server">
130 Order allow,deny
131 Allow from 192.168.10.20 # 只允许 IP 地址为 192.168.10.20 的主机访问网站资源
132 Order allow,deny
133 </Directory>
systemctl restart httpd
firefox