Ubuntu 下搭建 Nginx + PHP (FastCGI) + MySQL 环境指南
本文详细介绍在 Ubuntu 操作系统下构建基于 Nginx、PHP(通过 FastCGI 模式)和 MySQL 的 Web 服务环境的完整流程。内容包括各组件的安装命令、关键的 Nginx 与 PHP 配置文件修改、FastCGI 进程的启动与管理,以及如何解决常见的路径错误等问题。
结果与目标
完成本教程后,您将拥有一个可以解析 PHP 文件并连接 MySQL 数据库的 Ubuntu 服务器环境。Nginx 作为前端 Web 服务器处理静态请求,通过 FastCGI 接口将 PHP 动态请求转发给 php-cgi 进程处理。
准备条件
- 操作系统:Ubuntu(教程基于较早期的 apt 包管理机制编写,现代 Ubuntu 版本推荐使用
php-fpm替代手动启动的 spawn-fcgi,但核心配置逻辑一致)。 - 权限要求:执行命令需使用有 sudo 权限的用户或 root 用户。
- 网络状态:确保服务器可访问互联网以更新软件源。
操作顺序
第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 服务器环境搭建的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









