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;
}

注意事项

  1. 生产环境关闭错误显示:display_errors = Off
  2. 定期备份:包括数据库和网站文件
  3. 保持更新:及时更新WordPress和插件
  4. 限制文件权限:防止恶意文件上传
  5. 启用防火墙:只开放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详解 - 配置网站访问规则

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。