用nodejs+mongo做了一个自己的项目,想放到云主机上,做完了发现一头雾水,毫无头绪,但愿此文章能给和我差不多的新手帮助。 首先 怎么把代码弄到服务器上 话说java项目直接打包成war包,C#在vs里发布成dll,这nodejs怎么搞,就这也苦逼了半天。 结论:nodejs是脚本语言,不需要编译,你写的所有.js文件都要上传服务器。。。。。和php差不多 我的做法,在oschina里弄了个私人项目,传到oschina上,从上面克隆到服务器上。 cd dir //进入你放代码的目录 git clone https://git.oschina****/你的项目 cd 你的项目目录 node app.js //启动 如果需要更新 git pull origin 如果要分支 自己百度吧~
其次 云主机的选择 之前参加了一个线下的沙龙,有阿里的同学来分享alinode,他们自己修改了底层,做了一些监控,然后我就朝着这个方向选的。 钱也付了,主机开通了,发现alinode的服务器初始化版本都很低,node还是0.几版本的,还需要自己升级。 更苦逼的是楼主选错了主机,选了按量付费,还不能备案,还不能转包月,我可不想重新部署一份,放弃,转投了qq。 结果发现qq要便宜一点(不算打广告吧,实话实说啊),而且也有node环境,于是就搞了一个,但是alinode那高大上的监控肯定没了,基本的cpu啊,内存监控还是有的。 艰苦的备案中~
然后 部署 主机开通后,弄个putty直接本地ssh连接。
- 先检查node的版本,什么?太低?升级,怎么升级?去菜鸟网络里看教程吧。。。 什么wget不下来,。。。。。先本地下载,上传自己别的主机,或者其他人的主机,再wget试试。https不行?那换成http试试。
- npm版本太低?升级!怎么升级?如下: npm install npm -------后面的参数
- nginx安装 这个麻烦啊 ,还要装一堆,对于c#开发来说如噩梦一般,还要wget代码,然后编译,然后安装,我去~ 自己百度吧。 nginx的部署,复杂的我也不会,我就是把nginx的80端口指向了nodejs的3000端口。 怎么配 还是百度下吧,我发下我的配置: upstream nodejs { server 127.0.0.1:3000; #server 127.0.0.1:3001; keepalive 64; }
server { listen 80; server_name www.域名.cn 域名.cn;//写本文的时候发现这个地方还写错了,还解析成功了,见了鬼了,我也不知道这个有没有用。 access_log /usr/local/nginx/log/access.log; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_set_header Connection “”; proxy_pass http://nodejs; } } nginx的重启: cd /usr/local/nginx/sbin ./nginx -s reload
数据库 安装mongodb,建表 这个不难的,自己百度吧,麻烦的可能会wget不下来,就像上面说的把https换成http,或者借别人的主机用下。 域名解析 这个不说了吧。
最后 启动 node app.js 关闭后进程就over了,怎么办? 感谢cnode,我用的forever。 npm install forever cnode里朋友发的帖子里还提了sudo,不知道干啥的,我加了报错,就没加。 装好后 forever start app.js -harmony //我用了koa,yield,所以要-harmony forever stop app.js //关闭
差不多了吧。本人菜鸟,好多linux命令也不会,nodejs全自学,祝大家好运! 老鸟请忽略~
我一开始也是这么折腾来的,不过我用的是国外的vps
很多都过时的
- 安装node 4以上吧,不要要-harmony
- forever没有pm2好的,另外npm install forever应该是npm install -g forever
- 源码处理,一个deploy Ssh key即可
继续加油
今天我在用小鸟云 localhost:3000能访问 换个电脑浏览器http://127.6.78.3:3000就不行什么原因啊
@i5ting 发展太快了,一个还没搞明白,就出了一堆了
@sonong 查hosts去
@xupeng086 哈哈,是挺快的,不过这是也是好事啊,是不?
提个建议,多用git tag -a 对两用发布的代码打上tag标签,每一个版本就是一个tag ,如v1.2.0,v1.2.1,这样在云服务器上部署代码时就是git tag fetch origin v1.2.1 类似这样的命令拉代码,可以清晰的看不版本演进,同时万一出了什么错直接拉上一个tag做为回滚代码的作用使用哦,其他好处慢慢体会还是体会得到的嘿嘿