资讯专栏INFORMATION COLUMN

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

xiaoqibTn / 1592人阅读

摘要:安装及线上环境配置安装官方安装说明地址执行命令至此,安装完成版本查看安装官方文档地址首次安装执行命令以后创建项目只需在你需要的路径下执行开发测试环境下直接执行以下命令启动项目后面加上可以在修改现有文件后自动进行重启浏览器输入即可

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://www.ucloud.cn/yun/96268.html

相关文章

  • 阿里云服务器部署 nodejs + mongodb + nginx 反向代理 + https配置 s

    摘要:感谢老师,老师的慕课网教程购买阿里云服务器及域名终端连接阿里云服务器环境输入密码购买时的密码如果出现这个问题的解决方案解决方法查看硬盘挂在情况如果有数据盘的情况下查看硬盘使用情况通过设置快捷登录权限,可以增加几个拥有权限的用户下查 感谢 Scott 老师,Scott老师的慕课网教程 https://coding.imooc.com/clas... 1. 购买阿里云服务器及域名 2. ...

    张春雷 评论0 收藏0
  • 阿里云服务器部署 nodejs + mongodb + nginx 反向代理 + https配置 s

    摘要:感谢老师,老师的慕课网教程购买阿里云服务器及域名终端连接阿里云服务器环境输入密码购买时的密码如果出现这个问题的解决方案解决方法查看硬盘挂在情况如果有数据盘的情况下查看硬盘使用情况通过设置快捷登录权限,可以增加几个拥有权限的用户下查 感谢 Scott 老师,Scott老师的慕课网教程 https://coding.imooc.com/clas... 1. 购买阿里云服务器及域名 2. ...

    jerryloveemily 评论0 收藏0
  • 使用 Laradock 10 分钟部署 Laravel 或 Notadd 环境

    摘要:为什么使用部署快只需要几分钟,就能部署好一套环境性能好的性能损失只有,几乎可以忽略不计。安全性高容器与宿主机完全隔离,默认情况下不能相互访问。如需强制更改请删除里面对应数据库的数据。日常修改密码,请使用或者 为什么使用docker? 部署快 只需要几分钟,就能部署好一套PHP环境 性能好 docker 的性能损失只有1-2%,几乎可以忽略不计。 安全性高 容器与宿主机完全隔离,默认情况...

    Java3y 评论0 收藏0
  • 【新手向 · 一站式教程】利用DigitalOcean云服务器,部署Nodejs服务

    摘要:前言关于此教程作为一名业余开发者,因为公司都是做和的。。。建议采用的方式下载,可参考官方教程。但是服务的进程管理,即便对于初学者来说,也是必不可少的一课。 前言 关于此教程 作为一名业余Nodejs开发者,因为公司都是做Java和C++的。。。我是在没有任何人可请教的情况下,一个坑一个坑坚(ku)实(bi)地踩过来的。作为对segmentdefault社区的回报,把自己微不足道的经验分...

    用户83 评论0 收藏0

发表评论

0条评论

xiaoqibTn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<