本文档详细介绍在Ubuntu系统(VMware虚拟机)中搭建LNMP(Linux + Nginx + MySQL + PHP)环境的完整流程。
📋 环境要求
- 操作系统:Ubuntu 20.04/22.04 LTS
- 虚拟化平台:VMware Workstation/Player
- PHP版本:8.3
- 权限要求:sudo权限
🔧 系统准备
# 更新系统包
sudo apt update && sudo apt upgrade -y
🌐 1. 安装Nginx
Nginx是一个高性能的Web服务器,我们将使用它作为LNMP环境的Web服务器。
# 安装Nginx
sudo apt install nginx -y
# 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
🗄️ 2. 安装MySQL
MySQL是流行的关系型数据库管理系统。
# 安装MySQL服务器
sudo apt install mysql-server -y
# 启动并设置开机自启
sudo systemctl start mysql
sudo systemctl enable mysql
# 安全配置(推荐)
sudo mysql_secure_installation
🔒 MySQL安全配置说明
运行安全配置脚本时,建议进行以下设置:
- 设置root密码
- 移除匿名用户
- 禁止root远程登录
- 移除测试数据库
- 重新加载权限表
💻 3. 安装PHP 8.3
PHP是一种广泛使用的服务器端脚本语言,我们将安装PHP 8.3及其常用扩展。
# 添加PHP PPA仓库
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
# 安装PHP 8.3及常用扩展
sudo apt install php8.3 php8.3-fpm php8.3-mysql php8.3-cli php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip -y
# 启动并设置PHP-FPM开机自启
sudo systemctl start php8.3-fpm
sudo systemctl enable php8.3-fpm
📦 PHP扩展说明
php8.3-fpm: FastCGI进程管理器php8.3-mysql: MySQL数据库连接php8.3-cli: 命令行接口php8.3-curl: HTTP客户端支持php8.3-gd: 图像处理php8.3-mbstring: 多字节字符串处理php8.3-xml: XML处理php8.3-zip: ZIP文件处理
⚙️ 4. 配置Nginx支持PHP
配置Nginx以处理PHP文件,确保与PHP-FPM正确通信。
# 备份原始配置文件(重要!)
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.backup
# 编辑Nginx配置文件
sudo nano /etc/nginx/sites-available/default
在server块内添加以下PHP处理配置:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
💡 配置说明
snippets/fastcgi-php.conf: 包含FastCGI的标准配置fastcgi_pass: 指定PHP-FPM的Unix套接字路径fastcgi_param SCRIPT_FILENAME: 设置PHP脚本的完整路径
🎯 框架路由重写配置(可选)
如果您使用ThinkPHP或Laravel等框架,需要配置URL重写以支持友好URL。
📦 ThinkPHP框架配置
# 在server块内添加ThinkPHP路由配置(适用于TP8)
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
# 静态文件处理
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 7d;
add_header Cache-Control "public";
}
💡 说明:此配置适用于ThinkPHP 8.x版本,使用传统的URL重写模式,能更好地兼容TP8的路由机制。
🎭 Laravel框架配置
# 在server块内添加Laravel路由配置
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# 静态资源处理
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1y;
add_header Cache-Control "public";
}
# 隐藏敏感文件
location ~ /\.ht {
deny all;
}
🔧 完整配置示例(ThinkPHP 8)
server {
listen 80;
server_name your_domain.com;
root /var/www/html;
index index.php index.html index.htm;
# ThinkPHP 8路由配置
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
# PHP处理
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 静态文件缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 7d;
add_header Cache-Control "public";
}
# 安全配置
location ~ /\.ht {
deny all;
}
}
⚠️ 注意事项
- 将
your_domain.com替换为您的域名或服务器IP - 确保框架的入口文件权限正确
- 配置完成后需要重新加载Nginx:
sudo systemctl reload nginx - ThinkPHP 8推荐使用
rewrite ^(.*)$ /index.php?s=$1 last的重写规则 - 如需使用Laravel,仍使用
try_files $uri $uri/ /index.php?$query_string配置
🧪 5. 测试配置
验证LNMP环境是否正常工作。
# 测试Nginx配置语法
sudo nginx -t
# 重新加载Nginx配置
sudo systemctl reload nginx
# 创建PHP测试文件
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
✅ 验证步骤
- 访问
http://服务器IP- 应显示Nginx欢迎页面 - 访问
http://服务器IP/info.php- 应显示PHP信息页面 - 检查服务状态是否正常运行
📊 6. 安装phpMyAdmin(可选)
phpMyAdmin是一个基于Web的MySQL数据库管理工具,方便数据库操作。
# 安装phpMyAdmin
sudo apt install phpmyadmin -y
# 创建符号链接到Web根目录
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
📝 安装提示
在安装过程中,系统可能会询问:
- Web服务器选择:如果显示选项列表,选择
nginx;如果没有nginx选项,直接按Tab键跳过此项 - 数据库配置:使用
dbconfig-common自动配置,选择"是"即可
⚠️ 重要提示
- Ubuntu 22.04的phpMyAdmin安装包可能不包含nginx选项,这是正常现象
- 直接按Tab键跳过Web服务器配置步骤即可,稍后我们会手动创建符号链接
- 配置mysql数据库时,输入root用户密码(建议与MySQL服务器密码保持一致)
安装完成后,访问 http://服务器IP/phpmyadmin 即可使用。
🔥 7. 防火墙配置
配置防火墙以允许Web服务访问。
# 允许HTTP和HTTPS流量
sudo ufw allow 'Nginx Full'
# 检查防火墙状态
sudo ufw status
🛡️ 防火墙说明
Nginx Full: 同时允许HTTP(80)和HTTPS(443)端口- 如需SSH访问,可运行:
sudo ufw allow 'OpenSSH' - 启用防火墙:
sudo ufw enable
🛠️ 服务管理命令
常用的服务管理命令,用于日常运维和故障排查。
📊 查看服务状态
# 查看各个服务状态
sudo systemctl status nginx
sudo systemctl status mysql
sudo systemctl status php8.3-fpm
# 一次性查看所有服务状态
sudo systemctl status nginx mysql php8.3-fpm
🔄 重启服务
# 重启单个服务
sudo systemctl restart nginx
sudo systemctl restart mysql
sudo systemctl restart php8.3-fpm
# 同时重启所有服务
sudo systemctl restart nginx mysql php8.3-fpm
📝 查看日志
# 查看Nginx系统日志
sudo journalctl -u nginx -f
# 查看Nginx错误日志
sudo tail -f /var/log/nginx/error.log
# 查看MySQL日志
sudo journalctl -u mysql -f
# 查看PHP-FPM日志
sudo journalctl -u php8.3-fpm -f
🌍 访问测试
完成安装后,可以通过以下URL测试各项服务:
| 服务 | 访问地址 | 说明 |
|---|---|---|
| Nginx | http://服务器IP | 应显示Nginx欢迎页面 |
| PHP信息 | http://服务器IP/info.php | 显示PHP配置信息 |
| phpMyAdmin | http://服务器IP/phpmyadmin | 数据库管理界面 |
⚠️ 安全提醒
🔒 测试后清理
测试完成后,为了安全起见,建议删除PHP信息文件:
sudo rm /var/www/html/info.php
🛡️ 安全建议
- 定期更新系统:
sudo apt update && sudo apt upgrade - 配置MySQL安全策略
- 设置强密码
- 定期备份数据库
- 监控系统日志
🎉 总结
至此,LNMP环境搭建完成!本流程适用于Ubuntu系统在VMware虚拟机中的LNMP环境搭建,使用PHP 8.3版本。
如需部署Web应用,请将文件放置在 /var/www/html/ 目录下,并确保正确的文件权限。