Ubuntu配置Nginx+PHP+MySQL环境详解
本教程旨在帮助用户在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
安装完成后,文件结构分布如下:
- 配置文件位于
/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
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。
- 设置根目录:在
server块内,确保定义了正确的根目录,例如:
(请根据实际默认目录调整,新版Ubuntu多为root /var/www/nginx-default;/var/www/html)。 - 启用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” 错误,请按以下顺序检查:
- PHP.INI设置:确认
cgi.fix_pathinfo=1已生效且doc_root未强制指定导致路径冲突。 - Nginx根目录:检查
/etc/nginx/sites-available/default中server级别的root指令与location中SCRIPT_FILENAME拼接的路径是否真实存在且一致。 - 权限问题:确保Web根目录下的文件对www-data用户具有读取权限。
最后,在网站根目录下创建一个包含 <?php phpinfo(); ?> 的test.php文件,访问该文件。若显示PHP配置信息,则整个环境配置完成。
以上就是Ubuntu下配置Nginx+PHP+MySQL环境的详细内容,更多关于Linux服务器部署的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









