linux-运维进阶-15 Apache服务
基本步骤
1.安装启动Apache服务,防火墙放行相应的端口
1 | [root@localhost ~]# yum install httpd -y |
接下来在自己电脑浏览器上访问虚拟机的ip地址,例如我的ip是192.168.141.53,打开后可以看到这个测试页面:
2.编写第一个网页文件
1 | [root@localhost ~]# cd /var/www/html/ |
此时就可以在浏览器上输入ip看到这个网页了
如果你刚刚重启了虚拟机,有可能会看不到网页效果,此时需要重启httpd服务
1 | systemctl restart httpd |
此时就又可以在浏览器上输入ip看到这个hello world ! 的网页了
3.开启selinux,并配置selinux
1 | [root@localhost ~]# vim /etc/selinux/config |
4.重启虚拟机,查看selinux状态
1 | [root@localhost ~]# reboot |
5.查看网站服务的系统文件
1 | [root@localhost ~]# ls -Zd /var/www/html |
- 用户段system_u代表系统进程的身份
- 角色段object_r代表文件目录的角色
- 类型段httpd_sys_content_t代表网站服务的系统文件
例如上述网站服务的系统文件角为/var/www/html
6.新建一个目录,后面我们会把网站根目录改到这个新建目录下
1 | [root@localhost ~]# mkdir /home/wwwroot |
semanage工具
semanage命令用于管理SELinux的策略,格式为“semanage [选项] [文件]”
经常用到的几个参数及其功能如下所示:
- -l参数用于查询;
- -a参数用于添加;
- -m参数用于修改;
- -d参数用于删除。
安装semanage管理工具
1 | [root@localhost ~]# yum install policycoreutils-python.x86_64 -y |
PS: 如果安装不了就换个yum源
修改网站根目录,为新设置的网站根目录配置SELinux安全上下文
1 | 首先在新的网站目录下也弄一个默认网页 |
接下来重启httpd服务,为新设置的网站根目录配置SELinux安全上下文
1 | [root@localhost ~]# systemctl restart httpd.service |
再次到浏览器访问自己的ip,可以看到自己放在新的网站根目录地下的index.html的内容
个人用户主页
修改配置文件
1 | [root@localhost ~]# vim /etc/httpd/conf.d/userdir.conf |
将该配置文件第17行的内容由disabled改为public_html
保存退出,重启httpd服务,将httpd_enable_homedirs 的状态由 off改为on
1 | [root@localhost ~]# systemctl restart httpd.service |
新建一个用户,设置这个用户的主页
1 | [root@localhost ~]# cd /home |
到浏览器访问自己虚拟机的ip加上/~用户名/看看效果:
例如访问:192.168.141.12/~aaa/
密码认证
为个人用户主页加上密码认证(密码认证也可以直接用作正常网站)
1 | 在交互模式下为用户aaa设置httpd服务的密码,我这里设置的是123456 |
保存退出,重启httpd服务
1 | [root@localhost ~]# systemctl restart httpd |
再次到浏览器访问自己虚拟机的ip加上/~用户名/看看效果:
例如访问:192.168.141.12/~aaa/
虚拟主机
基于IP地址划分虚拟主机
首先,为虚拟机再添加三个IP地址
1 | [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 |
创建网页
为不同站点创建不同网站根目录
1 | [root@localhost ~]# cd /home/wwwroot/ |
修改配置文件
1 | [root@localhost wwwroot]# cd |
分别在浏览器打开ip,此处以192.168.141.15为例,可以看到报403错,服务器(咱们的虚拟机)拒绝浏览器访问这个网站,原因很简单,就是咱们创建了三个新的网站,却没有为三个新的网站根目录配置SELinux安全上下文,就会导致这种情况,接下来咱们来一一设置一下即可:
1 | [root@localhost ~]# systemctl restart httpd |
设置完成后重新启动httpd服务,然后浏览器就可以看到如下效果了
效果截图:
咱们可以把之前弄的网站一起看看,都是可以顺利访问的:
基于主机域名划分的虚拟主机
创建网页文件
1 | [root@localhost ~]# echo "i am 10" > /home/wwwroot/10/index.html |
修改http配置文件
1 | [root@localhost ~]# vim /etc/httpd/conf/httpd.conf |
由于网站根目录没变,所以网站根目录无需再次配置selinux安全上下文
接下来在自己电脑上修改一个文件
C:\Windows\System32\drivers\etc的目录下,有个叫hosts的文件,咱们可以用notepad++打开编辑,保存的时候回提示以管理员身份才能保存。咱们在该文件尾部,加上三行配置保存退出即可。
ps:这个文件用于域名重定向,很多病毒也经常来改你这个文件,让你在浏览器敲入“taobao.com”等网址的时候,ip其实已经重定向到黑客指定的服务器上了,这样你就会上一个假的淘宝网站,造成你的困扰甚至经济损失。
1 | 192.168.141.13 10.feng.io |
前面的是服务器ip,后面的是对应域名
接下来咱们打开电脑的cmd,刷新一下dns,ping一下10.feng.io看看是哪个ip在相应我们
1 | ipconfig /flushdns |
ping 10.feng.io的话,就相当于直接ping 192.168.141.13,说明配置成功。
接下来咱们在浏览器上访问域名,也可以访问到目标网页。
咱们改了host文件,这个实验做完了之后可以把我们的改动删掉或者备注掉,也可以留在那,一般情况下不会出问题。
基于端口号划分的虚拟主机
修改配置文件
1 | [root@localhost ~]# vim /etc/httpd/conf/httpd.conf |
相应端口做好相应协议、防火墙配置
1 | [root@localhost ~]# semanage port -a -t http_port_t -p tcp 30010 |
接下来在浏览器访问ip加端口,效果如下:
阻止特定浏览器特征访问
例如:
VirtualHost 192.168.141.12:30010阻止firefox访问
VirtualHost 192.168.141.12:30020和VirtualHost 192.168.141.12:30030不阻止firefox访问
1 | [root@localhost ~]# vim /etc/httpd/conf/httpd.conf |
接下来咱们看看效果,如下图:
可以看到,咱们的VirtualHost 192.168.141.12:30010阻止firefox访问后,再次访问已经看不到其网页内容了 ,然而其他浏览器却仍然可以正常访问。