云服务器 Linux > MongoDB > Doc
原部署文章:云服务器 Linux + Meteor + Mogodb + PM2 + Docker + Nginx 部署从入门到把坑填平,已弃
请参考本文:云服务器 Linux > MongoDB > Docker > Nginx | NodeJs + Meteor + PM2 容器隔离全流程部署指南
1、配置宿主机环境
安装 Linux + MongoDB + Docker + Nginx 宿主机环境
宿主机环境清单:
服务器: Linux Ubuntu 16.04 X64 或其它 Linux环境
数据库: MongoDB Enterprise 企业版 3.6
容器: Docker CE for Ubuntu
分流: Nginx
1.1、安装MongoDB
官方指南: 传送门,
注意事项: 使用 root,非 root用户请添加 sudo
1.1.1、导入包管理系统使用的公钥
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
1.1.2、创建List文件
echo "deb [ arch=amd64,arm64,ppc64el,s390x ] http://repo.mongodb.com/apt/ubuntu xenial/mongodb-enterprise/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-enterprise.list
1.1.3、重新加载本地包数据库
apt-get update
1.1.4、安装MongoDB Enterprise
apt-get install -y mongodb-enterprise
1.1.5、启动MongoDB
service mongod start
1.1.6、进入 MongoDB shell
mongo
1.2、 配置权限及创建管理员和用户
1.2.1、使用管理员集合
use admin
1.2.2、创建管理员用户和密码
db.createUser({user:'admin',pwd:'password',roles:['root']})
1.2.3、创建数据库
use db
1.2.4、创建数据库用户密码
db.createUser({user:'dbname',pwd:'password',roles:[{role:'dbOwner',db:'dbname'}]})
1.2.5、开启权限验证
退出 MongoDB shell,打开 MongoDB 配置文件,/etc/mongod.conf
vim /etc/mongod.conf
编辑文件,去除 security 前的 #,添加 authorization: enabled,后保存退出,如图:
![](https://img.haomeiwen.com/i8940905/d507e17bdf4413a6.png)
修改完成后,重启后生效:
service mongod restart
1.2.6、平时操作,使用管理验证登陆 Mongo Shell
mongo admin -u admin -p password
1.3、安装Docker
官方指南:传送门,
注意事项: 使用 root,非 root用户请添加 sudo
1.3.1、更新 apt-get 本地库
apt-get update
1.3.2、安装软件包以允许apt通过HTTPS使用存储库,全部复制粘贴到命令行执行:
apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
1.3.3、添加Docker的官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
1.3.4、设置稳定的存储库,全部复制粘贴到命令行执行:
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
1.3.5、再次更新 apt-get 包
apt-get update
1.3.6、开始安装 Docker
apt-get install docker-ce
1.3.7、安装完成后,查看容器列表
docker ps
1.4: 使用镜像创建固定ip容器
1.4.1、拉取镜像
docker pull ubuntu:16.04
1.4.2、查看镜像列表
docker images
1.4.3、配置网关
docker network create --subnet=192.168.0.0/16 mynetwork
1.4.4、创建镜像
docker run --restart=always -itd --name app --network=mynetwork --ip 192.168.0.101 -v /home/wwwroot/meteor/domain/app/web:/var/www/app/web ubuntu:latest
1.4.5、查看容器列表
docker ps
1.5: Nginx 安装配置
1.5.1、安装Nginx 参考详细传送门
apt-get install nginx
1.5.2、启动Nginx
/etc/init.d/nginx start
1.5.3、项目启动脚本
*:域名解析到服务器的外网IP地址,在meteor文件夹目录创建 host 文件夹,在host文件夹中创建项目同名 conf文件
![](https://img.haomeiwen.com/i8940905/5de38b5d82d91d0e.png)
cd /home/wwwroot/meteor/host && vim app.conf
在目录中创建 app.conf 文件,输入以下内容,并保存,每个项目都佣有自己的 conf 同名配置文件
![](https://img.haomeiwen.com/i8940905/dcdee0babc899407.png)
1.5.4、嵌入Nginx conf 主配置文件,快速找到 Nginx 主配置文件
nginx -t
1.5.5、添加项目conf 配置文件
vim /etc/nginx/nginx.conf
在http 最后添加以下内容:include /home/wwwroot/meteor/host/*.conf; 完成后如图:
![](https://img.haomeiwen.com/i8940905/0bead75ffced4a1a.png)
1.5.6、重启Nginx
/etc/init.d/nginx restart
2、在容器中部署项目
进入容器,安装 NodeJs + PM2 管理
容器环境清单:
环境: NodeJs 8.9
管理: PM2
2.1、安装NodeJs
官方指南:传送门,
注意事项: 以下所有操作,如无说明,都是进入容器后的操作,在容器中使用的是 root 帐户
2.1.1、进入容器
docker attach app
由于创建容器的时候绑定了宿主机的文件目录: /home/wwwroot/meteor/domain/app/web,在容器中指定路径目录为:/var/www/app/web。
2.1.2、准备安装环境
apt-get update && apt-get install curl sudo && curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
2.1.3、安装NodeJs
apt-get install nodejs
2.2、安装 PM2
npm install pm2@latest -g
2.3、项目部署
2.3.1 上传项目文件
退出容器,在宿主机:/home/wwwroot/meteor/domain/app/web 将Meteor项目打包文件放上传到目录,并解压,完成后如图所示:
![](https://img.haomeiwen.com/i8940905/cd997b93eae02954.png)
2.3.2、重新启动Docker
docker restart app
2.3.3、进入容器
docker attach app
2.3.4、进入项目根目录
/var/www/app/web
2.3.5、配置PM2启动文件
PM2 官网传送门
生成启动脚本,编辑
![](https://img.haomeiwen.com/i8940905/f688cf2b428f32c1.png)
2.3.6 启动项目
pm2 start ecosystem.config.js
![](https://img.haomeiwen.com/i8940905/d6be1c4e70417e70.png)
有任何问题,欢迎留言,部署记录,最后一步,生成pm2启动文件,请参考官方文档,我是用的旧的现成的。你可能会卡在这里很久,祝你好运。