最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django uwsgi Nginx 的生產(chǎn)環(huán)境部署詳解

 更新時(shí)間:2019年02月02日 08:31:05   作者:Crazy丶土豆  
這篇文章主要介紹了Django uwsgi Nginx 的生產(chǎn)環(huán)境部署詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

配置生產(chǎn)環(huán)境

#setting.py 文件中

DEBUG = False  # 生產(chǎn)環(huán)境

# 允許訪問的域名,域名前加一個(gè)點(diǎn)表示允許訪問該域名下的子域名,比如 www.zmrenwu.com、
# test.zmrenwu.com 等二級(jí)域名同樣允許訪問。如果不加前面的點(diǎn)則只允許訪問 zmrenwu.com
ALLOWED_HOSTS = ["127.0.0.1",".blogzjl.site"]

創(chuàng)建Python虛擬環(huán)境

安裝 virtualenv

sudo pip3 install virtualenv

克隆Python的環(huán)境

#先到指定目錄下運(yùn)行, 我的虛擬環(huán)境是在 blogzjl.site 目錄下
#指定--python=python3 克隆Python3的環(huán)境
virtualenv --python=python3 env

#進(jìn)入虛擬環(huán)境
source /home/zjl/sites/blogzjl.site/env/bin/activate
#用戶名前,會(huì)出現(xiàn) (env) zjl@ ,表示進(jìn)入
#后面基本上都是在虛擬環(huán)境中完成的

收集靜態(tài)文件

先在settings中配置 STATIC_ROOT = os.path.join(BASE_DIR, 'static')

同時(shí)在mysite_nginx.conf 中將靜態(tài)文件的路徑改為 static 的絕對(duì)路徑

#在settings中配置

# STATIC_ROOT 指明了靜態(tài)文件的收集目錄,即項(xiàng)目根目錄(BASE_DIR)下的 static 文件夾
STATIC_ROOT = os.path.join(BASE_DIR, 'static')


#在命令行輸入
python3 manage.py collectstatic #將靜態(tài)文件copy到統(tǒng)一的目錄static下

uwsgi配置

安裝 uwsgi

pip3 install uwsgi

#可能需要更新pip才能安裝,根據(jù)提示輸入命令更新
pip install --upgrade pip

測(cè)試 uwsgi

在項(xiàng)目目錄下執(zhí)行

uwsgi --http 127.0.0.1:8080 --file BlogProject/wsgi.py --static-map=/static=static
#--http 這個(gè)就和runserver一樣指定IP 端口
#--file Django 項(xiàng)目中wsgi.py文件的路徑,和setting.py在同一個(gè)目錄下
#-- static 做一個(gè)映射,指定靜態(tài)文件

#可能會(huì)啟動(dòng)/訪問失敗,請(qǐng)檢查端口是否占用,file 或 static 路徑是否正確
#使用命令 netstat -nultp 查看端口使用情況
#關(guān)掉相關(guān)經(jīng)常 killall -9 uwsgi 或 kill -9 進(jìn)程號(hào)

執(zhí)行Linux命令 curl http://127.0.0.1:8080 訪問,查看是否是訪問成功后的頁面(可以啟動(dòng)DEBUG 對(duì)錯(cuò)誤頁面的相關(guān)調(diào)試)

配置文件

相當(dāng)于將 uwsgi --http 127.0.0.1:8080 --file BlogProject/wsgi.py --static-map=/static=static 這一長串命令配置到文件里,簡(jiǎn)化以后的啟動(dòng)命令

在自定義目錄或項(xiàng)目主目錄下創(chuàng)建uwsgi配置文件:blogzjl_uwsgi.ini(自定義命名,以 .ini 結(jié)束),我這里是在/home/zjl/sites/blogzjl.site/blogzjl/

路徑下自定義的一個(gè)目錄 script 存放所有配置(包括nginx)相關(guān)的文件

[uwsgi]
#the local unix socket file than commnuincate to Nginx

socket = /home/zjl/sites/blogzjl.site/blogzjl/script/uwsgi.sock

# 項(xiàng)目路徑
chdir = /home/zjl/sites/blogzjl.site/blogzjl/BlogProject/

