Nginx+Apache+PHP 服务安装

一. 安装 Nginx

yum install -y nginx
systemctl enable nginx
systemctl start nginx
systemctl stop nginx
systemctl restart nginx

nginx.conf 文件中设置允许发布内容的最大许可(即上传文件大小限制)

client_max_body_size 2M

二. 安装 Apache

yum install -y httpd
systemctl enable httpd
systemctl start httpd
systemctl stop httpd
systemctl restart httpd

httpd.conf 中设置设置文件上传限制:

<IfModule mod_fcgid.c>
  MaxRequestLen 10485760   # 10M = 10 * 1024 * 1024
  LimitRequestBody 10485760
</IfModule>

三. 安装 PHP

查看当前已安装的 PHP 包,如果存在则先卸载:

查看可安装的 PHP 包(以 PHP7 为例),如果没有则先更换rpm源:

安装 PHP7 及其扩展:

php.ini 文件中可能有用的配置

设置开机启动及日常启停

1. 修改启动权限

在某些特殊情况下,例如 PHP 代码调用较高权限的 Shell 命令时,需要以 root 身份启动 php-fpm,打开配置文件:

将以下内容中的 apache 改为 root

由于 php 默认不允许以 root 身份运行,此时重启 php-fpm 应该会报错,所以还需修改启动脚本:

将其中 ExecStart 行增加 -R 参数,如下:

2. 与 Nginx 集成

查看 php-fpm 默认配置cat /etc/php-fpm.d/www.conf | grep -i 'listen =',若返回结果为listen = 127.0.0.1:9000,表明监听端口为9000,Nginx配置中的PHP解析请求转发到 127.0.0.0:9000 处理即可,通常无需特别处理。

3. 多个 php-fpm 主进程

找到php-fpm.d/www.conf,复制一份改名为例如api.conf,将其中[www]listen = 127.0.0.1:9000改为[api]listen = 127.0.0.1:9001,配置 nginx 中 proxy_pass 的端口为9001,重启 php-fpm 和 nginx。

在 Windows 下,同一 Nginx 的不同 Server 之间通过 curl 请求时会阻塞超时,原因是各 Server 共享 php-fpm 的 9000 端口,解决方法就是上述开启新端口供 Server 使用,但 CentOS 下不会出现这种情况,所以无需启动多个端口。

最后更新于

这有帮助吗?