在腾讯云轻量应用服务器(Lightweight Application Server)上安装 Nginx、PHP 和 MySQL(即 LNMP 环境),通常有两种主流方式:使用官方镜像一键部署(推荐,最快最稳)或 手动命令行安装(适合自定义需求)。以下是两种方案的完整步骤:
✅ 方案一:使用腾讯云官方“LNMP”镜像(强烈推荐)
这是最简单、最安全的方式,无需手动安装依赖,开箱即用。
步骤:
-
登录腾讯云控制台
访问 https://console.cloud.tencent.com -
创建/选择轻量应用服务器
- 若已有服务器:进入「实例」→ 点击目标服务器 → 右侧「重装系统」
- 若新建:点击「创建轻量应用服务器」
-
选择镜像
- 在「镜像」页面选择 「应用镜像」 分类
- 搜索并选择 "LNMP" 镜像(如:
LNMP 1.0 (Ubuntu 22.04)或LNMP 1.5 (CentOS 7/8))
✅ 建议选 Ubuntu 22.04 + LNMP 1.5,社区支持好、文档全
-
配置其他选项
- 地域/可用区:就近选择
- 套餐:根据需求选 CPU/内存/带宽(入门可试 2 核 2G)
- 密码/密钥对:设置强密码或 SSH 密钥
- 安全组:默认已开放 80(HTTP)、443(HTTPS)、22(SSH),如需远程数据库可额外放行 3306(⚠️生产环境慎用!)
-
确认创建
等待约 1~2 分钟,服务器启动后记录公网 IP。 -
验证环境
通过终端连接服务器:ssh root@<你的公网IP>然后检查服务状态:
# 检查 Nginx nginx -v systemctl status nginx # 检查 PHP php -v systemctl status php-fpm # Ubuntu 可能叫 php8.x-fpm # 检查 MySQL mysql --version systemctl status mysqld # CentOS: mysqld; Ubuntu: mysql -
测试 Web 访问
浏览器访问http://<你的公网IP>,应看到 Nginx 默认页或 PHP 测试页(如info.php)。
💡 提示:官方镜像通常已预置
/var/www/html/index.html和/var/www/html/info.php,可直接测试 PHP 是否工作。
⚙️ 方案二:手动安装 LNMP(适合学习或定制)
适用于需要特定版本、调试环境或从空系统开始的用户。以下以 Ubuntu 22.04 LTS 为例(CentOS 步骤类似,包管理器用 yum/dnf):
前置准备
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装必要工具
sudo apt install curl wget git -y
1️⃣ 安装 Nginx
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
# 验证
curl http://localhost
systemctl status nginx
✅ 访问 http://<IP> 应看到 "Welcome to nginx!"
2️⃣ 安装 PHP 及常用扩展
# 添加 Ondrej PHP PPA(获取较新 PHP 版本,如 8.2)
sudo add-apt-repository ppa:ondrej/php
sudo apt update
# 安装 PHP-FPM + 常用模块
sudo apt install php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd
php8.2-mbstring php8.2-xml php8.2-zip php8.2-bcmath -y
# 启用 PHP-FPM
sudo systemctl enable php8.2-fpm
sudo systemctl start php8.2-fpm
# 创建测试文件
sudo mkdir -p /var/www/html
cat <<'EOF' | sudo tee /var/www/html/info.php
<?php phpinfo(); ?>
EOF
sudo chown -R www-data:www-data /var/www/html
sudo chmod 755 /var/www/html/info.php
✅ 访问 http://<IP>/info.php 应显示 PHP 信息页
3️⃣ 安装 MySQL(MariaDB 或 MySQL 5.7/8.0)
方式 A:安装 MariaDB(轻量、兼容性好,推荐)
sudo apt install mariadb-server mariadb-client -y
sudo systemctl enable mariadb
sudo systemctl start mariadb
# 安全加固(交互式设置 root 密码等)
sudo mysql_secure_installation
# 按提示操作:
# Y -> 删除匿名用户
# Y -> 禁止 root 远程登录
# Y -> 删除 test 数据库
# Y -> 刷新权限
方式 B:安装 MySQL 8.0(需额外源)
wget https://dev.mysql.com/get/mysql-apt-config_0.8.30-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb
# 选择 MySQL 8.0,继续安装
sudo apt update
sudo apt install mysql-server -y
sudo systemctl enable mysql
sudo systemctl start mysql
sudo mysql_secure_installation
4️⃣ 配置 Nginx 与 PHP-FPM 联动
编辑 Nginx 站点配置:
sudo nano /etc/nginx/sites-available/default
替换为以下内容(关键部分已标注):
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.php;
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; # 注意版本号匹配
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 隐藏 .htaccess 等敏感文件(可选)
location ~ /. {
deny all;
}
}
🔍 检查 PHP-FPM socket 路径:
ls /run/php/确认是php8.2-fpm.sock还是其他版本。
保存退出后:
# 测试 Nginx 配置
sudo nginx -t
# 重载 Nginx
sudo systemctl reload nginx
✅ 再次访问 http://<IP>/info.php 应正常显示 PHP 信息
5️⃣ (可选)配置防火墙与安全组
- 本地防火墙(UFW):
sudo ufw allow 'Nginx Full' sudo ufw allow OpenSSH sudo ufw enable - 腾讯云安全组:确保控制台已放行:
- TCP 80(HTTP)
- TCP 443(HTTPS,如需)
- TCP 22(SSH)
- ❗ 生产环境不要开放 3306 到公网!仅允许内网或特定 IP 访问数据库
🔐 后续建议(生产环境必备)
| 项目 | 操作 |
|---|---|
| 修改默认 root 密码 | sudo mysql_secure_installation 中设置强密码 |
| 禁用远程 root 登录 | MySQL 中:CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'strong_pwd'; GRANT ALL ON mydb.* TO 'app_user'@'localhost'; FLUSH PRIVILEGES; |
| 启用 HTTPS | 使用 Let’s Encrypt:sudo apt install certbot python3-certbot-nginx → sudo certbot --nginx |
| 定期备份 | 脚本备份数据库 + 网站目录,上传至 COS |
| 监控告警 | 开启腾讯云云监控,设置 CPU/内存/磁盘告警 |
📌 常见问题排查
| 问题 | 解决方案 |
|---|---|
| 访问 404 | 检查 root 路径是否正确;ls -la /var/www/html/ |
| PHP 不执行(直接下载源码) | 检查 Nginx 配置中 fastcgi_pass 路径;确认 php8.2-fpm 服务运行中 |
| MySQL 无法连接 | 检查 bind-address(/etc/mysql/mariadb.conf.d/50-server.cnf 改为 127.0.0.1);确认防火墙未拦截 |
| 权限错误 | chown -R www-data:www-data /var/www/html;chmod -R 755 /var/www/html |
需要我提供:
- CentOS 7/8 的手动安装脚本?
- Docker 版 LNMP 快速部署方案?
- 自动化部署 Ansible Playbook?
欢迎告诉我你的具体场景,我可以进一步定制方案! 😊
云知道CLOUD