# Django's wsgi file 項(xiàng)目中wsgi的位置
wsgi-file = BlogProject/wsgi.py


#進(jìn)程相關(guān)設(shè)置
# 進(jìn)程數(shù) 同 processes
worker = 5
#processes = 4
#線程數(shù)
#threads = 2

#指定靜態(tài)文件
static-map = /static=/home/zjl/sites/blogzjl.site/blogzjl/BlogProject/static

#主進(jìn)程啟動(dòng)
master = true

pidfile = /home/zjl/sites/blogzjl.site/blogzjl/script/uwsgi.pid

#static-map = /static = /home/zjl/sites/blogzjl.site/blogzjl/BlogProject/static

#啟動(dòng)uwsgi的用戶名和用戶組
uid = zjl
gid = zjl

#啟用線程
enable-threads = True
#設(shè)置自中斷時(shí)間
harakir = 30

#設(shè)置緩沖
post-buffering = 4096

#設(shè)置后臺(tái)運(yùn)行
daemonize = /home/zjl/sites/blogzjl.site/blogzjl/script/uwsgi.log

#monitor uwsgi status
#stats = 127.0.0.1:9191
# clear environment on exit 退出時(shí)清除環(huán)境
vacuum     = true

uwsgi 執(zhí)行的相關(guān)命令

#啟動(dòng)命令
#在項(xiàng)目目錄下
uwsgi --ini ../script/blogzjl-uwsgi.ini
#停止
uwsgi --stop ../script/uwsgi.pid
#重啟
uwsgi -- reload ../script/uwsgi.pid

#uwsgi.pid 為 配置文件中 pidfile 設(shè)置的值 ,用來控制uwsgi重啟或停止,

uwsgi 相關(guān)配置文件參數(shù)

master = true 
#啟動(dòng)主進(jìn)程,來管理其他進(jìn)程,其它的uwsgi進(jìn)程都是這個(gè)master進(jìn)程的子進(jìn)程,如果kill這個(gè)master進(jìn)程,相當(dāng)于重啟所有的uwsgi進(jìn)程。

chdir = /web/www/mysite 
#在app加載前切換到當(dāng)前目錄, 指定運(yùn)行目錄

module = mysite.wsgi 
# 加載一個(gè)WSGI模塊,這里加載mysite/wsgi.py這個(gè)模塊

py-autoreload=1 
#監(jiān)控python模塊mtime來觸發(fā)重載 (只在開發(fā)時(shí)使用)

lazy-apps=true 
#在每個(gè)worker而不是master中加載應(yīng)用

socket = /test/myapp.sock 
#指定socket文件,也可以指定為127.0.0.1:9000,這樣就會(huì)監(jiān)聽到網(wǎng)絡(luò)套接字

processes = 2 #啟動(dòng)2個(gè)工作進(jìn)程,生成指定數(shù)目的worker/進(jìn)程

buffer-size = 32768 
#設(shè)置用于uwsgi包解析的內(nèi)部緩存區(qū)大小為64k。默認(rèn)是4k。

daemonize = /var/log/myapp_uwsgi.log 
# 使進(jìn)程在后臺(tái)運(yùn)行,并將日志打到指定的日志文件或者udp服務(wù)器

log-maxsize = 5000000 #設(shè)置最大日志文件大小

disable-logging = true #禁用請(qǐng)求日志記錄

vacuum = true #當(dāng)服務(wù)器退出的時(shí)候自動(dòng)刪除unix socket文件和pid文件。

listen = 120 #設(shè)置socket的監(jiān)聽隊(duì)列大小(默認(rèn):100)

pidfile = /var/run/uwsgi.pid #指定pid文件

enable-threads = true 
#允許用內(nèi)嵌的語言啟動(dòng)線程。這將允許你在app程序中產(chǎn)生一個(gè)子線程

reload-mercy = 8 
#設(shè)置在平滑的重啟(直到接收到的請(qǐng)求處理完才重啟)一個(gè)工作子進(jìn)程中,等待這個(gè)工作結(jié)束的最長秒數(shù)。這個(gè)配置會(huì)使在平滑地重啟工作子進(jìn)程中,如果工作進(jìn)程結(jié)束時(shí)間超過了8秒就會(huì)被強(qiáng)行結(jié)束(忽略之前已經(jīng)接收到的請(qǐng)求而直接結(jié)束)

