Linux服务器安装Nginx+PHP-FPM完整指南
在当今的Web开发环境中,Nginx与PHP-FPM的组合已成为高性能网站的首选解决方案之一。本文将详细介绍如何在Linux服务器上安装和配置Nginx与PHP-FPM,帮助您搭建一个稳定高效的Web服务环境。
一、准备工作
在开始安装之前,请确保您已经具备以下条件:
- 一台运行Linux的服务器(本文以Ubuntu 20.04为例)
- SSH访问权限
- 管理员(root)权限
- 基本的Linux命令行操作知识
二、安装Nginx
Nginx是一个高性能的HTTP和反向代理服务器,我们先从安装Nginx开始:
# 更新软件包列表
sudo apt update
# 安装Nginx
sudo apt install nginx -y
# 启动Nginx服务
sudo systemctl start nginx
# 设置开机自启
sudo systemctl enable nginx
安装完成后,您可以通过浏览器访问服务器IP地址,应该能看到Nginx的欢迎页面。
三、安装PHP-FPM
PHP-FPM(FastCGI Process Manager)是PHP的FastCGI管理器,能够显著提高PHP的性能:
# 添加PHP官方仓库
sudo add-apt-repository ppa:ondrej/php
sudo apt update
# 安装PHP和常用扩展(以PHP8.1为例)
sudo apt install php8.1-fpm php8.1-cli php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip -y
# 启动PHP-FPM服务
sudo systemctl start php8.1-fpm
# 设置开机自启
sudo systemctl enable php8.1-fpm
四、配置Nginx与PHP-FPM协同工作
接下来我们需要配置Nginx让它能够处理PHP文件:
- 编辑默认Nginx配置文件:
sudo nano /etc/nginx/sites-available/default - 找到处理PHP的部分,修改为类似以下配置:
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } - 测试Nginx配置并重启服务:
sudo nginx -t sudo systemctl restart nginx
五、测试PHP处理
创建一个测试PHP文件来验证配置是否成功:
sudo nano /var/www/html/info.php
添加以下内容:
保存后,通过浏览器访问http://您的服务器IP/info.php,应该能看到PHP信息页面。
六、安全设置与优化
完成基本安装后,建议进行以下安全设置:
- 限制PHP信息显示
sudo sed -i 's/expose_php = On/expose_php = Off/' /etc/php/8.1/fpm/php.ini - 禁用危险PHP函数
sudo sed -i 's/;disable_functions =/disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source/' /etc/php/8.1/fpm/php.ini - 重启PHP-FPM使更改生效
sudo systemctl restart php8.1-fpm
七、常见问题解决
问题1:502 Bad Gateway错误
检查PHP-FPM是否运行,以及Nginx配置中的socket路径是否正确。
问题2:PHP文件被下载而不是执行
确保Nginx配置中正确处理了PHP文件,并检查MIME类型设置。
问题3:内存不足
调整PHP-FPM的pm.max_children等参数,根据服务器配置优化资源使用。
八、高级配置建议
- 配置OPcache加速PHP执行
- 设置Nginx缓存策略
- 启用HTTP/2协议
- 配置SSL/TLS加密
- 设置适当的文件权限
通过以上步骤,您已经成功在Linux服务器上安装了Nginx和PHP-FPM,并完成了基本配置。这个组合将为您的Web应用提供高性能、高并发的处理能力。
在实际生产环境中,建议进一步研究Nginx和PHP-FPM的优化参数,根据您的具体应用需求进行调整。
