Deployment
一、安装数据库 安装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;
}
}
}