centos7 walle2瓦力部署教程


項目部署上線,如果是單服務器,那么有多種方式可以部署,比如直接ftp上傳,或者直接git去拉取,人工操作也不會花費精力和時間,但是如果采用了集群模式,有多台服務器,那么依靠一台一台的去上傳代碼,就顯得耗費精力了,最重要的是,一旦某台服務器少傳或者錯傳了代碼,那么直接會影響服務運行,風險性高,如果代碼出現問題,要回滾到上一個穩定版本的話,也只有單台單台的去重新恢復。如果有一套部署機制,能夠實現多台服務器自動部署代碼,那就會減少大量的時間和精力,服務出現問題也能一鍵回滾到穩定版本,那么瓦力絕對是一個很好的選擇。當然,有小伙伴會說,有jekins可以實現,本人對jekins也有一定的了解,功能方面沒問題,對於管理界面來說,那就真的比不上瓦力了,另外配置的復雜程度方面,個人認為瓦力的配置相對容易些。借用瓦力官方的介紹,這是一款支持各種web代碼發布,php、java、python、go等代碼的發布、回滾可以通過web來一鍵完成, 一個可自由配置項目,更人性化,高顏值,支持git、多用戶、多語言、多項目、多環境同時部署的開源上線部署系統。walle目前為止有兩個大版本,分別為walle1.x版本和walle2.0,兩個版本不兼容,1.x版本使用php語言開發,使用web服務訪問,2.0版本使用python開發,腳本管理,在部署效率上,有了大幅的提升,此文就介紹一下,walle2.0版本在centos7上面的安裝部署過程,想部署1.x版本的伙伴可以自行去閱讀官方文檔部署。

walle1.x官方文檔地址:https://walle-web.io/docs/1/installation.html,walle2.0官方文檔地址:http://www.walle-web.io/docs/dependency.html

1.環境檢查

nginx

git

Python 3.5+ 和 Python 2.7+

MySQL 5.6.5以上,否則會在安裝時報錯

在MySQL 5.6.5版本之前,Automatic Initialization and Updating只適用於TIMESTAMP,而且一張表中,最多允許一個TIMESTAMP字段采用該特性。從MySQL 5.6.5開始,Automatic Initialization and Updating同時適用於TIMESTAMP和DATETIME,且不限制數量。

2.下載walle

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

3.nginx配置

nginx.conf文件內容如下:

upstream webservers {
    server 192.168.64.139:5000 weight=1; #域名設置,需要配置python的訪問端口
}

