云服务器 Linux > MongoDB > Docker > Nginx | NodeJs + Meteor + PM2 容器隔离全流程部署指南

请参考本文:云服务器 Linux > MongoDB > Docker > Nginx | NodeJs + Meteor + PM2 容器隔离全流程部署指南

1、配置宿主机环境
安装 Linux + MongoDB + Docker + Nginx 宿主机环境

宿主机环境清单:
服务器: Linux Ubuntu 16.04 X64 或其它 Linux环境
数据库: MongoDB Enterprise 企业版 4.0 
容器: Docker CE for Ubuntu
分流: Nginx 

1.1、安装MongoDB 

官方指南: 传送门,
注意事项: 使用 root,非 root用户请添加 sudo

1.1.1、导入包管理系统使用的公钥

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

1.1.2、创建List文件 (系统为:Ubuntu 16.04,不同版本请参考官网)

echo “deb [arch = amd64,arm64,ppc64el,s390x] http://repo.mongodb.com/apt/ubuntu xenial / mongodb-enterprise / 4.0 multiverse” | 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,后保存退出,如图:


云服务器 Linux > MongoDB > Docker > Nginx | NodeJs + Meteor + PM2 容器隔离全流程部署指南_第1张图片
开启权限验证

修改完成后,重启后生效:

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文件

云服务器 Linux > MongoDB > Docker > Nginx | NodeJs + Meteor + PM2 容器隔离全流程部署指南_第2张图片
host 文件夹

cd /home/wwwroot/meteor/host && vim app.conf

在目录中创建 app.conf 文件,输入以下内容,并保存,每个项目都佣有自己的 conf 同名配置文件

云服务器 Linux > MongoDB > Docker > Nginx | NodeJs + Meteor + PM2 容器隔离全流程部署指南_第3张图片
项目配置文件

1.5.4、嵌入Nginx conf 主配置文件,快速找到 Nginx 主配置文件

nginx -t

1.5.5、添加项目conf 配置文件

vim /etc/nginx/nginx.conf

在http 最后添加以下内容:include /home/wwwroot/meteor/host/*.conf; 完成后如图:

配置文件

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项目打包文件放上传到目录,并解压,完成后如图所示:

云服务器 Linux > MongoDB > Docker > Nginx | NodeJs + Meteor + PM2 容器隔离全流程部署指南_第4张图片
根目录

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 官网传送门

生成启动脚本,编辑

云服务器 Linux > MongoDB > Docker > Nginx | NodeJs + Meteor + PM2 容器隔离全流程部署指南_第5张图片

2.3.6 启动项目

pm2 start ecosystem.config.js

启动成功


有任何问题,欢迎留言,部署记录,最后一步,生成pm2启动文件,请参考官方文档,我是用的旧的现成的。你可能会卡在这里很久,祝你好运。

你可能感兴趣的:(云服务器 Linux > MongoDB > Docker > Nginx | NodeJs + Meteor + PM2 容器隔离全流程部署指南)