帮工作室部署了一个 MongoDB+Nodejs站点,简单记录一下吧
一、软件准备
1、安装 nodejs
因为debian8 镜像源里面的 nodejs 包过旧,遂采用如下方式安装
1 2 |
curl -sL https://deb.nodesource.com/setup_5.x | bash # 使用这个脚本进行自动安装,其实就是在 /etc/apt/sources.list.d 目录下面帮你添加了node官方的源 |
2、安装pm2
pm2 是一个很好玩的 nodejs 进程管理器
1 |
npm install -g pm2 |
3、安装 mongoDB
1 2 3 |
apt-get update apt-get install mongodb |
二、配置细节
1、MongoDB 设置管理员用户
mongodb默认是无需认证模式,有点安全意识的孩子都知道这样不好
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ mongo # 直接运行mongoDB的客户端 # 以下命令在mongoDB客户端中执行 > use admin # 使用 admin 这个库 > show collections; system.indexes system.users # 查看collections,如果没有这两个collection,可以使用 db.createCollection 创建 > db.addUser('admin','yourpassword'); # 添加了‘admin’用户,密码是 ’yourpassword‘ > db.system.users.find(); # 检查是否有数据了 > exit # 退出 |
然后修改mongoDB的配置文件,打开 身份认证 选项
1 2 3 4 5 6 7 |
sudo vim /etc/mongodb.conf # 编辑mongodb的配置文件 # 将下面这一行的注释去掉 auth = true sudo service mongodb restart # 重启 mongo 服务 |
2、MongoDB 新建用户以及数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ mongo # 打开mongodb客户端,自动连接到本地服务器 # 下列命令都在客户端内完成 > use admin > db.auth('admin','yourpassword') # 先 use admin,然后完成验证,之后才可以进行管理操作 > show dbs # 试一下,看能不能看到所有库 > use NewDB # 这样直接新建了一个数据库,但是因为里面没有数据,如果此时退出,这个库会被自动删除 > db.addUser('test_user','test_pass') # 给 NewDB 添加用户,默认这个用户是有读写权限的 |
3、MongoDB 导入数据库备份文件
这里假设备份文件所在目录是 /tmp/bak
1 2 |
mongorestore -d [database] -u [username] -p --directoryperdb /tmp/bak # 然后提示输入密码,按照惯例,输入过程是没有回显的 |
4、安装 Nodejs 项目依赖的包
如果项目根目录下面有 package.json 依赖描述文件,直接在该目录下运行 npm install 即可
5、修改数据库连接代码
如果有数据库连接的配置文件就很好了,没有的话,要自己去代码里修改,常见于app.js
1 2 3 4 5 6 |
# filename: app.js var dbUrl = 'mongodb://[username]:[password]@localhost:27017/[database]'; # 这种是带用户名密码的连接 var dbUrl = 'mongodb://localhost:27017/[database]'; # 这种是对应服务端无需验证的情况 |
三、 pm2 开机自启
类似于那些独立安装的 tomcat ,这边肯定要使用低权限用户运行
1 2 3 4 5 6 7 8 9 10 11 |
chown -R www-data:www-data /var/www/YourProject # 设置好文件权限 vim /etc/rc.local # 在 exit 0 之前添加下面这行命令 su - www-data -s /bin/sh -c 'pm2 start /var/www/YourProject/app.js' & # 这是采用的pm2,之后随时可以通过 su - www-data -s /bin/sh -c 'pm2 list' 来查看运行中的nodejs进程信息 #下面是另一种更原始的方案,没有使用pm2,请将执行日志重定向到需要的位置 su - www-data -s /bin/sh -c 'node /var/www/YourProject/app.js' >/dev/null & |
参考资料:mongodb 添加用户及权限设置详解