部署LAMP平台中的: A(Apache网页)

技能目标
  • 掌握以源代码编译的方法构建LAMP环境
  • 学会phpMyAdmin的使用 //phpMyAdmin:使用数据库管理数据库数据库建表
本次实验前导读
  • LAMP 架构是目前成熟的企业网站应用之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是个所写的词具体包括[Linux系统,Aoache网站服务器,Mysql数据库服务器,PHP(或Perl,Python)网页编写语言]
  • 在此之前,我已经做过LAMP的平台搭建,本次实验深入的把Apache网页做一个优化
Apache主要特点
  • 开放源代码包
  • 跨平台应用
  • 支持各种Web编程语言
  • 运用稳定
  • 模块化设计
实验前准备
  • 查看在linux系统安装好后有没有httpd服务有的话为避免安装冲突请用yum remove 卸载掉httpd服务

  • Apache源代码包 :1:httpd 2:apr 1:apr-util

[root@localhost opt] ls
apr-1.5.0  apr-util-1.5.4  epel-release-latest-7.noarch.rpm  httpd-2.4.33  lamp  rh

  • 用yum安装编译语言gcc gcc-c++ pcre pcre-devel zlib-devel make
[root@localhost opt] yum install gcc gcc-c++ zlib-devel pcre pcre-devel make -y

1:安装Apache的压缩模块

[root@localhost opt] cp -R apr-1.5.0/ httpd-2.4.33/srclib/apr
[root@localhost opt] cp -R apr-util-1.5.4/ httpd-2.4.33/srclib/apr-util
[root@localhost opt] cd httpd-2.4.33/ #进入httpd安装包底下
[root@localhost httpd-2.4.33] ./configure \
--prefix=/usr/local/httpd \ #prefix指定安装目录
--enable-deflate \          #安装模块
--enable-so \               #启用动态加载模块
--enable-rewrite \ #启用网页地址重写功能
--enable-charset-lite \      #启用各种字符集支持,便于使用各种字符集编码
--enable-cgi                #启用CGI脚本程序支持,扩展网站应用访问能力
--enable-expires \          #启用网页缓存
[root@localhost httpd-2.4.33] make && make install #用make && make install 转换进制 (转换过程需等待)
  • 修改主配置
[root@localhost ~] grep -v "#" /usr/local/httpd/bin/apachectl > /etc/init.d/httpd #在etc文件里面的init.d底下重新建立/bin/apachectl便于service管理
[root@localhost ~] vim /etc/init.d/httpd //在开头加入
#!/bin/sh
    # chkconfig:2345 85 15
    # description:Apache is a World Wide Web server.
[root@localhost ~] chmod +x /etc/init.d/httpd #给一个执行权限
[root@localhost httpd-2.4.33] cd /usr/local/httpd/conf/
[root@localhost conf] ls
extra  httpd.conf  magic  mime.types  original
[root@localhost conf] vim httpd.conf
LoadModule headers_module modules/mod_headers.so
LoadModule deflate_module modules/mod_deflate.so     //开启 去掉前面#
LoadModule filter_module modules/mod_filter.so
//在主配置文件末尾添加
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
  DeflateCompressionLevel 9
  SetOutputFilter DEFLATE
</IfModule>
  • 用./apachectl -t 验证配置文件
[root@localhost conf] cd /usr/local/httpd/bin/
[root@localhost bin] ./apachectl -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Syntax OK #直接验证可能会有个报错这个报错是ServerName 域名没有开启找到它修改个域名 还有一个是Liten 监听地址 把下面ipv6监听前加#关闭开启上面一个监听本地地址
[root@localhost bin] ./apachectl -t
Syntax OK  #验证成功
[root@localhost bin] ./apachectl -t -D DUMP_MODULES | grep "deflate"  验证模块有没有开启
 deflate_module (shared)
  • 网页缓存在主配置文件里面开启

  • LoadModule expires_module modules/mod_expires.so

  • 在末尾添加 (前面的点是标识不用添加)

  • <IfModule mod_expires.c>

  • ExpiresActive On ExpiresDefault "access plus 50 seconds"

  • </IfModule>

  • 在/usr/local/httpd/bin/底下验证模块

[root@localhost bin] ./apachectl -t 
Syntax OK
[root@localhost bin] ./apachectl -t -D DUMP_MODULES | grep "expires"
 expires_module (shared) # 表示验证成功

  • 安全优化防盗链(把规则配置在<Directory>里面!!!Require all granted底下,前面的点是标识)

  • RewriteEngine On #加入mod_rewrite模块

  • RewriteCond %{HTTP_REFERER}!^http://benet.com/.*$ [NC]

  • RewriteCond %{HTTP_REFERER}!^http://benet.com$ [NC]

  • RewriteCond %{HTTP_REFERER}!^http://www.benet.com/.*$ [NC]

  • RewriteCond %{HTTP_REFERER}!^http://www.benet.com/$ [NC]

  • 上面四句设置允许访问的HTTP来源,包括网站自身

  • RewriteRule.*\.(gif|jpg|swf)$http://www.benet.com/error.png

  • 上面一句将不满足referer条件的访问重定向至nolink.png。error.png位于允许“盗链”的目录about中,要相当注意,不然,警告信息和图片将无法在对方网站上显示

  • 开启mod_rewrite.so模块

  • 检查语法

[root@localhost bin] ./apachectl -t 
Syntax OK
[root@localhost bin] ./apachectl -t -D DUMP_MODULES | grep "rewrite"
 rewrite_module (shared)

  • 隐藏版本信息
[root@localhost ~] vim /usr/local/httpd/conf/extra/httpd-default.conf
ServerTokens Full #把Full修改为Prod 只显示名称不显示版本
  • 启动httpd 关闭防火墙等功能
[root@localhost ~] systemctl start httpd.service 
[root@localhost ~] systemctl status httpd.service 
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 一 2018-06-25 11:38:22 CST; 1s ago
     Docs: man:httpd(8)
           man:apachectl(8)

[root@localhost ~] systemctl stop firewalld.service
[root@localhost ~] systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 三 2018-05-16 13:42:04 CST; 1 months 9 days ago
     Docs: man:firewalld(1)
[root@localhost ~] setenforce 0
[root@localhost ~] echo "this is accp" > /var/www/html/index.html #添加一个首页

用fiddler抓包测试

查看304包右边client里面有一个Accept-Encoding:gzip,deflate 支持压缩模块

版本号2.4.33被隐藏了