用Nginx 和 uWSGI 來部署Django

2021-06-21 15:13:49 字數 1937 閱讀 5579

週末趁著加班空閒,找了乙個舊機器,裝了個ubuntu13.04,以後就可以用它來做我在公司的git以及web伺服器,順便在它上面編譯一下android原始碼,哈哈,很爽。

先說web系統,最進一直在搗鼓django,之前用apache2+apache2-python-mod搭了乙個簡易版本的伺服器,用起來感覺不爽,直接換成nginx和uwsgi

其中pip是乙個python的包管理工具,1.6.2是的版本,這種寫法在bae的requirements.txt中也有體現,比如需要安裝django,可以用==,>,《等比較操作符來選擇版本號。單獨使用uwsgi也可以讓django跑起來,但是它無法作為靜態檔案/static/以及/media/的伺服器。因此我們需要配合使用nginx作為web伺服器來處理/static/以及/media/的請求,而它其他的頁面請求都轉交給uwsgi來處理。在django的工程目錄下新建乙個mysite_uwsgi.ini(名稱可隨意)

內容如下,詳細說明可參考注釋

[uwsgi]

# django-related settings

# the base directory (full path)

chdir = /path/to/your/project

# django's wsgi file

module = dijkstra.wsgi

plugin = python

# process-related settings

# master

master = true

# maximum number of worker processes

processes = 5

# the socket

socket = /path/to/your/project

chmod-socket = 666

# clear environment on exit

vacuum = true

根據uid的不同可以設定不同的socket許可權,如果許可權設定不當,uwsgi可能會出現permmision denied的錯誤。

在django工程目錄(與mysite_uwsgi.ini相同)新建乙個mysite_nginx.conf檔案

檔案內容如下

# dijkstra_nginx.conf

# the upstream component nginx needs to connect to

upstream django

# configuration of the server

server

location /static

# finally. send all non-media requests to the django server

location /

}

uwsgi_params考到工程目錄下cp /etc/nginx/uwsgi_params /path/to/your/project/
# security warning: don't run with debug turned on in production!

debug = false

template_debug = false

allowed_hosts = ['x.x.x.x', 'localhost'] # substitute your machine's ip address or fqdn

嘗試能否訪問localhost:8000,如果出現502 bad gateway,可以重啟機器。

Django用Nginx與uwsgi部署伺服器

urls.py from django.views.static import serve url中加入以下配置 url r static p.serve,url r media p.serve,url r views.home 安裝pip3 apt install python3 pip 安裝必備...

通過uwsgi和nginx部署django專案

在linux伺服器上採用uwsgi nginx的方式部署執行。uwsgi負責django專案的python動態解析 nginx負責靜態檔案 以及uwsgi pass到uwsgi。此外,在執行nginx之前,需要先收集django專案的靜態檔案到static目錄。首先,需要在settings.py檔案...

uwsgi和nginx部署Django服務

先用測試方式啟動服務 1.配置好資料庫 3.資料庫遷移 4.啟動服務 python manage.py runserver 0.0.0.0 8000 用uwsgi的方式啟動 解決3個問題 執行uwsgi啟動服務時,用的是python2直譯器,就用python3的直譯器重新裝了,解決參考文件 3.用命...