max-requests = 5000 
#為每個(gè)工作進(jìn)程設(shè)置請(qǐng)求數(shù)的上限。當(dāng)一個(gè)工作進(jìn)程處理的請(qǐng)求數(shù)達(dá)到這個(gè)值,那么該工作進(jìn)程就會(huì)被回收重用(重啟)。你可以使用這個(gè)選項(xiàng)來默默地對(duì)抗內(nèi)存泄漏

limit-as = 256 
#通過使用POSIX/UNIX的setrlimit()函數(shù)來限制每個(gè)uWSGI進(jìn)程的虛擬內(nèi)存使用數(shù)。這個(gè)配置會(huì)限制uWSGI的進(jìn)程占用虛擬內(nèi)存不超過256M。如果虛擬內(nèi)存已經(jīng)達(dá)到256M,并繼續(xù)申請(qǐng)?zhí)摂M內(nèi)存則會(huì)使程序報(bào)內(nèi)存錯(cuò)誤,本次的http請(qǐng)求將返回500錯(cuò)誤。

harakiri = 60 
#一個(gè)請(qǐng)求花費(fèi)的時(shí)間超過了這個(gè)harakiri超時(shí)時(shí)間,那么這個(gè)請(qǐng)求都會(huì)被丟棄,并且當(dāng)前處理這個(gè)請(qǐng)求的工作進(jìn)程會(huì)被回收再利用(即重啟)

nginx配置

安裝nginx

#安裝nginx
sudo apt install nginx

#測(cè)試是否安裝成功
sudo /etc/init.d/nginx start
#訪問域名或地址,出現(xiàn)歡迎界面


#重啟
sudo /etc/init.d/nginx restart

#重載
sudo /etc/init.d/nginx reload

#停止
sudo /etc/init.d/nginx stop

配置文件

在在前面自定義的 script 目錄下創(chuàng)建blogzjl_nginx.conf(文件名以nginx結(jié)尾),同時(shí)做一個(gè)軟連接,把此文件生成一個(gè)快捷方式到/etc/nginx/site-enabled/目錄下

#nginx ifconfig_file
server {
  # 監(jiān)聽端口
  listen   80;

  # 服務(wù)器的域名 或ip
  server_name .blogzjl.site; # substitute your machine's IP address or FQDN
  charset   utf-8;

  #存放日志文件
  access_log /var/log/nginx/blogzjl_access.log;
  #error_log /var/log/nginx/blogzjl_error.log error;
  gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支持壓縮的類型
  # 最大上傳
  client_max_body_size 75M;  


  # Django 媒體相關(guān)文件
  # location /media {
  #   alias /; # your Django project's media files - amend as required
  # }
  
  #Django 靜態(tài)相關(guān)文件 
  location /static/ {
    alias /home/zjl/sites/blogzjl.site/blogzjl/BlogProject/static/; # your Django project's static files - amend as required
    #index index.html index.htm;
    expires 30d;
  }

  # 所有非媒體、靜態(tài)相關(guān)通過uwsgi 交給Django服務(wù)器 處理
  location / {
    include  uwsgi_params; # the uwsgi_params file you installed
    uwsgi_read_timeout 60;
    uwsgi_send_timeout 60;
    uwsgi_pass unix:/home/zjl/sites/blogzjl.site/blogzjl/script/uwsgi.sock;
  }
}

創(chuàng)建軟連接

ln -s /home/zjl/sites/blogzjl.site/blogzjl/script/blogzjl_nginx.conf /etc/nginx/site-enabled
# ln -s 源文件絕對(duì) 目標(biāo)文件絕對(duì)路徑
#到 /etc/nginx/site-enabled/ 目錄下將 default 文件刪除防止其覆蓋 blogzjl_nginx.conf 中的配置

啟動(dòng) nginx 和 uwsgi

在啟動(dòng)前最好查看端口號(hào),將相關(guān)進(jìn)程關(guān)掉

#查看端口
netstat -nultp

