亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

nginx + uwsgi + django部署

2024-06-28 16:04:36
字體:
來源:轉載
供稿:網友

virtualenv 配置虛擬環境

檢測是否已安裝virtualenv

virtualenv --version

若沒有顯示版本號則表示沒有安裝virtualenv 安裝virtualenv

pip install virtualenv

創建虛擬環境 路徑可自選,也可放置項目目錄下 venv為虛擬環境名,可自定義

virtualenv venv

進入虛擬環境(需在venv當前目錄下操作)

source /venv/bin/activate# 退出虛擬環境命令deactivate

安裝項目相關依賴 (此操作需要提前提前生成requirements.txt依賴文件) 插入簡單說下django依賴文件如何生成

生成依賴文件pip freeze > requirements.txt

安裝依賴

pip install -r requirements.txt

如何查看依賴列表

pip list

至于為什么要用虛擬環境來部署,其中的原因若有疑問就自行谷歌吧。不僅僅是部署,每新建一個項目,都建議使用虛擬環境,好處大大的。

推薦一個很不錯的擴展庫virtualenvwrapper,挺方便,喜歡的小伙伴就趕緊上手吧。


下面就要開始正式的部署了,這篇教程以Ubuntu為例 整個部署結構如下: the web client <-> the web server(nginx) <-> the socket <-> uwsgi <-> Django nginx做反向代理處理靜態文件,減輕服務器負載 同時也可以配置多臺服務器做負載均衡(此篇博客不超扯) uwsgi處理后臺請求 ps:后面寫些系列博客介紹下uwsgi和nginx等部署所需 ps:畢竟光講怎么用,不說原理真是耍流氓

配置uwsgi

虛擬環境下安裝uwsgi

pip install uwsgi# 若安裝失敗,可能是python依賴庫沒有安裝# 執行以下命令apt-get install python-dev

編寫測試腳本 在項目目錄下添加test.py腳本,添加如下內容

# test.pydef application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"] # python3 #return ["Hello World"] # python2

用test.py測試uwsgi

uwsgi --http :8000 --wsgi-file test.py# 若跑不起來,可能需要添加參數# 具體原因這里不深究,歷史遺留# 感興趣的同學可自行谷歌uwsgi --plugin python,http --http :8000 --wsgi-file test.py

瀏覽器訪問localhost:8000查看頁面是否顯示hello world 若正常顯示,則說明如下環節正常拉通 the web client <-> uWSGI <-> Python 接著先測試以下django項目自身能否跑通

python manage.py runserver 0.0.0.0:8000

確認沒問題后,用uwsgi拉通django

uwsgi --http :8000 --module mysite.wsgi

此處wsgi命名方式:項目名.wsgi 此wsgi文件可在項目目錄中得主目錄下找到 確認正常運行,說明如下環節正常拉通

the web client <-> uWSGI <-> Django

配置nginx

安裝nginx

apt-get install nginx

測試nginx能否正常運行,啟動nginx

/etc/init.d/nginx start# 或者service nginx start

訪問瀏覽器80端口 打開localhost:80 若顯示Welcome to nginx!則說明nginx正常運行 說明如下環節正常拉通

the web client <-> the web server

nginx默認占用80端口 同時訪問公網ip,默認訪問得端口也是80 即可以直接訪問localhost,不需要加80端口號 ps:贈送一些常用nginx命令

# 重啟nginxservice nginx restart# 查看nginx運行狀態service nginx status# 停止nginx服務service nginx stop

編寫nginx配置文件(ubuntu下,centos路徑則不同) nginx相關配置存放在/etc/nginx 先將uwsgi_params文件復制到項目目錄下 uwsgi_params可在/etc/nginx下找到

cp /etc/nginx/uwsgi_params /path/to/your/PRoject

然后在項目目錄下新建mysite_nginx.conf 配置文件名,自己記得住就好,保證可讀性 填入以下內容

# myproject_nginx.conf# the upstream component nginx needs to connect toupstream django { # server unix:///path/to/your/mysite/mysite.sock; # for a file socket server 127.0.0.1:8001; # for a web port socket (we'll use this first)}# configuration of the serverserver { # the port your site will be served on listen 8000; # the domain name it will serve for server_name .example.com; # substitute your machine's IP address or FQDN charset utf-8; # max upload size client_max_body_size 75M; # adjust to taste # Django media location /media { alias /path/to/your/mysite/media; # your Django project's media files - amend as required } location /static { alias /path/to/your/mysite/static; # your Django project's static files - amend as required } # Finally, send all non-media requests to the Django server. location / { uwsgi_pass django; include /path/to/your/mysite/uwsgi_params; # the uwsgi_params file you installed }}

