手工部署cmdb
1.准备好容器
mysql(用来存储数据),python3(主项目的运行环境),redis(实现快速存储),rabbitmq(用来提供管道给celery分发任务id实现异步命令执行),nginx(用来实现反向代理)
注意起容器的时候加上 --network test 实现容器之间网络相同
docker network create -d bridge test (创建一个名为test的网络,它的模式为桥接)

2.拉取gitlab代码
进入python3环境的容器拉取代码
git clone -b 所开发的分支 sshgit@xxxxxx
在之前项目的主目录下
pip3 freeze > requestment.txt 冻结执行项目的环境并保存
在容器克隆下来项目后执行
pip3 install -r requestment.txt 下载所需环境
接下来需要处理django环境中的static文件,在settings中写入
STATIC_ROOT = os.path.join(BASE_DIR,"allstatic")
注释掉
#STATICFILES_DIRS = [
# os.path.join(BASE_DIR, 'static'),
#]
在项目的主环境下执行
python3 manage.py collectstatic 生成目录 allstatic
收集所有静态文件处理完毕项目的静态文件之后, 就可以让后面提到的 uwsgi 或者 nginx 中的任何一个很方便的使用了
Uwsgi 处理 socket 连接
安装 pip3 install uwsgi
继续在当前目录下创建 conf/uwsgi.ini 写入
[uwsgi]
chdir = /opt/cmdbteam/auto_cmdb #主项目路径
socket = 172.20.0.4:80 #给端口nginx实现代理
#http = 172.20.0.4:80
#static-map = /static=/opt/cmdbteam/auto_cmdb/allstatic
module = auto_cmdb.wsgi
master = true
processes = 4
vacuum = true
logto = /tmp/auto_cmdb.log
在项目的主目录下执行
uwsgi --ini conf/uwsgi.ini
即可运行原来的django项目
3.实现nginx代理
起好nginx容器,记住他映射的80端口
在物理机上可执行
docker cp cmdb_server:/opt/cmdbteam/auto_cmdb/allstatic .
docker cp allstatic nginx_server:/
将静态文件搬去到nginx容器里
进入nginx容器,vi /etc/nginx/conf.d/default.conf
upstream django {
server cmdb_server:80;
}
server {
listen 80;
server_name nginx_server;
charset utf-8;
client_max_body_size 75M;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location /static {
alias /allstatic;
}
location / {
uwsgi_pass django;
include uwsgi_params;
}
保存退出,物理机上执行docker restart nginx_server 重起nginx服务
浏览器访问 本机IP:nginx_server映射的端口就实现访问,nginx实现了代理
关于里面的异步执行命令后续分析。。。。
网友评论