CentOS下Apache服务器的安装与配置_centos中的 httpd

–prefix 指定安装到哪里, --enable-so 表示启用DSO [1] --enable-deflate=shared 表示共享的方式编译deflate,后面的参数同理。如果这一步你出现了这样的错误:


## 扩展



./configure --prefix=/usr/local/apache2.2 --enable-deflate --enable-expires --enable-headers --enable-modules=most --enable-so --with-mpm=worker --enable-rewrtie


备注含义:  
 –enable-deflate \压缩  
 –enable-expires \ -缓存内容过期时间  
 -enable-headers \ 激活http头模块  
 –enable-modules=most 激活大多数模块  
 –with-mpm=worker \ 在worker模式下工作,该模式支持的并发会大点



/usr/local/apache2.2/bin/apachectl -l 查看当前加载的模块
/usr/local/apache2.2/bin/apachectl graceful 平滑重启


## 解决办法是:



yum install -y zlib-devel


编译:



[root@localhost httpd-2.2.16]# make


安装:



[root@localhost httpd-2.2.16]# make install


以上两个步骤都可以使用 echo $? 来检查是否正确执行,否则需要根据错误提示去解决问题。



echo $?


默认的网站数据时存放在/var/www/html目录中的,首页名称是index.html,写一个文件替换默认页面



#echo “Welcome To www.linuxprobe.com”>/var/www/index.html


再次打开浏览器,输入http://127.0.0.1



#firefox


**编辑Apache服务程序的主配置文件**



#vi /etc/httpd/conf/httpd.conf


将在119行的DocumentRoot参数修改为"/home/wwwroot",再把在123行的"/var/www"修改为/home/wwwroot  
 **建立网站数据目录**



#mkdir /home/wwwroot
#echo “The New Web Directory” >/home/wwwroot/index.html


重启Apache服务



#systemctl restart httpd


再次打开浏览器,输入http://127.0.0.1  
 #firefor  
 http://127.0.0.1/index.html


## SELinux安全上下文设置


**使用"ls -Z"命令检查下新旧网站数据目录的SELinux安全上下文有何不同**



#ls -Zd /var/www/html



#ls -Zd /home/wwwroot


![在这里插入图片描述](https://img-blog.csdnimg.cn/2020112513572450.png#pic_center)  
 SELinux安全上下文是由冒号间隔的四个字段组成的,以原始网站数据目录的安全上下文为例分析下  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125135849177.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125135930295.png#pic_center)  
 修改网站数据目录的安全上下文



#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot


修改网站数据的安全上下文(\*代表所有文件或目录)



#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*


这样操作后查看到SELinux安全上下文依然没有改变,不要着急,再执行下restorecon命令即可



#restorecon -Rv /home/wwwroot


再来刷新浏览器后看到正常页面



#firefox


## 个人用户主页功能


**1、开启个人用户主页功能**



#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


![在这里插入图片描述](https://img-blog.csdnimg.cn/2020112515060325.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 如果口令输入误会直接禁止访问 :  
 Unauthorized


## 虚拟网站主机功能


Apache的虚拟主机功能(Virtual Host)是可以让一台服务器基于IP、主机名或端口号实现多个网站访问的技术。


## 1、基于IP地址


一台服务器拥有多个IP地址,当用户访问不同IP地址时显示不同的网站页面  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125151000142.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 **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地址的虚拟主机。**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125151544981.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125151552391.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 **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验证结果 :**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125152010229.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 **请注意,当你完成实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突**  
 **2、基于主机名**  
 当服务器无法为每个网站都分配到独立IP地址时,可以试试让Apache服务程序自动识别来源主机名或域名然后跳转指定的网站。  
 **第1步 : 配置网卡IP地址与hosts文件**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125152656210.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 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),在主配置文件的末尾按下面格式定义虚拟主机信息 :  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125153541725.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125153549559.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 重启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步 :分别访问网站验证结果**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125163055426.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 **请注意,当你完成实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突**


## 2、基于端口号


让服务器开启多个服务端口后,然后让用户能够通过访问服务器的指定端口来找到想要的网站。  
 **第1步 :配置服务器的IP地址**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125163453925.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 **第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  
 然后在主配置文件的末尾按下面格式定义虚拟主机信息 :  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125164010656.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 重启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服务的端口号 :  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125164806455.png#pic_center)  
 再次尝试启动Apache网站服务程序就没问题了:



#systemctl restart httpd


**第5步 :分别访问网站验证结果**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125165305162.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 **请注意,当你完成实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突**


## 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,然后用浏览器测试访问网站页面  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125171239299.png#pic_center)  
 如果希望仅允许火狐浏览器访问页面,请将配置文件修改为 :



<Directory “/var/www/html/server”>
SetEnvIf User-Agent “Firefox” ff=1
Order allow,deny
Allow from env=ff


**根据来访源地址,仅限192.168.10.10的主机访问网站。**  
 此时我们需要两台主机来完成实验,请配置主机IP地址后能够互相通信。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125171622664.png#pic_center)



#vi /etc/httpd/conf/httpd.conf
//在大约129行的地方添加参数。
Order allow,deny
Allow from 192.168.10.10


保存配置文件后,重启服务systemctl restart httpd,然后用浏览器测试访问网站页面  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020112517221021.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center)  
 然后再使用远程主机 (192.168.10.20) 尝试访问页面,顺利的成功了:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201125172259439.png#pic_center)


## YUM安装Apache


**1、Apache在yum里的名称为httpd,所以先在机器中查询有没有安apache**



rpm -qa | grep httpd


如果没有数据返回,那就是没有安装


2、查询没有安装Apache后,来进行安装



yum install httpd


![在这里插入图片描述](https://img-blog.csdnimg.cn/2020071717532732.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70)  
 3、开启httpd的服务



#service httpd start

#systemctl enable httpd

开机自启
#chkconfig --add httpd


4、现在就可以来测试一下apache是否已经可以成功访问了,只需要用浏览器输入linux服务器的IP地址来访问就可以了  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020071717535590.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70)


当出现上图这个测试页时,就说明已经安装成功了


5、Apache的主目录在cd /var/www/html 下,可以将需要发布的网页放在这个目录下


6、如果不想把网站主目录,而是想放到别的目录,就需要设置虚拟目录  
 首先确定好需要设置哪个目录为虚拟目录,然后进入配置文件



vi /etc/httpd/conf/httpd.conf


然后搜索Alias,找到下图的位置  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200717175418323.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70)  
 在上图绿色箭头所指的位置,后面跟上你所要设置虚拟目录的目录位置  
 然后保存退出


7、然后再重启一下httpd



service httpd restart


8、这样配置好了之后,还是不可以访问的,访问时会提示没有权限,不过不是权限的问题,而是linux内核防火墙SELinux的问题  
 输入setup然后回车  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200717175437976.png)  
 在上图中选择第二项“Firewall configuration”  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200717175447376.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70)  
 然后在”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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值