1.Apache的作用
- 在访问web时通常使用http://的方式
- http:// ##超文本传输协议
- 为http:// 超文本传输协议提供软件 Apache nginx stgw jfe Tengine
2.Apache的安装
(Linux与Windows虚拟机调制同一网段)
- 配置网卡IP和软件仓库
- 搜索dnf search http 安装阿帕奇所需软件
- dnf install httpd.x86_64 -y ##安装软件
- 3.Apache的启用
systemctl enable --now httpd ##开启apache服务
systemctl status httpd ##查看apache服务是否开启
firewall-cmd --permanent --add-service=http ##防火墙策略永久设定
firewall-cmd --reload ##刷新防火墙让策略生效
firewall-cmd --list-all ##查看火墙策略
public (active)
target: default
icmp-block-inversion: no
interfaces: br0 ens160
sources:
services: cockpit dhcpv6-client http ssh ##http服务在火墙策略中对外开放
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
4.Apache的基本信息
-
服务名称:httpd
-
配置文件:
- /etc/httpd/conf/httpd.conf ###主配置文件
- /etc/httpd/conf.d/ ##子配置文件
-
默认发布目录: /var/www/html
-
默认发布文件:index.html
-
默认端口:
-
80 ##端口http
-
443 ##https
-
-
用户: apache
-
日志: /etc/httpd/logs
5.Apache的基本配置
1.Apache端口更改
- getenforce ##获取selinux状态
- vim /etc/httpd/conf/httpd.conf 45行修改 8080 ##编辑主配置文件
为不受selinux的影响 vim /etc/sysconfig/selinux SELINUX=disable reboot
- systemctl restart httpd ##重启httpd 服务
- netstat -antlupe | grep httpd ##查看端口
- firewall-cmd --add-port=8080/tcp ##火墙设置使之添加8080端口
实验完成修改回实验环境
2.修改默认发布目录
- vim index.html ##在默认发布文件中添加信息,可直接访问
- vim /etc/httpd/conf/httpd.conf ##修改默认发布文件 /index 167行,添加新的默认文件参数
- westos index.html ##当westos不存在访问index.html,位于前面的优先级更高
- systemctl restart httpd
3.修改默认发布目录
- vim /var/www/html/westos/index.html ##建立默认发布文件的默认发布目录
- vim /etc/httpd/conf/httpd.conf /DocumenRoot 122行
“/var/www/westos” ##更改默认发布目录
#对访问授权
<Directory “/var/www/westos”>
require all granted
</Directory>
6.控制访问
1.权限访问控制
-
创建实验环境:
- mkdir /var/www/html/westos
- vim /var/www/html/westos/index.html
-
vim /etc/httpd/conf/httpd.conf ##编辑配置文件
<Directory "/var/www/html/westos"> ##131行
Order Allow,Deny
Allow from all
Deny from 192.168.1.112 ##允许任何人访问,不许192.168.1.112访问
(先读allow 后读deny deny中的信息会覆盖allow中的内容)
<Directory "/var/www/html/westos2"> ##131行
Order Deny,Allow ##Deny Allow的优先顺序
Allow from 192.168.1.112
Deny from all ##只允许192.168.1.112访问,其他都不允许
2.基于用户的访问控制
- htpasswd -cm /etc/httpd/.htpasswd admin ##建立认证文件
(再次建立,文件已存在,去掉c,文件存在,-c会删掉所有已存在文件)
- cat /etc/httpd/.htpasswd ##查看认证文件是否存在
<Directory "/var/www/html/westos2"> ##指定需认证才可访问的文件
AuthUserFile /etc/httpd/.htpasswd ##指定认证文件
AuthName "Please input username and passwd" ##指定认证提示
AuthType basic ##指定认证类型
Require user admin ##指定认证用户admin
#Require Vaild-user ##认证文件中的所有用户都可访问(与上一句二选一)
</Directory>
7.apache虚拟主机
-
mkdir -p /var/www/westos.org/{linux,shell,pythpn} ##创建网址
-
解析 vim /etc/hosts ##浏览器所在主机中书写本地解析
192.168.1.112 linux.westos.org shell.westos.org python.westos.org www.westos.org
-
cd /etc/httpd/conf.d/ ##apache子配置目录
-
vim vhost.conf ##指定子配置文件
<VirtualHost _default_:80> ###apache默认主机
DocumentRoot /var/www/html
CustomLog logs/defaults.log combined ##相对路径,混合型日志
</VirtualHost>
<VirtualHost *:80> ##apache虚拟主机
Severname linux.westos.org ##虚拟机主机名
DocumentRoot /var/www/westos.org/linux ##虚拟主机默认发布目录
CustomLog logs/defaults.log combined ##虚拟主机日志,相对路径,combined混合型日志
</VirtualHost>
<VirtualHost *:80>
Severname shell.westos.org
DocumentRoot /var/www/westos.org/shell
CustomLog logs/defaults.log combined ##相对路径,混合型日志
</VirtualHost>
<VirtualHost *:80>
Severname python.westos.org
DocumentRoot /var/www/westos.org/python
CustomLog logs/defaults.log combined ##相对路径,混合型日志
</VirtualHost>
-
systemctl restart httpd ##重启服务
-
重启不了
/var/log/messages
systemctl restart httpd
cat /var/log/messages
- 直接访问域名,可得到文本内容
8.apache的语言支持
1.php
#php语言# ##安装php 软件即可执行
vim /var/www/html/index.php
<?php
phpinfo()
?>
2.C++
-
dnf install httpd-manual -y ##apache文档访问
-
chmod +x index.cgi
-
vim /etc/httpd/ ##编辑子配置文件
<Directory> /var/www/html/cgi>
options +ExCGI ##执行cgi程序
AddHandler cgi-script .cgi ##程序触发器
</Directory>
- perl XXXXX ##再次执行
3.python
- “wsgi” mkdir wsgi ##创建wsgi文件
##python脚本
##vim index.wsgi ##编辑脚本
def application(env, westos):
westos('200 ok',[('Content-Type', 'text/html')])
return [b'hello world!']
-
chmod +x index.wsgi ##增加可执行权限
-
vim /etc/httpd.conf.d/vhost.d
<VirtualHost>
ServerName wsgi.westos.org
WSGIScriptAlias / /var/www/html/wsgi/indx.wsgi
</VirtualHost>
- 安装wsgi插件 dnf install python3-mod_wsgi systemctl restart httpd
- vim /etc/hosts wsgi.westos.org ##添加本地解析
- 访问wsgi文件
9.Apache的加密访问
-
##安装加密插件 dnf install mod_ssl -y
-
systemctl restart httpd
-
firewall-cmd --permanent --add-service=https ##火墙服务
-
firewall-cmd --list-all ##查看火墙
-
查看认证证书并删除
由https://www.westos.org进入,选择前进与接受更改
-
##生成密钥
-
mkdir -p /etc/httpd/webkey/ ##建立key目录
-
openssl genrsa -out /etc/httpd/webkey/www.westos.org.key 2048 #生成私钥
openssl x509 -req -days 365 -in /etc/httpd/webkey/www.westos.org.csr
-signkey /etc/httpd/webkey/www.westos.org.key
-out /etc/pki/tls/certs/www.westos.org.crt ##生成签证请求证书 x509 证书格式 -rep 请求 -in 加载签证姓名
-
mkdir /var/www/westos.org/login -p
-
echo login.westos.org > /var/www/westos.org/login/index.html
-
vim vhost.conf ##编写配置文件
<VirtualHost *:443>
ServerName login.westos.org
DocumentRoot /var/www/westos.org/login
CustomLog logs/login.log combined
SSLEngine on
SSLCertificateFile /etc/httpd/webkey/www.westos.org.crt
SSLCertificateKeyFile /etc/httpd/webkey/www.westos.org.key
</virtualHost>
- 查看证书信息已更新
- 强制直接进入https服务
<VirtualHost *:80>
ServerName login.westos.org
RewriteEngine On
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1
</virtualHost>
^(/.*)$ ##客户地址栏中输入的地址
%{HTTP_HOST} ##客户主机 $1
##RewriteRule后面跟的第一串字符的值
- login.westos.org 可直接进入https://login.westos.org