Apache 配置系列(一)

启用 proxy_http 和 proxy_wstunnel

1
2
3
4
5
6
7
8
#httpd.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
# 访问 http://127.0.0.1/ 转发至 http://127.0.0.1:8080
ProxyPass / http://127.0.0.1:8080/
# websocket 连接地址为 ws://127.0.0.1/ws 转发至 8181 端口
ProxyPass /ws ws://0.0.0.0:8181

Apache 版本:2.4.34
PHP 两个版本:5.6.37 和 7.2.8

安装 mod_fcgid 模块
1
2
3
4
5
6
7
8
9
10
11
12
#官网 http://httpd.apache.org/download.cgi

#编译安装模块
wget http://mirrors.hust.edu.cn/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz
tar -zxvf mod_fcgid-2.3.9.tar.gz
cd mod_fcgid-2.3.9
apxs=/web/server/httpd/bin/apxs ./configure.apxs
make && make install

#加载模块
vi /web/server/httpd/conf/httpd.conf
LoadModule fcgid_module modules/mod_fcgid.so
注释 apache 加载 PHP 模块的配置
1
2
3
4
5
#LoadModule php7_module        modules/libphp7.so
#LoadModule php5_module modules/libphp5.so
#<FilesMatch "\.ph(p[2-6]?|tml)$">
# SetHandler application/x-httpd-php
#</FilesMatch>
使用 fcgid 加载 (默认全局 PHP7.2.8 版本)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vi /web/server/httpd/conf/httpd.conf
<IfModule fcgid_module>
AddHandler fcgid-script .fcgi .php
AddType application/x-httpd-php .php
#php.ini的存放目录
FcgidInitialEnv PHPRC "/web/server/php"
# 设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess, 防止php-cgi进程在处理完所有请求前退出
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
#php-cgi每个进程的最大请求数
FcgidMaxRequestsPerProcess 1000
#php-cgi最大的进程数
FcgidMaxProcesses 5
#最大执行时间
FcgidIOTimeout 120
FcgidIdleTimeout 120
#php-cgi的路径
FcgidWrapper "/web/server/php/bin/php-cgi" .php
</IfModule>
配置虚拟主机
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
Listen 9001
<VirtualHost *:9001>
DocumentRoot "/web/www/symfony3.4/web"
<Directory "/web/www/symfony3.4/web">
Options Indexes FollowSymLinks
#需要配置 Options +ExecCGI, 不然会报 403 Forbidden
Options +ExecCGI
AllowOverride all
Require all granted
</Directory>
ErrorLog "/web/log/httpd/symfony3.4-error.log"
CustomLog "/web/log/httpd/symfony3.4.log" common
</VirtualHost>

Listen 9002
<VirtualHost *:9002>
DocumentRoot "/web/www/walle-web/web"
#指定PHP版本及配置文件
FcgidInitialEnv PHPRC "/web/server/php5.6"
FcgidWrapper "/web/server/php5.6/bin/php-cgi" .php

<Directory "/web/www/walle-web/web">
Options Indexes FollowSymLinks
Options +ExecCGI
AllowOverride all
Require all granted
</Directory>
ErrorLog "/web/log/httpd/walle-web-error.log"
CustomLog "/web/log/httpd/walle-web.log" common
</VirtualHost>
问题
  • 提示 No input file specified.
    1
    2
    3
    4
    #修改项目的 .htaccess
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
    #修改为
    RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
0%