搬瓦工LNMP建站教程:从零搭建网站

作者:编辑部
LNMP 建站 Nginx 网站搭建
预计 45 分钟 难度:进阶

前置准备

  • 已购买搬瓦工VPS(推荐CN2 GIA-E方案)
  • 能够SSH连接到服务器
  • 已安装CentOS 7或Ubuntu 22.04
  • 已注册域名并完成DNS解析

我在搬瓦工上手动搭过好几次LNMP环境,踩过不少坑,最后总结出来一套比较顺畅的流程。手动装LNMP比用宝塔面板麻烦不少,但好处是你对整个环境了如指掌,出了问题知道往哪里排查,而且不装面板能省出100多MB的内存,对搬瓦工这种小内存VPS来说还是挺有价值的。这篇教程我把Ubuntu和CentOS两个系统的命令都写了,跟着做就行。

还没有搬瓦工VPS?前往购买

LNMP是什么

LNMP是四个软件的首字母缩写:

组件全称作用
LLinux操作系统
NNginxWeb服务器,处理HTTP请求
MMySQL/MariaDB数据库,存储网站数据
PPHP编程语言,处理动态页面

这四个组件组合在一起就构成了一个完整的Web服务器环境,可以运行WordPress、Typecho、Laravel等各种PHP应用。

推荐版本

组件推荐版本说明
Nginx1.24.x当前稳定版
MySQL5.7 / 8.01GB内存选5.7,2GB以上选8.0
PHP8.1 / 8.2WordPress推荐8.1,新项目可用8.2

关于MySQL版本:我在搬瓦工1GB内存的VPS上做过测试,MySQL 8.0默认配置下会占用300-400MB内存,基本把内存吃光了。MySQL 5.7默认占用约150MB,对小内存VPS友好得多。如果你的VPS内存只有1GB,强烈建议选5.7。

第一步:更新系统

SSH连接到服务器后,先把系统软件包更新到最新版本。不会SSH连接的话先看SSH连接教程

Ubuntu 22.04:

apt update && apt upgrade -y

CentOS 7:

yum update -y

第二步:安装Nginx

Ubuntu 22.04

apt install -y nginx
systemctl start nginx
systemctl enable nginx

CentOS 7

CentOS 7默认的yum源里Nginx版本比较旧,建议先添加Nginx官方源:

yum install -y epel-release
yum install -y nginx
systemctl start nginx
systemctl enable nginx

验证Nginx安装

安装完成后,在浏览器中访问你的VPS IP地址(直接输入 http://你的IP),如果看到「Welcome to nginx!」页面,说明Nginx安装成功了。

如果打不开,检查防火墙是否放行了80端口:

Ubuntu:

ufw allow 80
ufw allow 443

CentOS:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

第三步:安装MySQL

Ubuntu 22.04安装MySQL 8.0

apt install -y mysql-server
systemctl start mysql
systemctl enable mysql

Ubuntu 22.04安装MySQL 5.7(小内存推荐)

Ubuntu 22.04默认源里没有MySQL 5.7,可以用MariaDB 10.6代替,和MySQL高度兼容:

apt install -y mariadb-server
systemctl start mariadb
systemctl enable mariadb

CentOS 7安装MySQL 5.7

yum install -y mariadb-server mariadb
systemctl start mariadb
systemctl enable mariadb

MySQL安全初始化

不管装的是MySQL还是MariaDB,都需要执行安全初始化脚本:

mysql_secure_installation

这个脚本会问你几个问题:

  1. 设置root密码(输入一个强密码)
  2. 移除匿名用户?选 Y
  3. 禁止root远程登录?选 Y
  4. 删除测试数据库?选 Y
  5. 重新加载权限表?选 Y

创建网站数据库

mysql -u root -p

输入密码进入MySQL后执行:

CREATE DATABASE mysite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'siteuser'@'localhost' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON mysite.* TO 'siteuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

mysitesiteuser 和密码替换成你自己的。

第四步:安装PHP

Ubuntu 22.04

apt install -y php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip php8.1-intl php8.1-bcmath php8.1-imagick

CentOS 7

CentOS 7默认的PHP版本太老了,需要添加Remi源安装新版本:

yum install -y epel-release
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y yum-utils
yum-config-manager --enable remi-php81
yum install -y php-fpm php-mysqlnd php-curl php-gd php-mbstring php-xml php-zip php-intl php-bcmath php-imagick

启动PHP-FPM:

systemctl start php-fpm  # CentOS用php-fpm,Ubuntu用php8.1-fpm
systemctl enable php-fpm

常用PHP扩展说明

扩展名作用WordPress需要
php-mysqlMySQL数据库连接
php-curlHTTP请求
php-gd图片处理
php-mbstring多字节字符串处理
php-xmlXML解析
php-zip压缩文件处理
php-intl国际化支持建议
php-bcmath数学运算建议
php-imagick高级图片处理建议
php-redisRedis缓存连接可选
php-opcachePHP代码缓存强烈建议

第五步:配置Nginx虚拟主机

现在需要创建一个Nginx配置文件,告诉Nginx你的网站域名、文件路径和PHP处理规则。

创建网站根目录

mkdir -p /var/www/mysite
chown -R www-data:www-data /var/www/mysite  # Ubuntu
# CentOS用: chown -R nginx:nginx /var/www/mysite

创建Nginx配置文件

Ubuntu:

vi /etc/nginx/sites-available/mysite.conf

CentOS:

vi /etc/nginx/conf.d/mysite.conf

写入以下配置内容:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    root /var/www/mysite;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    client_max_body_size 64M;
}

