部署前提是服務器中要有項目中所需的其他服務,例:mysql數據庫,nginx,python解釋器等,在其他環境搭好的情況下使用此方式可簡單部署一個django項目。
至於安裝上面提到的這些,有興趣可點擊前往博客查看或CSDN博客查看
1、准備工作
- 創建干凈的虛擬環境
- 執行下載命令下載所需依賴包
- 測試數據庫鏈接
- 測試項目運行
- (其中詳細步驟上面博客鏈接中有,這里不贅述了)
2、下載Gunicorn
# workon進入項目的虛擬環境中下載
# pip install gunicorn
4、修改配置文件
# 修改settings.py文件的:INSTALLED_APPS
INSTALLED_APPS = [
...
'gunicorn', # 把gunicorn添加到apps中
]
5、使用Gunicorn命令運行django項目
# 在manage.py 同級目錄下執行命令,注:book是項目名
gunicorn book.wsgi -b 127.0.0.1:8000
基本參數列表:
-c 指定一個配置文件(py文件)
-b 與指定的socket進行綁定
-D 以守護進程形式來運行Gunicorn進程
-w 工作的進程數量,后面加數字;[gunicorn -w 2 untitled.wsgi -b 0.0.0.0:8000]
–threads 后面加數字,處理請求的最大線程數
-k 工作進程類型: sync(默認), eventlet, gevent, or tornado, gthread, gaiohttp.
–chdir 后面加路徑,跳轉到目錄下執行
–reload 后面可加參數,默認參數false,開啟為true,開啟時當代碼發生改變,會重新加載修改的代碼,並啟動程序,(熱加載)
-proxy-protocol
–worker-connections
–access-logfile
6、測試運行
# 執行命令curl后查看返回狀態,這里未開啟守護進程,加載需要再開一個終端執行命令
curl 127.0.0.1:8000
7、運行可能報錯
# 如果使用參數 -k gevent 有可能報錯,錯誤大致信息就是缺少gevent或者gevent版本低,pip下載一下就好,或者更換版本
# 同理使用其它 -k 參數也是如此
8、配置腳本文件啟動django項目
在manage.py同級目錄創建配置文件gunicorn.conf.py
# gunicorn_config.py
import logging
import logging.handlers
from logging.handlers import WatchedFileHandler
import os
import multiprocessing
bind = '127.0.0.1:8000' # 綁定ip和端口號
# chdir = '/opt/workspace/bookstore' # 目錄切換
# backlog = 500 # 監聽隊列
timeout = 60 # 超時
worker_class = 'gevent' # 使用gevent模式,還可以使用sync 模式,默認的是sync模式
workers = multiprocessing.cpu_count() * 2 + 1 # 進程數
threads = 2 # 指定每個進程開啟的線程數
loglevel = 'info' # 日志級別,這個日志級別指的是錯誤日志的級別,而訪問日志的級別無法設置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
accesslog = "/opt/workspace/bookstore/log/gunicorn_access.log" # 訪問日志文件
errorlog = "/opt/workspace/bookstore/log/gunicorn_error.log" # 錯誤日志文件
9、運行命令
# gunicorn.conf.py 是配置文件
# bookstore 是項目名
# gunicorn -c gunicorn.conf.py bookstore.wsgi:application
10、nginx簡單部署示例
找到nginx配置文件打開添加站點
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
server {
listen 80;
server_name www.flag.space, 109.39.89.199;
location / {
proxy_pass http://127.0.0.1:8000;
#root html;
#index index.html index.htm;
}
location /static {
alias /opt/workspace/bookstore/static;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
其中的 location / 中配置項目的url地址
location /static 中配置靜態文件路徑