世界上最流行的Web服务器软件之一Apache服务
1.apche服务
Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一
Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是*软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
Apacheweb服务器软件拥有以下特性:
Apache Server配置界面
Apache Server配置界面
1.支持最新的HTTP/1.1通信协议
2.拥有简单而强有力的基于文件的配置过程
3.支持通用网关接口
4.支持基于IP和基于域名的虚拟主机
5.支持多种方式的HTTP认证
6.集成Perl处理模块
7.集成代理服务器模块
8.支持实时监视服务器状态和定制服务器日志
9.支持服务器端包含指令(SSI)
10.支持安全Socket层(SSL)
11.提供用户会话过程的跟踪
12.支持FastCGI
13.通过第三方模块可以支持JavaServlets
#企业中常用的web服务,用来提供http://(超文本传输协议)
2.apache的安装部署
yum install httpd -y ##apache软件
yum install httpd-manual ##apache的手册
systemctl start httpd
systemctl enable httpd
firewall-cmd --list-all ##列出火墙信息
firewall-cmd --permanent --add-service=http ##永久允许http
firewall-cmd --reload ##火墙从新加载策略
/var/www/html ##apache的/目录,默认发布目录
/var/www/html/index.html ##apache的默认发布文件
vim /var/www/html/index.html
<h1> hello world </h1>
测试 http://172.25.254.100
3.apache的基础信息
#主配置目录: /etc/httpd/conf
#主配置文件: /etc/httpd/conf/httpd.conf
#子配置目录: /etc/httpd/conf.d/
#子配置文件: /etc/httpd/conf.d/.conf
#默认发布目录: /var/www/html
#默认发布文件: index.html
#默认端口: 80
#默认安全上下文:httpd_sys_content_t
#程序开启默认用户: apache
#apache日志: /etc/httpd/logs/
修改默认端口:
vim /etc/httpd/conf/httpd.conf
42 Listen 8080 ##修改默认端口为8080
firewall-cmd --permanent --add-port=8080/tcp 让火墙也允许这个端口
firewall-cmd --reload
netstat -antlupe | grep httpd 查看已经开启的端口
semanage port -l | grep http 查看允许开启的端口
测试:
修改非默认端口
vim /etc/httpd/conf/httpd.conf
43 Listen 6667 ##修改默认端口为6667
在ssh为permsive时可以通过端口访问地址,但是在enforcing的情况下就不行,
semanage port -a -t http_port_t -p tcp 6667 添加并不被允许的端口
这样,即使是在强制情况下也可以访问地址
修改默认发布文件:
默认发布文件就是访问apache时没有指定文件名称时默认访问的文件
这个文件可以指定多个,有访问顺序
vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex index.html test.html ##当index.html不存在时访问test.html
修改默认发布目录:
mkdir -p /westos/html
vim idenx.html
vim /etc/httpd/conf/httpd.conf
120 DocumentRoot "/www/html"
访问会没有权限
ll /westos/html
添加权限
121 <Directory "/www/html">
122 Require all granted
123 </Directory>
但是这只是在setenfoce 0 的时候才能访问
想要在强制情况enforcing的情况下访问就得改安全上下文
semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'
rstorecon -RvvF /www/
访问:
4.apache的虚拟主机(让一台apache主机有多个站点)
vim /etc/httpd/conf.d/vhost.conf 子配置目录下建立子配置文件
<VirtualHost _default_:80>
DocumentRoot "/var/www/html"
CustomLog "logs/default.log" combined
</VirtualHost>
mkdir -p/var/www/vhost/news
mkdir -p /var/www/vhost/music
vim /var/www/vhost/news/index.html
vim /var/www/vhost/music/index.html
vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
ServerName news.westos.com #指定站点名称
DocumentRoot "/var/www/vhost/news.westos.com/html/" #站点默认发布目录
CustomLog "logs/news.westos.com.logs" combined #站点日志combined标示四种日志的集合
</VirtualHost>
<Directory "/var/www/vhost/news.westos.com/html/">
Require all granted
</Directory>
vim /etc/httpd/conf.d/c.conf
<VirtualHost *:80>
ServerName music.westos.com
DocumentRoot "/var/www/vhost/music.westos.com/html/"
CustomLog "logs/music.westos.com.logs" combined
</VirtualHost>
<Directory "/var/www/vhost/music.westos.com/html/">
Require all granted
</Directory>
测试:
**在测试主机中作好本地解析
vim /etc/hosts
172.25.254.100 news.westos.com
172.25.254.100 music.westos.com
5.apache内部的访问控制
1.针对与主机的访问控制
设置白名单,只有172.25.254.105可以访问地址
<Directory "/var/www/html">
Order Deny,Allow 列表读取顺序,后读取的列表会覆盖限度去内容的重复部分
Allow from 172.25.254.105
Deny from all
</Directory>
设置黑名单,只有172.25.254.72不可以访问地址
<Directory "/var/www/html">
Order Allow,Deny 列表读取顺序,后读取的列表会覆盖限度去内容的重复部分
Allow from all
Deny from 172.25.254.105
</Directory>
2.用户方式的访问控制
htpasswd -cm /etc/httpd/.apache_auth admin
再次添加用户的时候不加“-c”,要不然就会覆盖之前的用户
htpasswd -m /etc/httpd/.apache_auth admin1
vim adefault.conf
<Directory "/var/www/html/admin">
AuthUserFile /etc/httpd/.apache_auth
AuthName "Please input your name and password"
AuthType basic
Require user admin 允许这个用户访问地址
Require valid-user 允许所有用户访问地址
</Directory>
测试:
6.apache支持的语言
1.html
2.php
vim /var/www/html/index.php
<?php
phpinfo();
?>
vim /etc/httpd/conf.d/http.conf
php index.html 找不到
yum install php -y
systemctl restart httpd
php index.html
测试:
172.25.254.100/index.php
3.cgi
mkdir -p /var/www/html/cgi
vim /var/www/html/cgi/index.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
chmod +x /var/www/html/cgi/index.cgi
./index.cgi #执行下脚本确保脚本运行正常
vim vhost.conf
17 <Directory "/var/www/html/cgi">
18 Options +ExecCGI
19 AddHandler cgi-script .cgi
20 </Directory>
systemctl restart httpd
测试:只有在ssh为警告(prmisive)的情况下才可以访问
当改了安全上下文之后就可以在强制(enforcing)的情况下访问
semanage fcontent -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'
restorecon -RvvF /var/www/html/cgi/
4.wsgi
cd /var/www/cgi-bin/
wget ftp://172.25.254.250:/pub/webapp.wsgi
ls
python webapp.wsgi不能调用脚本
yum install mod_wsgi -y
vim /etc/httpd/conf.d/vhost.conf
<VirtualHost _default_:80>
ServerName wsgi.westos.com
WSGIScriptAlias / /var/www/cgi/webapp.wsgi
</VirtualHost>
systemctl restart httpd
测试:
做好本地解析
vim /etc/hosts
172.25.254.105 wsgi.westos.com
浏览器输入:wsgi.westos.com
7.https的加密访问
了解一下:
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议)**,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。**即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
yum install mod_ssl -y
yum install crypto-utils -y
netstat -antlupe | grep httpd 锁需要开启443端口
vim /etc/httpd/conf.d/ssl.conf
5 Listen 443 https
火墙允许https服务
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
https://172.25.254.111 错误
删除它原本的锁
yum install crypto-utils -y 安装自己的锁
genkey apache_server.westos.com 生成自己的锁和钥匙
会弹出图形界面,填完就会生成锁和钥匙
vim /etc/httpd/conf.d/ssl.conf
101 SSLCertificateFile /etc/pki/tls/certs/apache_server.westos.com.crt
109 SSLCertificateKeyFile /etc/pki/tls/private/apache_server.westos.com.key
systemctl restart httpd
8设定https虚拟主机并设定网页重写
就是当你输入到login.westos.com 它其实会是htpps://login.westos.com
cd /etc/httpd/conf.d
vim vhost_https.conf
<VirtualHost *:443>
ServerName login.westos.com
DocumentRoot /var/www/html/virtual/login.westos.com/html
CustomLog "logs/login.logs" combined
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/apache_server.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/apache_server.westos.com.key
</VirtualHost>
<Directory "/var/www/html/vhost/login">
Require all granted
</Directory>
mkdir -p /var/www/vhost/login建立默认发布目录
vim /var/www/vhost/login/index.html建立默认发布文件
本地解析: vim /etc/hosts
172.25.254.105 login.westos.com
只有输入完整的网址才可以访问
^(/.*)$ ##客户在浏览器地址栏中输入的所有字符
https:// ##强制客户加密访问
%{HTTP_HOST} ##客户请求主机
$1 ###"$1"标示 ^(/.*)$的值
[redirect=301] ##永久重写 302临时