Flask實戰第68天:項目上線部署


在開發機上的准備工作

1、確認項目沒有bug

2、用pip freeze >requirements.txt將當前環境的包導出到requirements.txt文件中,方便部署的時候安裝

3、將dysms_python文件准備好。因為短信驗證碼的這個帶服務器需要手動安裝

4、在https://git-scm.com/downloads下載Windows版本的客戶端。然后雙擊一頓點擊下一步安裝即可

5、然后使用碼雲或者自己搭建gitlab,創建一個倉庫

6、進入項目,使用以下命令做代碼提交

git init
git remote add origin xxx.git
git add .
git commit -m 'first commit'
git pull origin master --allow-unrelated-histories
git push origin master

服務器上的准備工作

安裝好項目用到的Python

sudo apt install python3
sudo apt install python3-pip
pip3 install --upgrade pip

安裝virtualenv以及virutalenvwrapper。並創建虛擬環境

pip3 install virtualenv
pip3 install virtualenvwrapper
sudo apt install vim

vim ~/.bashrc 進入文件中,填入以下兩行代碼

 export WORKON_HOME=$HOME/.virtualenvs
  source /usr/local/bin/virtualenvwrapper.sh

創建虛擬環境

mkvirtualenv --python=/usr/bin/python3 zlbbs-env

安裝git

sudo apt install git

安裝MySQL服務器和客戶端

 > sudo apt install mysql-server mysql-client
 > sudo apt-get install libmysqld-dev

進入虛擬環境中,然后進入到項目所在目錄,執行命令:pip install -r requirements.txt,安裝好相應的包

在mysql數據庫中,創建相應的數據庫。
執行python manage.py db upgrade命令,將遷移文件,映射到數據庫中,創建相應的表。
執行python zlbbs.py,然后在你自己電腦上,在瀏覽器中輸入http://你的服務器的ip地址:8000/,訪問下網站所有頁 面,確保所有頁面都沒有錯誤。
設置DEBUG=False,避免如果你的網站產生錯誤,而將錯誤信息暴漏給用戶

安裝uwsgi

uwsgi是一個應用服務器,非靜態文件的網絡請求就必須通過他完成,他也可以充當靜態文件服務器,但不是他的強項。uwsgi是使用python編寫的,因此通過pip install uwsgi就可以了。(uwsgi必須安裝在系統級別的Python環境中,不要安裝到虛擬環境中)。
使用命令uwsgi --http :8000 --wsgi-file /opt/zlbbs/zlbbs.py -callable app -H /root/.virtualenvs/zlbbs-env。用uwsgi啟動項目,如果能夠在瀏覽器中訪問到這個頁面,說明uwsgi可以加載項目了

 

 

編寫uwsgi配置文件

[uwsgi]

# Django相關的配置
# 必須全部為絕對路徑
# 項目的路徑
chdir           = /srv/zlbbs
# 模塊
module          = zlbbs
# Python虛擬環境的路徑
home            = /root/.virtualenvs/zlbbs-env

# 進程相關的設置
# 主進程
master          = true
# 最大數量的工作進程
processes       = 10
# socket文件路徑,絕對路徑
socket          = /srv/zlbbs/zlbbs.sock
# wsgi文件
wsgi-file       = /srv/zlbbs/wsgi.py
# wsgi文件的app變量
callable        = app
# 設置socket的權限
chmod-socket    = 666
# 退出的時候是否清理環境
vacuum          = true

然后使用命令uwsgi --ini zlbbs_uwsgi.ini,看下是否還能啟動這個項目

安裝nginx

nginx是一個web服務器。用來加載靜態文件和接收http請求的。通過命令sudo apt install nginx即可安裝。
nginx常用命令:
啟動nginx:service nginx start
關閉nginx:service nginx stop
重啟nginx:service nginx restart

 

編寫nginx配置文件

在/etc/nginx/conf.d目錄下,新建一個文件,叫做zlbbs.conf,然后將以下代碼粘貼進去:

upstream zlbbs {
    server unix:///srv/zlbbs/zlbbs.sock; 
}

# 配置服務器
server {
    # 監聽的端口號
    listen      80;
    # 域名
    server_name 192.168.0.101; 
    charset     utf-8;

    # 最大的文件上傳尺寸
    client_max_body_size 75M;  

    # 靜態文件訪問的url
    location /static {
        # 靜態文件地址
        alias /srv/zlbbs/static; 
    }

    # 最后,發送所有非靜態文件請求到django服務器
    location / {
        uwsgi_pass  zlbbs;
        # uwsgi_params文件地址
        include     /etc/nginx/uwsgi_params; 
    }
}

寫完配置文件后,為了測試配置文件是否設置成功,運行命令:service nginx configtest,如果不報錯,說明成功。
每次修改完了配置文件,都要記得運行service nginx restart

使用supervisor配置

讓supervisor管理uwsgi,可以在uwsgi發生意外的情況下,會自動的重啟

supervisor的安裝:在系統級別的python環境下pip install supervisor。
在項目的根目錄下創建一個文件叫做zlbbs_supervisor.conf。內容如下

# supervisor的程序名字
    [program:zlbbs]
    # supervisor執行的命令
    command=uwsgi --ini zlbbs_uwsgi.ini
    # 項目的目錄
    directory = /srv/zlbbs 
    # 開始的時候等待多少秒
    startsecs=0
    # 停止的時候等待多少秒
    stopwaitsecs=0  
    # 自動開始
    autostart=true
    # 程序掛了后自動重啟
    autorestart=true
    # 輸出的log文件
    stdout_logfile=/srv/zlbbs/log/supervisord.log
    # 輸出的錯誤文件
    stderr_logfile=/srv/zlbbs/log/supervisord.err

    [supervisord]
    # log的級別
    loglevel=info

    # 使用supervisorctl的配置
    [supervisorctl]
    # 使用supervisorctl登錄的地址和端口號
    serverurl = http://127.0.0.1:9001

    # 登錄supervisorctl的用戶名和密碼
    username = admin
    password = 123

    [inet_http_server]
    # supervisor的服務器
    port = :9001
    # 用戶名和密碼
    username = admin
    password = 123

    [rpcinterface:supervisor]
    supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

然后使用命令supervisord -c zlbbs_supervisor.conf運行就可以了。
以后如果想要啟動uwsgi,就可以通過命令supervisorctl -c supervisor.conf進入到管理控制台,然后可以執行相關的命令進行管理:

status # 查看狀態
start program_name #啟動程序
restart program_name #重新啟動程序
stop program_name # 關閉程序
reload # 重新加載配置文件
quit # 退出控制台

 


免責聲明!

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



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