Ubuntu 下搭建 Nginx + PHP (FastCGI) + MySQL 环境指南

阿麦
阿麦
发布时间:2026-10-14| 5人浏览过
原创

本文详细介绍在 Ubuntu 操作系统下构建基于 Nginx、PHP(通过 FastCGI 模式)和 MySQL 的 Web 服务环境的完整流程。内容包括各组件的安装命令、关键的 Nginx 与 PHP 配置文件修改、FastCGI 进程的启动与管理,以及如何解决常见的路径错误等问题。

结果与目标

完成本教程后,您将拥有一个可以解析 PHP 文件并连接 MySQL 数据库的 Ubuntu 服务器环境。Nginx 作为前端 Web 服务器处理静态请求,通过 FastCGI 接口将 PHP 动态请求转发给 php-cgi 进程处理。

准备条件

  1. 操作系统:Ubuntu(教程基于较早期的 apt 包管理机制编写,现代 Ubuntu 版本推荐使用 php-fpm 替代手动启动的 spawn-fcgi,但核心配置逻辑一致)。
  2. 权限要求:执行命令需使用有 sudo 权限的用户或 root 用户。
  3. 网络状态:确保服务器可访问互联网以更新软件源。

操作顺序

第1步:更新软件源列表

在进行任何安装之前,建议先同步最新的软件包信息,以确保获取到稳定的依赖库。

sudo apt-get update

第2步:安装 Nginx Web 服务器

安装 Nginx 及其相关依赖:

sudo apt-get install nginx

注意:原草稿中拼写有误(intsall),已修正为 install。

Nginx 安装后的关键文件结构如下:

  • 配置文件目录:/etc/nginx/,虚拟主机配置通常位于 /etc/nginx/sites-available/。
  • 程序文件:/usr/sbin/nginx。
  • 日志文件:/var/log/nginx/。
  • 默认站点根目录:/var/www/nginx-default(部分版本可能为 /var/www/html)。

启动 Nginx 服务。请确保 80 端口未被其他服务(如 Apache)占用:

# 方式一:使用 init.d 脚本
sudo /etc/init.d/nginx start

# 方式二:使用 service 命令(推荐)
service nginx start

验证安装:在浏览器访问 http://localhost/。如果看到 "Welcome to nginx!" 页面,说明 Nginx 已成功运行。

第3步:安装 PHP 及相关扩展

安装 PHP 核心、CGI 模块以及常用的数据库和图像处理扩展:

sudo apt-get install php5 php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-tidy php5-xmlrpc php5-sqlite php5-xsl

提示:上述包名适用于旧版 Ubuntu(如 12.04/14.04)。对于较新的 Ubuntu 版本(16.04+),通常只需安装 php, php-cgi, php-fpm 及相关扩展,无需单独安装 php5 系列包名。

第4步:安装 Spawn-FCGI 工具

spawn-fcgi 用于管理和控制 PHP-CGI 进程,防止单进程效率低下或崩溃。虽然它常随 Lighttpd 发布,但可以独立安装:

sudo apt-get install spawn-fcgi

第5步:配置 Nginx 与 PHP 交互

这是最关键的步骤,需要修改 Nginx 和 PHP 的配置文件以实现正确通信。

5.1 配置 FastCGI 参数

编辑 /etc/nginx/fastcgi_params 文件,在末尾添加以下行,以便 Nginx 能正确传递脚本文件名:

sudo vi /etc/nginx/fastcgi_params

添加内容:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

5.2 配置 PHP 路径信息修复

编辑 PHP CGI 配置文件(通常位于 /etc/php5/cgi/php.ini 或类似路径),找到 cgi.fix_pathinfo 选项并确保其值为 1:

cgi.fix_pathinfo=1

此设置允许 PHP 在使用相对路径时正确识别脚本文件。

5.3 配置 Nginx 虚拟主机

打开默认站点配置文件 /etc/nginx/sites-available/default:

sudo vi /etc/nginx/sites-available/default

a. 设置根目录

在 server 块内,确保设置了正确的 root 路径(例如):

server {
    listen 80;
    server_name localhost;
    root /var/www/nginx-default; # 根据实际目录调整
}
b. 启用 PHP 处理位置块

取消注释或修改原有的 location ~ .php$ 区块,使其指向本地 FastCGI 服务:

location ~ .php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
}

风险提醒:务必检查 root 指令是否在 server 级别而非 location 级别定义,否则可能导致 “No input file specified” 错误。同时,SCRIPT_FILENAME 的路径必须与 root 定义的实际网站根目录完全一致。

第6步:启动 FastCGI PHP 进程

手动启动 spawn-fcgi 以运行 PHP-CGI 进程:

sudo /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

参数详解:

  • -a 127.0.0.1:绑定 IP 地址。
  • -p 9000:监听端口。
  • -C 5:初始产生的 FastCGI 进程数(仅用于 PHP)。
  • -u www-data -g www-data:以 www-data 用户和组身份运行(Ubuntu 默认 Web 用户)。
  • -f /usr/bin/php5-cgi:指定 php-cgi 执行程序路径。
  • -P /var/run/fastcgi-php.pid:存储进程 ID 的文件路径。

第7步:设置开机自启

为了确保重启后服务自动恢复,将启动命令添加到 /etc/rc.local:

sudo vi /etc/rc.local

在 exit 0 之前添加:

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

第8步:安装 MySQL 数据库

安装 MySQL 服务器和客户端:

sudo apt-get install mysql-server mysql-client

安装过程中会提示设置 MySQL root 用户的密码。

启动 MySQL 服务:

sudo /etc/init.d/mysql start

测试 MySQL 是否正常工作:

mysql -uroot -p

输入密码后,执行:show databases;。若能列出数据库列表,则说明安装成功。

排错指南

  • No input file specified:
    • 检查 php.ini 中 cgi.fix_pathinfo 是否为 1。
    • 检查 doc_root 是否为空(若定义了全局文档根目录)。
    • 仔细核对 Nginx 配置中 root 目录与 fastcgi_param SCRIPT_FILENAME 中的路径是否完全匹配且存在。
  • 进程崩溃或无响应:
    • 检查 www-data 用户对网站目录是否有读写权限。
    • 查看 Nginx 和 PHP 的错误日志(通常在 /var/log/nginx/ 和系统日志)。
    • 确保没有与其他服务冲突占用 9000 端口。

简要总结

通过上述步骤,您已在 Ubuntu 上完成了 Nginx、PHP (FastCGI) 和 MySQL 的基础环境搭建。尽管在现代 Linux 发行版中,推荐使用更高效的 PHP-FPM 来替代手动管理的 spawn-fcgi,但理解 FastCGI 的工作原理对于排查旧系统问题或深入理解 Web 服务器架构依然具有重要意义。

以上就是 Ubuntu 下安装配置 Nginx + PHP + MySQL 的具体操作步骤的详细内容,更多关于 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 算法库。