node /nginx/pm2环境及自动部署-centos

连接服务器并创建新用户

ssh [email protected]
adduser xxz     // 新增xxz用户
passwd xxz      // 设置xxz密码
groupadd wheel  // 新增wheel组
usermod -aG wheel xxz   // 为wheel和xxz增加root权限
复制代码

本地

本地生成私钥/公钥

~ ssh-keygen -t rsa -b 4096 -C "[email protected]"
// 3个回车
复制代码

开启ssh代理

.ssh eval "$(ssh-agent -s)"
复制代码

加入代理中

.ssh ssh-add ~/.ssh/id_rsa
复制代码

服务器

服务器生成私钥和公钥

~ ssh-keygen -t rsa -b 4096 -C "[email protected]"
// 3个回车
复制代码

开启ssh代理

.ssh eval "$(ssh-agent -s)"
复制代码

加入代理中

.ssh ssh-add ~/.ssh/id_rsa
复制代码

生成授权文件authorized_keys

.ssh vi authorized_keys
复制代码

把想要免密登录服务器的电脑的公钥 ip_rsa.pub 复制 authorized_keys

服务端授权 authorized_keys

.ssh chmod 600 authorized_keys
复制代码

重启ssh 服务

// 乌班图  
.ssh  service ssh restart
// centos
.ssh systemctl restart sshd.service
复制代码

安装node

更新yum源

sudo yum update
复制代码

安装一些必备软件

sudo yum install vim openssl build-essential libssl-dev wget curl git
复制代码

安装nvm

网址

https://github.com/creationix/nvm
复制代码

代码段

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
复制代码

使用nvm安装node

nvm install node    // 安装最新
复制代码

注册cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org
复制代码

安装一些包

npm i pm2 webpack vue-cli -g
复制代码

nginx

安装nginx

yum install nginx
复制代码

新增conf文件

// 进入nginx的conf.d目录
cd /etc/nginx/conf.d
// 新增配置
sudo vi xgjun-cn-3000
复制代码

conf内容

upstream app {
        server 139.199.209.96:3000
}

server {
        listen 80;
        server_name 139.199.209.96;
        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
                proxy_set_header HOST $http_host;
                proxy_set_header X-Nginx-Proxy true;
                proxy_pass http://xgjun.cn;
                proxy_redirect off;
        }
}
~
复制代码

查看nginx.conf

nginx sudo vi nginx.conf
// include /etc/nginx/conf.d/*.conf;
复制代码

检测nginx配置文件是否正确

nginx sudo nginx -t
复制代码

重启nginx

sudo service nginx restart
// sudo systemctl start nginx
复制代码

node代码部署

将本地的id_rsa.pub复制到码云

cat ~/.ssh/id_rsa.pub
https://gitee.com/profile/sshkeys
复制代码

用ssh拉去仓库

提示就输入yes

git clone [email protected]:xuxiaozhou08/deploy.git
复制代码

将服务器的id_rsa.pub复制到码云

cat ~/.ssh/id_rsa.pub
https://gitee.com/profile/sshkeys
复制代码

用ssh拉去仓库

提示就输入yes

git clone [email protected]:xuxiaozhou08/deploy.git
复制代码

pm2代码部署

本地安装pm2

npm i pm2 -g
复制代码

本地项目里面deploy新增ecosystem.json文件

vi ecosystem.json
复制代码

内容

{
	"apps":[
		{
			"name": "deploy",	// 应用名称
			"script":"app.js",	// 启动的脚本
			"env":{
				"COMMON_VARIABLE":"true"
			},
			"env_production":{
				"NODE_ENV":"production"
			}
		}
	],
	// 部署的任务
	"deploy":{
		"production":{
			"user":"xxz",	// 用户
			"host":["139.199.209.96"],	// 主机
			"ref":"origin/master", 	// 主分支
			"repo":"[email protected]:xuxiaozhou08/deploy.git",	// 仓库地址
			"path":"/www/web/production",		// 部署到服务器的哪个位置
			"ssh_options":"StrictHostKeyChecking=no",	// 关闭ssh校验
			"env": {
				"NODE_ENV":"production"
			}
		}
	}
}
复制代码

服务器创建目录

sudo mkdir /www/web/
sudo chmod 777 /www
复制代码

提交ecosystem.json代码

git add .
git commit -m '111'
git push origin master
复制代码

本地运行deploy

pm2 deploy ecosystem.json production setup
复制代码

