在腾讯云轻量应用服务器(Lighthouse)上安装 Nginx + PHP + MySQL(即 LEMP 环境)的完整步骤如下。推荐使用 Ubuntu 22.04 LTS 或 CentOS Stream 9(官方镜像更稳定),本指南以 Ubuntu 22.04 为例(最常用、兼容性好、软件源丰富),全程基于命令行操作,安全、高效、符合生产实践。
✅ 前提:已购买并登录腾讯云轻量服务器(推荐选择「Ubuntu 22.04」系统镜像),已通过 SSH 连接(如
ssh root@你的公网IP),且具备 root 权限。
🔧 一、基础准备与系统更新
# 1. 更新系统包索引并升级(重要!确保安全补丁和最新版本)
sudo apt update && sudo apt upgrade -y
# 2. 安装常用工具(vim、curl、wget、unzip、git 等,非必须但强烈建议)
sudo apt install -y vim curl wget unzip git gnupg2 lsb-release ca-certificates
# 3. (可选)配置时区(避免日志时间错乱)
sudo timedatectl set-timezone Asia/Shanghai
🌐 二、安装 Nginx
# 1. 安装 Nginx(Ubuntu 官方源已含最新稳定版)
sudo apt install -y nginx
# 2. 启动并设置开机自启
sudo systemctl enable nginx
sudo systemctl start nginx
# 3. 验证状态(应显示 active (running))
sudo systemctl status nginx
# 4. 检查防火墙(Ubuntu 默认启用 ufw)
sudo ufw status verbose
# 若为 inactive,可跳过;若为 active,需放行 80/443:
sudo ufw allow 'Nginx Full'
# 或仅开放 HTTP/HTTPS:
# sudo ufw allow 80
# sudo ufw allow 443
# ✅ 测试:浏览器访问 http://你的服务器公网IP → 应看到 "Welcome to nginx!" 页面
💡 三、安装 PHP(推荐 PHP 8.1 或 8.2,性能与安全兼顾)
⚠️ 注意:Ubuntu 22.04 默认源为 PHP 8.1,PHP 8.2 可通过 Ondřej Surý PPA 安装(更推荐)
✅ 方案 A:安装 PHP 8.1(官方源,最稳定)
sudo apt install -y php-fpm php-cli php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip php-opcache
# 查看版本确认
php -v # 应显示 PHP 8.1.x
✅ 方案 B(推荐):安装 PHP 8.2(更新特性 + 更长支持周期)
# 添加 Ondřej Surý 的 PHP PPA(安全可信,被广泛采用)
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
# 安装 PHP 8.2 及常用扩展
sudo apt install -y php8.2-fpm php8.2-cli php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-xmlrpc php8.2-zip php8.2-opcache
# 设置默认 PHP 版本(可选,方便后续调用 php 命令)
sudo update-alternatives --set php /usr/bin/php8.2
# 验证
php -v # 显示 PHP 8.2.x
🔁 配置 PHP-FPM(关键!使 Nginx 能处理 PHP)
# 编辑 PHP-FPM 主配置(调整进程管理,适合轻量服务器)
sudo vim /etc/php/*/fpm/pool.d/www.conf
修改以下几处(根据轻量服务器内存调整,如 1C2G 建议):
; 将监听方式改为 Unix socket(比 TCP 更高效)
listen = /run/php/php*-fpm.sock # ✅ 确保路径与实际版本一致(如 php8.2-fpm.sock)
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
; 限制资源(防爆内存)
pm = dynamic
pm.max_children = 10 # 1C2G 推荐 8~12;2C4G 可设 20
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
pm.max_requests = 500 # 请求后重启子进程,防内存泄漏
; 开启慢日志(调试用,生产可开启)
slowlog = /var/log/php/php*-fpm-slow.log
request_slowlog_timeout = 5s
💡 提示:
*替换为你的 PHP 版本号(如8.2)。可用ls /etc/php/查看目录名。
# 重启 PHP-FPM 生效
sudo systemctl restart php*-fpm
sudo systemctl enable php*-fpm
# 检查状态
sudo systemctl status php*-fpm
🗄️ 四、安装 MySQL(推荐 MySQL 8.0,腾讯云轻量默认支持)
# Ubuntu 22.04 官方源默认为 MySQL 8.0.x,直接安装
sudo apt install -y mysql-server
# 运行安全加固脚本(强烈建议!设置 root 密码、禁用匿名用户等)
sudo mysql_secure_installation
# 按提示操作:
# - 设置 root 密码(记牢!)
# - Remove anonymous users? [Y]
# - Disallow root login remotely? [Y](轻量服务器通常无需远程 root)
# - Remove test database? [Y]
# - Reload privilege tables? [Y]
# ✅ 验证 MySQL 运行
sudo systemctl status mysql
# (可选)允许 MySQL 监听本地(默认已满足,无需改 bind-address)
# 检查:sudo grep "bind-address" /etc/mysql/mysql.conf.d/mysqld.cnf
# 正常应为 bind-address = 127.0.0.1(仅本地连接,更安全)
🔐 安全提醒:轻量服务器默认不开放 3306 端口到公网(腾讯云控制台安全组默认只放行 22/80/443),因此 MySQL 仅本地应用可连接,无需额外配置防火墙。
🧩 五、配置 Nginx 支持 PHP(关键整合步骤)
# 备份默认站点配置
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
# 编辑默认站点(或新建 conf 文件)
sudo vim /etc/nginx/sites-available/default
替换全部内容为以下生产就绪配置(支持 PHP、隐藏敏感文件、启用 OPcache):
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ =404;
}
# 处理 PHP 文件(核心!)
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # ✅ 请务必匹配你的 PHP 版本(如 php8.1-fpm.sock)
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 禁止访问敏感文件
location ~ /.ht {
deny all;
}
location ~ /(composer|vendor|.git|.env|artisan|storage|bootstrap/cache) {
deny all;
}
}
✅ 验证配置语法 & 重载 Nginx:
sudo nginx -t # 应输出 "syntax is ok", "test is successful"
sudo systemctl reload nginx
🧪 六、测试环境是否正常工作
# 创建测试 PHP 文件
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
# 设置正确权限(可选)
sudo chown -R $USER:$USER /var/www/html/
sudo chmod -R 755 /var/www/html/
✅ 浏览器访问:http://你的服务器IP/info.php
→ 应看到完整的 PHP 信息页(含 Loaded Modules 中有 mysqlnd、mysqli、pdo_mysql 等)
→ 滚动查看 "Server API" 应为 FPM/FastCGI(证明 PHP-FPM 工作正常)
→ 查看 "mysql.default_socket" 应为 /var/run/mysqld/mysqld.sock(MySQL 连接正常)
✅ 至此,LEMP 环境部署完成!
🛡️ 七、(可选但强烈推荐)安全加固与优化
| 项目 | 操作 |
|---|---|
| 1. 创建普通用户(禁用 root SSH) | adduser deploy → usermod -aG sudo deploy → sudo visudo 注释 # %sudo ALL=(ALL:ALL) ALL 下一行加 deploy ALL=(ALL) NOPASSWD: ALL → sudo passwd -l root → 修改 /etc/ssh/sshd_config 中 PermitRootLogin no → sudo systemctl restart sshd |
| 2. 配置腾讯云安全组 | 控制台 → 轻量服务器 → 网络 → 安全组 → 仅开放端口:22(SSH)、80(HTTP)、443(HTTPS);关闭 3306、6379 等数据库端口对外暴露 |
| 3. 安装 Fail2ban(防暴力破解) | sudo apt install -y fail2ban → sudo systemctl enable fail2ban && sudo systemctl start fail2ban |
| 4. 启用 HTTPS(Let's Encrypt) | sudo apt install -y certbot python3-certbot-nginx → sudo certbot --nginx -d your-domain.com(需绑定域名) |
📌 常见问题快速排查
| 现象 | 可能原因 | 解决命令 |
|---|---|---|
502 Bad Gateway |
PHP-FPM 未运行 / sock 路径错误 | sudo systemctl status php*-fpm;检查 fastcgi_pass 路径是否匹配 ls /run/php/ |
File not found(PHP) |
root 路径错误或 SCRIPT_FILENAME 未传递 |
检查 root 和 fastcgi_param SCRIPT_FILENAME 是否指向 /var/www/html |
| MySQL 连接拒绝 | 用户权限不足 / host 限制 | 登录 MySQL:sudo mysql -u root -p → CREATE USER 'web'@'localhost' IDENTIFIED BY 'StrongPass123!'; GRANT ALL ON *.* TO 'web'@'localhost'; FLUSH PRIVILEGES; |
| Nginx 启动失败 | 配置语法错误 | sudo nginx -t + sudo journalctl -u nginx --no-pager -n 50 |
✅ 总结:你已完成一套安全、高效、可扩展的 LEMP 环境部署
下一步可:
- 部署 WordPress / Laravel / ThinkPHP 等应用
- 配置 Redis 缓存(
sudo apt install redis-server) - 使用宝塔面板(不推荐生产环境,但新手可选)
需要我为你生成:
🔹 一键部署脚本(Shell)?
🔹 WordPress 完整部署指南?
🔹 Nginx + PHP + MySQL + Redis + SSL 五合一配置模板?
欢迎随时告诉我 👇
祝你搭建顺利,网站飞驰!🚀
CLOUD云计算