阿里云服务器上部署node和mongodb教程


前言:从阿里云购买域名、ECS云服务器到实名认证、域名解析、网站备案再到部署node和mongodb数据到阿里云服务器,查了很多相干的材料,踩过有数的坑,终于实现了。作为一个没怎么接触过后端以及运维常识的前端er来说,真心不容易啊,所以特意写一篇博客记录一下本人踩过的坑,防止本人当前再踩同样的坑,同时,也能让一些想在阿里云服务器上部署本人的博客或者网站的老手少走弯路、少踩坑。

第一步,在阿里云购买域名和云服务器ECS

域名购买,点链接
购买阿里云服务器ECS,点链接
新注册的阿里云的用户或者淘宝账号实名认证的学生,首次购买有优惠,笔者购买的ECS配置:
CPU: 1核
内存: 1 GB
操作系统: CentOS 7.4 64位
留神:购买时会设置云服务登录明码,创立实例会有近程连贯明码,两个不是同一个明码
留神:不同操作系统的包装置治理命令不一样,比方:CentOS|Redhat linux应用的是yum、Ubuntu应用的是apt-get、Mac OS 是brew

购买完服务器当前能够进入控制台

在控制台点击云服务器ECS,再点击云服务器,能够进入云服务器实例列表界面,如图:

进入实例列表页面,点击治理可进入实例列表详情页面
在实例详情页面,能够操作治理实例,常常操作的次要有:进行、重启云服务器;配置实例平安组

点击平安组,可进入平安组列表页面,进入该页面,点击配置规定,进行配置平安组
留神:必须给云服务器ECS实例配置平安组,否则,部署的网站不能失常拜访,比方:http协定默认端口号拜访网站的必须配置80端口号平安组,https和mongodb也一样

点击近程连贯命令行输出界面(需输出近程连贯明码)
输出6位数字近程连贯明码,进入linux命令行操作界面
输出用户名:root
明码:云服务器登录明码
登录云服务器
输出linux命令行 cd / 进入云服务器根目录,如图:

  • Mac电脑:

可关上终端命令窗口进行操作

ssh root@公网IP地址// 输出云服务器登录明码

如图:

不喜爱命令行操作的同学能够下载图形化操作软件————FileZilla,来进行文件操作,如图:


  • Windows电脑:

图形化操作软件xshell或者winscp软件


命令行操作界面软件putty

留神:应用ssh root@公网IP地址 登录明码 进入的默认目录是root目录,该目录下是没有货色的,必须应用cd /回到根目录,而后输出cd ls查看根目录下所有的文件

第二步,在阿里云服务器上安装node和mongodb

依据第一步的操作,咱们相熟了

  • 阿里云服务器控制台相干的基本操作
  • 应用ssh root@0.0.0.0(0.0.0.0替换成本人云服务器ecs实例的公网IP地址) 加登录明码 登录到云服务器
  • 给实例增加平安组

装置node和mongodb

node - 编译后二进制文件在/usr/local/bin/node
mongodb - 装置在usr/local/mongodb
装置node

1、先降级CentOS,在命令窗口输出

yum -y update

2、降级实现当前,进入到/usr/local/src文件夹下,该文件夹通常用来寄存软件源代码

cd /usr/local/src

3、下载node代码压缩包并解压,通过命令行下载node源码压缩包可能比较慢,能够下载到本地电脑当前再通过FileZillas上传到云服务器站点指导目录,再进行解压
source code 下载地址

应用命令行下载

wget https://nodejs.org/dist/v10.13.0/node-v10.13.0.tar.gz

4、解压node源码压缩包

tar -xzvf node-v10.13.0.tar.gz

5、进入解压后的文件夹

cd node-v10.13.0

6、执行配置脚本进行编译预处理

./configure

这个步骤可能会呈现WARNING: failed to autodetect C++ compiler version (CXX=g++) 之类的谬误,能够参考文章

7、编译源代码

make

这个步骤可能会很久,能够先来一杯coffee再说

8、装置

当编译实现后,须要使之在零碎范畴内可用, 编译后的二进制文件将被搁置到零碎门路,默认状况下,Node二进制文件应该放在/user/local/bin/node文件夹下

make install

9、测试node装置是否胜利

node -v

显示版本号阐明装置胜利啦

10、编写一个app.js入口文件,测试一哈

把nodeapp代码放到/home文件夹下

