2019-07-16 MongoDB和项目部署

总结这最近十天的工作和生活,就是一个字——折腾。

新工作的第一件事是做个数据统计分析平台。
前端用Angular,后端用Express,数据库用MongoDB。前两个还算熟悉,MongoDB是初次接触了,学了一下发现真是强大,在此记录一下学习过程。

一、MongoDB安装和启动
        1、Windows
        首先官网下载安装包https://www.mongodb.com/download-center/community下载好之后安装,一路Next。默认会装个可视化的交互界   面,用来查看数据什么的都很方便。打开这个可视化软件,直接点击连接就可以看到了。

        2、Linux
        下载地址同上。把文件放到自己喜欢的目录,例如 /download/mongodb-linux-x86_64-4.0.10.tgz
        然后解压文件 tar -zxvf mongodb-linux-x86_64-4.0.10.tgz
        MongoDB默认使用 /data/db 作为存储数据库的目录,但如果没有这个目录,他也不会自动创建的。所以我先手动创建 mkdir -p /data/db
        然后进入MongoDB的bin目录下,我的放在 /usr/local/mongodb/bin ,执行启动命令
        ./mongod --fork --logpath=/usr/local/mongodb/log/mongodb1.log
        虽然直接在mongodb/bin下执行 ./mongod 就可以启动,但是想要后台一直运行,就要加 --fork ,加了这个参数后会提示你必须指定logpath。
        3、参考资料
        写起来只有寥寥几句,但探索的过程实在漫长,看到的这篇文章给了我很大帮助,感谢这个作者
        https://www.cnblogs.com/luotianshuai/p/5523171.html

二、MongoDB使用
        1、导入数据
        因为游戏已经上线了,才开始做数据分析平台,为了不让宝贵的线上数据流失,已经提前约定好数据格式,让游戏先去埋点了。这样等分析平台做好,可以直接结合收集好的数据来使用。所以我们这里也不用造假数据了,直接去线上偷一波真数据来用。
        首先用mongodump命令导出数据 mongodump --db MyDataBaseName 这样就会导出一份Bson格式的数据。
        然后将数据放到要导入的主机上,执行 mongorestore -d dataBaseName bsonPath
        2、实战应用
        关于mongo的语法,我基本是看这篇文章入门的https://blog.csdn.net/lk142500/article/details/84171819 ,之后就是项目中的实际应用。
        由于在统计平台规划之前,先要让上线的游戏开始埋点,根本来不及规划数据格式,因此在自定义事件的数据格式里加入了一个Object类型,让客户端随便传,统一保存在这个Object下,并且统一存成String类型。这是前提,我在分析数据时就遇到了下面的问题:
        mongo的聚合(aggregate)可以极其方便的完成数据统计,但是无法做类型数据转换,用数值当字符串比较大小可不是我们想要的。$where可以实现在查询中进行类型转换,但却不能在聚合中使用。。。数据源是不能动的,只好采用find+$where筛选数据+手写统计分析的算法来实现了。不过这样的好处是扩展会更方便了,不然以后终究会遇到聚合无法实现的数据分析的,到那时再大改结构不如现在就写好。
        果然,自己写逻辑比学语法轻松多了

三、Git升级
        中间还遇到一次Linux上git需要更新的问题,参考了这里https://segmentfault.com/a/1190000007134786 ,不一样的是我的阿里云连不上GitHub,只好本地下载好压缩包再用Xftp传上去的。

四、崩溃了
        新装的东西总是 -bash: xxx: command not found 感觉需要重启(不)刷新什么的操作一下,网上看到可以用 init 命令,就试了一下 inin 1 结果悲剧了,Xshell连不上了,慌了一下发现了这里https://www.cnblogs.com/cherish010/p/9591129.html 然后用 init 3 再重启一下就好了。但依然还是command not found ,后来参考了这个https://www.cnblogs.com/yangjian-java/p/6693498.html,还有就是添加软连接,例如
        ln -s /root/.nvm/versions/node/v12.6.0/bin/node /usr/local/bin/node

五、部署
        1、上传
        本地开发了一些功能,需要放到外网上看一下,就先来个简单粗暴的VSCode+sftp插件https://www.jianshu.com/p/0724921285d4还有这个https://blog.csdn.net/sunny327/article/details/81866785
        2、启动
        这里用了pm2
        在Windows上是直接npm start,linux要换成 pm2 start npm --name MyAppName -- start 
        启动后可以 pm2 list 命令查看所有进程,还可以pm2 show MyAppName查看状态以及pm2log路径,遇到个Permission denied的错误,需要该权限,使用命令 chmod 777 fileName 参考https://blog.csdn.net/aaronthon/article/details/82883566
        还遇到了端口被占用的问题,解决方法如下
        netstat -ntulp 查询所有使用的端口
        netstat  -ntulp | grep 端口号 查看具体端口号使用情况
        lsof -i:端口号 查看端口被哪个进程占用
        kill -9 进程pid 如果需要杀死这个进程,使用这个命令
        3、访问
        又遇到问题了,Angular服务跑起来,其他电脑却不能访问,参考这里https://blog.csdn.net/weixin_34337381/article/details/92633804
        但其实这样部署是有问题的,应该只把angular项目build出的文件放到服务器就可以了,这里采用nginx代理,至于具体怎么操作,明天在学。

六、最后
        今天在A岛看倒放串,好欢乐啊https://adnmb2.com/t/16047311

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

推荐阅读更多精彩内容

  • 1、查找/var目录下不属于root、lp、gdm的所有文件 find /var! \( -user root -...
    hl大宝阅读 197评论 0 0
  • 首先来看一下一个爬虫平台的设计,作为一个爬虫平台,需要支撑多种不同的爬虫方式,所以一般爬虫平台需要包括 1、爬虫规...
    闪现码狗阅读 1,414评论 0 0
  • day13 课程过半回顾总结 01. 第一阶段回顾:服务器硬件知识1.系统运维工作:网络安全运维云计算运维大数据运...
    ManBu_x阅读 251评论 0 1
  • PHP的进阶之路 越来越多的人进入开发这个圈子,踏上码农这个不归路。根据这些年在开发圈子总结的LNMP程序猿发展轨...
    新锐研一阅读 131评论 0 0
  • Kubeadm安装kubernetes 步骤一:安装kubeadm 1、使用命令“apt-get install ...
    陈明槐阅读 1,470评论 0 0