在 Ubuntu 上从零搭建 LNMP 环境:一份保姆级教程
拿到一台崭新的 Ubuntu 服务器,就像拿到了一块充满无限可能的"数字画布"。要在这块画布上搭建网站或应用,首先需要准备好一个稳定高效的 Web 服务器运行环境。而在 Linux 世界里,LNMP(Linux + Nginx + MySQL + PHP)技术栈无疑是最受欢迎、性能也最出色的组合之一。
这篇教程将带你从零开始,一步一步完成整个 LNMP 环境的搭建和基础配置。不需要高深的技术背景,只要跟着操作,就能成功!
准备工作
在开始之前,请确保:
- 一台运行 Ubuntu 22.04/24.04 的服务器(云服务器、VPS 或本地虚拟机均可)
- 拥有
sudo或root权限 - 能通过 SSH 远程登录到服务器F
- (可选)已准备好域名,并将 DNS A 记录指向服务器公网 IP
第一步:更新系统软件包
拿到新服务器后,第一件事就是把所有软件包更新到最新版本,获取最新的安全补丁,确保后续安装的软件基于一个稳定基础。
sudo apt update
sudo apt upgrade -y
第二步:安装 Nginx
Nginx 是一个高性能、轻量级的 Web 服务器,负责接收用户的访问请求并将他们引导到正确的内容。
sudo apt install -y nginx
安装完成后,启动 Nginx 并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
验证安装是否成功:
sudo systemctl status nginx
看到 active (running) 即表示启动成功。此时在浏览器中访问服务器 IP 地址,应该能看到 Nginx 的欢迎页面(Welcome to nginx!)。
第三步:安装 MySQL
MySQL 是强大的关系型数据库,用来存储网站的各类动态数据,比如用户信息、文章内容等。
sudo apt install -y mysql-server
安装完成后,启动 MySQL 并设置开机自启:
sudo systemctl start mysql
sudo systemctl enable mysql
接下来执行安全初始化配置,这是非常重要的一步:
sudo mysql_secure_installation
按照提示依次完成以下设置:
- 设置 root 密码(Ubuntu 默认使用
auth_socket认证,可选是否改为密码登录) - 移除匿名用户
- 禁止 root 远程登录
- 删除测试数据库
- 刷新权限表
一般全部选 Y 即可。
第四步:安装 PHP 及扩展
PHP 是服务器端脚本语言,用来处理动态逻辑、与数据库交互、生成最终展示给用户的网页内容。我们通常使用 PHP-FPM(FastCGI Process Manager)来让 Nginx 和 PHP 高效协作。
sudo apt install -y php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip
提示:如果你的 Ubuntu 版本默认 PHP 版本较低,可以通过添加
ppa:ondrej/php源来安装更新的 PHP 版本:sudo apt install -y software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update
安装完成后,启动 PHP-FPM 并设置开机自启:
sudo systemctl start php8.1-fpm # 根据实际安装的版本号调整
sudo systemctl enable php8.1-fpm
查看 PHP 版本确认安装成功:
php -v
第五步:配置 Nginx 支持 PHP
这是整个搭建过程中最关键的一步——让 Nginx 能够正确解析 PHP 文件。
编辑 Nginx 默认站点配置文件:
sudo nano /etc/nginx/sites-available/default
找到 server { ... } 块,将其修改为以下内容:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
注意:
fastcgi_pass中的 PHP 版本号需要与你实际安装的版本一致(如php8.1-fpm.sock、php8.2-fpm.sock等)。如果不确定,可以查看/run/php/目录下的 sock 文件名称。
保存文件后,测试配置是否正确并重载 Nginx:
sudo nginx -t
sudo systemctl reload nginx
第六步:测试 LNMP 环境
在网站根目录创建一个 PHP 测试文件:
sudo nano /var/www/html/info.php
写入以下内容:
<?php phpinfo(); ?>
保存后,在浏览器中访问 服务器IP/info.php。如果能看到 PHP 信息页面,说明 LNMP 环境已经搭建成功!
安全提醒:测试完成后,建议删除
info.php文件,避免泄露服务器信息:sudo rm /var/www/html/info.php
第七步:配置防火墙(如有)
如果服务器开启了 UFW 防火墙,需要放行 HTTP 和 HTTPS 端口:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
进阶:开启 HTTPS(推荐)
如果你的服务器绑定了域名,强烈建议配置 HTTPS。使用 Let’s Encrypt 可以免费获取 SSL 证书:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
证书会自动续期,无需手动维护。
常见问题排查
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
| 502 Bad Gateway | PHP-FPM 未启动或 sock 路径错误 | sudo systemctl status php*-fpm 检查服务状态 |
| 403 Forbidden | 目录权限问题或 index 文件缺失 | 检查 root 路径和文件权限 |
| Nginx 无法解析 PHP | 配置文件有误 | sudo nginx -t 检查配置语法 |
总结
至此,你已经在 Ubuntu 上成功搭建了一个完整的 LNMP 环境。无论是部署 WordPress 博客、Discuz! 论坛,还是自己开发的 PHP 应用,这个环境都能胜任。
如果你觉得手动配置太繁琐,也可以考虑使用 LNMP 一键安装包来快速部署。
祝你建站顺利!
- 点赞
- 收藏
- 关注作者
评论(0)