寫好配置文件后,需要將此配置文件軟鏈接至nginx配置文件目錄下 配置文件則存放在/etc/nginx/sites-enabled

ln -s /path/to/your/mysite_nginx.conf /etc/nginx/sites-enabled/# 舉例conf文件路徑為/home/test/mysite/mysite_nginx.conf# 命令就這么寫ln -s /home/test/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/

接下來拉通部署下靜態文件 在django項目得的setting文件中,添加下面一行內容:

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

運行python命令

python manage.py collectstatic

此命令會將項目中得所有靜態文件全部匯總到static目錄下 原因就是為了方便給nginx做反向代理時,可以快速得找到所請求得靜態文件 現在可以測試以下nginx是否能夠正常訪問靜態文件 重啟以下nginx

service nginx restart

任意在瀏覽器訪問一個media里面得圖片文件(沒圖片,就自己加一個) 比如訪問localhost:8000/media/test.png 若是正常顯示,那么接下來得路就好走多了。 然而,意外往往時會發生的,訪問不到的就根據報錯來定位問題 同時借助nginx日志,來查看問題的原因 nginx日志路徑/var/log/nginx/error.log 一般情況下,由于權限問題導致訪問失敗的可能性最大 這時候就需要修改項目所在目錄的權限 所以項目部署的時候不要把代碼放到/root等權限敏感的目錄下 ok,往下走 這時候就需要拉通nginx和uwsgi了 接著用test.py測試一把

uwsgi --socket :8001 --wsgi-file test.py

訪問8000端口,沒有問題的話,說明以下環節也拉通了 the web client <-> the web server <-> the socket <-> uWSGI <-> Python 這時候舉例萬里長征真的就幾步路了 我們之前nginx使用的時tcp sokect轉發請求,也就是使用端口轉發 現在,換成unix socket轉發 unix socket相對tcp socket速度更快,節省端口資源 然而要是做負載均衡的話,就需要利用不同的端口轉發請求至處理服務器了 不多說,修改nginx配置文件

server unix:///path/to/your/mysite/mysite.sock; # for a file socket# server 127.0.0.1:8001; # for a web port socket (we'll use this first)

然后重啟nginx 啟動uwsgi

uwsgi --socket mysite.sock --wsgi-file test.py

訪問8000端口,看到hello world,那就是勝利的曙光 然而這里往往是會保權限錯誤所以,出現權限問題,就試試下面兩個命令 其實就加個兩個權限參數

uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket=666# 或者uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket=664

搞定這個問題后,就可以拉通整個部署結構了(這個權限最保險^_^)

uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=666

好了,其實整個部署過程到這就可以結束了 但是在命令中加各種參數是不太好的一個編碼習慣 還是寫到配置文件里面去 在項目目錄下新建mysite_uwsgi.ini

# mysite_uwsgi.ini file[uwsgi]# Django-related settings# the base directory (full path)chdir = /path/to/your/project# Django's wsgi filemodule = project.wsgi# the virtualenv (full path)home = /path/to/virtualenv# process-related settings# mastermaster = true# maximum number of worker processes# 進程數設置與cpu核數相同,保證并行性能processes = 10# the socket (use the full path to be safesocket = /path/to/your/project/mysite.sock# ... with appropriate permissions - may be needed# chmod-socket = 664# clear environment on exitvacuum = true

然后用簡單的uwsgi命令,就能完成部署了

uwsgi --ini mysite_uwsgi.ini

ps:附贈一些相關項目狀態查看命令

# 查看某端口占用情況(80端口為例)lsof -i:80# 查看uwsgi或者nginx進程ps -ef | grep uwsgi# 停止uwsgi主進程pkill uwsgi# 殺掉某進程只需要知道pid既可kill pid
上一篇:硬盤分區