服务器会出现3个文件夹

// 路径
/www/web/production
// current  shared  source
复制代码

修改bash

用户根目录


复制代码

修改代码后提交到git仓库后执行

pm2 deploy ecosystem.json production
复制代码

问题是centos运行后git的head会一直停在初始化状态

{
	"apps":[
		{
			"name": "deploy",	// 应用名称
			"script":"app.js",	// 启动的脚本
			"env":{
				"COMMON_VARIABLE":"true"
			},
			"env_production":{
				"NODE_ENV":"production"
			}
		}
	],
	// 部署的任务
	"deploy":{
		"production":{
			"user":"xxz",	// 用户
			"host":["139.199.209.96"],	// 主机
			"port":"22",	// 端口
			"ref":"origin/master", 	// 主分支
			"repo":"[email protected]:xuxiaozhou08/deploy.git",	// 仓库地址
			"path":"/www/web/production",		// 部署到服务器的哪个位置
			"ssh_options":"StrictHostKeyChecking=no",	// 关闭ssh校验
			// 加粗git pull origin master
			"post-deploy" : "git pull origin master && npm install && pm2 startOrRestart ecosystem.json --env production",
      		// Environme
			"env": {
				"NODE_ENV":"production"
			}
		}
	}
}
复制代码

域名解析

ip指向域名

修改/etc/nginx/conf.d中的xgjun-cn-3000.conf

upstream app {
	server 139.199.209.96:3000;
}

server {
	listen 80;
	# server_name 139.199.209.96;
	server_name www.xgjun.cn;
	location / {
		proxy_set_header X-Real-IP $remote_addr;
      		proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        	proxy_set_header HOST $http_host;
        	proxy_set_header X-Nginx-Proxy true;
        	proxy_pass http://app;
        	proxy_redirect off;
	}
}
复制代码

重启nginx

sudo service nginx restart
复制代码

https

申请证书可以通过腾讯云

上传证书

scp -P 22 ./2_www.xgjun.cn.key [email protected]:/home/xxz
scp -P 22 ./1_www.xgjun.cn_bundle.crt [email protected]:/home/xxz
复制代码

修改nginx配置

找到

cd /etc/nginx/conf.d/
复制代码

修改

参考https://cloud.tencent.com/document/product/400/4143

代码

upstream api {
	server 139.199.209.96:3001;
}

server {
	listen 80;
	# server_name 139.199.209.96;
	server_name api.xgjun.cn;
	#rewrite ^(.*) https://$host$1 permanent;
	return 301 https://api.xgjun.cn$request_uri;
}
server {

	listen 443;
        server_name api.xgjun.cn; #填写绑定证书的域名
        ssl on;
        ssl_certificate /home/xxz/1_api.xgjun.cn_bundle.crt;
        ssl_certificate_key /home/xxz/2_api.xgjun.cn.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
        ssl_prefer_server_ciphers on;
    // 注意空格
	if ($ssl_protocol = "") {
		rewrite ^(.*) https://$host$1 permanent;
	}

	location / {
		proxy_set_header X-Real-IP $remote_addr;
      		proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        	proxy_set_header HOST $http_host;
        	proxy_set_header X-Nginx-Proxy true;
        	proxy_pass http://api;
        	proxy_redirect off;
	}
}
复制代码

mongo ->centos

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

进入目录

cd /etc/yum.repos.d
复制代码

创建

sudo vi mongodb-org-3.6.repo
复制代码

写入内容

[mongodb-org-3.4] 
name = MongoDB 3.4版本库
baseurl = https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ 
gpgcheck = 0 
enabled = 1
gpgkey = https:// www.mongodb.org/static/pgp/server-3.6.asc
复制代码

安装

sudo yum install -y mongodb-org
复制代码

开启mongo

sudo service mongod start
复制代码

测试mongo

mongo
复制代码

设置用户名密码并且授权

use admin
// 新增管理员
db.createUser({user:'xxz_ad',pwd:'ai081012',roles:[{role:'userAdminAnyDatabase',db:'admin'}]})
// 授权
        // 账号     密码
db.auth('xxz_ad','ai081012')
复制代码

修改mongo.conf配置文件进行用户登陆验证

mongo.conf路径

/etc/mongod.conf
复制代码
// 找到#security修改为如下
security:
  authorization:'enabled'
复制代码

你可能感兴趣的:(运维,git,数据库)