Nodejs项目部署与踩过的那哪些坑
2016-08-18 16:05
309 查看
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踩过的二坑
一开始
4000
至今使用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
一、项目背景
团队中基于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踩过的二坑
一开始
4000
至今使用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
相关文章推荐
- 使用webpack 使用Echarts3简单入门
- mac电脑nodejs使用npm方式安装express
- [leetcode]24. Swap Nodes in Pairs -- JavaScript 代码
- node(ActiveMq)
- 为什么要用 Node.js
- 一个基于node 的小demo
- nodejs实战关于上传图片
- nodejs gm drawText使用(中文、字体、大小及颜色)
- #174 Remove Nth Node From End of List
- nodejs死亡笔记之socket.io那些事(附可用来撩妹的聊天功能)
- [node.js开发指南]——第2章 安装和配置Node.js
- [node.js开发指南]——第1章 简介
- [leetcode]-Linked List Random Node
- [leetcode]-Linked List Random Node
- [leetcode]-Linked List Random Node
- [leetcode]-Linked List Random Node
- node之hello world
- Flume采集日志遇到Hadoop的datanode为0的解决方案。
- ROS node调用service: ros::service::call/client.call()
- node.js运行环境变量配置