搬瓦工LNMP建站教程:从零搭建网站
目录
- LNMP是什么
- 推荐版本
- 第一步:更新系统
- 第二步:安装Nginx
- Ubuntu 22.04
- CentOS 7
- 验证Nginx安装
- 第三步:安装MySQL
- Ubuntu 22.04安装MySQL 8.0
- Ubuntu 22.04安装MySQL 5.7(小内存推荐)
- CentOS 7安装MySQL 5.7
- MySQL安全初始化
- 创建网站数据库
- 第四步:安装PHP
- Ubuntu 22.04
- CentOS 7
- 常用PHP扩展说明
- 第五步:配置Nginx虚拟主机
- 创建网站根目录
- 创建Nginx配置文件
- 启用站点(Ubuntu需要)
- 测试并重启Nginx
- 第六步:部署网站文件
- 创建测试页面
- 部署WordPress(举例)
- 第七步:安装SSL证书
- 安装Certbot
- 申请并安装证书
- 设置自动续期
- 性能优化建议
- 开启PHP OPcache
- 开启Nginx Gzip压缩
- MySQL优化(1GB内存)
前置准备
- 已购买搬瓦工VPS(推荐CN2 GIA-E方案)
- 能够SSH连接到服务器
- 已安装CentOS 7或Ubuntu 22.04
- 已注册域名并完成DNS解析
我在搬瓦工上手动搭过好几次LNMP环境,踩过不少坑,最后总结出来一套比较顺畅的流程。手动装LNMP比用宝塔面板麻烦不少,但好处是你对整个环境了如指掌,出了问题知道往哪里排查,而且不装面板能省出100多MB的内存,对搬瓦工这种小内存VPS来说还是挺有价值的。这篇教程我把Ubuntu和CentOS两个系统的命令都写了,跟着做就行。
还没有搬瓦工VPS?前往购买LNMP是什么
LNMP是四个软件的首字母缩写:
| 组件 | 全称 | 作用 |
|---|---|---|
| L | Linux | 操作系统 |
| N | Nginx | Web服务器,处理HTTP请求 |
| M | MySQL/MariaDB | 数据库,存储网站数据 |
| P | PHP | 编程语言,处理动态页面 |
这四个组件组合在一起就构成了一个完整的Web服务器环境,可以运行WordPress、Typecho、Laravel等各种PHP应用。
推荐版本
| 组件 | 推荐版本 | 说明 |
|---|---|---|
| Nginx | 1.24.x | 当前稳定版 |
| MySQL | 5.7 / 8.0 | 1GB内存选5.7,2GB以上选8.0 |
| PHP | 8.1 / 8.2 | WordPress推荐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
这个脚本会问你几个问题:
- 设置root密码(输入一个强密码)
- 移除匿名用户?选 Y
- 禁止root远程登录?选 Y
- 删除测试数据库?选 Y
- 重新加载权限表?选 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;
把 mysite、siteuser 和密码替换成你自己的。
第四步:安装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-mysql | MySQL数据库连接 | 是 |
| php-curl | HTTP请求 | 是 |
| php-gd | 图片处理 | 是 |
| php-mbstring | 多字节字符串处理 | 是 |
| php-xml | XML解析 | 是 |
| php-zip | 压缩文件处理 | 是 |
| php-intl | 国际化支持 | 建议 |
| php-bcmath | 数学运算 | 建议 |
| php-imagick | 高级图片处理 | 建议 |
| php-redis | Redis缓存连接 | 可选 |
| php-opcache | PHP代码缓存 | 强烈建议 |
第五步:配置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方案,线路质量对建站体验影响很大。购买时别忘了用最新优惠码。
前往搬瓦工官网购买 VPSLNMP建站常见问题
LNMP和LAMP有什么区别?
搬瓦工1GB内存跑LNMP够吗?
新手建站是用LNMP还是宝塔面板?
常见问题
- LNMP和LAMP有什么区别?
- LNMP用Nginx做Web服务器,LAMP用Apache。Nginx性能更好、占用资源更少,推荐搬瓦工用户使用LNMP。
- 搬瓦工1GB内存跑LNMP够吗?
- 基本够用。Nginx+MySQL+PHP的基础内存占用约400MB,可以跑一个中小型网站。建议开启swap分区。
- 新手建站是用LNMP还是宝塔面板?
- 纯新手推荐宝塔面板,图形化操作更简单。有一定Linux基础的用户推荐手动安装LNMP,更轻量可控。
编辑部
了解更多