部署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被隐藏了