下面我将提供一个详细、分步的指南,以 Nginx + PHP-FPM 为例进行讲解,这是一个在现代 Web 开发中非常流行且高效的组合。

方案概述
我们将安装以下软件:
- Nginx: 一个高性能的 Web 服务器和反向代理,它比 Apache 更轻量级,特别擅长处理静态文件(如 HTML, CSS, JavaScript, 图片)。
- PHP-FPM (FastCGI Process Manager): 一个 PHP 的 FastCGI 实现,它能够管理 PHP 进程池,处理来自 Nginx 的动态 PHP 请求,性能远超传统的
mod_php。 - MariaDB/MySQL: 一个流行的开源数据库服务器(可选,但绝大多数网站都需要)。
- phpMyAdmin: 一个用于管理数据库的 Web 界面(可选)。
更新系统
在安装任何新软件之前,首先更新系统的软件包列表和已安装的软件包。
sudo apt update sudo apt upgrade -y
安装 Nginx
-
安装 Nginx:
sudo apt install nginx -y
-
安装后,Nginx 服务通常会自动启动,我们可以检查其状态:
(图片来源网络,侵删)sudo systemctl status nginx
如果看到
active (running),说明安装成功。 -
(可选)测试 Nginx,在浏览器中访问你的服务器 IP 地址(
http://你的服务器IP),你应该能看到 Nginx 的默认欢迎页面。要获取你的服务器 IP 地址,可以运行:
curl ifconfig.me
安装 PHP 和 PHP-FPM
-
安装 PHP 和一些常用的扩展。
php-fpm是核心包,php-mysql用于连接 MySQL/MariaDB,php-curl,php-gd,php-xml,php-mbstring,php-zip等都是很多现代 PHP 应用(如 WordPress, Laravel)所需要的。
(图片来源网络,侵删)sudo apt install php-fpm php-mysql php-curl php-gd php-xml php-mbstring php-zip -y
-
安装完成后,PHP-FPM 服务也会自动启动,我们可以检查其状态:
sudo systemctl status php8.1-fpm
注意:
php8.1-fpm中的1是 PHP 版本号,Ubuntu 22.04 默认安装的是 PHP 8.1,如果你的系统版本不同,版本号可能不同(如php8.0-fpm或php7.4-fpm),请根据实际情况修改。
配置 Nginx 处理 PHP 文件
我们需要告诉 Nginx 如何将 .php 文件的请求转发给 PHP-FPM 处理。
-
创建一个自定义的 Nginx 配置文件 在
/etc/nginx/sites-available/目录下,我们不直接修改默认的default文件,而是创建一个新的配置文件,my_php_site。sudo nano /etc/nginx/sites-available/my_php_site
-
粘贴以下配置内容 这是一个基础的 Nginx 配置,它会监听 80 端口,并将所有请求
index.php或以.php结尾的 URI 转发给 PHP-FPM。server { listen 80; server_name _; # 使用你的域名,或用 _ 匹配所有域名 root /var/www/html; # 网站根目录 index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } # 将所有以 .php 结尾的文件请求传递给 PHP-FPM location ~ \.php$ { include snippets/fastcgi-php.conf; # 这行会根据 PHP 版本自动指向正确的 sock 文件 fastcgi_pass unix:/run/php/php8.1-fpm.sock; } # 阻止访问 .htaccess 文件(如果有的话) location ~ /\.ht { deny all; } }重要说明:
root /var/www/html: 这是你的网站文件存放的目录,我们将在这里创建一个测试文件。fastcgi_pass unix:/run/php/php8.1-fpm.sock;: 这是指向 PHP-FPM 的 Unix 套接字文件。请确保这里的版本号(php8.1-fpm)与你安装的 PHP 版本一致,你可以用ls /run/php/来查看可用的 sock 文件。
-
启用新的网站配置 创建符号链接,将
my_php_site从sites-available链接到sites-enabled目录。sudo ln -s /etc/nginx/sites-available/my_php_site /etc/nginx/sites-enabled/
-
禁用默认配置(可选) 为了避免冲突,可以禁用默认的
default站点。sudo rm /etc/nginx/sites-enabled/default
-
测试并重新加载 Nginx 在重新加载配置之前,务必测试配置文件是否有语法错误。
sudo nginx -t
如果看到
syntax is ok和test is successful,则说明配置正确。然后重新加载 Nginx 以应用新配置:
sudo systemctl reload nginx
创建 PHP 测试页面
我们来创建一个 info.php 文件,以验证 PHP 是否能正常工作。
-
创建文件:
sudo nano /var/www/html/info.php
-
<?php phpinfo(); ?>
-
设置正确的文件权限:
sudo chown -R www-data:www-data /var/www/html/ sudo chmod -R 755 /var/www/html/
www-data是 Nginx 和 PHP-FPM 运行时所使用的用户和组,这一步确保了 Web 服务器可以读取和执行你的 PHP 文件。
验证安装
-
在浏览器中访问你创建的测试文件:
http://你的服务器IP/info.php -
如果一切正常,你应该能看到一个详细的 PHP 信息页面,显示了你的 PHP 版本、配置选项、已安装的模块等。
-
安全提示: 出于安全考虑,测试成功后应该立即删除
info.php文件,因为它会暴露服务器的敏感信息。sudo rm /var/www/html/info.php
(可选)步骤七:安装 MariaDB/MySQL
如果你的网站需要数据库,可以安装 MariaDB(MySQL 的一个分支,完全兼容)。
-
安装 MariaDB 服务器:
sudo apt install mariadb-server -y
-
运行安全脚本,设置 root 密码并移除不安全的默认设置:
sudo mysql_secure_installation
根据提示操作,建议为 root 设置一个强密码,并对其他选项选择
Y(Yes)。
(可选)步骤八:安装 phpMyAdmin
phpMyAdmin 是一个强大的数据库管理工具。
-
安装 phpMyAdmin:
sudo apt install phpmyadmin -y
在安装过程中,会提示你选择 Web 服务器,由于我们用的是 Nginx,它不会出现在列表中,直接选择
<OK>并按回车键即可,它不会自动配置 Nginx。 -
手动配置 Nginx 以支持 phpMyAdmin phpMyAdmin 的配置文件位于
/etc/phpmyadmin/nginx.conf,我们需要在 Nginx 的主配置中引入它。编辑你的网站配置文件:
sudo nano /etc/nginx/sites-available/my_php_site
在
server块内部添加以下location块,以处理/phpmyadmin路径的请求:location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass unix:/run/php/php8.1-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } location ~* ^/phpmyadmin/(.+\.php)$ { deny all; } } -
重新加载 Nginx
sudo nginx -t sudo systemctl reload nginx
-
访问 phpMyAdmin 你可以在浏览器中通过
http://你的服务器IP/phpmyadmin访问 phpMyAdmin,使用你之前设置的 MariaDB root 用户名和密码登录。
恭喜!你已经成功在 Ubuntu 上搭建了一个功能完整的 LEMP (Linux, Nginx, MariaDB, PHP) 服务器,现在你可以:
- 将你的网站文件上传到
/var/www/html/目录。 - 为你的网站创建数据库和用户。
- 开始部署你的 PHP 应用程序(如 WordPress, Laravel, Nextcloud 等)。
如果你在后续使用中遇到问题,可以检查 Nginx 和 PHP-FPM 的错误日志:
- Nginx 错误日志:
sudo tail -f /var/log/nginx/error.log - PHP-FPM 错误日志:
sudo tail -f /var/log/php8.1-fpm.log(同样,版本号可能不同)
