从零开始的在Centos上搭建easy-mock服务

声明

由于文章比较久远了,当时安装的easy-mock版本大概是V1.2.3的,可能跟现在easymock版本相差比较多了,大家看的时候可以关注一下坑点,但是安装步骤还是参考官方文档比较好。官方文档传送门

1. 安装nodejs

在root用户下运行

# Run as root on RHEL, CentOS or Fedora:
# 在root用户下运行一下两句命令
curl -sL https://rpm.nodesource.com/setup | bash -

yum install -y nodejs

发现 install nodejs提示

Error: Package: 1:nodejs-6.11.1-1.el7.x86_64 (eles-epel)
Requires: http-parser >= 2.7.0
查了下是epel的问题,于是运行

 yum install epel-release

发现还是报错,百度说需要更新python版本(后来发现不是python的问题)

# 将旧版本的python保留下来
mv /usr/bin/python /usr/bin/python2.7.5
# 安装依赖组件
 sudo yum -y install gcc make gcc-c++ openssl-devel wget

# 下载python
cd /usr/local/src
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz

./configure --prefix=/usr/local/python27

make

make install

ln -s /usr/local/python27/bin/python2.7  /usr/bin/python

安装好python后,发现运行yum install提示yum模块不存在,按照百度到的方法修改yum的运行脚本即可(如果不更新python,就不需要这个操作)

# root权限下
cd /usr/bin
vi yum
# 将第一句改为指向旧版本的python,保存即可
#!/usr/bin/python  >> #!/usr/bin/python2.7.5

结果闹腾了一圈发现回到原地仍然有这个报错:

Error: Package: 1:nodejs-6.11.1-1.el7.x86_64 (epel)
Requires: libhttp_parser.so.2()(64bit)
Error: Package: 1:nodejs-6.11.1-1.el7.x86_64 (epel)
Requires: http-parser >= 2.7.0

好吧原来是要安装http-parser,不是很懂这些依赖,直接按照网上的方法来

sudo rpm -ivh https://kojipkgs.fedoraproject.org//packages/http-parser/2.7.1/3.el7/x86_64/http-parser-2.7.1-3.el7.x86_64.rpm

继续安装又报错

Total download size: 7.1 M
Installed size: 26 M
Downloading packages:
Traceback (most recent call last):
File "/usr/libexec/urlgrabber-ext-down", line 22, in <module>
from urlgrabber.grabber import
ImportError: No module named urlgrabber.grabber
Traceback (most recent call last):
File "/usr/libexec/urlgrabber-ext-down", line 22, in <module>
from urlgrabber.grabber import
ImportError: No module named urlgrabber.grabber
Traceback (most recent call last):
File "/usr/libexec/urlgrabber-ext-down", line 22, in <module>
from urlgrabber.grabber import
ImportError: No module named urlgrabber.grabber

百度了一下说要,vi /usr/libexec/urlgrabber-ext-down
把头部的python改成和/usr/bin/yum中一样的(如果不更新python,就不需要这个操作)

vi /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python  >> #!/usr/bin/python2.7.5

最后终于安装好nodejs了

2. 安装mongodb,并配置数据库

# 获取mongodb
touch /etc/yum.repos.d/mongodb-org-3.4.repo
vi /etc/yum.repos.d/mongodb-org-3.4.repo

# 在mongodb-org-3.4.repo写入
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

# 用yum命令安装
sudo yum install -y mongodb-org

# 新建数据库储存文件夹
mkdir /data/db

# 启动mongod 
mongod

# 新建数据库easymockdb
mongo #进入数据库
> use easymockdb  #新建数据库

# 保持数据库运行
mkdir /data/logs
mkdir /data/logs/mongodb
mkdir /data/logs/mongodb/logs
mongod --fork --logpath=/data/logs/mongodb/logs/mogondb.log

出现以下信息就ok

about to fork child process, waiting until server is ready for connections.
forked process: 5500
child process started successfully, parent exiting

3. 部署项目

  1. 下载项目
# 直接去github上git clone
git clone https://github.com/easy-mock/easy-mock.git

# 如果github连不上,就直接下载下来放到某个文件夹下解压
# 然后npm install,如果github连不上,就去已经搭好的电脑拿node_module放过来再install
npm install
  1. 修改配置&build
cd  /usr/share/easy-mock-dev
cp config/default.json config/local.json
vi config/local.json  
db  ==>  mongodb://localhost:27017/easymockdb
jwt.secret  ==>  easy-mock-jwt-secret
APIPrefix  ==>  http://192.168.22.217:7300/api     
改好了之后就跑起
sudo npm run build
sudo npm run dev

这时出现下面信息就是跑起来了

DONE Compiled successfully in 476ms

5. 调试

跑起来后访问 http://192.168.22.217:7300/ 应当成功打开界面
但是此时却报错了

{"name":"easy-mock","hostname":"eles","pid":5546,"req_id":"5758ea3a-1a70-437a-ab4c-2f370f939bbd","level":50,"msg":"TypeError: Cannot read property 'data' of undefined\n at server-bundle.js:1782:16\n at process._tickCallback (internal/process/next_tick.js:109:7)","time":"2017-09-22T12:45:38.261Z","v":0}
(node:5546) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: connect ETIMEDOUT 193.168.22.217:7300

眼瞎瞎配置文件写错了ip地址,去项目地址/config/local.json改过来即可

6. 持续运行

使用PM2来保证项目的持续运行

sudo npm i -g pm2

sudo sudo NODE_ENV=dev pm2 start app.js

出现下列内容和表格则为运行成功

[PM2] Starting /usr/share/easy-mock-dev/app.js in fork_mode (1 instance)
[PM2] Done.

App name id mode pid status restart uptime cpu mem user watching
app 0 fork 8138 online 0 0s 0% 6.0MB root disabled

感想

由于跟nodejs不是很熟,所以出现错误也知道怎么调试,并且定位问题经常没有定位正确,所以走了好多弯路,但还是想把整个过程写下来向大家分享,万一也有别的小傻瓜跟我一样踩错坑了呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容