下一篇:nginx 安裝ssl證書

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女久久久久久免费| 亚洲最大成人免费视频| 欧美—级高清免费播放| 成人黄色中文字幕| 成人女保姆的销魂服务| 欧美日韩精品二区| 亚洲国产精品久久久久秋霞不卡| 日韩久久精品电影| 亚洲欧美日韩第一区| 国产成人精品国内自产拍免费看| 正在播放欧美视频| 精品日韩视频在线观看| 久久精品美女视频网站| 日韩av在线精品| 国产精品视频一区国模私拍| 亚洲视频在线观看| 国产精品久久久久久久一区探花| 欧美极品少妇全裸体| 久久久久九九九九| 亚洲午夜久久久影院| 成人久久久久久久| 亚洲精品720p| 美日韩在线视频| 欧美精品18videos性欧美| 色哟哟入口国产精品| 亚洲午夜小视频| 国产成人一区二区| 亚洲大胆人体av| 欧美日韩国产精品一区| 黑人欧美xxxx| 亚洲综合精品一区二区| 亚洲久久久久久久久久| 国产91在线播放九色快色| 久久影视电视剧凤归四时歌| 按摩亚洲人久久| 九九热最新视频//这里只有精品| 国产精品aaaa| 久久久之久亚州精品露出| 深夜精品寂寞黄网站在线观看| 亚洲精品乱码久久久久久按摩观| 亚洲人成电影网站| 91禁外国网站| 久久国产精品首页| 国产精品扒开腿做| 欧美日韩精品在线视频| 国产男人精品视频| 亚洲精品一区中文字幕乱码| 日韩中文字幕视频在线| 亚洲国产精品久久久久久| 欧美在线免费看| 狠狠久久亚洲欧美专区| 日韩免费av在线| 久久久亚洲欧洲日产国码aⅴ| 国产精品99久久99久久久二8| 欧美午夜精品久久久久久久| 亚洲性生活视频| 狠狠色狠狠色综合日日小说| 久久久视频免费观看| 国产成人久久久| 欧美精品久久久久久久免费观看| 欧美激情精品久久久久久| 国产ts一区二区| 98精品国产高清在线xxxx天堂| 91精品久久久久久久久久久| 综合久久五月天| 中文国产成人精品久久一| 精品一区精品二区| 欧美一级视频免费在线观看| 欧美成人精品一区二区三区| 中文国产成人精品| 国产91对白在线播放| 色妞一区二区三区| 久久久久久久久综合| 亚洲影视中文字幕| 日韩激情第一页| 亚洲人成五月天| 欧美一区二区影院| 琪琪第一精品导航| 欧美日韩一区二区精品| 日产精品久久久一区二区福利| 成人福利在线视频| 国产精自产拍久久久久久蜜| 一区二区三区国产视频| 亚洲视频第一页| 亚洲free性xxxx护士白浆| 97碰碰碰免费色视频| 欧美日韩另类视频| 久久频这里精品99香蕉| 久久久电影免费观看完整版| 麻豆国产va免费精品高清在线| 欧洲成人免费视频| 国内精品400部情侣激情| 国内精品伊人久久| 欧美日韩另类字幕中文| 久久久久久久久久久国产| 九九视频这里只有精品| 中文字幕亚洲色图| 日韩av免费在线观看| 成人欧美一区二区三区黑人孕妇| 91精品国产91久久久久久吃药| 欧美激情一区二区三区高清视频| 中文字幕日韩欧美在线| 日韩精品免费一线在线观看| 色狠狠久久aa北条麻妃| 国产精品91一区| 97人人模人人爽人人喊中文字| 久久99精品久久久久久噜噜| 精品无码久久久久久国产| 国产成人精品亚洲精品| 国产成人精品一区| 亚洲成在人线av| 色综合色综合网色综合| 国外成人免费在线播放| 91爱爱小视频k| 亚洲精品一区中文| 9.1国产丝袜在线观看| 爽爽爽爽爽爽爽成人免费观看| 欧美激情综合色| 国产香蕉精品视频一区二区三区| 亚洲精品黄网在线观看| 色99之美女主播在线视频| 久久免费成人精品视频| 国产成人精品在线播放| 91九色综合久久| 国产精品亚洲自拍| 91精品国产综合久久香蕉的用户体验| 日韩欧美999| 久久伊人精品天天| 国产精品视频网址| 亚洲一区制服诱惑| 一本大道亚洲视频| 狠狠躁夜夜躁人人躁婷婷91| 亚洲成人久久电影| 亚洲aaaaaa| 精品亚洲va在线va天堂资源站| 亚洲欧美另类中文字幕| 欧美视频中文在线看| 欧美综合在线观看| 国产免费亚洲高清| 国产精品久久久久久久一区探花| 日韩高清免费在线| 尤物99国产成人精品视频| 中文字幕日韩专区| 国产剧情日韩欧美| 亚洲精品欧美日韩专区| 欧美人在线视频| 亚洲热线99精品视频| 欧美在线亚洲一区| 狠狠操狠狠色综合网| 欧美高清不卡在线| 一个人看的www久久| 国产91九色视频| 国产精品高潮粉嫩av| www.久久撸.com| 欧美国产日韩一区二区在线观看| 国产精品入口夜色视频大尺度| 成人国内精品久久久久一区| 国产成人精品久久| 欧美成人亚洲成人| 精品一区二区三区四区| 欧美午夜片欧美片在线观看| 久久精品免费播放| 日韩精品在线免费观看视频| 国产一区二区三区在线观看视频|