Ubuntu配置Nginx+PHP+MySQL环境详解

凌晨两点半
凌晨两点半
发布时间:2026-10-13 | 4人浏览过
原创

本教程旨在帮助用户在Ubuntu操作系统中快速搭建包含Nginx、PHP和MySQL的Web服务器环境。内容涵盖从系统更新、服务安装到关键配置文件修改及进程管理的完整流程,重点解决PHP解析失败等常见配置问题。

目标与环境准备

目标是建立基于Nginx作为Web服务器、通过FastCGI方式解析PHP代码、并使用MySQL作为数据库的后端运行环境。所有操作需具备sudo权限或在root用户下进行。建议在操作前确保网络连接正常,以便通过apt获取最新软件包。

第1步:更新系统与安装Nginx

执行系统更新

首先更新软件源列表,确保后续安装能获取到最新版本和依赖:

sudo apt-get update

安装并启动Nginx

使用apt命令安装Nginx:

sudo apt-get install nginx
注意:原文命令中存在拼写错误(intsall),此处已修正为install。

安装完成后,文件结构分布如下:

  • 配置文件位于 /etc/nginx,虚拟主机配置在 /etc/nginx/sites-available。
  • 程序二进制文件位于 /usr/sbin/nginx。
  • 日志文件位于 /var/log/nginx。
  • 默认网站根目录通常指向 /var/www/nginx-default 或 /var/www/html(取决于版本)。

启动Nginx服务:

sudo service nginx start

或者使用旧版脚本(若存在):

sudo /etc/init.d/nginx start

验证安装:在浏览器访问 http://localhost/,若看到“Welcome to nginx!”页面,说明Nginx启动成功。若80端口被占用(如Apache),可先结束冲突进程:

sudo killall apache2

第2步:安装PHP及扩展

为了支持Web开发常用功能,建议安装PHP核心及其主要扩展库:

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
注:PHP 5系列已停止维护。现代Ubuntu发行版通常默认提供PHP 7.x或8.x。若在实际新环境中遇到包名不匹配,请将上述命令中的php5替换为对应版本的包名(如php, php-cgi等)。

第3步:安装Spawn-Fcgi

Nginx本身无法直接解析PHP,需借助FastCGI进程管理器。虽然Lighttpd自带spawn-fcgi,但我们可以单独安装它来管理PHP-CGI进程,防止单进程崩溃或效率低下:

sudo apt-get install spawn-fcgi

第4步:关键配置

配置Nginx FastCGI参数

编辑Nginx的FastCGI参数文件,确保脚本路径变量正确传递:

sudo vi /etc/nginx/fastcgi_params

在文件末尾添加或确认存在以下行,这决定了PHP如何获取脚本的物理路径:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

配置PHP.INI

找到PHP-CGI配置文件(路径通常为 /etc/php5/cgi/php.ini,新版本可能在 /etc/php/*/cgi-php.ini),修改以下两项以修复常见的“No input file specified”错误:

cgi.fix_pathinfo=1

同时确保 doc_root 设置为空或注释掉,以免影响路径解析。

配置Nginx站点文件

编辑默认站点配置文件:/etc/nginx/sites-available/default。

  1. 设置根目录:在 server 块内,确保定义了正确的根目录,例如:
    root /var/www/nginx-default;
    (请根据实际默认目录调整,新版Ubuntu多为 /var/www/html)。
  2. 启用PHP处理:找到 location ~ \.php$ 段,取消注释并修改为以下内容:
    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;
    }

    注意:务必将 SCRIPT_FILENAME 的值中的路径与实际配置的 root 保持一致。

第5步:启动FastCGI进程

手动启动PHP-CGI进程,绑定到本地IP 127.0.0.1和端口9000,以www-data用户身份运行:

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: 绑定的IP地址。
  • -p: 监听的端口号(9000)。
  • -C: 生成的子进程数量(5个)。
  • -u/-g: 运行的用户和用户组(Ubuntu下通常为www-data)。
  • -f: PHP-CGI执行程序路径。
  • -P: PID文件保存路径。

第6步:设置开机自启与测试

为了使FastCGI进程在重启后自动运行,将其加入启动脚本:

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

第7步:安装与配置MySQL

安装MySQL服务器和客户端:

sudo apt-get install mysql-server mysql-client

安装过程中会提示设置Root密码,请牢记。启动MySQL服务:

sudo /etc/init.d/mysql start

登录MySQL进行验证:

mysql -uroot -p

输入密码后,执行 show databases;,若能看到系统数据库列表,则MySQL安装成功。

常见问题排错

如果在访问PHP页面时出现 “No input file specified” 错误,请按以下顺序检查:

  1. PHP.INI设置:确认 cgi.fix_pathinfo=1 已生效且 doc_root 未强制指定导致路径冲突。
  2. Nginx根目录:检查 /etc/nginx/sites-available/default 中 server 级别的 root 指令与 location 中 SCRIPT_FILENAME 拼接的路径是否真实存在且一致。
  3. 权限问题:确保Web根目录下的文件对www-data用户具有读取权限。

最后,在网站根目录下创建一个包含 <?php phpinfo(); ?> 的test.php文件,访问该文件。若显示PHP配置信息,则整个环境配置完成。

以上就是Ubuntu下配置Nginx+PHP+MySQL环境的详细内容,更多关于Linux服务器部署的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表