本文分享的是如何基于koa在云服务器上部署纯静态网站。
服务器的选择
服务器市场产品繁多、功能和性能定位不一,由于厂商的服务器技术水平有所差别,在服务器可靠性、稳定性和可服务性上也存在某些程度上的不同。
服务器的选型也一个比较大的话题,大的将有物理服务器和近几年兴起的云服务器。从功能上又可分为Web服务器,文件服务器、邮件服务器、数据库服务器和多媒体服务器等。
而服务器上的操作系统可以分为windows和linux系列服务器等。
多数服务器都是使用linux系统,而Linux系统又分为开源的Ubuntu系列、centos系统等,个人建站多用前者,而笔者所任职过的公司都用的是centos。
本文分享的是基于阿里云配置操作系统为centos7.x服务器的部署,而且是基于pm2部署node服务,仅作参考。
关于pm2
开发时,我们需要npm run …来启动一个node项目,如果终端被关掉,程序跟着停止,特别是启动多个项目时,多有不便,特别是部署到线上的时候,如果报错了可能直接终止整个运行,supervisor或nodemon一般只用在开发环境的。
而线上我们一般使用PM2,它是带有负载均衡功能的node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等。
安装pm2
打开我们本地的终端,输入如下命令登录远程服务器:
ssh 用户名@云服务器IP地址
// 例子 ssh root@173.123.34.55
之后输入密码,登录成功后输入下面命令,-g是安装到全局(若提示npm命令不存在,则需要安装node或是环境配置有问题):
npm install -g pm2
常用命令:
- 启动: pm2 start app.js
- 停止:pm2 stop app_name|app_id
- 停止所有:pm2 stop all
- 重启:pm2 restart app_name|app_id
- 删除:pm2 delete app_name|app_id
- 查看某一个进程的信息:pm2 describe app_name|app_id
- 查看所有的进程:pm2 list
- 查看所有的进程状态:pm2 status
为项目配置启动脚本
在package.json文件中加入启动脚本
"scripts": {
"start": "nodemon index",
"deploy": "pm2 start index.js", // 新加脚本
"test": "echo \"Error: no test specified\" && exit 1"
},
然后我们在项目目录下直接运行如下命令就可以了:
npm run deploy
发现会自动打开浏览器,我们的系统是要在不同的环境下运行的,不同的环境可能是不同的端口号,不同的数据库地址,数据库用户和密码,并且可能有的需要自动重启有的不需要自动重启。
我们可以通过对环境的NODE_ENV赋值来区分不同的环境,在通过命令行在运行程序的时候对其进行赋值,不同的场景赋值不一样,在程序中读取这个值来判断是那种场景,所以我们需要调整一下index.js文件:
if (process.env.NODE_ENV !== 'production') {
cp.exec('open http://localhost:8888/');
}
这样只有在开发环境时,才自动打开浏览器, 并且修改启动脚本为:
"deploy": "NODE_ENV=production pm2 start index.js",
这样执行的就是在生产环境下启动,再次启动就去掉了开发环境下才用到的自动打开浏览器功能。
代码上传到服务器
可以采取多种方式,常用的是通过代码管理平台,如github或企业内部的gitlab,最简单的就是执行如下命令:
scp 用户名@云服务器IP地址:
// 例子 scp root@173.123.34.55:
注意后面的冒号不能少哦,上传成功后,登录服务器后进入用户主目录,就能看到该文件,一般上传前我们会压缩,上传成功后再解压,解压以后在根目录下输入前面类似的部署命令即可:
npm install && npm run deploy
下安装项目依赖,成功后使用pm2启动node服务,这样一个静态网站就可以通过阿里云服务器IP地址加端口访问了。
而要想通过域名访问,就得去购买一个域名并且去网管局备案。
网友评论