本文继续浅谈httpd2.2相关配置,httpd-2.4的变化及相关配置,LAMP相关知识
http2.2 相关配置
1. httpd status页面的展示
查看status_module模块是否装载
[root@web01 tmp]# httpd -M|grep status status_module (shared) Syntax OK
全局配置文件打开如下配置即可,也可以在virtualhost中配置
<Location /server-status> SetHandler server-status Order allow,deny Allow from 172.16.0.0/16 #status页面显示了web服务的运行信息,建议设置访问控制 </Location>
2. httpd服务进程权限管理
user / group
指定以哪个用户身份运行httpd服务进程
User apache Group apache
3. 使用mod_deflate模块压缩页面优化传输速度
配置如下:将下面配置放到全局配置文件httpd.conf
# mod_deflate configuration SetOutputFilter DEFLATE # Restrict compression to these MIME types AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/css # Level of compression (Highest 9 - Lowest 1) DeflateCompressionLevel 9 # Netscape 4.x has some problems. BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
适用场景:
(1) 节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持;
(2) 压缩适于压缩的资源,例如文件文件;
4. httpd 压力测试工具
ab、webbench、http_load、loadrunner、等。
这里介绍一下ab(ApacheBench)
ab [options] url
-n:总请求数
-c:模拟的并发数
-k:以持久连接模式 测试
# ab -c 10 -n 1000 http://www.linux.com/index.html
httpd-2.4基本应用
1.httpd-2.4新特性
(1) MPM支持运行为DSO机制;以模块形式按需加载;
(2) event MPM生产环境可用;
(3) 异步读写机制;
(4) 支持每模块及每目录的单独日志级别定义;
(5) 每请求相关的专用配置;
(6) 增强版的表达式分析式;
(7) 毫秒级持久连接时长定义;
(8) 基于FQDN的虚拟主机也不再需要NameVirutalHost指令;
(9) 新指令,AllowOverrideList;
(10) 支持用户自定义变量;
(11) 更低的内存消耗;
2.httpd-2.4新模块
(1)mod_proxy_fcgi (2)mod_proxy_scgi (3)mod_remoteip
3.安装httpd-2.4
centos6安装httpd-2.4
依赖与apr-1.4+,apr-util-1.4+
apr:apache portable runtime(可移植运行时程序)
centos6 要先编译安装apr-1.4+ 和 apr-util-1.4+,然后在编译安装httpd-2.4
centos7安装httpd-2.4
centos7 base源中自带了httpd-2.4,直接yum安装即可
yum install httpd
4.centos7中httpd-2.4的配置
4.1 程序运行环境
配置文件:
/etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf 模块相关的配置文件:/etc/httpd/conf.modules.d/*.conf
systemd unit file:
/usr/lib/systemd/system/httpd.service
主程序文件:
/usr/sbin/httpd httpd-2.4 支持MPM的动态切换
日志文件:
/var/log/httpd: access_log:访问日志 error_log:错误日志
站点目录:
/var/www/html
模块文件路径:
/usr/lib64/httpd/modules
服务控制:
systemctl enable|disable httpd.service systemctl {start|stop|restart|status} httpd.service
4.2 切换使用MPM
编辑配置/etc/httpd/conf.modules.d/00-mpm.conf文件
启用要使用的MPM相关的LoadModule指令,然后重启服务即可
4.3 基于IP的访问控制
httpd2.4中,使用Require指令进行访问控制,不在支持2.2中的allow,deny.
允许所有主机访问:Require all granted
拒绝所有主机访问:Require all denied
控制特定的ip访问:
Require ip IPADDR: 授权指定来源的主机访问
Require not ip IPADDR: 拒绝
控制特定主机访问:
Require host HOSTNAME: 授权指定来源的主机访问
Require not host HOSTNAME:拒绝
配置模块:在Directory标签中
<RequireAll>
Require all granted
Require not ip 172.16.100.1
</RequireAll>
4.4 基于域名的虚拟主机配置
httpd-2.4中基于FQDN的虚拟主机也不再需要NameVirutalHost指令;
模版示例:
<VirtualHost *:80> ServerName www1.linux.com DocumentRoot "/web/vhosts/www1" CustomLog "/var/log/httpd/www1/www1.access_log" combined ErrorLog "/var/log/httpd/www1/www1.error_log" <Directory "/web/vhosts/www1"> Options None AllowOverride None <RequireAll> Require all granted Require not ip 10.0.0.0/24 </RequireAll> </Directory> </VirtualHost>
注意:任意站点目录下的页面只有显示授权才能被访问
4.5 持久连接
httpd2.4中支持毫秒级的持久连接
KeepAliveTimeout #ms
毫秒级持久连接时长定义,文件自行创建
/etc/httpd/conf.d/ka.conf KeepAlive On KeepAliveTimeout 500ms MaxKeepAliveRequests 100
LAMP相关知识
1. web资源类型
静态资源:原始形式与相应结果一致
动态资源:原始形式通常为程序文件,需要运行后将结果响应给客户端。
2. CGI:Common Gateway Interface
通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器和请求处理程序之间传输数据的一种标准。
3. LAMP的实现方式
方案1:httpd(prefork)+libphp5.so+mysql
方案2:httpd(event)+libphp5-zts.so+mysql
方案3:httpd+fpm(php)+mysql
4. centos6上简单实现LAMP
采用yum安装的方式:
# yum install httpd php php-mysql mysql-server # service mysqld start # service httpd start
5.centos7上简单实现LAMP
采用yum安装的方式:
# yum install httpd php php-mysql mariadb-server # systemctl start mariadb.service httpd.service
php配置文件:
/etc/php.ini、/etc/php.d/*.ini
测试httpd与php的连接性:
<?php phpinfo(); ?>
测试php与mysql的连接性
<?php $conn = mysql_connect('172.16.100.1','testuser','testpass'); if($conn) echo "OK"; else echo "Failure"; ?>
感谢MageEdu