唯品秀前端博客

前端搞后台,还要搞Linux生产环境代码部署,真是搞的一把眼屎一把泪,从来没学过Linux,折腾的从入门到入门就放弃,尴尬一逼,关于nginx端口转发可以浏览下一篇文章《傻逼式的linux centos安装并配置nginx1.7.4

一台纯净的Linux服务器

怎样算纯净的?就是标准的CentOS 7.5 64位这种,不是预装了一堆东西的,让我们一步步自己搭建,更清晰的了解整个步骤。

登录服务器

1
ssh root@49.235.23.180

你需要在linux环境去执行这句代码,windows命令窗口不会鸟你的,当然,mac好处来了,你懂的,windows我们通常用第三方工具,比如:Xshell 6

安装nodejs

1
2
3
yum install nodejs
node -v
npm -v

升级node.js

上面方式直接安装后版本可能比较旧

安装n这个工具

1
npm install -g n

如果安装失败请先更新openssl

1
yum update openssl

安装稳定版nodejs

使用下面命令即可

1
n stable

切换到新版本

使用node -v查看版本如果发现还是之前的老版本,使用下面命令使之立即生效

1
source /etc/profile

再次查看版本应该切换到新版本来了

安装git

1
yum install git

主要是让你方便拉取你代码库的代码,毕竟你也知道,在linux下传点东西似乎并不是很方便,那么git去拉代码库是个不错的选择,建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题。

1
npm install --registry=https://registry.npm.taobao.org

安装mongodb

下载

1
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.2.tgz

解压安装包

1
2
3
tar zxvf mongodb-linux-x86_64-rhel70-3.6.2.tgz  //解压
mv mongodb-linux-x86_64-rhel70-3.6.2 mongodb //改解压后的文件夹名称为mongodb
cd mongodb

新建数据和日志目录

1
2
mkdir db 新建文件夹
touch logs 新建文件

编写mongodb配置文件

1
2
cd bin
vi mongodb.conf //新建mongodb启动配置文件

拷贝以下内容

1
2
3
4
dbpath=/www/wwwroot/koa/service/mongodb/db //数据文件存放目录,你上面刚创建的绝对路径地址
logpath=/www/wwwroot/koa/service/mongodb/logs //日志文件存放目录,你上面刚创建的绝对路径地址
port=27017 //默认端口,不要轻易改
fork=true //以守护程序的方式启用,即在后台运行,如果启动数据库port报错,就设置成false

注意目录啊,让你复制只是参考格式,咱们的文件目录地址应该不同,这两个文件就是上面你创建的两个文件,当然,我这个是试验性的demo,其实mongodb不应该装在这么深目录下,一般是装在/usr/local/mongodb

这步修改文件夹内容可能就娃不会,我也不会,学嘛。打开终端,输入vi mongodb.conf回车,按a或i进入编辑模式,就可以去输入上面内容,然后按esc键退出编辑模式,接着输入:wq保存并退出,如果不想编辑进错了,可强制退出:shift+z+z

启动mongodb

1
./mongod -f mongodb.conf

注意,当你以守护程序的方式启用mongodb后,想暂停可以从bin目录下执行db.shutdownServer()指令去停止MongoDB实例

到项目目录启动项目

1
2
3
node main.js

npm run dev

使用PM2管理nodejs进程

pm2是一个带有负载均衡功能的Node应用的进程管理器,当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载,说人话就是让你的程序可以后台运行,否则当你关闭shell命令面板程序就挂了

安装

1
npm install -g pm2

启用

1
pm2 start index.js --name tank  // tank是给这个进程取个名字,方便后续操作

相关其它命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$ npm install pm2 -g     # 命令行安装 pm2
$ pm2 start app.js -i 4  # 后台运行pm2,启动4个app.js
                         # 也可以把'max' 参数传递给 start
                         # 正确的进程数目依赖于Cpu的核心数目
$ pm2 start app.js --name my-api # 命名进程
$ 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         # 杀死全部进程

