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://(超文本传输协议)
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
#主配置目录: /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/
访问:
测试: **在测试主机中作好本地解析
vim /etc/hosts 172.25.254.100 news.westos.com 172.25.254.100 music.westos.com
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>
测试:
1.html 2.php
vim /var/www/html/index.php <?php phpinfo(); ?> vim /etc/httpd/conf.d/http.confphp index.html 找不到 yum install php -y systemctl restart httpd php index.html
测试:
172.25.254.100/index.php3.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了解一下: 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 -ynetstat -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
就是当你输入到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临时