十分钟搭建centos+nodejs+nestjs+caddy+pm2线上环境

centos+node.js+nest.js+caddy+pm2装置及线上环境设置

node.js装置

官方装置申明地点 https://github.com/nodesource…

实行敕令

curl -sL https://rpm.nodesource.com/setup_8.x | bash -
sudo yum install -y nodejs

至此,noded.js装置完成

版本检察

node -v
npm -v

nest.js装置

官方文档地点 https://github.com/nestcn/doc…

首次装置实行敕令

npm i -g @nestjs/cli

今后建立项目只需在你须要的途径下实行

nest new project

开辟测试环境下直接实行以下敕令启动项目,start背面加上:dev能够在修正现有文件后自动举行重启

npm run start:dev

浏览器输入 localhost:3000 即可接见,端口修正在src/manin.ts中

由于node.js环境下,每一个项目启动都须要占用一个端口,所以要想完成多站点,多域名绑定接见就须要运用nginx,caddy之类的web service来做代办这里我们选用简朴壮大的caddy来完成

装置caddy

官方文档地点 https://caddyserver.com/tutorial

https://caddyserver.com/download 页面中依据本身服务器和所需插件勾选后会天生装置敕令

无需插件状况下,直接实行下面的敕令即可

curl https://getcaddy.com | bash -s personal

装置完成后假如是静态网站能够直接在网站根目录实行以下敕令即可启动

caddy

浏览器输入 localhost:2015 即可接见

下面重要针对nest.js项目多站点的状况举行设置申明

在你愿望的途径下建立 一个 Caddyfile 文件

vi Caddyfile

设置内容示例以下

比方你的域名是 www.google.com ,你须要经由过程该域名接见你的 localhost:6000 这个项目,同理,别的项目一样设置

www.google.com {
    proxy / localhost:6000
}

www.facebook.com {
    proxy / localhost:6001
}

注重:在上面的设置中牢记 ‘{‘ 和 ‘/’ 摆布的空格,不然将会引发毛病

设置完今后按 esc 键再输入 :wq 保留退出

然后实行以下名来来通知 caddy 你的设置文件在哪,并加载启动

caddy -conf /途径/Caddyfile

这时候可能会让你输入邮箱地点,这是caddy为了给你自动请求设置SSL证书,然后你会看到输出了你设置的域名,
离别有http和https的地点,直接接见即可

以上设置完基本就完成了;然则放你重启服务器后就会发明网站不能接见了,服务器上检察你会发明node.js的web server 和 caddy 都没有自动启动,还须要手动实行上面步骤中的启动敕令才行,这时候就须要运用pm2这个壮大的东西了

装置pm2

官方文档地点 https://pm2.io/doc/zh/runtime…

实行以下敕令最先装置

npm install pm2 -g

一个敕令装置完成,是否是很简朴?

下面运用pm2来启动治理node.js运转的项目,这里以nest.js开辟的项目为例,这部分由于材料有限,找不到pm2启动nest.js项目的申明,由于我本身也是首次打仗pm2,整整折腾了8个小时才搞定,末了google找到了解决方案,以下:

比方你的nest.js项目途径是 cd /data/www/project01 则进入该项目根目录下实行以下敕令

 pm2 start npm --name project01 -- start

实行完会涌现一个名为project01的项目online的table,示意该项目经由过程pm2启动胜利,假如你另有别的项目可实行一样的操纵来启动

将你须要经由过程pm2来启动治理的项目都经由过程pm2启动后,实行以下开机自启动敕令来完成开机自启动这些项目

pm2 startup

实行以下敕令来保留当前运用列表

pm2 save 

到此,经由过程pm2来启动治理的项目在服务器重启后都邑自动启动,是否是很轻易?
然则另有个题目,由于这些项目都运用了caddy代办,所以caddy也须要完成开机自启动才行,不然外网依旧没法经由过程你的域名来接见这些项目,由于我们已装置了pm2,他轻易壮大的特征能够免除我们去设置systemd来完成caddy的开机自启动了,我们实行以下敕令

pm2 start caddy --name caddyStart -- -conf /你的Caddyfile途径/Caddyfile

经由过程以上敕令我们就完成了pm2启动治理caddy了,然后我们依旧要实行一下开机自启动敕令和保留敕令,以下

pm2 startup 

pm2 save 

重启你的服务器,你会发明在没经由任何手动操纵的状况下你已能够经由过程项目所绑定的域名来接见你的网站了,是否是很爽?

到此一切设置操纵悉数完成! 你能够经由过程壮大的pm2来监测你服务器上的项目

pm2经常使用的敕令

$ pm2 list               # 显现一切历程状况
$ pm2 monit              # 看管一切历程
$ pm2 logs               # 显现一切历程日记
$ pm2 stop all           # 住手一切历程
$ pm2 restart all        # 重启一切历程
$ pm2 reload all         # 0 秒停机重载历程 (用于 NETWORKED 历程)
$ pm2 stop 0             # 住手指定的历程
$ pm2 restart 0          # 重启指定的历程
$ pm2 startup            # 发生 init 剧本 坚持历程在世
$ pm2 web                # 运转硬朗的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0           # 杀死指定的历程
$ pm2 delete all         # 杀死悉数历程

有喜好kotlin的同砚加下QQ群 26588774
有喜好nodejs+koa2的同砚加下QQ群 732189938
有喜好golang的同砚加下QQ群 598189791
有喜好laravel的同砚加下QQ群 212423075

欢迎来群里聊玉人,谈人生,固然另有聊手艺O(∩_∩)O

    原文作者:码牛不是牛
    原文地址: https://segmentfault.com/a/1190000015695051
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