cd /home // 进入home目录touch app.js // 创立app.js文件vim app.js // 编辑app.js文件
// app.jsconst http = require('http');const hostname = '0.0.0.0'; // 改成 阿里云实例公网IP地址const port = 3000; // 留神:没有指定端口号 默认是80端口 改成 80 监听默认80端口const server = http.createServer((req, res) => {    res.statusCode = 200;    res.setHeader('Content-Type', 'text/plain');    res.end('Hello World\n');});server.listen(port, hostname, () => {    console.log(`Server running at http://${hostname}:${port}/`);});

11、启动nodeapp

node app.js

如果只是应用node app.js的形式启动nodeapp利用 在本地并没有什么问题 咱们不敞开过程窗口就能够了 然而在云服务不太事实
所以咱们须要在云服务上全局装置pm2,应用pm2就能够保障咱们的nodeapp始终处于启动状态,除非你手动敞开

12、应用node自带的包装置管理器npm,装置express和pm2,这两个模块举荐全局装置
express - node web利用框架(可自行依据须要装置),具体用法
pm2 - 是一个带有负载平衡性能的Node利用的过程管理器.当你要把你的独立代码利用全副的服务器上的所有CPU,并保障过程永远都活着,具体用法
装置了pm2后,咱们一起来试试吧

pm2 start app.js --name '名称' // 启动命令start 重启restart 进行stop 


留神:1、端口号必须增加平安组 2、node启动的文件入口(如app.js)批改须要重启我的项目才会失效

13、在云服务器装置git

在云服务器上安装git当前,咱们就能够间接应用git命令操作来克隆或拉取git仓库中的我的项目了,每次我的项目更新间接应用git pull拉取就好了,简略不便又快捷

应用CentOS零碎安装包命令yum

yum install git

检测git装置是否胜利

git --version

显示git version x.x.x.x示意装置胜利

在装置完git当前,咱们就能够和平时在本地一样用git命令来操作git仓库中的我的项目啦

cd /home // 进入home目录git clone https://github.com/liaolongdong/react-next-project.git // 把react-next-project我的项目克隆到home目录下

14、域名解析

域名解析是把域名指向网站空间IP,让人们通过注册的域名能够不便地拜访到网站的一种服务。简略来说,就是把域名指向服务器IP地址。

点击控制台域名菜单,进入域名服务 -> 域名列表,如图:

而后点击域名解析按钮,进入域名解析设置页面,点击老手疏导,就能够把域名指向指定的云服务器的IP地址了,如图:

最初,通过域名拜访就能够拜访到你指定的服务器了,如图:

留神:设置的域名解析有可能不能立刻失效,依据TTL设置的工夫

在装置完node和git后,接下来装置mongodb
软件装置地位:/usr/local/mongodb
数据寄存地位:/usr/local/mongodb/data/db
日志寄存地位:/usr/local/mongodb/data/logs

数据和日志文件地位也能够放在/var/mongodb/data/var/mongodb/logs, 只有--dbpath指定正确即可

留神:/data/db 是 MongoDB 默认的启动的数据库门路(--dbpath)
如果你的数据库目录不是/data/db,能够通过 --dbpath 来指定

1、进入装置mongodb的目录,下载mongodb源代码压缩包,和后面node一样也能够把压缩包下载到本地,再通过图形化工具FileZilla软件上传到云服务器指导目录

cd /usr/localwget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.4.tgz

2、解压安装包,并重命名文件夹为mongodb

tar zxvf mongodb-linux-x86_64-4.0.4.tgzmv mongodb-linux-x86_64-4.0.4 mongodb

3、创立数据和日志寄存目录

mkdir /usr/local/mongodb/data/dbmkdir /usr/local/mongodb/data/logs

4、创立mongodb.conf配置文件, 放在usr/local/mongodb目录下

cd /usr/local/mongodbtouch mongodb.confvim mongodb.conf

mongodb.conf文件配置内容

#端口号(默认的端口号是27017,这里批改也是为了安全性)port=27017#数据目录(指向方才创立的数据文件目录)dbpath=/usr/local/mongodb/data/db#日志目录(指向方才创立的日志目录,并指定mongodb.log文件名,零碎会主动创立)logpath=/usr/local/mongodb/data/logs/mongodb.log #设置后盾运行fork=true #日志输入形式(写日志的模式:设置为true为追加。默认是笼罩。如果未指定此设置,启动时MongoDB的将笼罩现有的日志文件。)logappend=true #开启认证(默认是flase,不须要认证的,这里开启认证是为了安全性)auth=true#对外开放端口(默认是127.0.0.1)bind_ip=0.0.0.0

linux下装置mongodb详情可查看

