以下为我在segmentfault上复制的,贴在这里以作备忘
链接:https://segmentfault.com/q/1010000007362524
假设你有一个主机,VPS、云主机什么的,那么大题步骤如下:
-
ssh登录这个主机,安装node。官网有编译好的linux版本,下载下来,配置好路径就可以了。
-
然后把你的代码传到这个主机上,用git也行,用ftp也行。
-
进入工程目录,运行
npm install
,确保所有依赖的包都安装好了。 -
安装部署工具
npm i -g pm2
,时情况而定,是否需要sudu
。 -
在工程目录,运行
sudo pm2 start bin/www
-
(可选)配置防火墙,如果是centos,命令类似于
firewall-cmd --add-port 3000/tcp
。 -
主机一般有两个IP,一个外网IP,一个内网IP,你直接访问外网IP+端口号就能访问你的网站了。例如外网IP为
11.22.33.44
项目监听的端口为3000
则浏览器输入11.22.33.44:3000
就行了。
有几个值得注意的
-
一般是创建一个软连接到
node
,将这个软连接放到path
环境变量下。这样node升级的时候,不用修改路径了,直接修改这个符号连接就行了 -
推荐用git。写个脚本就能自动拉取代码,进行部署。
-
根据网络情况,将npm的源更换为淘宝的源
-
pm2只是一个工具,可以守护你的应用。如果应用挂了,会0时延重启。还有很多其他的工具,看你喜欢哪个。
-
某些云服务在你开启80端口的时候会进行检查,如果没有备案,你是无法通过80端口访问的。会显示提示备案的网页。如果仅仅向运行起来,就换个别的端口就行。
-
如果你用的是云,内外网端口号一般在主机信息就能查看,是在不行ifconfig也能看。
-
根据情况,设置NODE_ENV。如果你用的是pm2,可以写个启动脚本,在里面设置是否部署为生产。
题外
-
高级一旦的可以用docker。不过感觉现在没必要。
-
最好安装个nginx做代理。
-
ssh这一类的服务要进行安全配置。禁用账号密码,只使用证书登录。