部署 MongoDB 的 Web 可视化工具:admin-mongo
不知道有多少同学遇到过类似反人类的需求:在 Web 上对 MongoDB 进行可视化管理。之前在服务器上用 node 跑了一套 adminMongo,甚是不稳定。用户端一些随机操作容易导致这个服务宕掉,查日志是这个样子的:
/adminMongo/node_modules/nedb/lib/datastore.js:77
if (err) { throw err; }
^
Error: "toString()" failed
at Buffer.toString (buffer.js:495:11)
at tryToString (fs.js:453:15)
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:444:12)
Google 半天资料也较少,遂欲弃之。
期间也折腾了一下 phpmoadmin,说实话距离我美好的想象相去甚远。
后来重新折腾了一遍 admin-mongo,感觉是我以前的打开方式不对。记录之,用于自我马克。
操作系统 CentOS 7,以 yum 方式安装 node:
yum install nodejs -y
理论上会为您安装好 node 与 npm。确认一下:
node --version
npm --version
我这里的情况是:
node --version
v6.17.1
npm --version
3.10.10
继续安装 pm2:
npm install -g pm2
确认一下:
pm2 --version
我这边是:
pm2 --version
3.3.1
然后就可以直接安装 admin-mongo:
npm install -g admin-mongo
安装目录是 /usr/lib/node_modules/admin-mongo,因此:
cd /usr/lib/node_modules/admin-mongo
pm2 start app.js --name admin-mongo
看到类似这样的信息:
[PM2] Starting /usr/lib/node_modules/admin-mongo/app.js in fork_mode (1 instance)
[PM2] Done.
┌─────────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├─────────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
│ admin-mongo │ 0 │ 0.0.23 │ fork │ 18021 │ online │ 0 │ 0s │ 0% │ 13.3 MB │ root │ disabled │
└─────────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
到这里 admin-mongo 就开始提供服务了,监听端口 TCP 1234。验证一下:
netstat -antlp | grep 1234
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 18021/node /usr/lib
好,完美。赶紧做个反代用起来,不想被直接访问到的话,我用了比较猥琐的办法:
echo 用户名:密码 > /usr/local/nginx/conf/vhost/xxx.passwd
vim /usr/local/nginx/conf/vhost/xxx.conf
在 location / 中增加:
auth_basic "请替换成您的登录提示";
auth_basic_user_file /usr/local/nginx/conf/vhost/xxx.passwd;
最后 server nginx reload 一下完事儿。