VPS搭建网站教程2026:LNMP环境搭建与配置
前言
对于想要搭建个人博客、企业官网或者Web应用的站长来说,LNMP环境是最经典的选择。LNMP即Linux + Nginx + MySQL + PHP的组合,这套架构经过多年发展,已经成为最成熟的Web服务解决方案之一。
相比传统的LAMP(Apache)架构,Nginx以高性能、低内存占用著称,特别适合资源有限的VPS服务器。2026年的今天,Nginx依然是Web服务器领域的首选。
本文将详细介绍在VPS上从零开始搭建LNMP环境的完整流程,包括Linux系统选择、Nginx安装、MySQL配置、PHP部署,以及虚拟主机配置和SSL证书部署。无论您是初次接触服务器管理的新手,还是希望优化现有架构的开发者,都能从中获得实用的指导。
一、环境准备与系统选择
1.1 选择合适的Linux发行版
常见的服务器Linux发行版对比:
| 发行版 | 优点 | 缺点 | 适合人群 |
|---|---|---|---|
| Ubuntu LTS | 社区活跃,文档丰富 | 资源占用稍高 | 新手入门 |
| CentOS Stream | 稳定,企业级 | 停止维护CentOS 7 | 追求稳定 |
| Debian | 轻量,非常稳定 | 包版本较旧 | 追求最小资源 |
| Rocky Linux | CentOS替代,免费 | 较新,社区较小 | CentOS迁移 |
推荐选择:Ubuntu 22.04 LTS 或 Rocky Linux 9
1.2 连接VPS服务器
使用SSH连接:
# Linux/Mac连接
ssh username@your_vps_ip
# Windows使用PuTTY或PowerShell
ssh username@your_vps_ip
1.3 更新系统
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL
sudo yum update -y
二、Nginx安装与配置
2.1 安装Nginx
# Ubuntu/Debian
sudo apt install nginx -y
# CentOS/RHEL
sudo yum install nginx -y
# 启动Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
验证安装:
# 检查版本
nginx -v
# 检查状态
sudo systemctl status nginx
# 访问测试
curl http://localhost
2.2 Nginx基础配置
主配置文件结构:
/etc/nginx/
├── nginx.conf # 主配置文件
├── conf.d/ # 自定义配置目录
├── sites-available/ # 可用站点
└── sites-enabled/ # 启用站点(软链接)
配置优化(/etc/nginx/nginx.conf):
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1024;
use epoll;
multi_accept on;
}
http {
# 基本设置
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# Gzip压缩
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript
application/json application/javascript application/xml+rss;
# 日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 包含其他配置
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
三、MySQL/MariaDB安装与配置
3.1 安装MariaDB(推荐)
MariaDB是MySQL的替代品,完全开源且性能更优:
# Ubuntu/Debian
sudo apt install mariadb-server -y
# CentOS/RHEL
sudo yum install mariadb-server -y
# 启动服务
sudo systemctl start mariadb
sudo systemctl enable mariadb
3.2 安全配置
# 运行安全安装向导
sudo mysql_secure_installation
# 按照提示操作:
# - 设置root密码
# - 移除匿名用户
# - 禁止root远程登录
# - 移除测试数据库
# - 刷新权限
3.3 创建数据库和用户
-- 登录数据库
sudo mysql -u root -p
-- 创建数据库
CREATE DATABASE your_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户并授权
CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出
EXIT;
3.4 MySQL性能优化
创建配置文件:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
添加优化参数:
[mysqld]
# InnoDB缓冲池大小(建议为可用内存的70%)
innodb_buffer_pool_size = 512M
# 最大连接数
max_connections = 200
# 慢查询日志
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
四、PHP安装与配置
4.1 安装PHP
# Ubuntu/Debian - 安装PHP 8.x及常用扩展
sudo apt install php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring
php8.1-xml php8.1-zip php8.1-bcmath php8.1-intl -y
# CentOS/RHEL
sudo yum install php php-fpm php-mysqlnd php-curl php-gd php-mbstring php-xml php-zip -y
4.2 PHP-FPM配置
查看PHP-FPM进程管理器:
# 查看可用池
ls /etc/php/8.1/fpm/pool.d/
# 查看PHP版本
php -v
优化PHP-FPM配置:
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
修改:
; 进程管理方式
pm = dynamic
; 最大子进程数
pm.max_children = 10
; 起始子进程数
pm.start_servers = 3
; 最小空闲进程数
pm.min_spare_servers = 2
; 最大空闲进程数
pm.max_spare_servers = 5
; 每个子进程处理请求数后重启(防止内存泄漏)
pm.max_requests = 500
4.3 PHP配置优化
sudo nano /etc/php/8.1/fpm/php.ini
修改关键参数:
; 上传文件大小限制
upload_max_filesize = 64M
post_max_size = 64M
; 内存限制
memory_limit = 256M
; 执行时间
max_execution_time = 300
; 时区
date.timezone = Asia/Shanghai
; 错误显示(生产环境关闭)
display_errors = Off
log_errors = On
五、部署第一个网站
5.1 创建虚拟主机配置
# 创建网站目录
sudo mkdir -p /var/www/html/shenma98.com
sudo chown -R www-data:www-data /var/www/html/shenma98.com
sudo chmod -R 755 /var/www/html/shenma98.com
创建Nginx配置文件:
sudo nano /etc/nginx/sites-available/shenma98.com.conf
添加配置:
server {
listen 80;
server_name www.shenma98.com shenma98.com;
root /var/www/html/shenma98.com;
index index.php index.html;
# 日志配置
access_log /var/log/nginx/shenma98.com.access.log;
error_log /var/log/nginx/shenma98.com.error.log;
# WordPress固定链接支持
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP配置
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 静态文件缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
# 禁止访问隐藏文件
location ~ /\. {
deny all;
}
}
启用站点:
# 创建软链接
sudo ln -s /etc/nginx/sites-available/shenma98.com.conf
/etc/nginx/sites-enabled/
# 检查配置
sudo nginx -t
# 重载Nginx
sudo systemctl reload nginx
5.2 安装WordPress
cd /var/www/html/shenma98.com
# 下载WordPress
sudo wget https://cn.wordpress.org/latest-zh_CN.tar.gz
# 解压
sudo tar -xzf latest-zh_CN.tar.gz
# 移动文件到根目录
sudo mv wordpress/* .
# 删除压缩包和空文件夹
sudo rm -rf wordpress latest-zh_CN.tar.gz
# 设置权限
sudo chown -R www-data:www-data /var/www/html/shenma98.com
5.3 WordPress数据库配置
访问 http://your_vps_ip 按照界面提示完成:
1. 选择语言
2. 输入数据库信息(数据库名、用户名、密码)
3. 设置网站标题、管理员账号密码
4. 完成安装
六、SSL证书部署
6.1 安装Certbot
# Ubuntu/Debian
sudo apt install certbot python3-certbot-nginx -y
# CentOS/RHEL
sudo yum install certbot python3-certbot-nginx -y
6.2 获取免费SSL证书
# 获取证书(自动配置Nginx)
sudo certbot --nginx -d www.shenma98.com -d shenma98.com
# 或者只获取证书,不修改Nginx配置
sudo certbot certonly --webroot -w /var/www/html/shenma98.com
-d www.shenma98.com -d shenma98.com
6.3 手动配置HTTPS
如果选择手动配置:
server {
listen 443 ssl http2;
server_name www.shenma98.com shenma98.com;
root /var/www/html/shenma98.com;
# SSL证书配置
ssl_certificate /etc/letsencrypt/live/shenma98.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/shenma98.com/privkey.pem;
# SSL安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 其他配置...
}
# HTTP重定向到HTTPS
server {
listen 80;
server_name www.shenma98.com shenma98.com;
return 301 https://$server_name$request_uri;
}
6.4 自动续期
# 测试自动续期
sudo certbot renew --dry-run
# 添加定时任务
sudo crontab -e
# 每天凌晨3点检查续期
0 3 * * * /usr/bin/certbot renew --quiet --deploy-hook "systemctl reload nginx"
七、常用管理命令
7.1 服务管理
# Nginx
sudo systemctl restart nginx
sudo nginx -t # 检查配置
sudo systemctl reload nginx # 平滑重载
# PHP-FPM
sudo systemctl restart php8.1-fpm
# MySQL/MariaDB
sudo systemctl restart mariadb
# 全部重启
sudo systemctl restart nginx php8.1-fpm mariadb
7.2 查看日志
# Nginx访问日志
tail -f /var/log/nginx/shenma98.com.access.log
# Nginx错误日志
tail -f /var/log/nginx/shenma98.com.error.log
# PHP错误日志
tail -f /var/log/php8.1-fpm.log
# MySQL日志
tail -f /var/log/mysql/error.log
7.3 常用命令速查
| 操作 | 命令 |
|---|---|
| 探针文件 | /var/www/html/info.php |
| PHP版本 | php -v |
| PHP模块 | php -m |
| MySQL状态 | systemctl status mariadb |
| 网站根目录 | /var/www/html/ |
| Nginx配置 | /etc/nginx/ |
常见问题解决
问题1:502 Bad Gateway
原因:PHP-FPM未运行或配置错误
解决:
sudo systemctl status php8.1-fpm
sudo systemctl restart php8.1-fpm
问题2:上传文件失败
原因:PHP上传大小限制或Nginx client_max_body_size限制
解决:
# 在server块中添加
client_max_body_size 64M;
问题3:WordPress固定链接404
原因:Nginx未正确配置rewrite规则
解决:确保包含以下配置:
location / {
try_files $uri $uri/ /index.php?$args;
}
注意事项
- 生产环境关闭错误显示:display_errors = Off
- 定期备份:包括数据库和网站文件
- 保持更新:及时更新WordPress和插件
- 限制文件权限:防止恶意文件上传
- 启用防火墙:只开放80、443端口
总结
通过本文的学习,您应该已经掌握:
1. LNMP环境的完整搭建流程
2. Nginx服务器的安装与配置
3. MariaDB数据库的部署与优化
4. PHP的安装与性能调优
5. WordPress的部署与配置
6. SSL证书的获取与自动续期
关键要点回顾:
- 使用Ubuntu 22.04 LTS作为服务器系统
- PHP-FPM使用Unix socket连接,性能更好
- 启用Gzip压缩提升网站速度
- 使用Let's Encrypt免费SSL证书
- 配置自动续期避免证书过期
LNMP环境是搭建网站的基础。建议将本文与《VPS定时任务设置教程2026》结合,实现网站的自动备份运维。
相关文章推荐
如果您对VPS建站和运维感兴趣,以下文章可能对您有帮助:
- VPS定时任务设置教程2026:crontab配置与自动化任务 - 实现网站自动备份
- VPS监控资源使用教程2026:Zabbix/Prometheus监控搭建 - 监控网站运行状态
- VPS安全加固教程2026:SSH安全与防暴力破解 - 保护网站服务器安全
- VPS安装Docker教程2026:容器化部署完整指南 - 使用Docker部署网站
- VPS配置防火墙规则教程2026:iptables与firewalld详解 - 配置网站访问规则

评论(0)