Skip to content

Deployment

YunCarrie edited this page Mar 31, 2020 · 1 revision

一、安装数据库 安装redis \ MySQL

二、添加数据库

redis创建一个库;

mysql中创建一个库及表,表列表在atp-auto-core工程文件下

三、后端部署 在atp-auto-core.atp.config新增一份配置文件, 新环境的redis,mysql

在atp-auto-core.atp.config下新增新环境配置文件,并修改load_config.py引入新环境类

在atp-auto-core.supervisor下新增新环境配置文件

atp-auto-core.atp.config.load_config.py 添加新环境的加载代码

atp-auto-core.atp.env.py 添加新环境的ip_env_map

atp-auto-core.atp.flower_config 添加新环境的broker_api_map

另:如需用到邮件发送,远程服务器,需单独修改atp.api send_Email和ssh_client文件

进入服务器,新建目录,且将工程代码打包(如atp-auto-core.zip)上传到此目录并解压:

cd /usr/local/src/ 
mkdir atp
cd atp 

新建必须的目录:

cd /usr/local/src/atp  
mkdir downloads
mkdir upload
mkdir run_case_logs
mkdir run_task_logs
mkdir reports
mkdir temp-backup
cd /usr/local/src/logs
mkdir atp-auto-core

创建日志文件夹:

cd /usr/local/src/logs 
mkdir atp-auto-core

四、安装miniconda2、miniconda3

miniconda下载地址:https://conda.io/miniconda.html

以安装miniconda3为例

sh Miniconda3-latest-Linux-x86_64.sh

安装交互:

ENTER

yes

/usr/local/miniconda3

#yes | no --选no(yes 和 no的区别是是否将conda 环境变量直接添加到 .bashrc)

miniconda2的安装过程类似,只需要修改安装包和安装路径

五、安装后端工程需要的第三方库

由于supervisor 只支持python2.x,所以使用miniconda2下的pip安装supervisor

cd /usr/local/miniconda2/bin
./pip install supervisor -i https://pypi.douban.com/simple/

cd /usr/local/miniconda3/bin
./pip install gunicorn==19.8.1 -i https://pypi.douban.com/simple/
./pip install -r /usr/local/src/atp/atp-auto-core/requirements.txt -i https://pypi.douban.com/simple/

六、新增编辑supervisor配置文件

执行程序生成 配置文件

cd  /etc
mkdir supervisor

/usr/local/miniconda2/bin/echo_supervisord_conf > /etc/supervisor/supervisord_ini.conf

cd /usr/local/src/
mkdir supervisor

把上面默认文件上传此处,再编辑关键配置或者把默认配置文件下载本地改好之后直接上传

vi /usr/local/src/supervisor/supervisord.conf

关键配置:

[unix_http_server]

file=/tmp/supervisor.sock

[inet_http_server]

port=0.0.0.0:9001

[rpcinterface:supervisor]

supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisord]

nodaemon=true

[supervisorctl]

serverurl=unix:///tmp/supervisor.sock

serverurl=http://0.0.0.0:9001

[include]

files = /usr/local/src/atp/atp-auto-core/supervisor/*.conf

七、通过Supervisor启动后端工程

启动supervisord

/usr/local/miniconda2/bin/supervisord -c /usr/local/src/supervisor/supervisord.conf

使用supervisorctl启动环境(xxxx对应环境),显示 【flask_atp_auto_xxxx: started 】即表示启动成功

/usr/local/miniconda2/bin/supervisorctl -c /usr/local/src/supervisor/supervisord.conf

start flask_atp_auto_xxxx

使用supervisor web管理页面:

浏览器打开http://xx.xx.xx.xx:9001,即可通过页面访问和管理supervisor

八、rabbitmq配置

1、安装docker

yum install docker

2、启动docker

systemctl start docker

3、拉取rabbitmq镜像

docker pull rabbitmq:3.7.17-management

4、启动容器

docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 -p 15674:15674 -p 61613:61613 rabbitmq:3.7.17-management

5、启动rabbitmq插件

docker exec a4877623b6c7 rabbitmq-plugins enable rabbitmq_web_stomp rabbitmq_stomp

6、查看容器运行状态

docker ps -a

7、访问管理页面http://...:15672,默认用户名guest 密码guest

8、进行其他管理操作,如新增用户,vhost等

九、前端部署

1、添加配置

根目录下添加一份文件.env.**,环境信息

根目录下 package.json里面要加上打包命令

在src/menu/index.js文件里面,增加新环境的判断,用于将一些不需要的菜单屏蔽掉

2、安装依赖包(-g 是全局安装,这样本地不用每次打包前都执行这个命令了)

npm install -g

3、构建生产包(不同环境,分别对应uat,test),会生成一个dist文件夹

npm run uat/test

4、到服务器上部署,把本地生成的dist文件夹放到服务器此目录下

cd /usr/local/src/atp/atp-web,

十、安装Nginx

cd /usr/sbin

#创建源:root账号无需sudo

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

 rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

#安装Nginx:

yum install -y nginx

#启动:

systemctl start nginx.service

#设置开机自动启动:

systemctl enable nginx.service

更新Nginx.conf主要内容:

#user nginx;
worker_processes 2;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
use epoll;
worker_connections 2048;
}

http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
# gzip压缩功能设置
# gzip on;
# gzip_min_length 1k;
# gzip_buffers 4 16k;
# gzip_http_version 1.0;
# gzip_comp_level 6;
# gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
# gzip_vary on;
# 设定负载均衡后台服务器列表
upstream atp_auto{
server **.**.**.**:7000;
}


# 很重要的虚拟主机配置
server {
listen 8899;
server_name **.**.**.**;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/local/src/atp/atp-web/dist/;
index index.html index.htm;
}
location /reports/ {
alias /usr/local/src/atp/reports/;
index index.html index.htm;
}
location /upload/ {
alias /usr/local/src/atp/upload/;
index index.html index.htm;
}
location /atp/download/ {
alias /usr/local/src/atp/downloads/;
index index.html index.htm;
}
location /atp/auto/ {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
add_header Access-Control-Allow-Headers DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-IP,X-Token,Token;
proxy_pass http://atp_auto;
proxy_set_header Host $host:8899;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
Clone this wiki locally