Linux入门之Apache服务的部署和配置

一、Apache服务的部署

1.安装http软件和说明文档

yum install httpd -y
yum install httpd-manual -y 	##安装说明文档

在这里插入图片描述
2.开启apache服务

firewall-cmd --permanent --add-service=http
firewall-cmd --reload
systemctl start httpd
systemctl enable httpd

在这里插入图片描述
为了以下实验的方便,需要打开内核级防火墙。状态为disabled可以在配置文件中修改【vim /etc/sysconfig/selinux】
在这里插入图片描述
3.测试服务

cd /var/www/html
vim index.html	   ##默认发布文件

在这里插入图片描述

http://172.25.254.131/manual
http://172.25.254.131/

在这里插入图片描述
访问网页可以查看到内容,则证明服务已成功开启

二、Apache基础信息

主配置目录:/etc/httpd/conf
主配置文件:/etc/httpd/conf/httpd.conf
子配置目录:/etc/httpd/conf.d
默认发布目录:/var/www/html
默认发布文件:index.html
默认端口:80
默认安全上下文:httpd_sys_content_t
程序开启默认用户:apache
apache日志:/etc/httpd/logs/*

三、Apache默认配置的更改

1.修改默认端口

(1)Apache默认允许使用的端口

vim /etc/httpd/conf/httpd.conf
42 Listen 8080      ##修改默认端口为8080
systemctl restart httpd
netstat -antlupe | grep httpd   ##查看8080端口是否开启

Apache服务的默认端口为80,如果我们修改的端口是apache服务所允许使用的端口,我们可以直接进行修改,如果不是我们还需要将该端口设置为服务允许的端口。
在这里插入图片描述

firewall-cmd --permanent --add-port=8080/tcp将8080端口添加到防火墙中
firewall-cmd --reload

在这里插入图片描述

http://172.25.254.131:8080

端口修改后,访问网页时由于浏览器默认的端口是80端口,我们需要在网址后面加上端口号,不加端口号,则会报错。
在这里插入图片描述
在这里插入图片描述
(2)修改的端口不是Apache默认端口

netstat -antlupe | grep 6666查看该端口是否被占用
vim /etc/httpd/conf/httpd.conf在配置文件中修改端口
42 Listen 6666
systemctl restart httpd	   ##我们会发现重启失败,通过【setenforce 0】命令,将selinux改为警告状态,再次重启

由于该端口不是apache默认允许使用的端口,我们在修改后,重启服务,系统会报错,那是因为内核级防火墙不允许非法更改,我们将selinux的状态改为警告状态后,可以重启服务。
在这里插入图片描述
将6666端口添加到Apache默认允许使用的端口号中,注意该端口号是系统中实际存在的端口,不是我们随意设定的。在设定前我们可以使用【netstat】命令检测该端口是否被占用,如果被占用,我们就不能进行设置了。

semanage port -l | grep http	##查看http默认允许使用的端口(http_port_t)
semanage port -a -t http_port_t -p tcp 6666    ##如果提示killed,说明selinux有问题或者是端口6666被占用
-a添加 -t类型 -p协议
setenforce 1 	##将selinux状态由警告状态改为强制状态
systemctl restart httpd

在这里插入图片描述
测试:输入网址并加上端口号,观察是否能够看到发布文件内容。

http://172.25.254.131:6666

在这里插入图片描述
2.修改默认发布文件

vim /var/www/html/test.html
<h1>test's page</h1>
vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex test.html index.html   ##文件的位置影响访问顺序,第一个文件没有,则自动访问下一个文件
systemctl restart httpd

在这里插入图片描述
测试:

http://172.25.254.131

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将文件移走观察配置文件中找不到该发布文件,会不会直接访问下一个文件。
在这里插入图片描述
3.修改默认发布目录

(1)创建发布目录

mkdir -p /westos/html
vim /westos/html/index.html
<h1>hello world</h1>
vim /etc/httpd/conf/httpd.conf
120 DocumentRoot "/westos/html"
    <Directory "/westos/html">
		Require all granted
    </Directory>
systemctl restart httpd

在这里插入图片描述

setenforce 0

selinux在警告状态下可以访问网页,证明selinux的状态影响网页的查看。
在这里插入图片描述
(2)修改安全上下文

setenforce 1改为强制状态,观察是否能够访问网页
ls -Zd /var/www/html  ---->http_sys_content_t
ls -Zd /westos/html  ---->default_t	##默认发布目录安全上下文不一致
semanage fcontext -a -t httpd_sys_content_t '/westos/html(/.*)?'
restoreocon -RvvF /westos/html
systemctl restart httpd

在这里插入图片描述
(3)测试:

http://172.25.254.131

在这里插入图片描述

四、Apache虚拟主机部署

1.创建发布目录和发布文件

mkdir -p /var/www/vhost/news
mkdir -p /var/www/vhost/music
vim /var/www/html/index.html
<h1>hello world</h1>
vim /var/www/vhost/news/index.html
<h1>news's page</h1>
vim /var/www/vhost/music/index.html
<h1>music's page</h1>

在这里插入图片描述
2.配置文件中虚拟主机的设定

cd /etc/httpd/conf.d
vim vhost.conf     ##名称任意
systemctl restart httpd

在这里插入图片描述
3.本地解析设置

vim /etc/hosts    
172.25.254.231 www.westos.com news.westos.com music.westos.com 

在这里插入图片描述
4.测试:直接输入域名,观察是否能够访问相应的网页
在这里插入图片描述
五、Apache服务黑白名单

黑白名单的顺序,会影响读取顺序,在设置时注意名单顺序的填写。
1.用户白名单设定

cd /etc/httpd/conf.d
vim vhost.conf
<Directory "/var/www/html">
	Order Allow,Deny      ##文件的先后,影响读取顺序
	Allow from All
	Deny from 172.25.254.31
</Directory>
systemctl restart httpd

在这里插入图片描述
测试:
在这里插入图片描述
在这里插入图片描述
2.用户黑名单设定

vim vhost.conf
<Directory "/var/www/html">
	Order Deny,Allow      ##文件的先后,影响读取顺序
	Allow from 172.25.254.31
	Deny from All
</Directory>
systemctl restart httpd

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、基于用户认证的名单设定

1.创建用户
创建用户,通过用户名和密码的进行登录,提高了安全性。

cd /etc/httpd
htpasswd -cm .apache_auth admin  
cat .apache_auth
htpasswd -m .apache_auth jiang	##创建用户,不能加-c(覆盖原有用户信息)

在这里插入图片描述
2.用户名单设定
首先,我们需要将之前基于ip设置的用户名单注释掉,避免名单之间的冲突

cd conf.d/
vim vhost.conf
<Directory "/var/www/html">
	AuthUserFile /etc/httpd/.apache_auth
	AuthType basic
	AuthName "Please input username and password"
	Require user admin ##只允许admin用户访问
</Directory>
systemctl restart httpd

在这里插入图片描述
3.测试
名单中只允许admin用户登录,其他用户访问时则会被拒绝。
(1)admin用户登录
在这里插入图片描述
在这里插入图片描述
(2)其他用户登录
其他用户登录,直接会退出,在点击关闭键后,会出现以下页面。
在这里插入图片描述
4.合法用户允许登录

cd conf.d/
vim vhost.conf
Require valid-user  所有合法用户都可以访问
systemctl restart httpd

在这里插入图片描述
通过设定,之前不能登录的用户可以登录网页,并访问网页内容。
在这里插入图片描述
在这里插入图片描述
七、Apache支持的语言

Apache可以支持html、php、perl和python等多种语言,通过实验我们来验证一下。
首先,我们需要将之前在vhost.conf文件中关于用户认证的设定进行注释,目的是为了保证用户可以直接访问网页。
在这里插入图片描述
1.语言——php

cd /var/www/html
vim index.php
<?php
	phpinfo();
?>
vim /etc/httpd/conf/httpd.conf
167 DirectoryIndex index.php idex.html 添加该文件,将该文件放在第一个
systemctl restart httpd

在这里插入图片描述

yum install php -y安装该软件后,我们需要重启httpd服务,使php配置文件加载
systemctl restart httpd

在这里插入图片描述
测试:输入网址,观察是否能够看到php测试页

http://172.25.254.131

在这里插入图片描述
2.语言——perl

cd /var/www/html
mkdir cgi
vim cgi/index.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
chmod +x index.cgi 给脚本赋予可执行的权限
./index.cgi 执行该脚本,有执行结果,则脚本书写正确

在这里插入图片描述
注意:默认情况下,该脚本是没有执行权限的,我们需要服务该文件执行的权限。
在这里插入图片描述

vim /etc/httpd/conf.d/vhost.conf
<Directory "/var/www/html/cgi">如果不进行设置,代码会直接裸露到页面中
	Options +ExecCGI
	AddHandler cgi-script .cgi
</Directory>
systemctl restart httpd

在这里插入图片描述
在这里插入图片描述
访问网页,我们可以看到服务出错,通过【setenforce】命令将火墙改为警告状态,更改火墙状态后,可以访问网页内容。由此我们可以推断出,selinux的状态影响网页的访问。
在这里插入图片描述
查看发布目录的安全上下文,该标签只提供网页的显示功能,而不提供网页内容的执行功能,因此我们需要修改该发布目录安全上下文,使它在访问时,能够自动执行脚本,并将执行结果显示到网页上。

ls -Zd /var/www/html 该目录的安全上下文只能显示,不能执行
semanage fcontext -l | grep httpd查看httpd的可执行安全上下文
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'
restorecon -RvvF /var/www/html/cgi

在这里插入图片描述
测试:由于该文件没有在主配置文件中设置为默认发布文件,因此我们在访问时,需要将该文件的位置写出来。

http://172.25.254.231/cgi/index.cgi

在这里插入图片描述
3.语言——python

cd cgi-bin
vim webapp.wsgi

在这里插入图片描述

yum search wsgi 可以看到需要安装的软件mod_wsgi.x86_64
yum install mod_wsgi.x86_64 -y

在这里插入图片描述

cd /etc/httpd/conf.d/
vim vhost.conf
<VirtualHost *:80>
	ServerName wsgi.westos.com
	WSGIScriptAlias / /var/www/cgi-bin/webapp.wsgi
</VirtualHost>
systemctl restart httpd
vim /etc/hosts在最后一行添加wsgi.westos.com

在这里插入图片描述
测试:由于我们做了本地解析,可以直接输入域名,来访问网页内容。要注意的是ip和域名一定要对应。

wsgi.westos.com

在这里插入图片描述
八、HTTPS的部署

在生活中,我们访问网页最常用的是https服务,因为该服务对网页进行加密保护,安全性能高,不易被攻击。下面是https服务的部署。

1.https的部署
(1)安装软件

yum install mod_ssl -y
yum install crypto-utils -y

在这里插入图片描述
(2)在火墙中添加服务

firewall-cmd --permanent --add-service=https
firewall-cmd --reload
systemctl restart httpd

在这里插入图片描述
(3)对主机进行证书和钥匙的生成

genkey apache_server.westos.com

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装完毕后,屏幕上会显示生成的证书和钥匙。
在这里插入图片描述
(4)配置文件中修改证书和钥匙

vim /etc/httpd/conf.d/ssl.conf
101 SSLCertificateFile /etc/pki/tls/certs/apache_server.westos.com.crt
109 SSLCertificateKeyFile /etc/pki/tls/private/apache_server.westos.com.key

在这里插入图片描述
(5)在浏览器中添加证书
在这里插入图片描述
在这里插入图片描述
添加好证书后,我们就可以通过https访问网页
在这里插入图片描述
2.设定https虚拟主机并设定网页重写

cd /etc/httpd/conf.d
vim vhost_https.conf
systemctl restart httpd

对网页进行重写,目的是为了是我们在访问网页时,可以直接输入域名,浏览器在内部直接进行域名的转换,方便用户访问。
在这里插入图片描述

mkdir -p /var/www/vhost/login
cd login
vim index.html
<h1>login.westos.com test's page</h1>
systemctl restart httpd

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值