运行进程的不同方式:
$ pm2 start app.js -i max  # 根据有效CPU数目启动最大进程数目
$ pm2 start app.js -i 3      # 启动3个进程
$ pm2 start app.js -x        #用fork模式启动 app.js 而不是使用 cluster
$ pm2 start app.js -x -- -a 23   # 用fork模式启动 app.js 并且传递参数 (-a 23)
$ pm2 start app.js --name serverone  # 启动一个进程并把它命名为 serverone
$ pm2 stop serverone       # 停止 serverone 进程
$ pm2 start app.json        # 启动进程, 在 app.json里设置选项
$ pm2 start app.js -i max -- -a 23                   #在--之后给 app.js 传递参数
$ pm2 start app.js -i max -e err.log -o out.log  # 启动 并 生成一个配置文件
你也可以执行用其他语言编写的app  ( fork 模式):
$ pm2 start my-bash-script.sh    -x --interpreter bash
$ pm2 start my-python-script.py -x --interpreter python

0秒停机重载:
这项功能允许你重新载入代码而不用失去请求连接。
注意:
仅能用于web应用
运行于Node 0.11.x版本
运行于 cluster 模式(默认模式)
$ pm2 reload all

CoffeeScript:
$ pm2 start my_app.coffee  #这就是全部

PM2准备好为产品级服务了吗?
只需在你的服务器上测试
$ git clone https://github.com/Unitech/pm2.git
$ cd pm2
$ npm install  # 或者 npm install --dev ,如果devDependencies 没有安装
$ npm test

测试是否可访问

1
http://49.235.23.180:3000/

如果不行?别着急,大多服务器默认是没开启3000端口的,所以不可能访问,这时候我们需要手动去开放服务器端口3000,当前,我项目上面配置是监听3000,自己根据项目监听的端口调整。

开放项目的3000端口

有的人可能会去购买的服务器后台上面可视化编辑处去改,当然,既然一股脑的命令行,那就用命令行搞吧

关闭默认防火墙firewall

1
2
3
4
5
systemctl stop firewalld.service #停止
firewall
systemctl disable firewalld.service #禁止
firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)。

安装iptables

1
yum install iptables-services

增加端口配置

1
vim /etc/sysconfig/iptables //修改这个文件

添加

1
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT //修改好了:wq! #保存退出

到此你应该可以在前台去访问ip地址了,如果不行,把服务器重启下,重新启动下数据库和项目代码。

注意

  1. 因为github在国内访问特别不稳定,所以失败率很高(亲测高达40%+);
  2. 不要在推送更新失败后尝试手动将代码从ftp去更新线上,这样容易导致线上代码拉取后混乱,导致代码冲突,除非你已知晓该操作所可能引起的后果

小结

未知的东西都将让人有些畏惧,但你要想象下,既然很多人都会,那么说明这东西应该相对成熟,不会特别难,失败没关系,多百度下多尝试,有时候也是需要运气,运气好比如发现一个我这样傻逼式的帖子,傻逼式的教程,让傻逼的人不用动傻逼的脑子就能很简单的解决掉了问题,尴尬,我只是想说,多尝试,搞坏了没关系,学习嘛,大不了重装下系统再来,运气不好就是多花些时间有些让人崩溃烦躁。

本站所有文章、图片、资源等如无特殊说明或标注,均为来自互联网或者站长原创,版权归原作者所有;仅作为个人学习、研究以及欣赏!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:343049466@qq.com
赞(3) 打赏

上一篇:

下一篇:

相关推荐

3 条评论关于"傻瓜式的node+koa2+mongodb腾讯云服务器部署"

表情

最新评论

  1. 云点
    Mac OS X Chrome 92.0.4515.107

    让傻逼的人不用动傻逼的脑子就能很简单的解决掉了问题,说的太秀了 :tx:

  2. 奶爸建网站笔记
    Mac OS X Chrome 75.0.3770.142

    越折腾越带劲

    1. 管理员
      Mac OS X Chrome 75.0.3770.142

      @奶爸建网站笔记随便搞搞而已

  3. 暂无留言哦~~
谢谢你请我吃鸡腿*^_^*

支付宝扫一扫打赏

微信扫一扫打赏