在腾讯云轻量应用服务器(Lighthouse)上安装 Nginx + PHP + MySQL(即 LEMP 环境)的完整步骤如下。推荐使用 Ubuntu 22.04/24.04 或 CentOS 7/8/9(但注意 CentOS 8 已停更,建议优先选 Ubuntu)。本指南以 Ubuntu 22.04 LTS 为例(最稳定、社区支持好、腾讯云镜像默认推荐),全程使用 apt 包管理器,安全、高效、兼容性佳。
⚠️ 重要前提:
- 已购买并启动一台腾讯云轻量服务器(推荐 2C4G 起步,PHP+MySQL 需要一定内存)
- 已通过 SSH 登录(如:
ssh root@你的公网IP) - 确保系统已更新(首次登录建议先执行)
✅ 一、初始化系统(推荐必做)
# 更新软件包索引并升级系统(避免旧包冲突)
sudo apt update && sudo apt upgrade -y
# 安装常用基础工具(vim、curl、wget、unzip、git 等)
sudo apt install -y vim curl wget unzip git gnupg2 lsb-release ca-certificates
# (可选)配置时区(如中国上海)
sudo timedatectl set-timezone Asia/Shanghai
✅ 二、安装 Nginx
# 安装 Nginx
sudo apt install -y nginx
# 启动并设置开机自启
sudo systemctl enable nginx
sudo systemctl start nginx
# 检查状态(应显示 active (running))
sudo systemctl status nginx
# 🔒 开放防火墙端口(腾讯云需同时配置「安全组」!)
# Ubuntu 默认使用 ufw(若未启用可跳过,但务必配置腾讯云控制台安全组!)
sudo ufw allow 'Nginx Full' # 允许 80/443
sudo ufw enable
📌 腾讯云关键操作(必须!)
登录 腾讯云轻量服务器控制台 → 找到实例 → 点击「更多」→「安全组」→ 编辑入站规则,添加:
- 协议端口:
HTTP:80、HTTPS:443、SSH:22(已有)、如需远程 MySQL 可加TCP:3306(不推荐开放公网!) - 来源:建议限制为你的 IP 或
0.0.0.0/0(仅测试用,生产环境务必严格限制)
✅ 浏览器访问 http://你的服务器公网IP,看到 "Welcome to nginx!" 页面即成功。
✅ 三、安装 MySQL(推荐 MySQL 8.0,Ubuntu 22.04 默认源提供)
# 安装 MySQL 服务器
sudo apt install -y mysql-server
# 运行安全加固脚本(强烈推荐!设置 root 密码、禁用匿名用户、移除 test DB 等)
sudo mysql_secure_installation
# ⚠️ 注意:过程中会提示设置 root 密码(记住!),其余选项按提示输入 Y 即可
# (可选)验证 MySQL 状态
sudo systemctl status mysql
# 🔐 创建专用数据库用户(生产环境禁止直接用 root 连接应用!)
sudo mysql -u root -p # 输入上一步设置的 root 密码
在 MySQL 提示符中执行:
-- 创建数据库(例如名为 myapp)
CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建专用用户(如用户名 'webuser',密码 'StrongPass123!')
CREATE USER 'webuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'StrongPass123!';
-- 授予该用户对数据库的全部权限
GRANT ALL PRIVILEGES ON myapp.* TO 'webuser'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出
EXIT;
✅ 记下:数据库名 myapp、用户名 webuser、密码 StrongPass123!(请替换为你自己的强密码)
✅ 四、安装 PHP 及常用扩展(PHP 8.1,Ubuntu 22.04 默认)
# 安装 PHP 及核心扩展(含 FPM、MySQL 支持、OPcache、GD、cURL 等)
sudo apt install -y php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip php-opcache php-cli php-bcmath
# ✅ 验证 PHP 版本
php -v # 应显示 PHP 8.1.x
# ✅ 检查 PHP-FPM 状态
sudo systemctl status php8.1-fpm
sudo systemctl enable php8.1-fpm
✅ 五、配置 Nginx + PHP-FPM(关键!)
默认站点配置文件路径:
/etc/nginx/sites-available/default
或新建配置(推荐,便于管理):
# 备份原配置(可选)
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
# 编辑默认站点(或新建 /etc/nginx/sites-available/myapp)
sudo vim /etc/nginx/sites-available/default
📌 替换全部内容为以下 标准 PHP 支持配置(支持 .php 脚本、PATH_INFO、安全头等):
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;
}
# ✅ 关键:处理 PHP 请求
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 确保与你的 PHP 版本一致
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 防止泄露敏感文件
location ~ /.ht {
deny all;
}
# 可选:添加安全响应头(提升安全性)
add_header X-Frame-Options "DENY" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
}
✅ 保存退出(vim 中按 Esc → 输入 :wq → 回车)
# 测试 Nginx 配置语法是否正确
sudo nginx -t
# 无报错则重载配置
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 信息页,重点检查:
Server API:FPM/FastCGILoaded Configuration File:/etc/php/8.1/fpm/php.inimysqlnd扩展已启用(说明 MySQL 支持 OK)
✅ 测试后删除(安全起见):
sudo rm /var/www/html/info.php
✅ 七、(可选但强烈推荐)安装 phpMyAdmin(可视化管理 MySQL)
# 下载最新稳定版(以 5.2.1 为例,访问 https://www.phpmyadmin.net/downloads/ 查最新)
cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz
tar xzf phpMyAdmin-5.2.1-all-languages.tar.gz
sudo mv phpMyAdmin-5.2.1-all-languages /usr/share/phpmyadmin
sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
# 生成随机 blowfish_secret(用于 cookie 加密)
sudo sed -i "s/$cfg['blowfish_secret'] = '';/$cfg['blowfish_secret'] = '"$(openssl rand -base64 32)"';/" /usr/share/phpmyadmin/config.inc.php
# 创建 Nginx 别名(在 /etc/nginx/sites-available/default 的 server {} 块内添加)
# 在 location / { ... } 上方添加:
# location /phpmyadmin {
# alias /usr/share/phpmyadmin;
# index index.php;
# }
# location ~ ^/phpmyadmin/(.+.php)$ {
# alias /usr/share/phpmyadmin/$1;
# fastcgi_pass unix:/run/php/php8.1-fpm.sock;
# fastcgi_index index.php;
# include fastcgi_params;
# fastcgi_param SCRIPT_FILENAME $request_filename;
# }
# 然后重载:sudo nginx -t && sudo systemctl reload nginx
# ✅ 访问:http://你的IP/phpmyadmin → 用 webuser 用户登录(非 root!)
⚠️ 生产环境建议:
- 将
/phpmyadmin改为随机路径(如/admin12345) - 通过 Nginx Basic Auth 或反向X_X加 HTTPS + Cloudflare 保护
- 或直接使用命令行
mysql -u webuser -p myapp
✅ 八、部署你的 Web 应用(示例:WordPress / Laravel / 自定义 PHP 项目)
# 示例:部署一个简单 index.php
echo '<?php echo "<h1>Hello LEMP on Tencent Cloud!</h1><p>MySQL status: "; var_dump(@mysqli_connect("localhost", "webuser", "StrongPass123!", "myapp")); ?>' | sudo tee /var/www/html/index.php
✅ 访问 http://你的IP 即可看到结果(含 MySQL 连接测试)。
✅ 九、常见问题排查清单
| 问题 | 检查项 |
|---|---|
| Nginx 无法访问 | ✅ 腾讯云安全组是否开放 80 端口?sudo ufw status?sudo systemctl status nginx? |
| PHP 不解析,显示源码 | ✅ location ~ .php$ 配置是否正确?fastcgi_pass 路径是否匹配 php8.1-fpm.sock?sudo systemctl status php8.1-fpm? |
| MySQL 连接拒绝 | ✅ sudo mysql -u webuser -p 是否能连?检查用户 host 是 'localhost'(非 '%');确认 bind-address = 127.0.0.1(默认安全) |
| 502 Bad Gateway | ✅ PHP-FPM 未运行或 sock 文件路径错误;检查 /run/php/ 下是否有对应 .sock 文件 |
| 中文乱码/emoji 报错 | ✅ 数据库 & 表字符集设为 utf8mb4(建库时已设),PHP 中连接加 charset=utf8mb4 |
✅ 十、安全加固建议(上线前必做)
- 禁用 root 远程 SSH:
sudo passwd -l root+ 创建普通用户并配 SSH 密钥登录 - 启用 UFW 防火墙:只开放 22(SSH)、80、443
- 配置 Let’s Encrypt HTTPS(强烈推荐):
sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d yourdomain.com # 需已绑定域名 - 定期更新系统:
sudo apt update && sudo apt upgrade -y(可设 cron) - 备份策略:MySQL 定时导出 + 网站文件 rsync 到 COS 或本地
✅ 总结:你已完成 LEMP 栈部署 ✅
- ✅ Nginx:高性能 Web 服务器
- ✅ PHP 8.1:FPM 模式,安全高效
- ✅ MySQL 8.0:稳定可靠,支持 utf8mb4
- ✅ 可立即部署 WordPress、Typecho、Laravel、Discuz 等主流应用
需要我为你:
- ✅ 生成一键安装脚本(Shell)?
- ✅ 部署 WordPress 详细步骤?
- ✅ 配置 HTTPS(SSL)完整流程?
- ✅ 迁移现有网站到该环境?
- ✅ 优化 PHP-FPM / MySQL 性能参数?
欢迎随时告诉我,我可以为你定制化输出 👍
祝你搭建顺利!🚀
秒懂云