兄弟们,我这台阿里云ECS就2核3G,还跑着三个日IP5000的网站,现在要再装个NodeBB论坛,是不是疯了?别急,今天我就带你一起疯!这个NodeBB安装教程专治各种资源不足的强迫症患者,让你在阿里云ECS上实现不可能的任务!
一、先泼冷水:你的服务器真的顶得住吗?
先看看我这台小破车的配置:
- 阿里云ECS配置:2核CPU + 3G内存
- 运行环境:宝塔面板9.x + PHP8.2 + Nginx1.26 + Redis7.4
- 数据库:远程2核2G MySQL8.0(已经顶着压力跑三个站了)
- 现有负载:三个日IP5000的网站
资源占用实况表
资源项 | 当前占用 | NodeBB需求 | 剩余可用 | 危险程度 |
---|---|---|---|---|
CPU | 1.5核 | 0.5~1核 | 0~0.5核 | ⚠️ 高危 |
内存 | 2.2G | 512M~1G | 0~0.3G | ⚠️ 高危 |
数据库 | 高压状态 | MongoDB需1G+ | 不足 | ❌ 不足 |
看完是不是想放弃?别急!下面这套非Docker安装NodeBB的骚操作,能让你的破服务器再战三年!
二、保命第一步:榨干现有环境每一滴资源
1. PHP往死里优化(宝塔面板操作)
登录宝塔 → 软件商店 → 选择PHP版本 → 性能调整
# 修改PHP-FPM配置(www.conf)
pm = ondemand
pm.max_children = 30 → 改成15
pm.process_idle_timeout = 10s → 改成3s
改完这一套,内存立减300MB+,相当于白嫖了半个G!
2. Nginx瘦身大法
打开Nginx配置,把这些参数往小了调:
worker_processes 2 → 改成1;
worker_connections 1024 → 改成768;
keepalive_timeout 65 → 改成30;
gzip_comp_level 6 → 改成3;
这一套组合拳下去,又能省出150MB内存,蚊子腿也是肉啊!
3. Redis锁死内存上限
vim /etc/redis/redis.conf
# 找到并修改:
maxmemory 512mb
maxmemory-policy allkeys-lru
4. 终极保命符:Swap虚拟内存
# 创建2G交换文件
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 永久生效
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Swap就是服务器的”肾宝片”,关键时刻能救命!
三、硬核安装NodeBB(非Docker版)
1. 安装依赖包
# 安装Node.js 18.x
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs git python3 build-essential
# 安装MongoDB 6.0
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt update
sudo apt install -y mongodb-org
2. 给MongoDB上”紧箍咒”
sudo vim /etc/mongod.conf
# 关键修改项:
setParameter:
wiredTigerEngineRuntimeConfig: "cache_size=512M" # 限制内存使用
3. 正式安装NodeBB
# 创建专用账号(安全第一)
sudo useradd -m nodebb
sudo su - nodebb
# 拉取源码
git clone -b v2.x https://github.com/NodeBB/NodeBB.git
cd NodeBB
# 开始安装
./nodebb setup
# 安装过程选项参考:
? URL used to access this NodeBB: http://你的域名
? Which database to use: mongo
? MongoDB connection URI: 直接回车
# 设置管理员账号密码...
4. 给NodeBB套上”枷锁”
创建服务文件限制资源:
sudo vim /etc/systemd/system/nodebb.service
[Service]
User=nodebb
WorkingDirectory=/home/nodebb/NodeBB
ExecStart=/usr/bin/node loader.js --no-daemon
# 关键!内存限制
MemoryMax=500M
MemorySwapMax=1G
启动服务:
sudo systemctl daemon-reload
sudo systemctl enable nodebb
sudo systemctl start nodebb
四、宝塔反向代理设置
- 宝塔添加新网站 → 纯静态
- 设置 → 反向代理:
目标URL: http://127.0.0.1:4567
- 高级配置添加:
proxy_buffer_size 64k; proxy_buffers 4 32k; proxy_busy_buffers_size 128k;
- 开启强制HTTPS和HTTP/3
五、极限优化:让破服务器再飞一会儿
1. NodeBB插件瘦身
必装插件:
nodebb-plugin-emoji
(0.5MB)nodebb-plugin-dbsearch
(代替臃肿的Elasticsearch)
直接卸载这些吃内存的大户:
./nodebb reset -p nodebb-plugin-mentions
./nodebb reset -p nodebb-plugin-markdown
2. 开启集群模式
sudo vim /etc/systemd/system/nodebb.service
# 修改ExecStart行:
ExecStart=/usr/bin/node loader.js --no-daemon -c 2 # 启动2个进程
3. 静态资源外抛
在Nginx配置中添加:
location ~* \.(jpg|png|gif|css|js)$ {
expires 365d;
add_header Cache-Control "public";
# 替换成你的CDN地址
proxy_pass https://你的CDN域名;
}
六、最后的救命稻草
如果优化完服务器负载还是爆表(>80%),那就得考虑:
graph LR
A[当前服务器] -->|只跑三个PHP站| B(维持现状)
C[新购轻量服务器] -->|1核1G| D(专跑NodeBB)
或者试试白嫖方案:
- MongoDB → MongoDB Atlas免费版
- NodeBB前端 → Vercel无服务器部署
七、安装完必做的压力测试
ab -c 100 -n 1000 https://你的域名/api/
看到结果不崩,恭喜你!赶紧开瓶啤酒压压惊!
最后的忠告
这套在已有网站服务器安装NodeBB的方案,只适合像我这样头铁的穷逼站长。阿里云ECS 2核3G跑四个站已经是极限操作,安装完务必用这些命令实时监控:
# 监控三件套
htop
mongotop
nload
一旦发现CPU持续>90%或内存溢出,啥都别说,赶紧升级阿里云ECS配置吧!毕竟时间就是金钱,朋友!
真实案例:我自己的动漫论坛用这套方案跑了三个月,日均8000PV,虽然偶尔抽风,但穷有穷的玩法不是?有啥问题欢迎在评论区开喷,咱们一起折腾!
没有回复内容