适用人群
如果你是个刚学会JavaScript基础、看后端代码还觉得像天书的新手,或者你是个用WordPress拖了几年网站、想换个更轻更快技术栈的独立站长,这篇文章就是为你准备的,你不需要懂Linux内核,不需要会Docker,只需要一台能装软件的电脑,和一份“今天就要把网站挂到网上”的决心。
第一步:服务器——别买贵的,要买对的
去腾讯云或阿里云买个最便宜的轻量应用服务器(2核2G,40G SSD,带宽3M就够),系统选 Ubuntu 22.04 LTS,别选CentOS——Node.js生态对Ubuntu更友好,遇到问题搜资料也容易。
关键点:一定记得在安全组规则里放行 80端口(HTTP) 和 443端口(HTTPS),否则后面域名解析了也打不开,新手最容易栽在这——心里想着“我防火墙没开啊”,其实云平台的安全组默认全封。
从零到上线,用Node.js搭一个能扛住百万流量的网站,其实没你想的那么难
第二步:域名与DNS——别用二级域名当主站
去Namesilo或阿里云买一个.com域名,十几块钱一年,然后解析两条记录:
- 记录(主域名)指向服务器IP
www记录指向同一个IP
关键点:DNS解析生效可能要等几分钟到几小时,别急着骂“没生效”,用ping yourdomain.com看返回的IP是否是你的服务器公网IP,如果返回的不是,检查是不是把IP填错了。
第三步:安装Node.js环境——用版本管理器,别直接apt install
SSH登录服务器(Windows用PowerShell,Mac用终端),执行:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 20
关键点:不要用apt install nodejs,那装的是老版本(可能还是16.x),导致很多新库不支持,装完用node -v确认版本是v20+。
踩坑提醒:如果你用的是宝塔面板,不要额外再装什么Node版本管理器,宝塔自带的Node项目管理器会在路径上搞出各种诡异bug。
第四步:写你的第一个Node.js应用——别怕,就20行
创建一个app.js:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('<h1>我的Node.js网站上线了!</h1>');
});
app.listen(3000, () => console.log('running on 3000'));
然后用npm init -y初始化项目,npm install express,先本地跑起来测试一下:node app.js,浏览器访问http://服务器公网IP:3000,能看到“我的Node.js网站上线了!”就代表程序没问题。
关键点:端口这里用3000是为了测试,但正式上线必须用80,因为用户不会在网址后加端口号。
第五步:用nginx做反向代理——Node.js不直接暴露80端口
因为Node.js自己监听80端口有权限问题(非root用户不行),而且处理静态文件、并发连接都不如nginx,所以装nginx:
sudo apt install nginx
然后修改配置:
sudo vi /etc/nginx/sites-available/default
把location /部分改为:
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
最后sudo nginx -s reload。
踩坑提醒:如果你把proxy_pass写成了http://localhost:3000,在某些系统上会解析成IPv6的:1,而你的Node.js只监听了IPv4的0.0.1,结果就是一请求就502,写完配置一定要测试curl http://127.0.0.1。
第六步:部署代码——用Git+PM2,别用FTP
在服务器上创建/var/www/myapp目录,用git clone把你的代码拉下来(那怕只有app.js和package.json也行),然后全局安装PM2进程守护:
npm install -g pm2 cd /var/www/myapp npm install --production pm2 start app.js --name myapp pm2 save pm2 startup
关键点:pm2 startup会生成一条命令让你执行,执行后服务器重启PM2会自动拉起你的应用,否则你重启服务器后网站就404了,新手经常在这一步转身就跑。
第七步:HTTPS加密——用certbot免费证书
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
证书会自动装好并修改nginx配置,全自动,跟着向导填邮箱就行,装完后curl https://www.yourdomain.com能返回刚才的HTML就成功了。
踩坑提醒:如果你前面用了宝塔面板,宝塔的SSL管理会和certbot冲突,建议要么全程不用宝塔,要么全程用宝塔的SSL功能,别混用。
最终检查
打开浏览器输入你的域名,看到“我的Node.js网站上线了”,关掉终端窗口,过5分钟再刷新一次,网站还在,恭喜你,一个生产级Node.js站点正式上线。
给你的最后警告
新手最容易炸的地方就三个:安全组没开80端口、nginx配置写错了代理地址、PM2没设置开机自启,我见过太多人在论坛上哭“我代码没问题为什么外网打不开”,一问全是这三个坑,你现在踩过一遍,以后就会条件反射地先检查这三处了,去做吧,半小时搞定,以后你就是那个教别人“怎么用Node.js建站”的人了。



发表评论