一:apache的概念
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
它可以运行在几乎所有广泛使用的计算机平台上
目录文件:
程序目录:/usr/sbin/httpd
默认网站主页存放目录: /var/www/html/
日志文件存放目录:/var/log/httpd/
主配置目录:/etc/httpd/conf/
主配置文件:/etc/httpd/conf/httpd.conf
从配置目录:/etc/httpd/conf.d/
apache的默认端口是80
二:apache的默认发布文件
/var/www
默认情况下将要发布的网页文件应该置于/var/www目录下,这一默认值可以同过主配置文件中的DocumentRoot 选项修改。
实验如下:
前提:
为了实验的纯净,我们将这台虚拟机reset
修改主机名为apache.westos.com
搭建yum源
将图形界面转化为无图形界面,并用ssh去连接(看个人意愿)
此使我们在浏览器里输入172.25.254.115显示不能连接,如下图所示:
为了解决这个问题,我们需要做以下的实验。
实验如下:
<1>安装软件
yum search apache
yum install httpd.x86_64 -y 安装httpd软件包
搜索出来的结果中安装这个软件包
安装
安装完成
<2>启动服务
systemctl start httpd
systemctl enable httpd
systemctl status httpd
<3>对防火墙进行设置(若是嫌麻烦,可直接关掉防火墙)
firewall-cmd --permanent --add-service=http 防火墙允许的服务有http
firewall-cmd --reload 重新加载
firewall-cmd --list-all 查看
<4>编辑默认发布文件
cd /var/www/html
ls
vim index.html (必须是index.html。服务默认的共享文件(默认发布文件)只有这一个)
测试:
浏览器输入172.25.254.115(本机ip)会出现下图所示
注意:因为man不能查看http的用法,所以我们想要知道http的用法,得下载一个http手册
安装完成
可在浏览器里172.25.254.115/manual查看(中文版可去百度寻找)
三:修改apache的默认设置
前提:
getenforce 此时看到的状态是disabled
vim /etc/sysconfig/selinux
将selinux修改为enforcing
reboot
getenforce 此时看到的状态是enforcing
<1>修改默认端口(默认是80)
第一种:修改为8080端口(8080被selinux允许)
netstat -antlupe | grep httpd 查看httpd的端口号,为80
vim /etc/httpd/conf/httpd.conf 修改配置文件,将端口修改为8080
systemctl restart httpd
firewall-cmd --permanent --add-port=8080/tcp 添加防火墙的tcp8080端口,如果嫌麻烦,可以直接关掉防火墙
firewall-cmd --reload 重新加载
netstat -antlupe | grep httpd 此时的端口号是8080
第二种:修改为6666端口(selinux不允许)
netstat -antlupe | grep 6666 看这个端口是否被使用,没有被使用
vim /etc/httpd/conf/httpd.conf 修改配置文件,将端口修改为6666
firewall-cmd --permanent --add-port=6666/tcp
firewall-cmd --reload
systemctl restart httpd 此时重启服务起不来,因为selinux拒绝6666
setenforce 0 将内核防火墙改为permission
getenforce 查看
systemctl restart httpd 可以重启起来,也可以访问到
在防火墙为enforcing的时候可以开启服务,需要进行以下操作
setenforce 1 将内核防火墙修改为enforcing
getenforce
semanage port -l | grep http 查看系统中selinux对http允许的端口号,没有6666
semanage port -a -t http_port_t -p tcp 6666 加入6666端口
semanage port -l | grep http 有了端口
systemctl restart httpd 重启服务
在去浏览器172.25.254.115:6666查看
<2>修改发布文件(做这个实验前先把默认端口修改为80)
cd /var/www/html
ls
vim test.html 在里面写点内容,将其作为访问时会出现的内容
vim /etc/httpd/conf/httpd.conf 在这个里面修改默认发布文件
systemctl restart httpd
此时去浏览器172.25.254.115查看 此时查看到的是test.html里面的内容
vim /etc/httpd/conf/httpd.conf (在这个里面写两个发布文件,谁在前先访问谁) 此时index.html在前
systemctl restart httpd
此时 在浏览器172.25.254.115查看,此时查看到的是index.html里面的内容
mv index.html /mnt/ 将index.html移动到/mnt下
在浏览器172.25.254.115查看 此时查看的是test.html里面的内容
<3>修改默认配置目录(将默认发布文件修改回来)
mkdir /meng/html -p 建立一个目录
vim /meng/html/index.html 在这个目录的默认发布文件里面随便写点东西
vim /etc/httpd/conf/httpd.conf 在配置文件里里面,将其默认目录修改为/meng/html
systemctl restart httpd 重启服务
再去重启服务
发现访问不到:
这是因为这个默认目录没有被查看的权限,为了解决这个问题,我们需要进行以下操作:
vim /etc/httpd/conf/httpd.conf 在里面写入授权命令,如下(整体)
在里面写入以下内容:
DocumentRoot "/meng/html" 修改默认发布目录
授权
Require all granted 所有人都可以来访问
systemctl restart httpd 重启服务
在浏览器172.25.254.115查看
此时查看到的是/meng/html/index.html的内容
想要在seliunx为enforing为开启的时候访问到内容
ls -Zd /var/www/html/ 查看系统自己默认发布目录的安全上下文
ls -Zd /westos/html/ 查看自己建立的默认发布目录的安全上下文
setenforce 1 切换selinux的状态为enforcing
getenforce
semanage fcontext -a -t httpd_sys_content_t '/meng/html(/.*)?' 让系统记录目录和目录里面内容为http的标签
restorecon -RvvF /meng/html 修改目录及目录里面的内容的安全上下文