#概念:
Apache HTTP server(简称apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。
Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
环境:
server 172.25.254.162
yum源配置完成
一.apache的安装部署
1.安装apache软件
2.安装apache手册
3.永久开启httpd服务
4.永久添加http,https服务
5.编辑apache的默认发布文件
cd /var/www/html ##apache的/目录,默认发布目录
测试:
http://172.25.254.162
http://172.25.254.162/manual ##apache手册
二.apache的基础信息
主配置目录: /etc/httpd/conf
主配置文件: /etc/httpd/conf/httpd.conf
子配置目录: /etc/httpd/conf.d/
子配置文件: /etc/httpd/conf.d/*.conf
默认发布目录: /var/www/html
默认发布文件: index.htmml
默认端口: 80
默认安全上下文: http_sys_content_t
程序开启默认用户: apache
apache日志: /etc/httpf/logs/*
三.apache的管理
1.修改默认端口:
1)编辑apache配置文件

2)修改默认端口80为8080
3)重启httpd服务
4)添加8080端口到火墙上
检测:
可以访问172.25.254.162,且默认的端口是8080
5)配置不提供httpd服务的端口
#将selinux设置为警告状态
#在httpd配置文件中将默认端口设置为6666
#在火墙上永久添加6666端口
semanage port -l | grep http ##查看提供httpd服务的端口,没有6666,所以此时不能访问6666
#添加
#将6666端口永久添加httpd服务
semanage port -a -t http_port_t -p tcp 6666
systemctl restart httpd
检测:
此时可以可以通过默认端口6666访问
#2.修改默认发布文件:
默认发布文件就是访问apache时没有指定文件名称时默认访问的文件,这个文件可以指定多个,有访问顺序
1)修改httpd配置文件
#将默认端口还原
#添加默认发布文件是westos.html,这个文件优先级大于index.html
2)编辑默认发布文件
文件内容如下:

3)重启httpd服务
检测:
可以查看到默认发布文件被修改
rm -fr westos.html
172.25.254.162 ---可以查看到first page
#3.修改默认发布目录
1)新建默认发布目录及默认发布文件
文件发布内容如下:
2)修改httpd配置文件
vim /etc/httpd/conf/httpd.conf
120 DocumentRoot "/westos/web/html" ##默认发布目录是/westos/web/html
121 <Directory "/westos/web/html"> ##认证
122 Require all granted
123 </Directory>
3)重启httpd服务
systemctl restart httpd
4)修改文件安全上下文

检测:
#4.apache的虚拟主机
环境:
#更改客户端
vim /etc/hosts
172.25.254.162 www.westos.com news.westos.com music.westos.com
#服务端
还原实验环境:
rm -fr /etc/httpd/conf/httpd.conf
yum reinstall httpd -y
1)新建虚拟主机发布目录
2)新建虚拟主机发布文件
3)编辑apache子配置文件
cd /etc/httpd/conf.d/ ##切换到apache的子配置目录
#新建apache子配置文件
<VirtualHost _default_:80> ##本机默认发布端口为80
DocumentRoot /var/www/html ##发布目录为/var/www/html
CustomLog logs/default.log combined ##报错文件是/etc/httpd/logs/default.log ;combined日志类型是混合的
</VirtualHost>
#重启httpd服务
#news.westos.com的默认发布配置
<VirtualHost *:80> ##虚拟主机news.westos.com的端口是80
ServerName news.westos.com ##虚拟主机域名
DocumentRoot /var/www/westos.com/news/html ##news.westos.com的发布目录为/var/www/westos.com/westos/news/html
CustomLog logs/news.log combined
</VirtualHost>
<Directory "/var/www/westos.com/news/html"> ##认证
Require all granted ##/var/www/westos.com/news/html下所有文件可以被查看
</Directory>
#重启httpd服务
#music的默认发布配置
cp news.conf music.conf
vim music.conf ##music.westos的发布配置
<VirtualHost *:80> ##虚拟主机域名的接口是80
ServerName music.westos.com ##虚拟主机域名
DocumentRoot /var/www/westos.com/music/html
CustomLog logs/music.log combined
</VirtualHost>
<Directory "/var/www/westos.com/music/html">
Require all granted
</Directory>
systemctl restart httpd
检测:
#添加客户端的本地解析
#访问172.25.254.162
www,westos.com的文件内容:
查看虚拟主机news.westos.com的发布目录下的文件
music虚拟主机的发布内容:
#5.apache的访问控制
1)基于ip
#编辑httpd配置文件
vim /etc/httpd/conf.d/a_default.conf
<Directory "var/www/html">
Order Allow,Deny ##先读Allow,再读Deny内容,后读取的会覆盖前面的内容
Allow from all ##允许所有用户进行访问
Deny from 172.25.254.62 ##禁止172.25.254.162访问
</Directory>
#重启httpd服务
检测:
真机62打开浏览器输入
172.25.254.162,不能重看到发布内容
2)基于用户身份
#新建httpd用户
htpasswd -cm http_userlist admin ##创建httpd用户列表http_userlist,列表中添加用户admin,设置admin的密码
cat http_userlist ##查看admin的密码
htpasswd -m http_userlist admin1 ##在列表中添加用户admin1
cat http_userlist
pwd ##查看列表所在路径
/etc/httpd/conf.d
#编辑默认发布配置文件
vim a_default.conf ##编辑默认发布配置文件
<Directory "var/www/html">
AuthUserFile /etc/httpd/conf.d/http_userlist ##只允许http_userlist列表中的用户访问
AuthName "PLEASE input username and password!!" ##用户登陆前可以看见的内容
AuthType basic ##基本认证
# Require user admin ##只有admin用户可以通过认证,与下面的设置重复,注释
Require valid-user ##允许所有用户通过认
</Directory>
#重启httpd服务
检测:
172.25.254.162,需要输入用户及密码
此时输入正确的用户及密码,可以访问成功
检测之后,将内容注释,还原实验环境
#6.apache支持的语言
1)html
上面的内容都是html,不再赘述
2)php
#新建php文件
vim /var/www/html/index.php
<?php
phpinfo();
?>
#安装php
#重启httpd服务
检测:
172.25.254.141/index.php
3)cgi
#新建自定义cgi发布目录
#新建cgi默认发布文件
#!/usr/bin/perl
print "Content-type: text/html\n\n"; ##打印文本
print`date`; ##执行命令date
#添加执行权限
#修改发布文件的安全上下文
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?' ##修改安全上下文,这是个执行的文件
restorecon -RvvF /var/www/html/cgi ##重新读取文件/var/www/html/cgi
/var/www/html/cgi/index.cgi ##执行下脚本确保脚本运行正常
#编辑默认发布目录配置文件
<Directory "/var/www/html/cgi"> ##针对/var/www/html/cgi目录的描述
Options ExecCGI ##执行cgi
AddHandler cgi-script .cgi ##
</Directory>
#重启httpd服务
测试:
172.25.254.141/cgi/index.cgi
可以查看到脚本运行结果,脚本是显示时间,重复执行,时间在变化
#7.apache的加密访问
#https与http的区别
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信 息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息, 因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS和HTTP的区别主要为以下四点:
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
1)安装提供生成加密key的软件
cd /etc/httpd/conf.d/
ls
yum install crypto-utils -y
2)重启httpd服务
3)此时可以查看到新出现的文件sssl.conf
检测:
https://172.25.254.162,可以看到如下图的窗口
Add exception 进行加密
添加加密地址
通过验证,可以查看到发布内容
通过左上角的锁图标,可以查看具体信息
可以查看加密key到这是apache发布的,不太安全
#添加私有的加密key
1)安装可以生成加密key的软件
2)生成加密key
加密key具体设置如下
加密key长度
通过认证,需要收费,所以此时选择no
设置加密具体信息
域名加密钥匙生成如下
3)在https配置文件中添加自主加密key
101 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt ##在getenkey命令生成的后面找这个路径
109 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key ##在getenkey命令生成的后面找这个路径
#重启httpd服务
检测:
https://172.25.254.162
此时可以查看到加密key是本地生成的
#8.网页重写
如何在访问域名时,自动加密
1)添加虚拟主机login.westos.com
#重启httpd服务
检测:
真机vim /etc/hosts
login.westos.com
此时可以在浏览器中访问虚拟主机login.westos.com
2)配置网页重写
编辑虚拟主机的配置文件
<VirtualHost *:443>
SSLEngine on
ServerName login.westos.com
DocumentRoot /var/www/westos.com/login/html
CustomLog logs/login.log combined
SSLCertificateFile /etc/pki/tls/certs www.westos.com.crt ##这是文件vim /etc/httpd/conf.d/ssl.conf 的101行
SSLCertificateKeyFile /etc/pki/tls/private www.westos.com.key ##这是文件vim /etc/httpd/conf.d/ssl.conf 的109行
</VirtualHost>
<Directory "/var/www/westos.com/login/html">
Require all granted
</Directory>
<VirtualHost *:80>
ServerName login.westos.com
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
^(/.*)$ ##客户在浏览器地址栏中输入的所有字符
https:// ##强制客户加密访问
%{HTTP_HOST} ##客户请求主机
$1 ##“$1”表示 ^(/.*)$的值
[redirect=301] ##临时重写 302永久转换
检测:
login.westos.com
可以自动访问https://login.westos.com
访问login.westos.com,最后自动访问的是https://login.westos.com
#6.apache的应用
一.lamp部署
LAMP指的Linux(操作系统)、ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台。
虽然这些开放源代码程序本身并不是专门设计成同另几个程序一起工作的,但由于它们的免费和开源,这个组合开始流行(大多数Linux发行版本捆绑了这些软件)。当一起使用的时候,它们表现的像一个具有活力的解决方案包。其他的方案包有苹果的WebObjects(最初是应用服务器),Java/J2EE和微软的.NET架构。
LAMP包的脚本组件中包括了CGIweb接口,它在90年代初期变得流行。这个技术允许网页浏览器的用户在服务器上执行一个程序,并且和接受静态的内容一样接受动态的内容。程序员使用脚本语言来创建这些程序因为它们能很容易有效的操作文本流,甚至当这些文本流并非源自程序自身时也是。正是由于这个原因系统设计者经常称这些脚本语言为胶水语言。
linux+apahce+mariadb+php/perl/python=LAMP架构
1.将python脚本放到/var/www/cgi-bin下
脚本内容如下

2.给脚本添加执行权限
chmod +x webapp.wsgi
3.安装在http中提供python支持的软件
4.重启httpd服务
5.编辑lamp的配置文件
<VirtualHost *:80>
ServerName webapp.westos.com
DocumentRoot /var/www/cgi-bin
CustomLog logs/webapp.log combined
WSGIScriptAlias / /var/www/cgi-bin/webapp.wsgi ##指定脚本锁在路径
</VirtualHost>

6.chongqihttpd服务
测试:
客户端添加本地解析
1.vim /etc/hosts
172.25.254.162 www.westos.com news.westos.com music.westos.com login.westos.com webapp.westos.com
浏览器输入webapp.westos.com
客户端进行测试,可以进行访问
二.论坛部署
1.配置虚拟主机
cd /etc/httpd/conf.d ##进入虚拟主机配置目录
cp music.conf bbs.conf ##以music为模板新建bbs的虚拟主机
vim bbs.conf ##虚拟主机bbs的配置
<VirtualHost *:80>
ServerName bbs.westos.com ##虚拟主机域名时bbs.westos.com
DocumentRoot /var/www/westos.com/bbs/html ##默认发布文件路径
CustomLog logs/bbs.log combined ##日志路径,日志类型混合
</VirtualHost>
<Directory "/var/www/westos.com/bbs/html"> ##授权
Require all granted
</Directory>
2.下载论坛安装包
mkdir /var/www/westos.com/bbs/html -p ##apache发布目录
cd /var/www/westos.com/bbs/html/ ##进入apache发布目录
get Discuz_X3.2_SC_UTF8.zip ##下载论坛安装包
unzip Discuz_X3.2_SC_UTF8.zip ##解压
rm -fr Discuz_X3.2_SC_UTF8.zip ##删除多余的压缩包
3.论坛初始化部署
cd upload/ ##根据安装说明readme内容,上传upload目录,进入指定目录给权限,这也是进入论坛部署时进入的指定目录
less readme.txt ##查看说明文件
chmod -R 777 config ##根据说明给满权限
chmod -R 777 data ##根据说明给满权限
systemctl restart httpd ##重启httpd服务,使配置生效
此时浏览器访问bbs.westos.com/upload ##可以查看到论坛部署需要的部署
setenforce 0 ##selinux设置为警告状态
chmod 777 uc_client uc_server ##需要给满权限
chmod 777 uc_client uc_server -R ##需要给满权限
yum install mariadb-server ##根据需要安装数据库
systemctl start mariadb ##开启数据库服务
systemctl enable mariadb ##数据库开机启动
vim /etc/my.cnf ##数据库对网络开放的接口关闭
skip-networking=1 ##关闭网络开放接口
systemctl restart mariadb.service ##重启数据库服务
netstat -atnlupe | grep mysql ##查看数据库对网络开放的接口是否还存在
mysql_secure_installation ##数据库初始化
yum search php
yum install php-mysql.x86_64 ##下载php的的数据库支持的插件
#重启httpd服务
检测:
vim /etc/hosts ##客户端添加本地解析
172.25.254.162 bbs.westos.com
此时论坛部署所需要的条件全部满足
开始进行论坛安装
设置论坛具体信息
论坛正在安装
安装完毕,进入论坛
登录管理员帐号