5、启动和终止mongodb

启动mongodb
进入/usr/local/mongodb/bin目录

cd /usr/local/mongodb/bin./mongod --config ../mongodb.conf

启动胜利会看到

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

咱们能够通过应用ps aux |grep mongodb命令查看mongodb过程是否开启

root      2216  0.4  7.1 389076 72692 ?        Rl   10月24  98:36 ./mongod --config ../mongodb.confroot     19711  0.0  0.0 112720   980 pts/0    R+   14:47   0:00 grep --color=auto mongodb

第一个就是刚刚启动的过程,过程ID是2216,如果你想要终止过程,能够应用kill -9 2216来完结过程

如果咱们在本地的windows环境装置了mongodb,通常咱们测试是否开启mongodb的方法是间接在浏览器输出http://127.0.0.1:27017去查看,如果是检测云服务器是否开启mongodb,咱们能够在浏览器地址栏输出http:{云服务器公网IP地址}:{mongodb设置的端口号},比方:http://47.107.60.51:27017/进行查看,如果启动胜利会看到如下信息:

It looks like you are trying to access MongoDB over HTTP on the native driver port.

在linux零碎上还能够应用命令去查看是否开启:

netstat -anpt|grep 27017    27017是mongodb的端口号

能够看到第一条数据

tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      2216/./mongod 

笔者在浏览器输出地址栏查看云服务器是否开启mongodb时,遇到回绝拜访的问题,起因是因为没有在云服务器ECS设置该端口号(27017)的平安组,就是第一步特意强调的给实例配置对应端口号平安组规定

进入终端操作数据库

cd /usr/local/mongodb/bin./mongo

留神:这里如果不是mongodb默认端口号27017,则必须指定端口号,比方:./mongo --port=27018
执行完下面步骤后会看到

MongoDB shell version: 3.2.9connecting to: test>

MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和治理的交互式环境。
当你进入mongoDB后盾后,它默认会链接到 test 文档(数据库)
接下来就能够操作数据库啦

> show dbs

在mongodb数据库操作终端输出show dbs时,呈现如下谬误:

MongoDB shell version: 3.2.9connecting to: test> show dbs // 显示数据库admin   0.000GBconfig  0.000GBlocal   0.000GB> 

mongodb默认是没有开启平安认证的,对于部署在云上就显得及其不平安,上面咱们为mongodb的admin数据库创立用户。
mongodb数据库有以下特点:
1,没有默认管理员账号,所以要先增加管理员账号,在开启权限认证。
2,切换到admin数据库,增加的账号才是管理员账号。
3,用户只能在用户所在数据库登录,包含管理员账号。
4,管理员能够治理所有数据库,然而不能间接治理其余数据库,要先在admin数据库认证后才能够。

晓得以上几点当前,咱们把数据库切换到admin

> db // 查看以后处在数据库test> use admin // 切换到admin数据库switched to db admin> db.createUser({user:"appAdmin",pwd:"password",roles:[{role:"userAdminAnyDatabase",db:"admin"}]}) // 创立用户Successfully added user: {    "user" : "appAdmin",    "roles" : [        {            "role" : "userAdminAnyDatabase",            "db" : "admin"        }    ]}> db.auth('appAdmin', 'password') // 应用db.auth()验证User是否有权限拜访以后数据库1 // 示意有权限> db.createCollection('user') // 创立文档(表){ "ok" : 1 }> show collections // 显示以后数据库下的文档(表)user> db.user.insert({name: 'better', age: 18}) // 往user文档中增加一条数据WriteResult({ "nInserted" : 1 })

留神:如果呈现相似的谬误"errmsg" : "not authorized on admin to execute ,则阐明没有权限
解决方案:给用户授予相应的操作权限

> db.grantRolesToUser('appAdmin', [{role: 'dbOwner', db:'admin'}])

mongodb数据库角色权限,能够参考这篇文章

能够应用mongodb图形化软件(Robo 3T),下载链接


mongodb数据库连贯\增\删\改\查操作就不再做具体介绍了,内容太多了,更多内容详见mongodb

参考文章:

部署Node.js我的项目(CentOS)
Nodejs 部署到阿里云全过程
手把手教你在阿里云CentOS7上部署基于MongoDB+Node.js的博客
如何将网站部署到阿里云服务器
linux下装置mongodb详情可查看
在Linux服务器中配置mongodb环境
阿里云centos下部署mongodb
Mongoose根底入门
SSH 放弃连贯 (解决Broken pipe)

本文由mdnice多平台公布