Linux学习笔记--------Apache服务器部署

Apache

企业中常用的web服务,用来提供http://(超文本传输协议)

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。

Apache的安装部署

修改网络配置,主机名称,搭建yum源,安装httpd,设置开机自启动,防火墙允许http服务。

yum search httpd
yum install httpd.x86_64 -y    ##Apache的软件
yum install httpd-manual.noarch -y    ##httpd没有man手册,我们需要单独下载一个说明手册
systemctl start httpd
systemctl enable httpd
firewall-cmd --permanent --add-service=http      ##永久允许http
firewall-cmd --reload       ##火墙重新加载策略
firewall-cmd --list-all    ##列出火墙信息

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

Apache的基础信息

主配置目录:	  /etc/httpd/conf
主配置文件:	  /etc/httpd/conf/httpd.conf
子配置目录:	  /etc/httpd/conf.d/      ##子配置目录中,以.conf结尾的文件都会被读取,他们是子配置文件。
子配置文件:	  /etc/httpd/conf.d/*.conf
默认发布目录:	  /var/www/html
默认发布文件:	  index.html
默认端口:  	80
默认安全上下文:  httpd_sys_content_t
程序开启默认用户:   apache
apache日志:	  /etc/httpd/logs/*

cd /var/www/html ##默认发布目录
vim index.html ##默认发布文件,用浏览器连ip时显示该文件的内容
重启服务##systemctl restart httpd.service
在这里插入图片描述
在这里插入图片描述
测试:在浏览器中输入ip172.25.60.100
我们并没有指定文件也可以访问,默认访问的就是默认发布目录下的默认发布文件index.html
在这里插入图片描述
netstat -antlupe | grep httpd ##查看httpd服务的端口
在这里插入图片描述

修改默认配置

修改默认端口:
  • 已有的端口:通过命令semanage port -l | grep http查看
    在这里插入图片描述
  • 在主配置文件/etc/httpd/conf/httpd.conf中,修改默认的端口为8080
    在这里插入图片描述
  • 重启http服务systemctl restart httpd.service,通过命令netstat -antlupe | grep http查看有没有修改成功。
    在这里插入图片描述
    测试http://172.25.60.100:8080
    在这里插入图片描述
    测试不成功,这是因为防火墙没有开8080端口
  • 我们需要在防火墙列表添加新端口8080:
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload 
firewall-cmd --list-all

在这里插入图片描述
再次在浏览器端进行测试:
在这里插入图片描述

  • 没有的端口:例如6666
    semanage port -l | grep http查看发现没有这个端口
    在主配置文件/etc/httpd/conf/httpd.conf中,修改默认的端口为6666
    当selinux状态为enforcing时httpd会启动失败,但将状态改为permissive服务就可以成功启动了
    在这里插入图片描述
    在这里插入图片描述
    我们添加6666端口到列表里:
semanage port -a -t http_port_t -p tcp 8888     ##-a 添加 -t类型 -p 端口号
semanage port -l | grep http

在这里插入图片描述
此时在selinux为enforcing的状态下,httpd服务也能成功重启了
在这里插入图片描述
我们将新添加的端口6666加入到防火墙列表中
在这里插入图片描述
测试http://172.25.60.100:6666
在这里插入图片描述

做完实验恢复默认端口为80。
另外,修改完配置文件后访问结果可能没有变化,这是因为浏览器有可能有缓存,需要刷新或清理缓存。ctrl+shift+delete

修改默认发布文件:
默认发布文件就是访问apache时没有指定文件名称时默认访问的文件,这个文件可以指定多个,有访问顺序。

在默认发布目录下新建文件/var/www/html/test.html,编辑内容
在这里插入图片描述
修改主配置文件/etc/httpd/conf/httpd.conf,重启服务systemctl restart httpd
在这里插入图片描述

优先访问test.html,当test.html不存在时,会访问index.html,或者指定访问index.html

测试http://172.25.60.100
在这里插入图片描述
http://172.25.60.100/index.html
在这里插入图片描述

修改默认发布目录:

首先,建立你要改的发布目录,mkdir -p /westos/html,并在此目录下新建测试文件index.html,将该目录指定到主配置文件中:
在这里插入图片描述
在这里插入图片描述
重启服务systemctl restart httpd,测试
在这里插入图片描述
此时访问到的是测试页,这是因为我们在主配置文件中没有给发布目录授权,我们修改主配置文件并重启服务
在这里插入图片描述
此时在selinux为permissive的状态下就能访问到我们指定的发布目录下的默认发布文件了
在这里插入图片描述
在这里插入图片描述
但是当我们将selinux的状态设为enforcing之后又访问不到了
在这里插入图片描述
我们需要更改我们指定目录的安全上下文,重启服务

setenforce 1     ##selinux设置为enforcing
ls -Zd /var/www/html/    查看默认发布目录的安全上下文
semanage fcontext -a -t httpd_sys_content_t '/zhang/html(/.*)?'   ##永久更改这个目录的安全上下文,和/var/www/html一致
restorecon -RvvF /zhang/html/
systemctl restart httpd

在这里插入图片描述
测试http://172.25.60.100
在这里插入图片描述
做完实验注释掉刚刚的设置,重启服务。

Apache的虚拟主机

 在一个Apache服务器上可以配置多个虚拟主机,实现多个站点,不同的站点访问不同的页面,其实就是访问同一个服务器上的不同目录。
我们这里是基于域名配置和基于端口配置。
因为默认情况下只有一个发布目录,所以我们要在子配置目录下新建文件,以.conf结尾,除了指定之外的默认都访问default。
首先在子配置目录下新建一个vhost文件,vim /etc/httpd/conf.d/vhost.conf,并写入下面的内容,重启服务:

<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        CustomLog logs/default.log combined
</VirtualHost>

<VirtualHost *:80>
        ServerName news.westos.com
        DocumentRoot /var/www/vhost/news
        CustomLog logs/news.log combined
</VirtualHost>
<Directory "/var/www/vhost/news">
        Require all granted
</Directory>

<VirtualHost *:80>
        ServerName music.westos.com
        DocumentRoot /var/www/vhost/music
        CustomLog logs/music.log combined
</VirtualHost>
<Directory "/var/www/vhost/music">
        Require all granted
</Directory>

在这里插入图片描述
建立目录和文件,并在文件中写入下面的内容:

mkdir -p /var/www/vhost/news
mkdir -p /var/www/vhost/music
vim /var/www/vhost/news/index.html
 <h1>news。page</h1>
vim /var/www/vhost/music/index.html
<h1>music。page</h1>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在测试端做好本地解析,本地解析文件中指定要访问的ip和对应的域名
在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

默认看的是目录下的index.html文件,如果你的文件叫其他名字.html在访问时需要在浏览器端指定。

系统中默认的日志由三种:access_log,default.log,error_log,下面的music.log和news.log是我们刚在vhost.conf文件中写入的,他们俩保存了当有客户端访问时的记录
在这里插入图片描述
在这里插入图片描述

Apache内部的访问控制

Apache访问缺点:安全性差,只要客户端修改了ip就可以访问。

针对与主机的访问控制

在/etc/httpd/conf.d/vhost.conf文件中加入以下内容,重启服务

<Directory "/var/www/html">
        Order Allow,Deny
        Allow from All
        Deny from 172.25.60.100
</Directory>
Order是读取顺序,意思是先加载allow,在加载deny。

这里设置的是黑名单,意思是除ip为172.25.60.100的主机外其他主机都可以访问默认发布目录下的index.html文件

在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述
在/etc/httpd/conf.d/vhost.conf文件中加入以下内容,重启服务

<Directory "/var/www/html">
        Order Deny,Allow
        Allow from 172.25.60.100
        Deny from All
</Directory>

设置白名单,默认先读Deny,再读Allow,即只有172.25.60.100主机可访问。

在这里插入图片描述

用户方式的访问控制
cd /etc/httpd/     ##在配置目录下生成三个用户
htpasswd -cm .apache_auth student     ##-c创建 -m设定加密md5
htpasswd -m .apache_auth   root   ##第二次再用-cm会覆盖之前的生成的用户
htpasswd -m .apache_auth study
cat .apache_auth     ##查看生成的用户

在这里插入图片描述
vim /etc/httpd/conf.d/vhost.conf,重启服务systemctl restart httpd

<Directory "/var/www/html">
        AuthUserFile /etc/httpd/.apache_auth   ##指定读取的文件
        AuthType basic     ##基础类型,即输入用户名和密码
        AuthName "Please input username and password"   ##跳出的框中显示的话
        Require user student      中间可用空格隔开多个用户,表示谁可以通过认证
</Directory>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
没有输入指定用户,无法访问
在这里插入图片描述
输入指定用户用户名和密码
在这里插入图片描述
可以成功访问
在这里插入图片描述

Apache支持的语言

  • html刚刚的实验都是写的.html文件,此处不再赘述。
  • php
    安装php,重启http服务,httpd对php进行在线加载,会出现php.conf
yum install php -y
systemctl restart httpd

在这里插入图片描述
在这里插入图片描述
编辑vim /var/www/html/index.php ,重启服务systemctl restart httpd

 <?php
           phpinfo();
 ?>

在这里插入图片描述
在浏览器中输入http://172.25.254.124/index.php访问:
在这里插入图片描述

  • cgi
    实验步骤:
    1.在默认发布目录下新建cgi目录,mkdir /var/www/html/cgi并新建文件vim /var/www/html/cgi/index.cgi,通过访问httpd的manual手册,我们可以给文件中写入以下内容,并给文件加执行权限:
    在这里插入图片描述
    在这里插入图片描述
    vim /var/www/html/cgi/index.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\n";     ##转换成文本模式,text->html
print `date`;    

在这里插入图片描述
chmod +x /var/www/html/cgi/index.cgi
ls -l /var/www/html/cgi/index.cgi
systemctl restart httpd
在这里插入图片描述
此时我们通过访问可以看到我们写入的内容并没有执行,而是裸露出来的。
在这里插入图片描述
我们需要在/etc/httpd/conf.d/vhost.conf中加入以下内容,并重启服务:

<Directory "/var/www/html/cgi">
        Options +ExecCGI
        AddHandler cgi-script .cgi       ##执行所有以.cgi为结尾的脚本
</Directory>

在这里插入图片描述
在这里插入图片描述
在selinux为permissive时可以直接访问:
在这里插入图片描述
但是当selinux为enforcing会出现500的报错:
在这里插入图片描述
我们需要修改var/www/html/cgi/目录的安全上下文

semanage fcontext -l | grep httpd
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'
restorecon -RvvF /var/www/html/cgi/
ls -Zd /var/www/html/cgi/

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

  • wsgi
    首先,进入/var/www/cgi-bin目录,且在/var/www/cgi-bin下获得 webapp.wsgi文件
cd /var/www/cgi-bin/
yum install lftp -y
lftp 172.25.254.10
get webapp.wsgi 

然后,安装mod_wsgi
yum search wsgi yum install mod_wsgi.x86_64 -y
在/etc/httpd/conf.d/vhost.conf中写入以下内容,并重启服务systemctl restart httpd:

<VirtualHost *:80>
        ServerName wsgi.westos.com      ##访问的域名
        WSGIScriptAlias / /var/www/cgi-bin/webapp.wsgi     ##脚本文件的路径
</VirtualHost>

在这里插入图片描述
在测试端的本地解析文件/etc/hosts中加入wsgi.westos.com,访问测试
在这里插入图片描述
在这里插入图片描述

vim /var/www/cgi-bin/webapp.wsgi  

#!/usr/bin/env python
import time

def application (environ, start_response):
  response_body = 'UNIX EPOCH time is now: %s\n' % time.time()
  status = '200 OK'
  response_headers = [('Content-Type', 'text/plain'),
                      ('Content-Length', '1'),
                      ('Content-Length', str(len(response_body)))]
  start_response(status, response_headers)
  return [response_body]

Https

 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
 HTTPS主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性,凡是使用了 https 的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过 CA 机构颁发的安全签章来查询。
加密是在客户端,因为企业可以确定服务器的安全性而不能确定客户端的安全性。
 Https的端口是443。
实验步骤
首先,安装https对应的包,重启httpd服务,在/etc/httpd/conf.d/目录下查看有没有出现配置文件ssl.conf。
将https服务加入防火墙允许的列表中。

yum install mod_ssl.x86_64 -y
systemctl restart httpd.service
vim /etc/httpd/conf.d/ssl.conf     
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
firewall-cmd --list-all

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后,安装加密工具,并生成证书和钥匙:

yum install crypto-utils.x86_64 -y
genkey +servername
genkey apache_server.westos.com

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完成之后将生成的证书和钥匙指定到配置文件/etc/httpd/conf.d/ssl.conf中,重启服务systemctl restart httpd.service

SSLCertificateFile /etc/pki/tls/certs/apache_server.westos.com.crt    ##证书
SSLCertificateKeyFile /etc/pki/tls/private/apache_server.westos.com.key      ##钥匙

在这里插入图片描述
测试
在这里插入图片描述
手动添加证书,再进行测试
在这里插入图片描述
在这里插入图片描述
生成的证书
在这里插入图片描述
如何删除证书
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除成功

设定https虚拟主机并设定网页重写

新建你要指定访问的目录和文件mkdir -p /var/www/vhost/login
vim /var/www/vhost/login/index.html 中写入:

<h1>login'page</h1>

vim /etc/httpd/conf.d/login.conf 中写入:

<VirtualHost *:443>
        ServerName login.westos.com
        DocumentRoot /var/www/vhost/login
        CustomLog logs/login.log combines
        SSLEngine on           ##/etc/httpd/conf.d/ssl.conf 70行
        SSLCertificateFile /etc/pki/tls/certs/apache_server.westos.com.crt 
        SSLCertificateKeyFile /etc/pki/tls/private/apache_server.westos.com.key
</VirtualHost>
<Directory "/var/www/vhost/login">      
        Require all granted
</Directory>

<VirtualHost *:80>
        ServerName login.westos.com
        RewriteEngine on        ##在http的manual手册中
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>

^(/.*)$ ##客户在浏览器地址栏中输入的所有字符
https:// ##强制客户加密访问
%{HTTP_HOST} ##客户请求主机
$1 ###" 1 &quot; 标 示 ( / . ∗ ) 1&quot;标示 ^(/.*) 1"(/.)的值
[redirect=301] ##永久重写 302临时

在这里插入图片描述
重启服务systemctl restart httpd.service,在测试端修改本地解析文件vim /etc/hosts
在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述
manual手册的说明:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值