文章目录
概念
Apache:【Apache HTTP Server】是Apache软件基金会的一个开放源码的网页服务器软件,可以在大多数电脑操作系统中运行。由于其跨平台和安全性,被广泛使用,是最流行的Web服务器软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中
httpd :【Apache Hypertext Transfer Protocol Server】apache软件管理服务
主配置文件httpd.conf
路径:/etc/httpd/conf/httpd.conf
- 修改默认发布目录
DocumentRoot "/test/hello"
#指定发布目录路径
<Directory "/test/hello">
Require all granted
#设置访问权限
</Directory>
- 修改默认发布文件
<IfModule dir_module>
DirectoryIndex hello.html index.html
#先访问hello.html文件,访问失败后访问index.html
</IfModule>
- 修改默认端口
Listen 8080
#设置监听端口
apache 虚拟机
服务器设置
- 设置子配置文件
mkdir /etc/httpd/conf/vhost.conf
#添加新子配置文件vhost.conf在子配置文件目录中
#注意子配置文件均以*.conf结尾
<VirtualHost _default_:80>
#设置没有指定地址时,默认访问
DocumentRoot /var/www/html
#默认访问路径
CustomLog logs/default.log combined
#日志记载地址,方式为混合记录
</VirtualHost>
<VirtualHost *:80>
#设置本机IP地址指定地址,端口为80
#可设不同IP地址和不同端口
ServerName news.hello.org
#访问域名news.hello.org
DocumentRoot /test/hello/news/
#访问地址为news.hello.org的访问文件路径
CustomLog logs/news.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName music.hello.org
DocumentRoot /test/hello/music/
#访问地址为music.hello.org的访问文件路径
CustomLog logs/music.log combined
</VirtualHost>
<Directory /test/hello>
#配置访问/test/hello文件地址的访问权限
Require all granted
</Directory>
~
- 添加虚机指定文件的index.html
mkdir -p /test/hello/news /test/hello/music
vim /test/hello/news/index.html
news page
vim /test/hello/music/index.html
music page
vim /var/www/http/index.html
default page
客户端访问
- 客户端访问需设置hosts文件
vim /etc/hosts
服务器IP地址 www.hello.org news.hello.org music.hello.org
- 浏览器打开指定域即可浏览
www.hello.org 显示default page
news.hello.org 显示news page
music.hello.org 显示music page
访问控制
- 基于IP的访问控制
<Directory /test/hello/music>
Order allow,deny #列表读取顺序,后读取的列表会覆盖先读取列表的重复部分
Allow from all
Deny from 172.25.254.101
</Directory>
#黑名单控制方式
<Directory /test/hello/music>
Order deny,allow
Allow from 172.25.254.101
Deny from all
</Directory>
#白名单控制方式
- 基于用户的访问控制
- 生成用户密钥
htpasswd -cm /etc/httpd/.htpassfile admin
New password:
Re-type new password:
Adding password for user admin
#创建新用户admin,第一次建立时使用-cm
cat /etc/httpd/.htpassfile
admin:$apr1$QuY4ln5K$oriKyn5K97hrvjADN/sq.1
htpasswd -m /etc/httpd/.htpassfile admin1
New password:
Re-type new password:
Adding password for user admin1
#第二次建立时使用-m,若使用-cm会覆盖之前信息
cat /etc/httpd/.htpassfile
admin:$apr1$QuY4ln5K$oriKyn5K97hrvjADN/sq.1
admin1:$apr1$m3vv2bj.$WUTLXLZdnGCAXchdJ7ncw0
- 修改子配置文件vhost
<Directory /test/hello/music>
AuthUserFile /etc/httpd/.htpassfile
AuthType basic
AuthName "Pleasa input username and password!"
Require valid-user
</Directory>
#添加htpassfile 名单中所有人
<Directory /test/hello/music>
AuthUserFile /etc/httpd/.htpassfile
AuthType basic
AuthName "Pleasa input username and password!"
Require user admin
</Directory>
#添加名单中个别用户:admin
其他关联配置
PHP配置方式
- 安装php软件
yum install php -y
- php的测试页面
vim /var/www/html/index.php
<?php
phpinfo()
#php信息界面
?>
- 重其httpd服务,登陆页面访问
systemctl restart httpd
- 客户端浏览器测试:www.hello.org/index.php
CGI配置方式
- 安装httpd的帮助手册
yum install -y httpd-manual.noarch
#浏览器浏览帮助手册:www.hello.org/manual,可查看cgi相关配置具体指导
- CGI文件
mkdir /test/hello/cgi
#建立文件夹
vim /test/hello/cgi/date.cgi
#创建cgi文件
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
#文件内容
chmod a+x /test/hello/cgi/date.cgi
#修改文件权限
- 修改虚机文件
vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
ServerName cgi.hello.org
DocumentRoot /test/hello/cgi/
CustomLog logs/cgi.log combined
</VirtualHost>
#添加访问虚拟机
<Directory /test/hello/cgi/>
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
#添加访问cgi文件指定规则
- 访问cgi显示时间
浏览器:cgi.hello.org/date.cgi
WSGI配置
- 安装wsgi软件
yum install -y mod_wsgi.x86_64
- 修改虚机文件
vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
ServerName wsgi.hello.org
DocumentRoot /test/hello/wsgi/
CustomLog logs/wsgi.log combined
WSGIScriptAlias /DATE /test/hello/cgi/date.wsgi
#脚本别名,访问使用/DATE
</VirtualHost>
#添加在指定虚机中
- wsgi文件
vim /test/hello/wsgi/date.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]
- 访问wsgi显示时间
浏览器:wsgi.hello.org/date.wsgi
HTTPS
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
添加ssl层
- 安装加密传输插件
yum install -y mod_ssl
- 安装加密软件
yum install -y crypto-utils
- 生成密钥
genkey www.hello.org
#生成密钥与证书
#第一步 next
#第二步 根据个人需求选择,推荐选择1024
#第三步 等待
#第四步 由于关联本机randomdata,所以要在真机中进行键盘输入,直到进度条读完
#第五步 认证请求,本次为测试选择no
#第六步 选择Next
#第七步 重要填写内区域,根据提示填写
完成后会提示生成文件*.crt和*.key
- 修改ssl配置文件
vim /etc/httpd/conf.d/ssl.conf
101 SSLCertificateFile /etc/pki/tls/certs/www.hello.org.crt
109 SSLCertificateKeyFile /etc/pki/tls/private/www.hello.org.key
网页重写,强制指定网页为https
- 设置重写使用的网页
mkdir /test/hello/login
vim /test/hello/login/index.html
https login page
- 设置重写规则
vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:443>
#设置加密传输使用的端口号
ServerName login.hello.org
#加密传输的域名
DocumentRoot /test/hello/login/
#访问文件路径
CustomLog logs/login.log combined
#日志文件
SSLEngine on
#加密引擎开启
SSLCertificateFile /etc/pki/tls/certs/www.hello.org.crt
#加密公钥文件
SSLCertificateKeyFile /etc/pki/tls/private/www.hello.org.key
#加密私钥文件
</VirtualHost>
<VirtualHost *:80>
ServerName login.hello.org
RewriteEngine On
#重写引擎开启
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1
#重写地址转换
#^(/.*)$ 浏览器中地址栏说有内容
#%{HTTP_HOST} 客户请求主机
#“$1”表示^(/.*)$的值
</VirtualHost>