walle-代码部署平台搭建

在参考了walle给的官方文档后,决定自己用docker构建walle代码环境;如果要搭建到本机的话,极有可能将服务器玩坏,容器的话删除创建很方便;而官方给的docker镜像感觉很难受,最后启动了三个容器构成了整个walle,真心觉得不舒服.

1、我先将walle的代码放到了服务器的  /data/wwwroot/walle 目录下;通过挂载的方式到容器里

git clone https://github.com/meolu/walle-web.git

1、构造容器: 宿主机贡献出:  5000 -> 容器80端口
    

docker run -it -v /data/wwwroot/walle-web:/data/wwwroot/walle-web -p 5000:80 --name python_demo ubuntu:latest /bin/bash


2、安装、更新必要的软件

apt-get update
apt-get install vim-gtk
apt-get install nginx

3、开始安装 walle的python扩展(walle给的 sh admin.sh init命令如果执行不成功则执行 它下面的6步)
#sh admin.sh init (相当于这个操作中具体执行的命令)
    (1)apt install libmysqld-dev libmysqlclient-dev python-dev python-virtualenv python-pip
    (2)pip install virtualenv
    (3)virtualenv --no-site-packages -p /usr/local/bin/python2.7 venv         (安装虚拟环境)
    (4)source ./venv/bin/activate(激活虚拟环境) 
    (5)pip install -r ./requirements/prod.txt(安装其他一些东东)
    (6)export GIT_PYTHON_REFRESH=quiet


sh admin.sh  migration (如果执行失败,则分开执行以下5步)
    (1)export FLASK_APP=waller.py
    (2)flask db upgrade
    (3)pip install flask
    (4)pip install flask-migrate
    (5)pip install flask-sqlalchemy

宿主机的nginx文件:
    server {
        listen 80;
        server_name  walle.zhangqi.art; # 域名设置

        location / {
            proxy_pass      http://127.0.0.1:5000;
        proxy_redirect      off;
        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

容器中的nginx文件:
    server {
        listen       80;
        server_name  walle.zhangqi.art; # 域名设置
        access_log   /data/wwwroot/walle-web/walle.log;
        index index.html index.htm; # 日志目录

        location / {
            try_files $uri $uri/ /index.html;
            add_header access-control-allow-origin *;
            root /data/wwwroot/walle-web/fe; # 前端代码已集成到walle-web,即walle-web/fe的绝对路径
        }

        location ^~ /api/ {
            add_header access-control-allow-origin *;
            #return 200 'ok';
            proxy_pass      http://127.0.0.1:5000;
            proxy_set_header X-Forwarded-Host $host:$server_port;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header    Origin        $host:$server_port;
            proxy_set_header    Referer       $host:$server_port;
        }

        location ^~ /socket.io/ {
            add_header access-control-allow-origin *;
            proxy_pass      http://127.0.0.1:5000;
            proxy_set_header X-Forwarded-Host $host:$server_port;
            proxy_set_header  X-Real-IP  $remote_addr;
            #proxy_set_header    Origin        $host:$server_port;
            proxy_set_header    Referer       $host:$server_port;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;

            # WebScoket Support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }

nginx重启之后就可以正常访问了;

初始账号:
    超管:[email protected] \ Walle123
    所有者:[email protected] \ Walle123  (可以新建项目)
    负责人:[email protected] \ Walle123
    开发者:[email protected] \ Walle123
    访客:[email protected] \ Walle123


使用过程中遇到的问题:
1、ssh远程连接 (如果之前有 ssh数据,则将 id_rsa.pub复制到 远程服务器上 authorized_keys)
walle所在的宿主机免密连接远程服务器
apt-get install openssh-server
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]


2、错误: bad Request
#proxy_set_header Origin $host:$server_port;
nginx里面把这行注释掉就正常了

3、提交上线单时出现空白错误框,查看 logs/runtime.log 报下面之类的。
    3e3ce3c735cf432db1cc9a5862f06f78: Sending packet MESSAGE data 2/walle,["branches",{"data":["dev","master","release","test"],"event":"branches"}]
    3e3ce3c735cf432db1cc9a5862f06f78: Received packet MESSAGE data 2/walle,["commits",{"branch":"dev"}]
    3e3ce3c735cf432db1cc9a5862f06f78: Received packet CLOSE data None
查看nginx的access.log文件发现他要连接 git仓库,http的需要输入用户名密码,所以在创建项目时git仓库的地址填ssh的,然后:
git config --global user.name 'zhangqi'
    git config --global user.email '[email protected]'
    (2)第二步
    删除 .ssh文件夹下的 known_hosts文件
    (3)git 命令(之后两个回车)
    ssh-keygen -t rsa -C "[email protected]"
    (4)将id_rsa.pub文件复制,登录到 github网站上面,找到设置SSH部分
然后再试就OK了

5、-bash: syntax error near unexpected token `('
    名字中不允许有 () ,新建上线单,上线

6、Remote 'origin' has no refspec set
不一定是代码的问题,我这里是由于 复制了上一个上线项目,然后编辑成了之前的,有问题,之后重新添加项目就没有问题了

你可能感兴趣的:(分布式,-,代码部署,python)