1.什么是Apache?
Apache HTTP Server(简称Apache)提供http协议,是Apache软件基金会的一个开放源代码的网页服务器,可以在大多数电脑操作系统中运行,由于其具有的跨平台性和安全性,被广泛使用,是最流行的Web服务器端软件之一。
它快速、可靠并且可通过简单的API扩展,Perl/Python解释器可被编译到服务器中,可以创建一个每天有数百万人访问的Web服务器。
Apache:(prefork)预派生,稳定,同步阻塞,正向代理,动态资源服务器
Nginx:(fork),无法处理动态页面,异步非阻塞,进程交替使用内存,反向代理,静态资源服务器
Tengin:alibaba公司使用
架构:
LAMP=Linux+Apache+Mysql+Php
LNMP=Linux+Nginx+Mysql+Php
2.什么是http?
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。
3.Apache安装部署
步骤一:实验前reset虚拟机desktop,配置ip(172.25.254.118),yum源,desktop主机名设置为:apache.example.com,关闭selinux
步骤二:安装http服务,安装http菜单,设置开机启动
yum install -y httpd
yum install -y httpd-manual
systemctl start httpd
systemctl enable httpd
步骤三:火墙中允许http
firewall-cmd --permanent
firewall-cmd --reload
firewall-cmd --liat-all
4.Apache默认设置的修改
(1)Apache的基础信息
信息 | 说明 |
---|---|
/etc/httpd/conf | 主配置目录 |
/etc/httpd/conf.d/ | 子配置目录 |
/etc/httpd/conf/httpd.conf | 主配置文件 |
/etc/httpd/conf.d/*conf | 子配置文件 |
/var/www/html | 默认发布目录 |
/var/www/html/index.html | 默认发布页面(页面显示的内容为index.html文件中所写的内容 |
80端口 | Apache默认访问端口 |
/etc/httpd/logs | Apache的日志 |
/etc/httpd/logs/access_log | 访问日志 |
/etc/httpd/logs/error_log | 错误日志 |
http_sys_content_t | 默认安全上下文 |
apache | 程序开启默认用户 |
企业在一定时间会做日志截断,日志压缩,方便管理查询
进行实验前先对配置文件进行备份
(2) 修改默认接口为:8080
步骤一:修改默认端口为8080
vim /etc/httpd/conf/httpd.conf
Listen 8080
步骤二:火墙中允许8080端口
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
systemctl restart httpd
nestat -antlupe | grep httpd
步骤三:浏览器中输入:172.25.254.118:8080进行测试,若显示为默认发布文件中的内容,则说明修改默认接口成功
(3)修改默认发布文件
1> /var/www/html/index.html是Apache的默认发布页面
2> 将修改默认发布文件为:/etc/var/www/html/zxyos
步骤一:在配置文件中修改默认发布文件为:/etc/var/www/html/zxyos,在此文件中写入页面显示内容
vim /etc/httpd/conf/httpd.conf
DirectoryIndex zxyos index.html /*当zxyos不存在时,访问index.html*/
systemctl restart httpd
发布文件后可加 .html ,也可不加
步骤二:浏览器中输入:172.25.254.118:8080进行测试,显示内容为zxyos文件中的内容
(4)修改默认发布目录为:/zxyos/html/
步骤一:修改默认发布目录为/zxyos/html/,在其中写入默认发布文件
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/zxyos/html"
<Directory "/zxyos">
Require all granted
</Directory>
systemctl restart httpd
步骤二:浏览器中输入:172.25.254.118:8080进行测试,显示内容为默认发布目录中的默认发布文件中的内容
5.访问控制
步骤一:建立访问目录,访问文件
cd /var/www/html/
mkdir zxyos
vim zxyos/index.html
<h1>test page--for jay</h1>
systemctl restart httpd
步骤二:配置文件中写入访问权限,不同测试机的浏览器中输入:172.25.254.118/zxyos/index.html 进行测试
Order Allow,Deny:先执行Allow命令,后执行Deny命令,Deny命令会覆盖Allow命令
1> 允许所有人查看/var/www/html/zxyos目录下的默认发布文件,但禁止172.25.254.18
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html/zxyos">
Order Allow,Deny
Allow from All /*允许所有人查看/var/www/html/zxyos目录下的默认发布文件*/
Deny from 172.25.254.18 /*禁止172.25.254.18 */
</Directory>
2> 不允许任何人查看/var/www/html/zxyos目录下的默认发布文件,只允许172.25.254.18查看
Order Deny,Allow:先执行Deny命令,后执行Allow命令,Aloow命令会覆盖Deny命令
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html/zxyos">
Order Deny,Allow
Allow from 172.25.254.18
Deny from All
</Directory>
6.指定用户访问
步骤一:建立用户,设置密码,生成加密字符
htpasswd -cm zxyosuser 用户名建立第一个用户(之后建立的用户若使用 -cm 则会覆盖之前的用户信息)
htpasswd -cm zxyosuser admin
htpasswd -m zxyosuser admin1
cat zxyosuser
步骤二:配置文件中设置用户访问权限
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html/zxyos">
AuthUserFile /etc/httpd/conf/zxyosuser /*认证文件*/
AuthType basic /*认证类型*/
AuthName "Please input your name and password !!!" /*欢迎语*/
Require user admin /*只允许admin用户登录*/
</Directory>
admin用户可登陆
admin1用户不可登陆
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html/zxyos">
AuthUserFile /etc/httpd/conf/zxyosuser
AuthType basic
AuthName "Please input your name and password !!!"
Require valid-user /*允许所有用户登录*/
</Directory>
admin1用户可登陆
7.Apache的虚拟主机
一台Apache主机拥有多个站点,不同的域名对应不同的资源
步骤一:测试机添加本地解析
vim /etc/hosts /*本地解析*/
172.25.254.118 www.zxyos.com news.zxyos.com music.zxyos.com
步骤二:建立不同站点对应的配置文件及发布文件内容
cd /var/www/
ls
mkdir /var/www/virtual/news/html -p
mkdir /var/www/virtual/music/html -p
vim /var/www/virtual/news/html/index.html
<h1>news.zxyos.com</h1>
cp /var/www/virtual/news/html/index.html /var/www/virtual/music/html/index.html
vim /var/www/virtual/music/html/index.html
<h1>music.zxyos.com</h1>
步骤三:设置不同站点的配置
cd /etc/httpd/conf.d/
ls
vim default.conf
<VirtualHost _default_:80>
DocumentRoot /var/www/html
Customlog logs/default.log combined
</VirtualHost>
vim news.conf
<VirtualHost *:80>
ServerName news.zxyos.com
DocumentRoot /var/www/virtual/news/html
Customlog logs/default.log combined
</VirtualHost>
<Directory "/var/www/virtual/news/html">
Require all granted
</Directory>
cp news.conf music.conf
vim music.conf /* :%s/news/music/g */
<VirtualHost *:80>
ServerName music.zxyos.com
DocumentRoot /var/www/virtual/music/html
Customlog logs/default.log combined
</VirtualHost>
<Directory "/var/www/virtual/music/html">
Require all granted
</Directory>
systemctl restart httpd
步骤四:不同域名对应不同站点,浏览器中输入:
www.zxyos.com
news.zxyos.com
music.zxyos.com
8.Apache语言php+cgi+wsgi
(1)php语言
步骤一:建立php语言识别脚本发布文件
vim /var/www/html/index.php
<?php
phpinfo();
?>
步骤二:安装php语言插件
yum install -y php
systemctl restart httpd
cd /etc/httpd/conf.d
ls
步骤三:浏览器中输入:172.25254.118/index.php
(2)cgi语言
步骤一:建立cgi语言识别脚本及发布目录、文件
mkdir /var/www/html/cgi
cd /var/www/html/cgi
vim index.cgi
#! /usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
ls
chmod +x index.cgi
./index.cgi
步骤二:浏览器中输入:172.25.254.118/cgi/index.cgi
步骤三:根据说明(172.25.254.118/manual)修改配置文件
vim /etc/httpd/conf.d/default.conf
<VirtualHost _default_:80>
DocumentRoot /var/www/html
Customlog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html/cgi>
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
systemctl restart httpd
./index.cgi
步骤四:浏览器中输入:172.25.254.118/cgi/index.cgi
测试selinux在开启状态下的cgi,统一安全上下文
(3)wsgi语言
步骤一:建立wsgi语言识别脚本发布文件
mkdir /var/www/wsgi
cd /var/www/wsgi
ls /*script.wsig*/
vim script.wsig
#!/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语言插件
yum search wsgi
yum install -y mod_wsgi.x86_64
步骤三:创建Apache虚拟主机
cd /etc/httpd/conf.d/
vim vhost.conf
<VirtualHost *:80>
ServerName www.zxyoswsgi.com
WSGIScriptAlias / /var/www/wsgi/script.wsgi
</VirtualHost>
systemctl restart httpd
步骤四:测试中写入解析文件
vim /etc/hosts
172.25.254.118 www.zxyoswsgi.com
步骤五:浏览器输入:www.zxyoswsgi.com
9.https自签名证书,重定向
301—永久重定向
302—临时重定向
http协议默认访问80端口
https协议默认访问443端口
(1)自签名证书
https协议默认访问443端口
步骤一:开启443端口
netstat -tnlp | grep :443
yum install -y mod_ssl
ls
systemctl restart httpd
netstat -tnlp | grep :443
步骤二:安装加密软件,genkey www.zxyos.com命令生成认证文件和秘钥
yum install -y crypto-utils
genkey www.zxyos.com
步骤三:将认证文件和秘钥写入配置文件
vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/www.zxyos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.zxyos.com.key
步骤四:浏览器中输入:login.zxyos.com,可查看到已生成加密锁和认证书
(2)网页重定向
步骤一:设置发布目录,发布文件,将ip及对应域名写入解析文件
vim login.conf
<VirtualHost *:443>
ServerName login.zxyos.com
DocumentRoot /var/www/virtual/login/html
Customlog logs/default.log combined
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/www.zxyos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.zxyos.com.key
</VirtualHost>
<Directory "/var/www/virtual/login/html">
Require all granted
</Directory>
步骤二:浏览器中输入:login.zxyos.com 不能自动重定向为https://logins.zxyos.com
步骤三:重新编辑配置文件,写入重定向信息
vim login.conf
<VirtualHost *:80>
ServerName login.zxyos.com
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
步骤四:浏览器中输入:login.zxyos.com 可以自动重定向为https://logins.zxyos.com