Linux 系统搭建 Nginx + PHP-FPM 服务器环境指南

陆遥
陆遥
发布时间:2026-10-13| 6人浏览过
原创

本文详解如何在 Linux 环境下从零搭建 Nginx 与 PHP 的开发及运行环境。通过 apt-get 或源码编译安装 Nginx,配置辅助库后编译安装 PHP,并重点演示如何利用 spawn-fcgi 管理多进程 FastCGI 服务。涵盖核心配置文件编写、路径信息修复以及开机自启设置,确保 Web 服务器稳定高效地处理动态请求。

Nginx 服务器的安装与启动

Nginx 是一款高性能的 HTTP 和反向代理服务器。在 Linux 上部署该环境,首先需获取并安装 Nginx。用户可根据需求选择包管理器安装或源码编译。

第1步:安装或编译 Nginx

目的: 快速部署 Nginx 二进制程序及其默认配置文件。

  • Ubuntu/Debian 系统:直接使用包管理器安装,系统将自动处理依赖关系。
sudo apt-get install nginx
  • 源码编译:若需自定义模块(如 Rewrite 模块)或特定路径,可下载源码包进行编译。
wget http://sysoev.ru/nginx/nginx-0.5.34.tar.gz
tar zxvf nginx-0.5.34.tar.gz
cd nginx-0.5.34
./configure --prefix=/usr/local/nginx
make && make install

第2步:验证安装与目录结构

目的: 确认程序已正确写入系统,并熟悉关键文件位置。

包管理器安装后的典型路径:

  • 配置文件:/etc/nginx/(虚拟主机配置在 /etc/nginx/sites-available/)
  • 执行程序:/usr/sbin/nginx
  • 日志目录:/var/log/nginx/
  • 根目录:/var/www/nginx-default

源码编译的典型路径:

  • 配置目录:/usr/local/nginx/conf
  • 网站根目录:/usr/local/nginx/html
  • 日志目录:/usr/local/nginx/logs
  • Sbin目录:/usr/local/nginx/sbin

第3步:启动服务与开机自启

目的: 启动监听 80 端口的服务进程,并设置为开机运行。

  • 启动方法: Ubuntu 用户使用 sudo /etc/init.d/nginx start;源码编译用户直接执行 /usr/local/nginx/sbin/nginx。
  • 测试访问: 浏览器访问 http://localhost/,应看到 Nginx 欢迎页面。
  • 设置自启: Ubuntu 执行 update-rc.d nginx defaults;其他系统可将启动命令添加至 /etc/rc.local。

PHP 环境的编译与配置

由于 Nginx 不原生支持 CGI 方式运行 PHP,必须使用 FastCGI 协议。这要求先为 PHP 准备必要的扩展库,然后编译 PHP 本体。

第4步:安装 PHP 辅助依赖库

目的: 解决 PHP 运行所需的图像、加密及压缩功能依赖。

常用的辅助包包括 zlib, libjpeg, libpng, libmcrypt, mhash 等。以 zlib 为例,操作流程如下:

  1. 解压:tar -jxf zlib-1.2.3.tar.bz2
  2. 进入目录:cd zlib-1.2.3
  3. 配置与安装:./configure && make && make install

其余辅助包遵循相同的解压、配置(./configure)、编译安装流程。

第5步:编译安装 PHP 5

目的: 生成包含 FastCGI 支持且具备所需功能的 php-cgi 可执行文件。

# 解压源码包
mv -zxvf php-5.2.14.tar.gz
cd php-5.2.14

# 配置编译参数,指定安装路径并加载必要模块
./configure --prefix=/usr/local/php5 \
--with-mysql=/usr/local/mysql5 \
--with-zlib --with-png-dir --with-jpeg-dir \
--with-mcrypt --enable-mbstring --enable-zip

# 编译并安装
make && make install

配置完成后,找到 php.ini 配置文件。为了配合 Nginx 正确处理 SCRIPT_FILENAME,需在配置中开启路径信息修复功能:

cgi.fix_pathinfo=1

Nginx 与 PHP FastCGI 对接配置

