第417集集群架构-Apache网站服务
|字数总计:5.6k|阅读时长:25分钟|阅读量:
集群架构 - Apache网站服务
1. Apache基础概述
1.1 动态和静态资源
静态元素:
.html - HTML文件
.img - 图片文件
js - JavaScript文件
css - 样式表文件
mp4 - 视频文件
动态元素:
.php - PHP脚本
.jsp - Java Server Pages
.py - Python脚本
1.2 常见Web Server服务
| Web服务器 |
说明 |
特点 |
| Nginx |
高性能Web服务器 |
轻量级、高并发 |
| openresty |
基于Nginx的Web平台 |
集成Lua脚本 |
| Tengine |
淘宝开发的Nginx分支 |
针对大流量优化 |
| Apache |
最流行的Web服务器 |
功能丰富、模块化 |
| IIS |
Windows Web服务器 |
Windows平台专用 |
1.3 Web常见中间件
PHP中间件:
- PHP-fpm: PHP FastCGI Process Manager
- HHVM: HipHop Virtual Machine
Python中间件:
- WSGI: Web Server Gateway Interface
JSP中间件:
- Tomcat: Apache Tomcat
- JBOSS: Red Hat JBoss
- Resin: Caucho Resin
- Weblogic: Oracle WebLogic
1.4 主流组合架构
| 架构 |
说明 |
特点 |
| LNMP |
Linux + Nginx + MySQL + PHP |
php-fpm进程模式 |
| LAMP |
Linux + Apache + MySQL + PHP |
php作为Apache的模块 |
| Nginx + Tomcat |
Nginx与Tomcat结合 |
取代Apache与Tomcat结合 |
1.5 Apache软件包
软件包:
服务端口:
- 80/tcp: HTTP服务端口
- 443/tcp: HTTPS服务端口(HTTP + SSL)
1.6 Apache配置文件
| 配置文件 |
说明 |
/etc/httpd/conf/httpd.conf |
主配置文件 |
/etc/httpd/conf.d/*.conf |
包含配置文件 |
/etc/httpd/conf.d/welcome.conf |
默认测试页面 |
1.7 配置进程和线程
Prefork MPM(进程模式)
针对Apache 2.2,仅针对面试。
1 2 3 4 5 6 7 8 9
| <IfModule prefork.c> StartServers 10 //初始建立的进程数 MinSpareServers 10 //最小空闲的进程数 MaxSpareServers 15 //最大空闲的进程数 ServerLimit 2000 //最大启动的进程数 默认 256 MaxClients 2000 //最大并发连接数 默认 256 MaxRequestsPerChild 4000 //每个子进程在其生命周期内允许响应的最大请求数,0 不限制 </IfModule>
|
Worker MPM(线程模式)
1 2 3 4 5 6 7 8 9
| <IfModule worker.c> StartServers 2 //初始建立的进程数 ThreadsPerChild 50 //每个进程建立的线程数 MinSpareThreads 100 //最小空闲的线程数 MaxSpareThreads 200 //最大空间的线程数 MaxClients 2000 //最大的并发访问量(线程) MaxRequestsPerChild 0 //每个子进程在其生命周期内允许响应的最大请求数,0 不限制 </IfModule>
|
MPM说明:
- Prefork: 每个请求使用一个进程处理
- Worker: 使用多线程处理请求,性能更好
2. Apache安装配置
2.1 环境准备
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| [root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
|
2.2 安装Apache服务
1 2 3 4 5 6 7 8 9 10 11
| [root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
|
2.3 防火墙配置
如果必须启动防火墙的情况执行如下指令:
1 2 3 4 5 6 7 8
| [root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
|
2.4 添加默认静态页面
1 2 3 4 5 6
| [root@liyanzhao ~]
[root@liyanzhao ~] Web is First
|
3. Apache基础配置
3.1 查看Apache重要配置文件
主要配置参数:
| 参数 |
说明 |
默认值 |
ServerRoot "/etc/httpd" |
安装目录 |
/etc/httpd |
Listen 80 |
监听端口 |
80 |
Include conf.modules.d/*.conf |
包含模块目录配置文件 |
- |
User apache |
运行Apache进程的用户 |
apache |
Group apache |
运行Apache进程的用户组 |
apache |
ServerAdmin root@localhost |
管理员邮箱 |
root@localhost |
DocumentRoot "/var/www/html" |
站点目录 |
/var/www/html |
ErrorLog "logs/error_log" |
错误日志 |
logs/error_log |
LogLevel warn |
日志级别 |
warn |
AddDefaultCharset UTF-8 |
字符集 |
UTF-8 |
EnableSendfile on |
启用sendfile |
on |
IncludeOptional conf.d/*.conf |
包含conf.d目录下的所有conf结尾的文件 |
- |
3.2 类型模块配置
1 2 3 4 5 6 7
| <IfModule mime_module> TypesConfig /etc/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType text/html .shtml AddOutputFilter INCLUDES .shtml </IfModule>
|
3.3 日志模块配置
1 2 3 4 5 6 7 8 9 10 11
| ErrorLog "logs/error_log" LogLevel warn
<IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common <IfModule logio_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> CustomLog "logs/access_log" combined </IfModule>
|
日志格式说明:
- combined: 完整日志格式,包含Referer和User-Agent
- common: 通用日志格式
- combinedio: 包含输入输出字节数
3.4 目录访问控制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <Directory /> DirectoryIndex index.html AllowOverride none Require all denied </Directory>
<Directory "/var/www"> DirectoryIndex index.html AllowOverride None Require all granted </Directory>
<Files ".ht*"> Require all denied </Files>
|
参数说明:
DirectoryIndex: 目录默认文件
AllowOverride: 是否允许.htaccess文件覆盖配置
Require all denied: 拒绝所有访问
Require all granted: 允许所有访问
4. Apache虚拟主机
虚拟主机允许一个服务器上同时运行多个网站。
4.1 建立默认虚拟主机
1 2 3 4 5 6 7 8 9
| <VirtualHost _default_:80> DocumentRoot /srv/default/www/ CustomLog "logs/default-vhost.log" combined <Directory /srv/default/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>
|
4.2 建立www0.example.com的虚拟主机
1 2 3 4 5 6 7 8 9 10
| <VirtualHost *:80> ServerName www0.example.com DocumentRoot /srv/www0.example.com/www/ CustomLog "logs/www0.example.com-vhost.log" combined <Directory /srv/www0.example.com/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>
|
4.3 创建网站目录
1 2 3 4 5 6 7 8 9 10 11
| mkdir -p /srv/www0.example.com/www/
echo "www0.example.com" > /srv/www0.example.com/www/index.html
chown -R apache:apache /srv/www0.example.com/
systemctl restart httpd
|
5. Apache动态网站
5.1 安装PHP
如果需要解析动态php程序,则需要安装php。
1 2 3 4 5 6 7 8 9 10 11 12
| [root@liyanzhao ~]
[root@liyanzhao ~] -rwxr-xr-x 1 root root 4814560 Nov 14 21:10 /etc/httpd/modules/libphp5.so
[root@liyanzhao ~] -rw-r--r-- 1 root root 561 Nov 14 21:10 /etc/httpd/conf.d/php.conf
[root@liyanzhao ~]
|
5.2 编写PHP状态页面
1 2 3 4 5 6
| [root@liyanzhao ~] <?php phpinfo(); ?> EOF
|
5.3 测试访问PHP状态页面
访问 http://192.168.56.11/info.php 可以查看PHP配置信息。
5.4 安装MariaDB数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| [root@liyanzhao ~] [root@liyanzhao ~] [root@liyanzhao ~]
[root@liyanzhao ~]
Set root password? [Y/n]y New password: 123 Re-enter new password: 123
[root@apache ~] MariaDB [(none)]> exit Bye
|
5.5 编辑PHP连接数据库文件
1 2 3 4 5 6 7 8 9 10 11
| [root@liyanzhao ~] <?php \$link=mysql_connect('localhost','root','123'); if(\$link) echo "Successfuly"; else echo "Faile"; mysql_close(); ?> EOF
|
注意: 打开页面如果出现空白,说明php无法连接MariaDB,请按如下步骤操作:
1 2 3 4 5 6 7 8 9 10 11
| [root@liyanzhao ~]
[root@liyanzhao ~] mysql mysqli pdo_mysql
[root@liyanzhao ~]
|
5.6 验证PHP与MariaDB连接
访问 http://192.168.56.11/sql.php 应该显示 “Successfuly”。
5.7 升级PHP版本
如果觉得PHP版本过低,可进行升级PHP版本。
1 2 3 4 5 6 7 8 9 10
| [root@http-server ~]
[root@http-server ~] [root@http-server ~]
[root@http-server ~] php72-php-pecl-mysql php72-php-pecl-mysql-xdevapi php72-php-opcache \ php72-php-pecl-memcache php72-php-pecl-memcached php72-php-pecl-redis
|
6. Apache访问控制
目录访问控制,基于IP或者主机访问控制(仅限httpd 2.4版本可用)。
6.1 访问控制指令
| 指令 |
说明 |
Require local |
匹配本机 |
Require all granted |
匹配所有的访问请求,并且授权访问 |
Require all denied |
匹配所有的访问请求,并且拒绝访问 |
Require ip 192.168.56.11 |
匹配指定IP的客户端访问 |
Require ip 192.168.56.0/255.255.0.0 |
匹配某个IP网段 |
Require ip 192.168.56.0/24 |
匹配某个IP网段 |
Require not ip 192.168.56.11 |
不匹配该IP的请求 |
Require host desktop0.example.com |
匹配主机名的客户端访问 |
Require host example.com |
匹配某个域或主机名 |
主机名匹配示例:
example.com - 精确匹配
server0.example.com - 精确匹配
node.example.com - 精确匹配
*.example.com - 通配符匹配
不匹配示例:
Require not host gov - 不匹配所有以.gov结尾域
注意: not不能单独使用,必须使用在RequireAll、RequireAny、RequireNone容器标签里。
6.2 实践环境准备
1 2 3 4 5 6 7 8
| [root@http-server ~]
[root@http-server ~]
[root@http-server ~]
|
6.3 案例1: 允许所有主机访问
1 2 3 4 5 6 7 8 9
| <VirtualHost *:80> ServerName test.bgx.com DocumentRoot "/var/www/html/download" </VirtualHost>
<Directory "/var/www/html/download"> AllowOverride None Require all granted </Directory>
|
说明:
AllowOverride All: 允许子目录中的.htaccess中的设置覆盖当前设置
AllowOverride None: 不允许子目录中的.htaccess中的设置覆盖当前设置
6.4 案例2: 只允许网段192.168.56|69.0/24访问
1 2 3 4 5 6 7 8 9 10
| <VirtualHost *:80> ServerName test.bgx.com DocumentRoot "/var/www/html/download" </VirtualHost>
<Directory "/var/www/html/download"> AllowOverride None Require ip 192.168.69.0/24 Require ip 192.168.56.0/24 </Directory>
|
6.5 案例3: 所有请求都允许,只拒绝某些主机访问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <VirtualHost *:80> ServerName test.bgx.com DocumentRoot "/var/www/html/download" </VirtualHost>
<Directory "/var/www/html/download"> AllowOverride None <!-- 用于封装一组规则的授权,其中必须没有失败的授权 --> <!-- 至少必须有一个规则成功才允许访问 --> <RequireAll> Require all granted Require not host desktop0.example.com </RequireAll> </Directory>
|
限制原理:
- 要求里的规则都完全匹配并且授权访问才能访问
desktop0.example.com满足第一条规则
desktop0.example.com不满足第二条规则,所以不能访问
6.6 案例4: 拒绝所有人访问,但允许个别主机可以访问
1 2 3 4 5 6 7 8 9 10
| <VirtualHost *:80> ServerName test.bgx.com DocumentRoot "/var/www/html/download" </VirtualHost>
<Directory "/var/www/html/download"> AllowOverride None Require ip 192.168.160.161 Require all denied </Directory>
|
6.7 案例5: 特别的规则组合
只能本机访问
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <VirtualHost *:80> ServerName test.bgx.com DocumentRoot "/var/www/html/download" </VirtualHost>
<Directory "/var/www/html/download"> AllowOverride None <!-- 用于封装一组规则的授权,其中必须没有失败的授权 --> <!-- 至少必须有一个规则成功才允许访问 --> <RequireAll> Require all granted Require local </RequireAll> </Directory>
|
说明: <RequireAll>要求所有规则都必须通过,不能有一个失败。最终结果只能是本机访问。
只有desktop0.example.com能访问
1 2 3 4 5 6 7 8 9 10 11 12
| <VirtualHost *:80> ServerName test.bgx.com DocumentRoot "/var/www/html/download" </VirtualHost>
<Directory "/var/www/html/download"> AllowOverride None <RequireAll> Require all granted Require host desktop0.example.com </RequireAll> </Directory>
|
说明: 其他机器都不能匹配到Require host desktop0.example.com。
6.8 文件访问控制
1 2 3 4 5 6 7 8 9
| <Directory /webroot/baidu/upload> AllowOverride None Require all granted <Files ~ "\.php$"> Order allow,deny Deny from all </Files> </Directory>
|
6.9 用户访问控制
访问站点需要用户与密码(httpd官方参考文档)。
安装加密工具
建立密码文件
1 2 3 4 5
| [root@http-server ~]
[root@http-server ~]
|
配置httpd支持认证
1 2 3 4 5 6 7 8 9 10 11 12
| <VirtualHost *:80> ServerName test.bgx.com DocumentRoot "/var/www/html/download" </VirtualHost>
<Directory "/var/www/html/download"> AuthType "Basic" AuthName "Hai I's To Bgx" AuthBasicProvider file AuthUserFile "/etc/httpd/webpass" Require valid-user </Directory>
|
参数说明:
AuthType "Basic": 基本认证类型
AuthName: 认证提示信息
AuthBasicProvider file: 使用文件作为认证提供者
AuthUserFile: 密码文件路径
Require valid-user: 要求有效用户
7. Apache安全服务
使用虚拟主机技术部署两个网站,按要求配置HTTPS网站。
需求:
网站1:
- 绑定域名
www0.example.com
- 目录在
/srv/www0/www
- 要求支持https加密访问
- 所有通过http访问该网站都会自动调转到https
网站2:
- 绑定域名
webapp0.example.com
- 目录在
/srv/webapp0/www
- 要求支持https加密访问
- 所有通过http访问该网站都会自动调转到https
7.1 安装httpd mod_ssl
1 2 3 4 5 6
| [root@http-server ~]
[root@http-server ~] [root@http-server ~]
|
7.2 建立HTTPS网站需要的相关证书和密钥文件
证书文件位置:
http://classroom.example.com/pub/example-ca.crt - 根证书
http://classroom.example.com/pub/tls/certs/www0.crt - www0网站的证书
http://classroom.example.com/pub/tls/private/www0.key - www0网站的私钥
http://classroom.example.com/pub/tls/certs/webapp0.crt - webapp0网站的证书
http://classroom.example.com/pub/tls/private/webapp0.key - webapp0网站的私钥
下载证书文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| mkdir -p /etc/pki/tls/{certs,private}
wget http://classroom.example.com/pub/example-ca.crt -O /etc/pki/ca-trust/source/anchors/example-ca.crt
wget http://classroom.example.com/pub/tls/certs/www0.crt -O /etc/pki/tls/certs/www0.crt wget http://classroom.example.com/pub/tls/private/www0.key -O /etc/pki/tls/private/www0.key
wget http://classroom.example.com/pub/tls/certs/webapp0.crt -O /etc/pki/tls/certs/webapp0.crt wget http://classroom.example.com/pub/tls/private/webapp0.key -O /etc/pki/tls/private/webapp0.key
chmod 600 /etc/pki/tls/private/*.key
update-ca-trust
|
7.3 建立相关目录文件
1 2 3 4 5 6 7 8 9
| [root@http-server ~]
[root@http-server ~] [root@http-server ~]
[root@http-server ~]
|
7.4 建立对应两台虚拟主机
配置www0虚拟主机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <VirtualHost *:443> DocumentRoot "/srv/www0/www" ServerName www0.example.com SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 SSLCertificateFile /etc/pki/tls/certs/www0.crt SSLCertificateKeyFile /etc/pki/tls/private/www0.key <Directory /srv/www0/www> Require all granted </Directory> </VirtualHost>
<VirtualHost *:80> ServerName www0.example.com RewriteEngine On RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301] </VirtualHost>
|
配置webapp0虚拟主机
1 2 3 4 5
| [root@http-server ~]
[root@http-server ~]
|
7.5 重启服务并测试
1 2 3 4 5 6 7 8 9 10 11 12
| apachectl configtest
systemctl restart httpd
curl -k https://www0.example.com curl -k https://webapp0.example.com
curl -I http://www0.example.com
|
配置说明:
SSLEngine on: 启用SSL引擎
SSLProtocol all -SSLv2: 允许所有SSL协议,禁用SSLv2
SSLCipherSuite: 指定加密套件
RewriteEngine On: 启用重写引擎
RewriteRule: HTTP自动跳转到HTTPS
8. Apache反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
8.1 Node节点部署
在两台web-node节点中均使用Yum安装一个Apache用于做真实机,监听8080端口。
web-node1.com部署
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| [root@web-node1 ~] http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
[root@web-node1 ~]
[root@web-node1 ~]
[root@web-node1 ~]
[root@web-node1 ~]
[root@web-node1 ~]
[root@web-node1 ~] web-node1.com
|
web-node2.com部署
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| [root@web-node2 ~] http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
[root@web-node2 ~]
[root@web-node2 ~]
[root@web-node2 ~]
[root@web-node2 ~]
[root@web-node2 ~]
[root@web-node2 ~] web-node2.com
|
8.2 反向代理部署
步骤1: Apache源码编译安装,并监听80端口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| [root@lb-node1 ~]
[root@lb-node1 ~] [root@lb-node1 src]
[root@lb-node1 src] [root@lb-node1 src]
[root@lb-node1 httpd-2.4.23] [root@lb-node1 httpd-2.4.23]
[root@lb-node1 httpd-2.4.23]
[root@lb-node1 ~] [root@lb-node1 ~] Syntax OK [root@lb-node1 ~]
|
步骤2: 在httpd.conf配置引用proxy配置文件
1 2 3 4 5
| vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-proxy.conf
|
步骤3: 配置proxy反向代理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| [root@linux-node1 ~] LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
ProxyRequests Off
<Proxy balancer://web-cluster> BalancerMember http://192.168.90.201:8080 loadfactor=1 BalancerMember http://192.168.90.202:8080 loadfactor=2 </Proxy>
ProxyPass /biaoganxu balancer://web-cluster ProxyPassReverse /biaoganxu balancer://web-cluster
<Location /manager> SetHandler balancer-manager Order Deny,Allow Allow from all </Location> EOF
|
步骤4: 重载Apache服务
步骤5: 测试反向代理
1 2 3 4 5 6 7 8 9
| [root@lb-node1 ~] web-node1.com [root@lb-node1 ~] web-node2.com [root@lb-node1 ~] web-node2.com [root@lb-node1 ~] web-node1.com
|
步骤6: 使用HTTP访问Apache管理页面
访问 http://192.168.90.203/manager 可以查看负载均衡管理页面。
8.3 Apache proxy代理配置文件详解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
ProxyRequests Off
<Proxy balancer://web-cluster> BalancerMember http://192.168.90.201:8080 loadfactor=1 BalancerMember http://192.168.90.202:8080 loadfactor=2 </Proxy>
ProxyPass /biaogan balancer://web-cluster ProxyPassReverse /biaogan balancer://web-cluster
<Location /manager> SetHandler balancer-manager Order Deny,Allow Allow from all </Location>
|
配置说明:
ProxyRequests Off: 关闭正向代理
loadfactor: 负载因子,数字越大权重越高
ProxyPass: 将请求转发到后端服务器
ProxyPassReverse: 修改响应头中的Location和Content-Location
balancer-manager: 负载均衡管理界面
9. Apache服务管理
9.1 服务管理命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| systemctl start httpd
systemctl stop httpd
systemctl restart httpd
systemctl reload httpd
systemctl status httpd
systemctl enable httpd
|
9.2 配置文件测试
1 2 3 4 5 6 7 8 9 10
| apachectl configtest
httpd -t
httpd -V
httpd -M
|
9.3 日志管理
1 2 3 4 5 6 7 8
| tail -f /var/log/httpd/error_log
tail -f /var/log/httpd/access_log
tail -f /var/log/httpd/www0.example.com-vhost.log
|
10. Apache故障排查
10.1 常见问题
问题1: 服务无法启动
排查步骤:
1 2 3 4 5 6 7 8 9 10 11
| apachectl configtest
ss -lntup | grep :80
tail -f /var/log/httpd/error_log
getenforce
|
问题2: 403 Forbidden错误
排查步骤:
1 2 3 4 5 6 7 8 9 10 11
| ls -ld /var/www/html
ls -l /var/www/html/index.html
ls -Z /var/www/html
grep -A 10 "<Directory" /etc/httpd/conf/httpd.conf
|
问题3: 虚拟主机不生效
排查步骤:
1 2 3 4 5 6 7 8 9 10 11
| cat /etc/httpd/conf.d/*.conf
grep ServerName /etc/httpd/conf.d/*.conf
nslookup www0.example.com
curl -H "Host: www0.example.com" http://服务器IP
|
10.2 性能优化
1 2 3 4 5 6 7 8
| vim /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule deflate_module modules/mod_deflate.so
LoadModule expires_module modules/mod_expires.so
|
实战优化