LAMP环境搭建:
安装包
yum -y install httpd mariadb mariadb-server php php-mysql
mariadb-server为数据库服务端 php-mysql:php连接mysql的安装包
进入httpd默认的网站目录
cd /var/www/html/
vim index.html (默认的网站名)
如果想要访问自定义网站名,只需要在网址栏加入自定义的名字
echo bbbbbb >test.html
开启httpd
httpd -t 阿帕奇语法检测
连接数据库检测
systemctl start mariadb
systemctl enable mariadb
初始化密码
mysqladmin -uroot password 123
登录mysql
mysql -uroot -p123
检测httpd自动识别php
vim /var/www/html/index.php
网址输入 http://192.168.1.10/index.php
检测httpd连接mysql
vim /var/www/html/test.php
mysql-php successful"; mysql_close(); ?>
部署应用
博客压缩包 Discuz_X3.3_SC_UTF8.zip
解压缩
unzip Discuz_X3.3_SC_UTF8.zip
覆盖html目录
mv upload/* /var/www/html/
网址输入http://192.168.1.10/install/
为/var/www/html目录递归修改属主和属组为apache
chown -R apache:apache /var/www/html/
apache优化
apache工作模式详解
访问请求通过守护进程创建子进程,然后子进程产生线程处理静态和动态请求
prefork模式
预先开启一些子进程,等待请求,每个子进程只有一个线程,在一个时间点内只能处理一个请求
优点:成熟稳定,兼容强,安全
缺点:占用更多的内存资源,不擅长高并发
查看方式httpd -V
配置方法
worker模式&event模式
work模式
多进程多线程混合模式,也预先维持一个备用的服务线程池
优点:占用更少的内存,高并发更优秀
缺点:必须考虑线程安全问题(一个线程出问题整个进程受到干扰)
开启Apache的worker模式:
关闭prefork模式并开启worker模式
vim /etc/httpd/conf.modules.d/00-mpm.conf
httpd -V
修改worker模式参数
vim /etc/httpd/conf/httpd.conf
systemctl restart httpd
event模式
和work模式很像,解决了keep-alive(打开一次tcp连接使用一次就断开)场景下,长期被占用的资源浪费问题
keep-alive模式:
优点:再一次TCP连接中可以持续发送多份数据而不会断开连接
缺点:会造成一些系统资源无效的占用
event模式优点:
如果资源够用,保持keep-alive模式,如果资源不够用,新的请求会管理旧的连接并分配给新的链接
查看工作模式:httpd -V | grep -i "server mpm"
指定方式
配置文件详解(严格区分大小写)
相关文件位置(rpm包安装方式)
配置文件位置/etc/httpd/conf/httpd.conf
网页文件位置 /var/www/html
日志文件位置 /var/log.httpd
主机环境基本配置参数
主页目录及权限
优化实验
配置keepalive连接保持参数
配置选项
keepalive ON|OFF:是否打开连接保持功能。根据网站的并发请求量决定是否打开,高并发时打开,并发量不高时可关闭。
keepalive timeout:一次连接多次请求之间的最大间隔时间,两次请求超过timeout指定时间连接断开。
maxkeepaliverequestes:一次连接能够传输的最大请求数量。
vim /etc/httpd/conf/httpd.conf
httpd -t
配置版本号隐藏
curl -I http://192.168.1.10 获取Apache服务器的版本号
vim /etc/httpd/conf/httpd.conf
网页压缩
配置 Apache 的网页压缩功能,是使用 Gzip 压缩算法来对 Apache 服务器发布的网页内容进行压缩后再传输到客户端浏览器
网页压缩的优势
·降低了网络传输的字节数,加快网页加载的速度
·节省流量,改善用户的浏览体验
·gzip 与搜索引擎的抓取工具有着更好的关系
两种压缩模块:
mod_gzip 模块
额外三方工具
mod_deflate 模块
Apache 2.x内建模块
mod_gzip 与 与 mod_deflate 对比
查看系统是否安装deflate、headers与filter模块:
httpd -D DUMP_MODULES |egrep 'deflate|header|filter'
查看Apache服务是否启用上述模块
创建测试文件(如果网页文件太小,不会压缩):
cat /var/log/messages > /var/www/html/index.html
vim /etc/httpd/conf/httpd.conf
修改内容
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
代表对什么样的内容启用 gzip 压缩
DeflateCompressionLevel 9
代表压缩级别
SetOutputFilter DEFLATE
代表启用 deflate 模块对本站点的输出进行 gzip 压缩
systemctl restart httpd
配置网页的缓存时间
mod_expires 模块会自动生成页面头部信息中的 Expires 标签和 Cache-Control标签,使网页能在客户端浏览器缓存一段时间,以避免重复请求
httpd -D DUMP_MODULES |grep expires
查看是否安装了 mod_expires 模块
cat /etc/httpd/conf.modules.d/00-base.conf |grep expires 查看系统是否启用该模块:
vim /etc/httpd/conf/httpd.conf 修改配置文件
systemctl restart httpd 重启服务
Apache的访问控制
分类
httpd 服务的访问控制:
控制对网站资源的访问
为特定的网站目录添加访问授权
1、客户机地址限制
通常,访问限制指令适用于所有访问方法(GET,PUT,POST等)。 这在大多数情况下是需要的行为。但是,通过将指令放在部分中,可以限制某些方法,而使其他方法不受限制。
现在允许所有人访问,但拒绝192.168.1.11
vim /etc/httpd/conf/httpd.conf
<RequireAll>
Require all granted
Require not ip 192.168.1.1
</RequireAll>
systemctl restart httpd
使用192.168.1.1主机浏览器
现在修改访问权限,只允许192.168.1.1主机访问:
使用192.168.1.11访问
用户授权限制
基于用户的访问控制权限就是对网页目录进行认证配置,用户输入用户名密码之后才能访问网页。httpd 服务支持使用摘要认证(Digest)和基本认证(Basic)两种方式。
创建用户认证数据库
简介
添加用户和密码并查看
htpasswd -c /etc/httpd/conf/.web.pwd yun211
根据之前的设置,修改 httpd.conf 配置文件
vim /etc/httpd/conf/httpd.conf
AuthName 'abc'(本次实验应该为yun211)
AuthType Basic 认证类型为基本认证
AuthUserFile /etc/httpd/conf/.web.pwd 指定认证口令文件的所在目录和名称
require valid-user 授权给认证口令文件中的所有用户
systemctl restart httpd
使用浏览器打开出现密码界面
如果密码账号输入错误,则会返回401状态码:认证失败
修改密码和删除密码分别使用:
htpasswd -b /etc/httpd/conf/.web.pwd yun211 123456
htpasswd -D /etc/httpd/conf/.web.pwd yun211
防盗链
简介
如果别人盗用网站的这些资源,明显的是会增大服务器的带宽压力,防盗链就是防止别人的网站代码里盗用服务器的图片、文件、视频等相关资源。
简述
源主机: IP 地址 192.168.1.11
盗链网站: IP地址:192.168.1.12
使用两台主机模拟防盗链,配置rewrite 实现Apache防盗链
方法一:
源主机上操作:192.168.1.11
yum -y install httpd
cd /var/www/html/
加入图片a.jpg
增加网页根目录
vim index.html
<html>
<body>
<h1>web.yun211.com it is work</h1>
<img src="a.jpg">
</body>
</html>
ls
测试
盗链主机操作(12):
yum -y install httpd
systemctl start httpd
vim /var/www/html/index.html
<html>
<body>
<h1>192.168.1.12 it is work</h1>
<img src="http://192.168.1.11:/a.jpg">
</body>
</html>
盗链网站测试
源主机设置防盗链:
查看系统是否安装并启用rewrite模块:
配置规则变量说明 :
%{HTTP_REFERER} 浏览 header 中的链接字段,存放一个连接的 URL,代表是从哪个链接访问所需的网页。
!^ 不以…开头
.*$ 以任意字符结尾
NC 不区分大小写
R 强制跳转
规则匹配说明:如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的规则不再匹配。
RewriteEngine ON 打开网页重写功能
RewriteCond 设置匹配规则
RewriteRule 设置跳转动作
修改 httpd.conf主配置文件
vim /etc/httpd/conf/httpd.conf
12端测试
当然,大多数是修改域名进行访问操作
11端操作
vim /etc/hosts
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://yun211.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://yun211.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://web.yunban.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://web.yun211.com$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://web.yun211.com/error.html [R,NC]
12端操作
vim /etc/hosts
主机操作
这样就可以用域名测试了
日志管理
简介
随着网站的访问量增加,默认情况下 Apache 的单个日志文件也会越来越大,日志文件占用磁盘空间很大,查看相关信息不方便。
日志分割
日志分隔的方法
Apache 自带的rotatelogs分割工具
第三方cronolog分割工具
shell脚本
rotatelogs分割工具
vim /etc/httpd/conf/httpd.conf
ErrorLog "|/usr/sbin/rotatelogs -l /etc/httpd/logs/error_log_%Y%m%d.log 86400"
CustomLog "|/usr/sbin/rotatelogs -l /etc/httpd/logs/access_log_%Y%m%d.log 86400" cnbined
systemctl restart httpd;ls /etc/httpd/logs/
AWStats 日志分析系统
简介
在 httpd 服务器的访问日志文件 access_log 中,记录了大量的客户机访问信息,通过分析这些信息,可以及时了解 Web 站点的访问情况。以完成自动化的日志分析与统计工作。
发布者:LJH,转发请注明出处:https://www.ljh.cool/5781.html