部署nodejs项目到服务器的一些总结

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

安装nodejs


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


拷贝项目到服务器上


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

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

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

(3)打开电脑终端,进入pscp的目录,输入命令:


pscp [项目压缩包的路径] [username]@192.168.1.1:/home/[username]
复制代码


然后输入服务器的用户密码,即可将压缩包传送到服务器的/home/[username]下。

注意:用户一定要有该文件夹的写权限,否则无法传送。

(4)解压到指定目录即可。


部署项目


我们使用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

列举进程:pm2 list

退出程序:pm2 stop

重起应用:pm2 restart

程序信息:pm2 describe id|all

监控:pm2 monit

实时集中log处理: pm2 logs

查看错误日志: pm2 logs

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接口启动了


目录
相关文章
|
JSON JavaScript Linux
【MCP教程系列】Node.js+TypeScript搭建NPX MCP服务并自定义部署至阿里云百炼
本文介绍如何将阿里云百炼的工作流封装成MCP服务并部署,随后引入到智能体中使用。主要步骤包括:1) 封装MCP服务;2) 发布到npm官方平台;3) 在阿里云百炼平台创建自定义MCP服务;4) 在智能体中添加自定义MCP服务。通过这些步骤,用户可以轻松将工作流转化为MCP服务,并在智能体中调用。
4015 0
|
6月前
|
Shell 网络安全 开发工具
服务器已经搭建好的项目如何关联至gitee对应仓库并且将服务器的项目代码推送至gitee-优雅草卓伊凡
服务器已经搭建好的项目如何关联至gitee对应仓库并且将服务器的项目代码推送至gitee-优雅草卓伊凡
396 5
|
8月前
|
监控 Java Linux
Apache NiFi项目的编译与部署于CentOS服务器
总而言之,Apache NiFi的编译和部署虽然涉及多个步骤,但这些操作步骤简明扼要,即使是不太熟悉Java或Maven的用户也能跟随指南完成。通过遵循上述步骤,您将能够在CentOS服务器上成功部署Apache NiFi,为您的数据流处理任务建立一个功能强大的平台。
520 16
|
10月前
|
弹性计算 安全
阿里云服务器镜像,快速迁移项目数据
有时候旧服务器快到期了,想把项目、数据、软件挪到新服务器上,如果全部重新搭建的话,那无疑是耗时又费力。有了镜像迁移,就方便了许多。
726 1
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
1020 17
|
JavaScript 安全 前端开发
关于Node.js,一定要学这个10+万Star项目 !!
一篇关于Node.js的宝藏项目——Node.js Best Practices。该项目在GitHub上已有102k Star,汇集了100+条最佳实践,涵盖架构、安全、性能等多方面。每条实践不仅有简明说明和详细解释,还附带代码示例及资源链接。文中通过三个实战案例(利用CPU多核、避免阻塞事件循环、使用中间件处理错误)展示了其实际应用价值,并推荐了几条对前端转Node.js开发者特别有用的最佳实践。强烈建议每位Node.js开发者学习此项目,理解“怎么做”与“为什么要这么做”,以提升开发能力。
438 3
|
Web App开发 弹性计算 JavaScript
学习在ECS服务器部署nodejs项目后的心得体会
经过几天的学习,我终于成功地在阿里云的ECS服务器部署好了我都nodejs项目,在这几天的学习中,我学到了很多,也加深了我对自己代码的理解,也很感谢阿里云能给与我们学生优惠,有这个机会去自己动手尝试这些
学习在ECS服务器部署nodejs项目后的心得体会
|
6月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
509 10
下一篇
开通oss服务