背景
項目基於python+flask+mysql+gunicorn+supervisor進行搭建的一個web腳手架,架子已經基本搭建起來,備具Restful API、驗證session、頁面模板等功能。
通過這個腳手架開發的一個員工信息管理小系統,用來做Demo,完美使用!!!。
環境說明
-
開發環境
id | name | Version |
---|---|---|
1 | Os | MacOS10.15.6 |
2 | IDE | PyCharm |
-
基礎架構
id | name | Version | Function |
---|---|---|---|
1 | Python | 2.7 | 開發語言,基於python2 |
2 | flask | 1.1.2 | 使用的web框架 |
3 | MariaDB | 5.5.65 | 數據庫 |
4 | gunicorn | 20.0.4 | web服務與進程 |
5 | supervisor | 3.4.0 | 項目啓動、停止、重啓等操作 |
項目主要運行於Linux系統上,本人開發使用的是MacOS,線上服務使用的是騰訊雲服務器(Centos7.0)。
項目說明
-
項目地址(gitub)
-
Demo地址
-
賬號:admin
-
密碼:0
-
環境搭建與項目運行
- Centos7.0系統服務器(建議Mac或者雲服務器)
- mysql數據庫安裝與配置(略,建議baidu一下)
- 安裝git命令,如果有進行下一步(檢測:which git)
- git clone https://github.com/GIS90/base_webframe.git
- 更新web配置文件:etc/prod/config.py(線上)、etc/dev/config.py(測試),根據不同需求進行項目更改
- 安裝項目運行的環境:python install_env.py,建立項目獨立的運行環境,安裝了virtualenv、python、gunicorn、packages等操作,瞭解具體詳情請參考代碼
- cd 項目根目錄
- 項目根目錄:source .venv/bin/activate:激活項目環境
- 啓動項目:gunicorn -c etc/prod/gunicorn.conf(線上)、gunicorn -c etc/dev/gunicorn.conf(測試)或者手動啓動(下面有介紹),關於dev/prod配置請參考上面介紹
- 【選做】:安裝supervisor && 項目加入supervisor進行管理,項目包含了supervisord配置文件&&項目supervisor配置文件
-
配置說明
項目配置主要有2套,位於項目的根目錄etc下: - dev 測試環境 - prod 線上環境
每套配置文件夾下有3個配置文件,config與gunicorn進行綁定:
- config:項目的db、mail、log等配置,這裏的log記錄項目的log,關於項目相關的配置都可以在此文件進行配置
- gunicorn:項目啓動時所需要的IP、port、log、進程數量等配置
- supervisor: 項目管理的配置信息
.yaml格式的配置文件是有deploy/config.py進行解析的,如果在config.yaml配置文件中添加配置信息,需要在此文件進行解析添加,建議添加配置默認值。
-
手動啓動
-
項目根目錄wsgi.py文件加入
-
app.run(host="0.0.0.0", port=11111, debug=True)
-
執行sudo python wsgi.py,代碼目前已寫入,處於註釋狀態
注意:
- 通過手動啓動的項目爲dev開發環境配置,可在deploy/config.py中進行默認調整(mode = os.environ.get('mode') or 'dev')
- 如果手動啓動模式開啓,在gunicorn進行啓動,會error: [Errno 48] Address already in use.
- 啓動項目一定要用virtualenv安裝的python環境進行啓動(source .venv/bin/activate)
其他
-
安裝包
手動進行包安裝:
pip install -r requirements.txt
此程序運行於python2,其中requirements.txt項目所需要的包,已固定版本。
-
supervisor
管理項目進程的啓動、停止、重啓等操作。 安裝:
pip install supervisor
配置:
- dev:etc/dev/supervisor_base_webframe.conf
- prod:etc/prod/supervisor_base_webframe.conf
把指定環境的supervisor_base_webframe.conf cp到/etc/supervisord.d/include/*下。 項目root根目錄下有supervisord.conf文件,用來配置supervisord。
-
管理gunicorn
負責web項目進程、服務。
安裝:
pip install gunicorn
配置:
- dev:etc/dev/gunicorn.conf
- prod:etc/prod/gunicorn.conf
如需特別項目啓動信息,可以加入gunicorn.conf或者更改命令行gunicorn啓動方式加入參數即可。
-
sql
創建sql: deploy>sql>table_create_sql.sql,直接執行即可。
插入sql: deploy>sql>print_insert_sql.py,具體需要哪些insert的數據,看代碼,根據需要插入。
-
其他
- base_webframe_start.bash、base_webframe_end.bash爲手動方式進行項目啓動與項目結束(已廢棄)。
- deploy>utils>utils.py 爲工具方法,任何python2項目都適合使用。
結束語
如果覺得腳手架還可以,麻煩在github上點個小星星。。。。。。