既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
#vi /etc/httpd/conf.d/userdir.conf
将第17行的UserDir disabled前加一个#,代表该行被注释掉,不再起作用。
将第23行的UserDir pudic_html前的#号去除,表示该行被启用。
注意:UserDir参数表示的是需要在用户家目录中创建的网站数据目录的名称(即public_html)
重启Apache服务程序
# systemctl restart httpd
2、创建个人用户网站数据
#su linuxprobe
创建网站数据目录
#mkdir public_html
写入首页文件内容
#echo "This linuxprobe's website" > public_html/index.html
给予网站目录755的访问权限
#chmod -Rf 755 ./
打开浏览器,访问地址http://127.0.0.1/~用户名,如果是报错页面,是SELinux服务在捣蛋。
3、设置SELinux允许策略
getsebool命令用于查询所有SELinux规划的布尔值,格式为 : “getsebool -a”
SELinux策略布尔值: 只有0/1两种情况,0或off为禁止,1或on为允许。
查看并搜索所有与家目录有关的SELinux策略
#getsebool -a |grep home
将个人用户网站功能策略设置为允许
#setsebool -P httpd_enable_homedirs=on
刷新浏览器访问linuxprobe用户个人网站
http:127.0.0.1/linuxprobe
4、增加密码安全验证
使用htpasswd命令生成密码数据库 (-c 参数用于第一次生成) :
#htpasswd -c /etc/httpd/paaswd linuxprobe
New password:
Re-type new password:
Adding password for user linuxprobe
编辑配置文件开启密码验证
#vi /etc/httpd/conf.d/userdir.conf
如果口令输入误会直接禁止访问 :
Unauthorized
虚拟网站主机功能
Apache的虚拟主机功能(Virtual Host)是可以让一台服务器基于IP、主机名或端口号实现多个网站访问的技术。
1、基于IP地址
一台服务器拥有多个IP地址,当用户访问不同IP地址时显示不同的网站页面
2、分别创建网站数据目录
在/home/wwwroot目录下分别创建三个网站数据目录
#mkdir -p /home/wwwroot/10
#mkdir -p /home/wwwroot/20
#mkdir -p /home/wwwroot/30
分别在这三个网站数据目录中写入主页文件,内容为该网站的IP地址 :
#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
3、在配置文件中描述基于IP地址的虚拟主机。
4、修改网站数据目录的SELinux安全上下文
需要分别修改网站数据目录以及网页文件的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/\*
立即恢复SELinux安全上下文 :
#restorecon -Rv /home/wwwroot
5、分别访问192.168.10.10/20/30验证结果 :
请注意,当你完成实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突
2、基于主机名
当服务器无法为每个网站都分配到独立IP地址时,可以试试让Apache服务程序自动识别来源主机名或域名然后跳转指定的网站。
第1步 : 配置网卡IP地址与hosts文件
hosts文件作用是定义IP地址与主机名的映射关系,即强制将某个主机名地址解析到指定的IP地址。
#vi /etc/hosts
//每行只能写一条,格式为IP地址+ 空格+主机名(域名)。
192.168.10.10 www.linuxprobe.com
192.168.10.20 bbs.linuxprobe.com
192.168.10.30 tech.linuxprobe.com
第2步 :分别创建网站数据目录
#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/www/index.html
#echo "TECH.linuxprobe.com" >/home/wwwroot/www/index.html
第3步 :在配置文件中描述基于主机名称的虚拟主机
编辑主配置文件(/etc/httpd/conf/httpd.conf),在主配置文件的末尾按下面格式定义虚拟主机信息 :
重启apache网站服务程序
把服务加到启动项 :systemctl enable httpd
第4步 :修改网站数据目录的SELinux安全上下文 :
#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/\*
让新的SELinux安全上下文立即生效 :
#restorecon -Rv /home/wwwroot
第5步 :分别访问网站验证结果
请注意,当你完成实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突
2、基于端口号
让服务器开启多个服务端口后,然后让用户能够通过访问服务器的指定端口来找到想要的网站。
第1步 :配置服务器的IP地址
第2步 :分别创建网站数据目录
分别创建端口为6111,6222的网站数据目录 :
#mkdir -p /home/wwwroot/6111
#mkdir -p /home/wwwroot/6222
分别在网站数据目录中写入不同内容的主页文件 :
#echo "port:6111" > /home/wwwroot/6111/index.html
#echo "port:6111" > /home/wwwroot/6222/index.html
第3步 :在配置文件中描述基于端口号的虚拟主机。
编辑主配置文件(/etc/httpd/conf/httpd.conf),找到约在42行的Listen 80,并在下面追加 :
Listen 6111
Listen 6222
然后在主配置文件的末尾按下面格式定义虚拟主机信息 :
重启apache服务
报错了
这是因为SELinux服务检测到6111与6222端口原本并不属于Apache服务端口,但现在却被以Apache的名义监听了。
第4步 :修改网站数据目录的SELinux安全上下文并允许端口监听。
修改网站数据目录的安全上下文:
#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/\*
让新的SELinux安全上下文立即生效 :
#restorecon -Rv /home/wwwroot
使用semanage命令搜索在SELinux系统中有关http服务的端口号 :
再次尝试启动Apache网站服务程序就没问题了:
#systemctl restart httpd
第5步 :分别访问网站验证结果
请注意,当你完成实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突
Apache的访问控制
基于主机名、IP地址以及客户端特征做Apache网页资源的访问控制,常用的指令有 :
Order(排序) , Allow(允许), Deny(拒绝),Satisfy(满足) 。
其中Order指令用于定义Allow或Deny起作用的顺序,分别实现了允许或者拒绝某个主机访问服务器网页资源。
比如说 "Order Allow,Deny"则代表着先将客户端与允许规则进行对比,若匹配成功则允许访问,反之则直接拒绝。
创建网站数据目录和首页文件
#mkdir /var/www/html/server
#echo "Successful" > /var/www/html/server/index.html
根据浏览器的变量特征,只允许IE浏览器访问网站数据。
#vi /etc/httpd/conf/httpd.conf
//在大约129行的地方添加参数
<Directory "/var/www/html/server">
SetEnvIf User-Agent "Internet Explorer" ie=1
Order allow,deny
Allow from env=ie
保存配置文件后,重启服务systemctl restart httpd,然后用浏览器测试访问网站页面
如果希望仅允许火狐浏览器访问页面,请将配置文件修改为 :
<Directory "/var/www/html/server">
SetEnvIf User-Agent "Firefox" ff=1
Order allow,deny
Allow from env=ff
</Directory>
根据来访源地址,仅限192.168.10.10的主机访问网站。
此时我们需要两台主机来完成实验,请配置主机IP地址后能够互相通信。
#vi /etc/httpd/conf/httpd.conf
//在大约129行的地方添加参数。
Order allow,deny
Allow from 192.168.10.10
保存配置文件后,重启服务systemctl restart httpd,然后用浏览器测试访问网站页面
然后再使用远程主机 (192.168.10.20) 尝试访问页面,顺利的成功了:
YUM安装Apache
1、Apache在yum里的名称为httpd,所以先在机器中查询有没有安apache
rpm -qa | grep httpd
如果没有数据返回,那就是没有安装
2、查询没有安装Apache后,来进行安装
yum install httpd
3、开启httpd的服务
#service httpd start
或
#systemctl enable httpd
开机自启
#chkconfig --add httpd
4、现在就可以来测试一下apache是否已经可以成功访问了,只需要用浏览器输入linux服务器的IP地址来访问就可以了
当出现上图这个测试页时,就说明已经安装成功了
5、Apache的主目录在cd /var/www/html 下,可以将需要发布的网页放在这个目录下
6、如果不想把网站主目录,而是想放到别的目录,就需要设置虚拟目录
首先确定好需要设置哪个目录为虚拟目录,然后进入配置文件
vi /etc/httpd/conf/httpd.conf
然后搜索Alias,找到下图的位置
在上图绿色箭头所指的位置,后面跟上你所要设置虚拟目录的目录位置
然后保存退出
7、然后再重启一下httpd
service httpd restart
8、这样配置好了之后,还是不可以访问的,访问时会提示没有权限,不过不是权限的问题,而是linux内核防火墙SELinux的问题
输入setup然后回车
在上图中选择第二项“Firewall configuration”
然后在”SELinux“的选项中,选择”Disabled“来关闭
这样还是没办法访问的,还需要输入命令来进行关闭,命令如下
setenforce 0
9、现在再来访问一下虚拟目录里的网站,就可以发现成功访问了!
扩展
编写apache启动脚本
[root@linux ~]# cd /etc/init.d/
[root@linux init.d]# touch httpd
[root@linux ~]# vim httpd.sh
#!/bin/bash
#chkconfig:345 85 15
#description:Start and stop the Apache HTTP Server
function httpd\_start(){
/usr/local/apache/bin/apachectl start
}
function httpd\_stop(){
/usr/local/apache/bin/apachectl stop
}
case $1 in
start)
httpd_start
;;
stop)
httpd_stop
;;
restart)
httpd_stop
httpd_start
;;
\*)
echo "Usage: httpd start|stop|restart!"
;;
esac
注意:以下两行内容是服务能够在chkconfig里添加的必要代码
#chkconfig:345 85 15
#description:Start and stop the Apache HTTP Server
把编写的启动脚本赋予执行权限,(添加到系统服务中)
[root@linux ~]# chmod +x httpd
[root@linux ~]# ll
-rwxr-xr-x 1 root root 496 Jul 18 10:12 httpd
重新加载守护进程,启动服务
[root@linux ~]# systemctl daemon-reload #先加载守护进程,否则无法启动服务
[root@linux ~]# systemctl start httpd
[root@linux ~]# netstat -lnpt|grep http
tcp6 0 0 :::80 :::\* LISTEN 1077/httpd
设置开机自启动
[root@linux ~]# chkconfig --add httpd
查看开机自启动结果:
[root@linux ~]# chkconfig --list|grep httpd
扩展
通过 APACHE 访问日志 access.log 统计 IP 和每个地址访问的次数,列出访问量前 10 名的 IP 地址,写出具体命令
awk '{print $1}' access.log|uniq -c|sort -rn |head -10
参考链接
Poll的笔记
链接:https://www.cnblogs.com/maybe2030/p/4781555.html:
Apache服务器的安装与配置 : https://mp.weixin.qq.com/s/NXZgAhXQJQJ5yqQi-0_Kaw
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
{print $1}’ access.log|uniq -c|sort -rn |head -10
**参考链接**
Poll的笔记
链接:https://www.cnblogs.com/maybe2030/p/4781555.html:
Apache服务器的安装与配置 : https://mp.weixin.qq.com/s/NXZgAhXQJQJ5yqQi-0\_Kaw
[外链图片转存中...(img-bGYAPTMM-1715734226653)]
[外链图片转存中...(img-QW1bd1S6-1715734226653)]
[外链图片转存中...(img-ERe5AgSD-1715734226654)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618631832)**