世界上最流行的Web服务器软件之一Apache服务

    xiaoxiao2022-07-14  143

    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临时
    最新回复(0)