【nodejs开发】部署项目到服务器的一些总结

在这里插入图片描述

安装nodejs

首先在服务器上安装nodejs并配置环境,这个可以参考官方的文档,就不细说了

拷贝项目到服务器上

这里其实可以通过git直接clone在服务器上。当然正常发版一般是将代码打包上传到服务器上部署,可以通过pcsp传送文件到服务器上:

  • 确保服务器(linux)已经准备好,开通了相应接口。(具体做法直接百度)

  • 将项目打包压缩gz文件(windows下可以使用7-zip,先压缩成tar,再压缩成gz)

  • 打开电脑终端,进入pscp的目录,输入命令:
    pscp [项目压缩包的路径] [username]@192.168.1.1:/home/[username] 然后输入服务器的用户密码,即可将压缩包传送到服务器的/home/[username]下。
    注意:用户一定要有该文件夹的写权限,否则无法传送。

  • 解压到指定目录即可。

部署项目

我们使用pm2来进行项目部署,通过终端登上服务器,安装pm2。

npm install -g pm2

然后进入项目目录,通过下面的命令进行部署:

pm2 start bin/www

nodejs的入口js文件默认是bin/www,所以我们启动这个文件。

启动完成后就可以通过ip和端口访问这个服务了。如果我们为这个端口绑定了域名,也可以直接通过域名进行访问。

防火墙

如果在外网无法访问这个接口,那么很可能是防火墙引起的。我们需要关闭防火墙或将这个端口加入白名单。

防火墙常用指令:

  • 启动: systemctl start firewalld

  • 关闭: systemctl stop firewalld

  • 查看状态: systemctl status firewalld

  • 开机禁用 : systemctl disable firewalld

  • 开机启用 : systemctl enable firewalld

端口相关指令:

  • 添加: firewall-cmd --zone=public --add-port=80/tcp --permanent
    (–permanent永久生效,没有此参数重启后失效)

  • 重新载入: firewall-cmd --reload

  • 查看: firewall-cmd --zone= public --query-port=80/tcp

  • 删除: firewall-cmd --zone= public --remove-port=80/tcp --permanent

pm2命令

下面是一些常用的pm2命令:

  • 安装:npm install -g pm2

  • 启动并命名进程:pm2 start bin/www --name

  • 启动命名进程,设置cpu数为x:pm2 start bin/www -i x --name

  • 启动程序:pm2 start <app_name|id|all>

  • 列举进程:pm2 list

  • 退出程序:pm2 stop <app_name|id|all>

  • 重起应用:pm2 restart <app_name|id|all>

  • 程序信息:pm2 describe id|all

  • 监控:pm2 monit

  • 实时集中log处理: pm2 logs

  • 查看错误日志: pm2 logs <app_name|id>

  • API:pm2 web (端口:9615 )

日志

如果启动失败或服务异常退出,可以通过日志进行排查。

pm2的错误日志位于 /root/.pm2/logs/ 目录下,日志文件以进程名命名。

在终端执行pm2 logs,可以实时的看到nodejs的console信息了。

多环境

可以使用json配置来启动项目,这样就可以启动不同的环境(开发/生产)

pm2 start xxx.json

可以在nodejs项目下配置不同环境的配置文件,尤其是使开发和生产环境使用不用的端口和名称

配置文件的简单示例:

dev.json

{
  "apps": [
    {
      "name": "custom-dev",
      "script": "./bin/www",
      "env": {
        "PORT": "10008",
      }
    }
  ]
}

release.json

{
  "apps": [
    {
      "name": "custom",
      "script": "./bin/www",
      "env": {
        "PORT": "8000",
      }
    }
  ]
}

在nodejs默认生成的入口文件bin/www中,端口会默认获取进程env的配置,如下

var port = normalizePort(process.env.PORT || '8000');

所以通过上面的方式进行启动,不同的环境就会使用不同的端口。

调试

有时我们需要在服务端进行简单的调试,虽然我们可以用pm2 logs查看实时console信息,但是如果服务器上同时运行多个项目,那么就会有很多无效信息。我们可以直接使用node命令来启动

node ./bin/www

但是这样启动的话会直接使用我们在www里设置好的接口,而这个接口很可能是生产环境的接口,所以我们要避免使用这个接口,加上端口即可,如下:

PORT=1234 node ./bin/www

这样就是以1234接口启动了

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BennuCTech

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值