#關(guān)掉相關(guān)進(jìn)程,最好關(guān)徹底,相關(guān)端口被占用的都關(guān)掉,或自行換一個(gè)端口
killall -9 uwsgi 
killall -9 nginx

#對(duì)于還沒有關(guān)掉的
kill -9 進(jìn)程號(hào)

最后啟動(dòng) uwsgi 和 nginx

#在項(xiàng)目目錄下執(zhí)行
#啟動(dòng)uwsgi
uwsgi --ini ../script/blogzjl-uwsgi.ini

#啟動(dòng)nginx
/etc/init.d/nginx start

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)基于SVM的分類器的方法

    Python實(shí)現(xiàn)基于SVM的分類器的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)基于SVM的分類器的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python利用Diagrams繪制漂亮的系統(tǒng)架構(gòu)圖

    Python利用Diagrams繪制漂亮的系統(tǒng)架構(gòu)圖

    Diagrams  是一個(gè)基于Python繪制云系統(tǒng)架構(gòu)的模塊,它能夠通過非常簡(jiǎn)單的描述就能可視化架構(gòu)。本文將利用它繪制漂亮的系統(tǒng)架構(gòu)圖,感興趣的可以了解一下
    2023-01-01
  • python實(shí)現(xiàn)圖片壓縮代碼實(shí)例

    python實(shí)現(xiàn)圖片壓縮代碼實(shí)例

    這篇文章主要介紹了python實(shí)現(xiàn)圖片壓縮代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Django之富文本(獲取內(nèi)容,設(shè)置內(nèi)容方式)

    Django之富文本(獲取內(nèi)容,設(shè)置內(nèi)容方式)

    這篇文章主要介紹了Django之富文本(獲取內(nèi)容,設(shè)置內(nèi)容方式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python?Asyncio庫之a(chǎn)syncio.task常用函數(shù)詳解

    Python?Asyncio庫之a(chǎn)syncio.task常用函數(shù)詳解

    Asyncio在經(jīng)過一段時(shí)間的發(fā)展以及獲取Curio等第三方庫的經(jīng)驗(yàn)來提供更多的功能,目前高級(jí)功能也基本完善。本文主要介紹了Asyncio庫中asyncio.task常用函數(shù)的使用,需要的可以參考一下
    2023-03-03
  • pandas中的DataFrame數(shù)據(jù)遍歷解讀

    pandas中的DataFrame數(shù)據(jù)遍歷解讀

    這篇文章主要介紹了pandas中的DataFrame數(shù)據(jù)遍歷解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python 保存矩陣為Excel的實(shí)現(xiàn)方法

    Python 保存矩陣為Excel的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇Python 保存矩陣為Excel的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python文件與文件夾操作大全(非常全面)

    Python文件與文件夾操作大全(非常全面)

    Python具有強(qiáng)大的文件處理功能,如文件的創(chuàng)建、打開、文件內(nèi)容的寫入、讀出文件中的內(nèi)容等等,這篇文章主要介紹了Python文件與文件夾操作,需要的朋友可以參考下
    2023-09-09
  • matplotlib運(yùn)行時(shí)配置(Runtime Configuration,rc)參數(shù)rcParams解析

    matplotlib運(yùn)行時(shí)配置(Runtime Configuration,rc)參數(shù)rcParams解析

    這篇文章主要介紹了matplotlib運(yùn)行時(shí)配置(Runtime Configuration,rc)參數(shù)rcParams解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 淺談numpy.where() 的用法和np.argsort()的用法說明

    淺談numpy.where() 的用法和np.argsort()的用法說明

    這篇文章主要介紹了淺談numpy.where() 的用法和np.argsort()的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05

最新評(píng)論

江陵县| 洛隆县| 元朗区| 景洪市| 麻阳| 奉节县| 麻阳| 万安县| 沈阳市| 兴海县| 区。| 石台县| 昆明市| 锡林浩特市| 莱芜市| 资溪县| 华池县| 沅陵县| 绥江县| 黎城县| 肥乡县| 突泉县| 五台县| 交口县| 庆安县| 青浦区| 临猗县| 金阳县| 陆川县| 桂东县| 庆云县| 册亨县| 新丰县| 阿城市| 大港区| 新宾| 五峰| 盈江县| 普宁市| 道真| 民权县|