(linux基础21)linux-主流web服务器搭建(apache)


前言

curl -I 可以查看网站部署的服务器(如果没有隐藏的的话)
在这里插入图片描述在这里插入图片描述可以看出主流服务器有:apache和nginx

  • nginx 轻量级的web服务器,异步非阻塞模式,速度快
  • apache 重量级的web服务器,访问方式是同步阻塞模式,访问更加稳定

一、实验环境准备

本实验使用apache服务器,需要在一台虚拟机上部署apache服务
这里准备server3虚拟机做实验,并安装apache服务
在这里插入图片描述
1)安装虚拟机
2) 配置IP:172.25.254.3 ,DNS,网关(主要保证连上真机的网络)
3)配置本地仓库或网络仓库
4)安装apache(httpd)服务
5)防火墙允许http服务
这五步有问题的可以参考我的其他博客。

配置好网络可以使用curl -I工具查看其他网站的服务区引擎
在这里插入图片描述在这里插入图片描述

二、Apache基本设置

具体步骤及命令:

- dnf search apache             ##搜索apache的软件包
- dnf install httpd.x86_64      ##安装apache软件
- systemctl enable --now httpd  ##启动apache服务
- firewall-cmd --list-all       ##查看火墙允许的服务有哪些
- firewall-cmd --permanent --add-service=http ##火墙添加http服务
- firewall-cmd --permanent --add-service=https##添加https服务
- firewall-cmd --reload         ##重新加载火墙,让服务生效
- /var/www/html                 ##apache的默认发布目录
- /var/www/html/index.html      ##apache默认发布文件(自己写内容)
- /etc/httpd/conf/httpd.conf    ##apache主配置文件
-  /etc/httpd/conf.d/              ##子配置目录
- /etc/httpd/conf.d/autoindex.conf ##子配置文件,会自动加载apache的程序
- netstat -antlupe | grep httpd ##查看httpd的接口,默认80
-                                                   ##https默认端口443
- apache                        ##程序开启默认用户
- /etc/httpd/logs/*             ##apache日志
- httpd_sys_content_t           ##默认安全上下文

安装apache服务
在这里插入图片描述
在这里插入图片描述
开机自启动命令:systemctl enable --now httpd
在这里插入图片描述防火墙允许http服务
在这里插入图片描述
浏览器输入IP地址,可以看到apache测试页面即环境配置成功

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述6)apache默认发布目录为: /var/www/html,安装apache后,会在/var下自动生成该目录

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述7)更改字号,更多书写格式参考html语言书写格式!
在这里插入图片描述在这里插入图片描述

三、Apache配置文件的修改及部署优化方案

3.1 配置文件路径

vim /etc/httpd/conf/httpd.conf 

3.2 修改端口号

(1)不设置selinux情况

1)修改80端口为8080端口
2重启服务
3检查火墙有无开启8080端口,没有的话开启该端口
在这里插入图片描述在这里插入图片描述

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

(2)设置selinux情况

selinux默认是不允许乱用系统端口的

  • 端口号改称6666 #发现不允许登陆
  • semanage port -l | grep http #过滤一下http端口号
  • http_port_t #系统可用端口号
  • http_cache_port_t #系统缓存端口号
  • semanage port -a -t http_port_t -p tcp 6666 #添加端口号
  • #a 添加 t安全上下文 p 是协议
  • systemctl restart httpd #重启服务,网页还是访问不到
  • firewall-cmd --permanent --add-port=6666/tcp #防火墙允许
  • firewall-cmd --reload #重载防火墙

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述被浏览器墙了
在这里插入图片描述使用curl 可以看到,浏览器可能设置有问题。

在这里插入图片描述

3.3 修改默认发布目录

已将端口换回80

- mkdir -p /westos/html                          ##建立个测试文件夹
- cd /westos/html
- vim index.html       写入<h1>westos html</h1>  ##在新建的文件夹下写入测试文件
- 下面是对/westos进行安全上下文的编写(selinux=disabled可以不用设置)
- ls -Zd /westos                                ##察看是否编写了安全上下文
- semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
- restorecon -RvvF /westos
- 下面是修改配置文件并授权
- vim /etc/httpd/conf/httpd.conf       
- 修改内容DocumentRoot "/westos/html"            ##修改后发现没有权限访问
- <Directory "/westos/html">
- 			Require all granted
- </Directory>                                  ##需要进行文件授权
- systemctl restart httpd                       ##重启服务

在这里插入图片描述

在这里插入图片描述
修改安全上下文,重要!

在这里插入图片描述
在这里插入图片描述重启httpd,依然无法访问
在这里插入图片描述
这里是因为还没有授权,加个授权操作

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

成功访问。
在这里插入图片描述

3.3 修改默认发布文件

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

在这里插入图片描述

3.4 常见错误解决

3.4.1 默认发布目录出错(配置出错)

  • tail /etc/httpd/logs/error_log ##查看此配置文件

3.4.2 查看语法错误

  • tail /var/log/messages ##查看语法错误(会提示你第几行出错)

四、Apache虚拟主机(一个ip发多个站点)

4.1建立实验需要文件及内容

- mkdir -p /var/www/virtual/westos.org/{music,news}
- touch /var/www/virtual/westos.org/music/index.html
- touch /var/www/virtual/westos.org/news/index.html
- echo "music's page" >/var/www/westos.com/wenku/index.html
- echo "news's page" > /var/www/westos.com/news/index.html

4.2在子配置目录下书写子配置文件

vim /etc/httpd/conf.d/vhost.conf
<VirtualHost _default_:80>
	DocumentRoot "/var/www/html"           #默认目录
	CustomLog logs/default.log combined    #指定日志生成目录, 日之类型为 混合型
</VirtualHost>

<VirtualHost *:80>
	ServerName wenku.westos.com
	DocumentRoot "/var/www/virtual/haojin.com/wenku"
	CustomLog logs/wenku.log combined
</VirtualHost>

<VirtualHost *:80>
	ServerName news.westos.com
	DocumentRoot "/var/www/virtual/haojin.com/news"
	CustomLog logs/news.log combined
</VirtualHost>

4.3本地dns解析认证

- /etc/hosts            编辑文件写入以下内容
- 172.25.254.3  www.haojin.com  news.haojin.com  music.haojin.com

4.4实验截图

1)测试文件

在这里插入图片描述

2)配置子配置文件

之所以系统可以访问该子目录,原因在于主配置目录的最后一句话!

在这里插入图片描述
子配置文件内容
在这里插入图片描述在这里插入图片描述

  1. 编辑本地dns解析文件 vim /etc/hosts
    注意:这里一定是你的物理机,因为浏览器在你的物理机上

在这里插入图片描述4)物理机 浏览器测试
在这里插入图片描述在这里插入图片描述在这里插入图片描述

五、Apache访问控制

5.1 apache帮助文档

dnf search httpd-manual
dnf install httpd-manual.noarch -y
systemctl restart httpd

在这里插入图片描述也可以百度中文版。

5.2 基于ip的访问控制(指定ip黑白名单)

依然是对子配置文件进行修改测试

- DocumentRoot “/var/www/html”  
 ##指定默认目录,这里就默认了,修改的话还要做selinux,这块可以看3.3内容
 
- <Directory "/var/www/html">
- 		Order Allow,Deny                ##决定执行顺序。Allow先执行,Deny后执行。
- 		Allow from xxx.xxx.xxx.xxx
- 		Deny from xxx.xxx.xxx.xxx
- </Directory>    
 ##以上是配置文件的写法

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

5.3 用户认证的访问控制(必须用户登陆)

5.3.1 创建登陆用户

- htpasswd -cm /etc/httpd/.htpasswd admin   ##创建用户,用户名随意
- htpasswd -m /etc/httpd/.httpasswd haojin  ##添加用户  
- cat /etc/httpd/.htpasswd                  ##查看用户

以上是创建文件夹和用户的过程,c创建,m添加。添加成功后查看用户。
再建立用户如果加c会覆盖原来内容!!!!!!!

在这里插入图片描述

5.3.2 更改配置文件

- 修改配置文件然后重启。下面是配置文件添加内容。
- vim /etc/httpd/conf/httpd.conf
- DocumentRoot "/var/www/html"
- <Directory “/var/www/html”>
- 		AuthUserfile "/etc/httpd/.htpasswd"    ##导入文件
- 		AuthName "Please input username and password"   ##提示语
- 		AuthType  basic                          ##设置为基本配置
- 		Require user admin                      ##只允许admin用户登陆
- 		Require    valid-user                   ##允许所有用户登陆。这俩个只能写一个
- </Directory>

1)所有可登
在这里插入图片描述在这里插入图片描述在这里插入图片描述2)修改为admin可登
在这里插入图片描述
在这里插入图片描述3)输入admin及密码登陆成功
在这里插入图片描述

六、Apache支持语言介绍

6.1 html

默认的语言是html,不需要安装

6.2 php

PHP是一种服务器端的,嵌入HTML的脚本语言
超文本预处理器,是一种通用的开源脚本语言

dnf install php -y              ##首先安装php服务
vim  /var/www/html/westos.php   ## 写一个php文件

<?php
     phpinfo();                 ##文件内容
?>                            

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

6.3 perl语言

6.3.1 CGI解释

CGI 通用网关接口: 是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程,是网站上放置动态内容的最简单的方法。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的 静态 超媒体文档变成一个完整的新的交互式媒体。在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。编程语言Perl是一个广泛被用来编写CGI程序的语言,但CGI程序可以用任何脚本语言或者完全独立编程语言实现,只要此语言可以在这个系统上运行。

CGI脚本可用于许多目的,但是谨慎控制使用哪个CGI脚本以及允许谁添加和运行这些脚本十分重要。编写质量差的CGI脚本可能为外部攻击者提供了破坏网站及内容安全性的途径。故,在web服务器级别和SELinux策略级别,都存在用于限制CGI脚本使用的设置。

特点:一般每次的CGI请求都需要新生成一个程序的副本来运行,这样大的工作量会很快将服务器压垮!因此一些更有效的技术像mod_perl,可以让脚本解释器直接作为模块集成在Web服务器(例如:Apache)中,这样就能避免重复载入和初始化解释器。

6.3.2 CGI作用图示

在这里插入图片描述

6.3.3 CGI脚本

1)可以查看apche帮助文档5.1

在这里插入图片描述
2)将文档粘贴到我之前创建好的目录中
vim /var/www/html/cgi/first.cgi
`` = $() 优先执行
在这里插入图片描述

3)给/var/www/html/cgi/目录设置安全上下文,否则selinux不允许访问
在这里插入图片描述
4)给文件加可执行权限并看执行结果
在这里插入图片描述
在这里插入图片描述4)浏览器浏览事与愿违,直接给我明文显示了,想让他显示时间的
在这里插入图片描述5)配置httpd子配置文件,解决问题

在这里插入图片描述在这里插入图片描述
重启服务,时间可以显示

在这里插入图片描述

6.4 wsgi语言(python语言)

Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。

1)先安装软件,才能支持该语言
在这里插入图片描述2)编辑测试文件

在这里插入图片描述
3)编辑子配置文件
在这里插入图片描述

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

七、Apache加密访问(https)

7.1安装加密插件

默认不支持https,需要安装插件mod_ssl

dnf install mod_ssl -y           ##安装加密插件,安装后可以查到https的443端口
netstat -antlupe | grep http     ##查看是否有80和443端口,分别对应http和https

1)安装
在这里插入图片描述2)查看有配置文件
在这里插入图片描述3)重启httpd服务并查看有没有多443端口
在这里插入图片描述
4)防火墙开启443端口
在这里插入图片描述之前已经开启过了https,这里加上443也没问题,https默认端口是443端口。
在这里插入图片描述

7.2 临时证书的添加与删除

1)安装过mod_ssl插件重启后,用https访问我们的服务器会被警告,因为未被认证
在这里插入图片描述2)查看证书方法
在这里插入图片描述
3)添加认证,让我们可以访问自己的服务器
点击高级,同意,便相当于加了个证书
在这里插入图片描述

查看添加的证书

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

4)删除证书
在这里插入图片描述5)baidu的证书

在这里插入图片描述

7.3 生成自己的证书

7.3.1生成证书

生成证书步骤
dnf search crypto  #搜索工具
dnf install  
 openssl genrsa -out /etc/pki/tls/private/www.westos.org.key 
 ##生成密钥
 
 openssl req -new -key /etc/pki/tls/private/www.westos.org.key -out /etc/pki/tls/certs/www.westos.org.csr                      
 ##生成证书签名文件
 
 openssl x509 -req -days 365 -in  /etc/pki/tls/certs/www.westos.org.csr -signkey /etc/pki/tls/private/www.westos.org.key -out /etc/pki/tls/certs/www.westos.org.crt  
 ##生成证书
 
-x509     ##证书格式
-req      ##请求
-in       ##加载签证名称
-signken   /etc/pki/tls/private/www.wesos.org.key   

在这里插入图片描述

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

7.3.2 修改ssl配置文件,让证书生效

在这里插入图片描述
在这里插入图片描述在这里插入图片描述自己的证书生成
在这里插入图片描述

7.4 做个加密网站

7.4.1配置好网站

  1. vim /etc/httpd/conf.d/vhost
    在这里插入图片描述2)给主机配置dns解析
    在这里插入图片描述3)只有输入https开头才可以访问加密,不然就是默认http访问,很不方便
    在这里插入图片描述
    在这里插入图片描述

7.4.2 http自动转https

做个重写规则,目的是把默认80端口访问转到443端口

在这里插入图片描述参数写错了
在这里插入图片描述
查看修改文件
在这里插入图片描述
在这里插入图片描述

访问成功
在这里插入图片描述

在这里插入图片描述

八、Squid正向代理(翻墙)

通过代理可以查看有代理服务的主机的网页内容,但是需要通过代理的这台主机没有网。这就是vpn原理。

8.1 实验环境准备

首先需要俩台主机,一台真机(要求可以上网),一台虚拟机

8.2真机配置如下:

  1. 真机联网,然后下载squid服务,dnf install squid -y
  2. 安装完成后修改squid配置文件
  3. http_access deny all 改成 http_access allow all 允许所有人通过这台主机代理
  4. http_potr 3128 查看代理端口
  5. cachr_dir ufs /var/spool/squid 100 16 256 打开缓存文件,100M大小,16个文件夹,每一个文件夹下有256个二级文件夹

在火墙和selinux打开的情况下,需要进行如下操作

  • firewall-cmd --permanent --add-port=3128/tcp
  • firewall-cmd --reload

8.3 虚拟机配置

  • ping www.baidu.com ##测试网络是否通畅,发现不通
  • 浏览器设置网络配置,即network setting
  • 打开Manual proxy configuration
  • 设置HTP Proxy 网址写成主机ip,端口是squid代理端口
  • Use this proxy server for all protocols 前面点对勾,全部允许

8.4测试

  • ping www.baidu.com ping 不通
  • 登陆浏览器然后可以查看网页内容。www.baidu.com www.taobao.com都可以查看

在这里插入图片描述

九、Squid反向代理(加速)

9.1 实验环境

两台虚拟机
110主机作为客户端,搭载有apache服务
150主机作为代理服务器,只有squid代理软件
配置150代理服务器的配置文件
vim /etc/squid/squid.conf
内容如下:
http_access allow all
http_port 80 vhost vport
cache_peer 192.168.1.110 parent 80 0 proxy-only
cache ufs /var/spool/squid 100 16 256
在这里插入图片描述
这里文章就结束了,内容蛮多,加油!!!

努力-奋斗
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值