Nodejs项目部署与踩过的那哪些坑

来源:互联网 发布:如何看懂财务报表 知乎 编辑:程序博客网 时间:2024/06/06 04:19

Nodejs项目部署与踩过的那哪些坑

一、项目背景

团队中基于Nodejs开发的项目,由于项目需要,要部署一套测试开发环境,之前正式线是一位大牛部署,由于某些原因这块现在需要自己处理部署。本人之前完全没接触过Linux,所以在部署测试开发环境过程中也是踩了好多坑,写篇杂记做个记录。

 

二、部署准备

1.Linux系统

2. SVN客户端

3. Nodejs

4. PM2

5. Nginx

6. MongoDb

7. MySql

 

这里做个简单的介绍,为什么要以上这些东西。项目的代码是属于SVN管理的,项目是基于Nodejs开发的,Node服务应用进程使用PM2管理,数据库使用MongoDb,由于我们有和其他系统交互所以又用到了一个其他系统的数据库MySql, Nginx是Web 服务器/反向代理服务器的代理服务器。

另外由于我们的数据库之前有部署在其他的服务器上,所以这里先介绍1-4的过程,执行4后,项目就可以启动运行,完全满足可以测试的需求,后期再做数据库迁移和反向代理。

 

 

三、实施过程

 1.Linux系统

 查看了正式线是liunx版本是Center OS 7.1,这里就下载了一个Center OS的系统提供给技术维护部帮忙安装机器系统。

  Linux比较流行的发型版本有还有其他的:Ubuntu、Debian、Fedora

2.SVN客户端

   2.1 Svn客户端安装,直接使用yum方式安装,命令如下:

   yum install -y subversion  安装完成,输入名称 svn –h测试成功

  2.2安装完成SVN,检出代码

svn checkout  --username=xxxx --password=xxx https://192.168.160.4:8443/svn/casemanage  ./casemanage_test

  3.3 踩第一个坑

检出的命令是上网百度的svn checkout svn://192.168.1.1/pro/domain  一开始按照这样的格式拼装命令

  svn checkout  --username=xxxx --password=xxx SVN://192.168.160.4:8443/svn/casemanage ./casemanage_test

   按照这样格式,死活无法检出代码,提示错误,后面查看提示研究,多次折腾然后把SVN:去掉,同时带上https,终于解决问题。所以不能一味照抄,要根据实际情况去解决问题。

 

3.Nodejs下载安装

    3.1下载wget   https://nodejs.org/dist/v5.4.1/node-v5.4.1-linux-x64.tar.gz

    3.2解压安装  sudo tar --strip-components 1 -xzvf node-v*-C /usr/local

3.3踩过的二坑

  一开始至今使用yum的方式安装,然后项目工程包无法npm install 安装依赖包,最后排查原因发现,安装的nodej和npm的版本与开发环境不一致,导致install。解决办法从官方https://nodejs.org/ 下载匹配的node版本包,这个版本已经集成了npm,无需在额外安装。

 4. 安装webpack

    全局安装npm install –g webpack

5.安装pm2

全局安装  npm install –g pm2

查看全局安装的包

npm list -g --depth 0

6.上传部署文件deploy.sh

上传完部署文件,发现无法执行,然后修改权限 :sudo chmod 777 deploy.sh

再次执行发现报错

   报错“build.sh  /bin/bash^M: 坏的解释器:没有那个文件或目录”

然后替换编译解决:

sed -i 's/\r$//' deploy.sh 

 

 

   6.1踩过的三坑

     发布成功,pm2各种状态值都正常,其他电脑就是无法访问

经常入坑的排查,Center OS的防火墙没有打开对应的3000端口,同时Center OS打开端口方法跟其他系统不同,具体如下

 centeros 7 防火墙使用 - firewall

开启端口

firewall-cmd --zone=public--add-port=80/tcp --permanent

firewall-cmd --zone=public--add-port=3000/tcp --permanent

命令含义:

--zone #作用域

--add-port=80/tcp  #添加端口,格式为:端口/通讯协议

--permanent   #永久生效,没有此参数重启后失效

重启防火墙

 firewall-cmd --reload

重新设置完端口后,解决问题,访问项目网站正常。

 

 

后期待续~~

7.nginx                                                               

8.mongodb

9.mysql

 

0 0
原创粉丝点击