CentOS 7部署Node.js+MongoDB:在VPS上从安装到Hello world
写好代码,花钱买了VPS,看着Charges一直上涨却无从下手?记一位新手司机从购买VPS到成功访问的过程
0.购买VPS
首先,选择VPS提供商,部署一个新的服务器(Deploy New Server),我使用的是Vultr提供的VPS
操作系统可以自由选择,我这边使用的是CentOS 7,选择其他操作系统的胖友可以搜一下相应操作系统的部署教程
1.使用PuTTY连接远程VPS
安装PuTTY
打开PuTTY,在 Host Name(or IP address) 那一栏填上VPS提供商给你的IP地址,然后点Open开启一个新会话(也可以点底下的Save保存一下,下次直接双击Saved Sessions中保存的的会话打开就行,无须输入IP)
打开后会出现一个Terminal,显示login as: ,这边输入VPS提供商给你的Username,默认应该是root
然后出现root@your ip address ‘s password: ,输入VPS提供商提供的Password(可以在本机上复制,然后在窗口中点击鼠标右键,复制的内容就被粘贴了),然后回车
注意:输入密码的时候不会显示你输入的东西
成功登录
2.准备工作
用yum安装gcc
yum -y install gcc make gcc-c++ openssl-devel wget
3.安装Node.js
这边以v4.5.0版本、使用源码安装为例,也可以使用EPEL
先用cd命令进入到你要安装Node.js的目录
到Node.js官网上复制源码的地址,然后执行:
wget https://nodejs.org/dist/v4.5.0/node-v4.5.0.tar.gz
然后解压提取文件
tar zxvf node-v4.5.0.tar.gz
执行后会生成node-v4.5.0文件夹,cd进入,里面有个configure文件
配置并编译#这步执行得比较久,可以先去喝杯咖啡
./configure
make
然后安装
make install
使用node -v检查是否安装成功
4.安装MongoDB
这边以v3.2.9、使用yum安装为例
MongoDB官网上提供了用yum安装的教程
我写了一篇翻译别人教程的Blog,跟官网上的类似
步骤是类似的,但是我们用官网上的命令进行安装,比较稳妥,那篇翻译的教程仅供理解用
5.给MongoDB添加用户认证
mongo
use db
db.createUser({user:'',pwd:'',roles:[{role:'readWrite',db:'db'}]}); #添加db数据库下的用户,拥有读写权限
db.system.users.find().pretty() #查看该数据库下所有的用户
记得在admin数据库下添加一个root用户用于以后关闭服务器
即 use admin,role: ‘root’
有关新建用户的更多信息请见这里
添加了用户后,在启动MongoDB时加上–auth参数即可开启用户认证
附上一条mongoose通过用户认证连接db的代码
mongoose.connect('mongodb://username:password@host:port/database?options...');
6.复制你的应用到VPS服务器
如果你的代码还没复制到VPS服务器上,你可以使用git,svn,ftp等方式放上去
我用的是git
安装git,使用yum安装
yum -y install git
然后就可以愉快地使用git clone了
7.开启端口
CentOS 7采用了firewalld防火墙,如果没有开启端口,则外网无法通过ip来访问服务器上的Node应用。
比如Node.js默认用了3000端口,所以我们需要开启相应的端口
查询端口是否开启:
firewall-cmd --query-port=3000/tcp
如果显示no,则没有开启端口
开启端口:
firewall-cmd --add-port=3000/tcp
也可以修改Node监听的端口,比如修改为80端口,然后再开启80端口
8.后台运行
后台运行MongoDB
在启动MongoDB时,加上–fork参数,即可生成一个子进程,当子进程成功运行,则父进程就会被停止,这时候便实现了后台运行MongoDB,可以关闭当前的终端
mongod --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/logs/log.log --logappend --auth --fork
如果要关闭后台MongoDB,则需要通过刚才添加的root用户调用shutdownServer()方法关闭
顺带一提,MongoDB没有正常关闭的话会很麻烦的,有时候还会造成一些严重后果
mongo
use admin
db.auth('usr', 'pwd') #用root用户登录,usr、pwd为root用户的用户名和密码
db.shutdownServer()
后台运行Node.js
这边后台启动Node.js使用一个Node.js的模块forever,可以输出错误和日志
当然还有其他的方法,比如nohup啥的
全局安装forever
npm install -g forever
cd进入应用程序的目录
如果是普通的Node应用
forever start app.js
如果用的Express
forever start -c 'npm start' ./
有关如何停止forever以及其他操作请参考forever官网及Google
我之前是看CNode社区里的方法直接杀掉Node的进程 pkill node ,可以,很暴力
9.Hello world
至此,你应该可以从外网通过ip+端口访问到你的Node应用了,你也可以绑定个域名之类的
10.附加
开机启动
可以将MongoDB和Node通过编辑/etc/rc.local加入到开机启动中
这里我没有试验过,先挂上一篇教程
Vim
使用Linux免不了的一个问题就是 如何编辑文件
久闻Vim之大名,今日有幸相会
yum -y install vim
其实刚入门的小白用Vim,只要掌握一些基础的操作,用起来也是很爽的
附一个Vim简明教程
参考
- Centos 安装 NodeJS - Hamy - 博客园
- 如何在CentOS 7安装Node.js_Linux教程_Linux公社-Linux系统门户网站
- Install MongoDB Community Edition on Red Hat Enterprise or CentOS Linux — MongoDB Manual 3.2
- 【Mongodb】3.0 配置身份验证db.createUser()说明 - NoSQL论坛 - 51CTO技术论坛_中国领先的IT技术社区
- 当mongodb开启用户认证后(auth=true),如何使用mongoose链接数据库 - CNode技术社区
- Centos 7 开启端口 - 鍒樻爧 - 博客园
- mongodb设置后台运行的方法MongoDB脚本之家
- Forever with `npm start` · Issue #540 · foreverjs/forever
- 如何 停止node进程? - CNode技术社区
- Linux下设置MongoDB开机自启动_Linux教程_Linux公社-Linux系统门户网站
- Vim简明教程【CoolShell】 - 飘过的小牛 - 博客频道 - CSDN.NET
CentOS 7部署Node.js+MongoDB:在VPS上从安装到Hello world的更多相关文章
- 部署Node.js项目(CentOS)
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...
- 阿里云部署Node.js项目(CentOS)
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...
- 【转载】在Centos系统上采用二进制文件部署Node.js环境
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...
- 【从零开始学习Node.js】一.在CentOS 7中部署Node.js环境
一.背景信息 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用.Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量又高效 ...
- 如何线上部署node.js项目
来源:http://blog.csdn.net/chenlinIT/article/details/73343793 前言 最近工作不是很忙,在空闲时间学习用node+express搭建自己的个人博客 ...
- AngularJS + Node.js + MongoDB开发
AngularJS + Node.js + MongoDB开发的基于位置的通讯录(by vczero) 一.闲扯 有一天班长说了,同学们希望我开发一个可以共享位置的通讯录,于是自己简单设计了下功能.包 ...
- Linux环境部署Node.js
介绍 先前在阿里云ECS上部署Node.js,碰到不少坑,都是自己不仔细造成的,所以准备再部署一遍,并记录下来.我将我的服务器重置了,这次选择的是CentOS 7.4 64位,上次的是7.2的. 使用 ...
- CentOS 7 部署 node 项目
CentOS 7 部署 node 项目 安装 node 环境 方法一:使用 wget 的方式下载压缩包进行解压 淘宝node镜像地址,进入地址选择自己想要安装的版本 wget https://npm. ...
- 8 步搭建 Node.js + MongoDB 项目的自动化持续集成
任何事情超过 90 秒就应该自动化,这是程序员的终极打开方式.Automating shapes smarter future. 这篇文章中,我们通过创建一个 Node.js + MongoDB 项目 ...
随机推荐
- CF451E Devu and Flowers (隔板法 容斥原理 Lucas定理 求逆元)
Codeforces Round #258 (Div. 2) Devu and Flowers E. Devu and Flowers time limit per test 4 seconds me ...
- tyvj1098 任务安排
描述 N个任务排成一个序列在一台机器上等待完成(顺序不得改变),这N个任务被分成若干批,每批包含相邻的若干任务.从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间是Ti.在每批任务开始前, ...
- (zz)linux awk
博文转载自http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html 谢谢原作者.条理很清楚,由浅入深.敲了每一行命令,正确无误. ...
- log4jdbc 使用
像 hibernate, mybatis 都是不打印真正执行的sql的,所以借助 log4jdbc 打印sql以及统计执行时间是非常方便的. 配置log4jdbc 有很多种方法,比如通过spring的 ...
- 创建maven工程时总是带有后缀名Maven Webapp解决办法
做项目时突然遇到了一个新问题,从前没有的,今天不知怎么了突然有了这个问题,maven创建web项目时多出了后缀名maven webapp ,很碍眼,而且访问路径还得删了,这个后缀名才可访问,所以找了答 ...
- HeapSort 堆排序 基于伪代码实现
此文原创, http://www.cnblogs.com/baokang/p/4735431.html ,禁止转载 GIF 动态图 伪代码 /* From Wikipedia, the free en ...
- servlet 之request
request对象中其他功能 一.转发和包含 转发==>用于一个servlet和一个jsp合作处理 servlet用于处理逻辑.jsp用于显示 ...
- Java设计模式之行为型模式
行为型模式共11种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 策略模式:策略模式的决定权在用户,系统本身提供不同 ...
- 64位win7下安装SQL Server 2008(图文解说版)
运行sql安装 单击安装-全新的sql server独立安装,如果我们准备好了故障转移群集,那么我们就可以创建故障转移群集sql 常规检查 一笑而过 选择版本,或者输入密钥自动识别版本 授权协议 支持 ...
- volatile关键字详解
本文系转载,原文链接:http://www.cnblogs.com/Chase/archive/2010/07/05/1771700.html,如有侵权,请联系我:534624117@qq.com 引 ...