注意:CentOS系统中PHP-FPM的socket路径可能是 /run/php-fpm/www.sock,需要根据实际情况修改。可以用 find / -name "*.sock" -path "*/php*" 命令查找。

启用站点(Ubuntu需要)

ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/

测试并重启Nginx

nginx -t
systemctl reload nginx

nginx -t 会检查配置文件语法,如果输出 test is successful 说明配置没问题。

第六步:部署网站文件

创建测试页面

先创建一个PHP测试页面确认环境正常:

echo "<?php phpinfo(); ?>" > /var/www/mysite/index.php

在浏览器中访问你的域名,如果看到PHP信息页面(紫色表格),说明LNMP环境配置成功了。

确认正常后立即删除这个文件,phpinfo页面会暴露服务器信息,留着有安全风险:

rm /var/www/mysite/index.php

部署WordPress(举例)

如果你想装WordPress:

cd /var/www/mysite
wget https://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz
mv wordpress/* .
rm -rf wordpress latest.tar.gz
chown -R www-data:www-data /var/www/mysite

然后在浏览器访问你的域名,按照WordPress安装向导填写数据库信息就行了。

第七步:安装SSL证书

现在的网站没有HTTPS基本不行,浏览器会标记为「不安全」,SEO也会受影响。用Let’s Encrypt免费证书就够了。

安装Certbot

Ubuntu:

apt install -y certbot python3-certbot-nginx

CentOS:

yum install -y certbot python3-certbot-nginx

申请并安装证书

certbot --nginx -d yourdomain.com -d www.yourdomain.com

按提示操作:输入邮箱、同意条款、选择是否强制HTTPS跳转(建议选是)。Certbot会自动修改Nginx配置文件,添加SSL相关配置。

设置自动续期

Let’s Encrypt证书有效期90天,需要定期续期。Certbot安装时会自动配置定时任务,你可以手动测试续期是否正常:

certbot renew --dry-run

如果没有报错就说明自动续期没问题。

性能优化建议

装好LNMP之后,做几项简单的优化可以明显提升网站速度。

开启PHP OPcache

OPcache可以缓存PHP编译后的字节码,避免重复编译,对WordPress这种PHP应用效果非常明显。

编辑PHP配置文件(路径根据系统和PHP版本不同):

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60

开启Nginx Gzip压缩

在Nginx主配置文件的http块中添加:

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_min_length 1000;
gzip_comp_level 6;

MySQL优化(1GB内存)

对于搬瓦工1GB内存的VPS,建议限制MySQL的内存使用:

# /etc/mysql/conf.d/custom.cnf 或 /etc/my.cnf.d/custom.cnf
[mysqld]
innodb_buffer_pool_size = 128M
max_connections = 50
query_cache_size = 16M

不追求最极致速度的话,如果你嫌手动配置麻烦,也可以考虑安装宝塔面板来管理LNMP环境,图形化操作更省心。方案选择方面推荐CN2 GIA-E方案,线路质量对建站体验影响很大。购买时别忘了用最新优惠码

前往搬瓦工官网购买 VPS

LNMP建站常见问题

LNMP和LAMP有什么区别?
LNMP用Nginx做Web服务器,LAMP用Apache。Nginx在处理静态文件和高并发场景下性能更好,内存占用也更少。搬瓦工VPS内存通常不大,推荐使用LNMP。Apache的优势是.htaccess支持更好,某些旧程序可能依赖它。
搬瓦工1GB内存跑LNMP够吗?
基本够用。手动安装的LNMP环境比宝塔面板更轻量,Nginx+MySQL 5.7+PHP的基础内存占用约300-400MB,跑一个中小型WordPress网站没问题。强烈建议开启2GB的swap分区防止偶尔的内存峰值导致MySQL崩溃。
新手建站是用LNMP还是宝塔面板?
如果你完全没有Linux基础,宝塔面板是更好的选择,可视化界面操作简单。如果你有一定命令行基础或者愿意学习,手动安装LNMP更轻量、更可控。搬瓦工小内存VPS上,不装面板能多省出100-150MB的内存空间。

常见问题

LNMP和LAMP有什么区别?
LNMP用Nginx做Web服务器,LAMP用Apache。Nginx性能更好、占用资源更少,推荐搬瓦工用户使用LNMP。
搬瓦工1GB内存跑LNMP够吗?
基本够用。Nginx+MySQL+PHP的基础内存占用约400MB,可以跑一个中小型网站。建议开启swap分区。
新手建站是用LNMP还是宝塔面板?
纯新手推荐宝塔面板,图形化操作更简单。有一定Linux基础的用户推荐手动安装LNMP,更轻量可控。
编辑部的头像

编辑部

了解更多