此阶段目标是让 Nginx 能够将 .php 请求转发给后台运行的 PHP-CGI 进程。

第6步:创建 FastCGI 环境变量文件

目的: 向 PHP 进程传递 Nginx 的关键 URL 信息和状态码。

新建文件 fastcgi_params(源码安装在 /usr/local/nginx/conf/,APT 安装在 /etc/nginx/),内容如下:

fastcgi_param GATEWAY_INTERFACE   CGI/1.1;
fastcgi_param SERVER_SOFTWARE     nginx;
fastcgi_param QUERY_STRING        $query_string;
fastcgi_param REQUEST_METHOD      $request_method;
fastcgi_param CONTENT_TYPE        $content_type;
fastcgi_param CONTENT_LENGTH      $content_length;
fastcgi_param SCRIPT_FILENAME     $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME         $fastcgi_script_name;
fastcgi_param REQUEST_URI         $request_uri;
fastcgi_param DOCUMENT_URI        $document_uri;
fastcgi_param DOCUMENT_ROOT       $document_root;
fastcgi_param SERVER_PROTOCOL     $server_protocol;
fastcgi_param REMOTE_ADDR         $remote_addr;
fastcgi_param REMOTE_PORT         $remote_port;
fastcgi_param SERVER_ADDR         $server_addr;
fastcgi_param SERVER_PORT         $server_port;
fastcgi_param SERVER_NAME         $server_name;
# PHP 重定向状态标记
fastcgi_param REDIRECT_STATUS     200;

第7步:配置 Nginx 站点监听规则

目的: 定义当请求以 .php 结尾时,将其转发至 PHP-CGI。

在 Nginx 的 server 块中添加以下 location 配置:

server {
    index index.php;
    root /usr/local/nginx/html;

    location ~ \.php$ {
        include /usr/local/nginx/conf/fastcgi_params; # 引入环境变量文件
        fastcgi_index index.php;
        fastcgi_pass 127.0.0.1:9000; # 转发到 PHP-CGI 监听的地址和端口
    }
}

修改配置后,重载 Nginx 使配置生效:

  • Ubuntu:sudo /etc/init.d/nginx reload
  • 源码版:kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

第8步:配置与管理 PHP FastCGI 进程

目的: 使用独立工具管理多个 PHP-CGI 进程,避免单进程效率低下,并提供进程重启能力。

利用 Lighttpd 附带的 spawn-fcgi 工具来守护 PHP 进程:

# 获取 spawn-fcgi (假设已从 lighttpd 源码中提取) 
cp src/spawn-fcgi /usr/local/bin/spawn-fcgi

# 启动 5 个子进程的 PHP-CGI (绑定 127.0.0.1:9000)
/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-cgi

参数说明:

  • -f: 指定执行的 FastCGI 程序路径。
  • -a/p: 绑定 TCP 地址和端口。
  • -s: 绑定 Unix Socket 路径。
  • -C: 预生成的子进程数(仅对 PHP 有效,提高并发响应速度)。
  • -u/-g: 运行进程的用户和用户组(Ubuntu 建议设为 www-data)。

将上述启动命令追加到 /etc/rc.local 底部,实现开机自启动 PHP 池。

完成判断与排错

结果验证: 在网站根目录创建 index.php,写入 。访问 http://localhost/index.php,若能查看到完整的 PHP 版本、扩展列表及环境配置信息,则说明 Nginx + PHP-FastCGI 环境已配置成功。

常见问题排查:

  • 502 Bad Gateway: 检查 spawn-fcgi 进程是否存活,确认 Nginx 的 fastcgi_pass 地址端口与 spawn-fcgi 一致。
  • 脚本无法执行: 检查 php.ini 中的 cgi.fix_pathinfo 是否已开启;检查 SCRIPT_FILENAME 映射路径是否正确。
  • 权限拒绝: 确保 PHP 进程(如 www-data)拥有读取网站文件及写出日志文件的权限。

以上就是 Linux下安装配置Nginx+PHP开发环境的详细内容,更多关于Linux部署运维的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。