server {
    listen       80;
   #設置為自己的IP server_name
192.168.64.139; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { #這里設置為自己walle-web路徑 root /usr/share/nginx/html/walle-web/fe; index index.html index.htm; try_files $uri $uri/ /index.html; add_header access-control-allow-origin *; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ^~ /api/ { add_header access-control-allow-origin *; proxy_pass http://webservers; 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://webservers; 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"; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }

4.初始化

cd walle-web

sh admin.sh init

初始化會安裝更新各種依賴包,執行時間較長,耐心等待,執行成功,如下圖:

執行后,可能的報錯:

1.ERROR: Package 'gunicorn' requires a different Python: 2.7.5 not in '>=3.4'

解決方式:

需要需改文件配置:/walle-web/requirements/prod.txt  gunicorn>=19.1.1  改成 gunicorn==19.1.1

2.No module named flask.helpers

安裝pip install flask-helpers

pip list 檢查一下是否有 flask-helpers

修改完成后,重新執行初始化操作

5.配置數據庫

先創建數據庫walle

 CREATE DATABASE `walle` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

修改配置文件:/walle-web/walle/config/settings_prod.py

修改瓦力數據源配置信息@TODO 部分是需要修改的,大致如下:

# -*- coding: utf-8 -*-
"""
    walle-web
    Application configuration.
    注意: 帶了 @TODO 的地方可能需要你的調整

    :copyright: © 2015-2019 walle-web.io
    :created time: 2018-11-24 07:05:35
    :author: wushuiyong@walle-web.io
"""

import os
from walle.config.settings import Config
#修改為自己用戶名,密碼,地址
SETTINGS = {
    "MYSQL_USER": "root",
    "MYSQL_PASSWORD": "123456",
    "MYSQL_DATABASE": "walle",
    "MYSQL_ROOT_PASSWORD": "123456",
    "MYSQL_HOST": "127.0.0.1",
    "MYSQL_PORT": 3306,
}


class ProdConfig(Config):
    """Production configuration."""
    ENV = 'prod'
    DEBUG = False
    SQLALCHEMY_ECHO = False

    # 服務啟動 @TODO
    # HOST 修改為與 nginx server_name 一致.
    # 后續在web hooks與通知中用到此域名.
    HOST = '192.168.64.139'
    PORT = 5000
    # https True, http False
    SSL = False

    # 數據庫設置 @TODO
    SQLALCHEMY_DATABASE_URI = 'mysql://root:123456@localhost:3306/walle?charset=utf8'
    #SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{root}:{123456}@{localhost}:{3306}/{walle}?charset=utf8mb4'.format(
        #SETTINGS["MYSQL_USER"], SETTINGS["MYSQL_PASSWORD"], SETTINGS["MYSQL_HOST"], SETTINGS["MYSQL_PORT"],
        #SETTINGS["MYSQL_DATABASE"])

    # 阿里雲RDS強制釋放空閑連接導致經常報錯 mysql server has gone way
    # 適當修改該參數即可 單位為秒
    # N秒不用的連接自動釋放
    # SQLALCHEMY_POOL_RECYCLE = 30

    # 本地代碼檢出路徑(用戶查詢分支, 編譯, 打包) #TODO
    CODE_BASE = '/tmp/walle/codebase/'

    # 日志存儲路徑 @TODO
    # 默認為walle-web項目下logs, 可自定義路徑, 需以 / 結尾
    # LOG_PATH = '/var/logs/walle/'
    LOG_PATH = os.path.join(Config.PROJECT_ROOT, 'logs')
    LOG_PATH_ERROR = os.path.join(LOG_PATH, 'error.log')
    LOG_PATH_INFO = os.path.join(LOG_PATH, 'info.log')
    LOG_FILE_MAX_BYTES = 100 * 1024 * 1024

    # 郵箱配置 @TODO
    MAIL_SERVER = 'smtp.qq.com'
    MAIL_PORT = 465
    MAIL_USE_SSL = True
    MAIL_USE_TLS = False
    MAIL_DEFAULT_SENDER = 'xxxxxx'
    MAIL_USERNAME = 'xxxxxx'
    MAIL_PASSWORD = 'xxxxx'

    # 登錄cookie 防止退出瀏覽器重新登錄
    COOKIE_ENABLE = False

6.數據遷移

sh admin.sh migration

執行成功如下圖所示:

7.啟動/重啟

啟動:sh admin.sh start

重啟:sh admin.sh restart

查看啟動狀態:netstat -ntpl  看到5000端口已開啟

8.訪問

瀏覽器訪問:http://192.168.64.139,如果出現任何打開頁面出現404或者只顯示’wall-web 2.0’等,都是nginx配置或者服務沒有啟動,細心檢查。walle運行過程,以及部署過程出錯了,具體日志可以查看logs/runtime.log

默認提供的登錄賬戶:

超管:super@walle-web.io  Walle123

所有者:owner@walle-web.io Walle123

負責人:master@walle-web.io Walle123

開發者:developer@walle-web.io Walle123

訪客:reporter@walle-web.io  Walle123

登錄后,界面如下:

到此,就把walle成功的部署了,后續還會有walle項目配置,部署上線的流程介紹,有興趣的伙伴可以留意一下。各位如果覺得還有點意義,煩請點一下推薦,加個關注,互相交流。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM