聊聊Django+uwsgi+nginx服務(wù)器部署問題
準(zhǔn)備工作
推薦使用anaconda進(jìn)行python環(huán)境的管理,因python環(huán)境容易出現(xiàn)各種版本沖突問題
安裝anaconda:
wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh bash Anaconda3-2020.11-Linux-x86_64.sh
一路回車,有提示后“yes”再回車,這里安裝到的目錄在/root下
把conda添加到環(huán)境變量
vim /etc/profile
在文件末尾添加
PATH=$PATH:/root/anaconda3/bin # 根據(jù)目錄情況 export PATH
啟用環(huán)境變量
source /etc/profile
新增合適的虛擬環(huán)境
conda env list # 查看環(huán)境 conda create -n myDjango python=3.7.5 conda activate myDjango # 啟動(dòng)虛擬環(huán)境時(shí)可能需要先 source activate
安裝需要的組件
需要的有django,uwsgi,nginx
pip install django # 版本為4以上 pip install uwsgi yum install nginx
使用查看版本語句查看是否安裝成功
python -m django --version uwsgi --version nginx -V
創(chuàng)建django程序(本地)
可在pycharm中一鍵創(chuàng)建,也可以使用命令行創(chuàng)建
django-admin startproject mysite
獲得目錄如下
mysite/ manage.py mysite/ __init__.py settings.py urls.py asgi.py wsgi.py
- manage.py 用于啟動(dòng)項(xiàng)目 python manage.py runserver
- 二級(jí)mysite可對(duì)項(xiàng)目進(jìn)行整體配置
- mysite/settings.py 項(xiàng)目配置文件,包含數(shù)據(jù)庫,debug,語言時(shí)區(qū)等
- mysite/urls.py 配置項(xiàng)目路由
- mysite/wsgi.py 使用uwsgi管理django程序時(shí)需要用到
創(chuàng)建應(yīng)用
python manage.py startapp myApp
得到app目錄如下,可在此編寫視圖模塊等,然后在urls內(nèi)編寫路由以提供訪問,不再贅述
myApp/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py
使用文件傳輸工具將django程序傳輸?shù)椒?wù)器
可使用xftp,filezilla或?qū)毸?/p>
部署工作
配置uwsgi
在以放到服務(wù)器上的django項(xiàng)目目錄下創(chuàng)建uwsgi.ini文件,即uwsgi配置
我的項(xiàng)目目錄為/home/mysite
[uwsgi] chdir=/home/djangoProject # 項(xiàng)目位置 #socket=:8000 # 通過nginx使用的配置 http=:8000 # 單獨(dú)啟動(dòng)時(shí)使用的配置 wsgi-file=/home/djangoProject/djangoProject/wsgi.py # 項(xiàng)目中wsgi文件位置 process=4 threads=2 pidfile=uwsgi.pid # 生產(chǎn)pid,log文件,以查看日志和pid信息 daemonize=uwsgi.log master=True
此時(shí)可以啟動(dòng)uwsgi來啟動(dòng)項(xiàng)目
uwsgi --ini uwsgi.ini # 通過剛創(chuàng)立的ini配置來啟動(dòng),會(huì)生成pid和log文件 uwsgi --stop uwsgi.pid # 必須使用pid文件來停止程序
此時(shí)可以使用端口查看語句查看程序是否已經(jīng)運(yùn)行
netstat -tlnp|grep 8000 # django程序默認(rèn)開啟端口為8000,也可在ini文件中自行修改
若已成功啟動(dòng),一句可以通過訪問域名/ip:8000訪問django程序
配置nginx
首先需要將uwsgi.ini配置進(jìn)行更改,取消http,打開socket
[uwsgi] chdir=/home/djangoProject # 項(xiàng)目位置 socket=:8000 # 通過nginx使用的配置 #http=:8000 # 單獨(dú)啟動(dòng)時(shí)使用的配置 wsgi-file=/home/djangoProject/djangoProject/wsgi.py # 項(xiàng)目中wsgi文件位置 process=4 threads=2 pidfile=uwsgi.pid # 生產(chǎn)pid,log文件,以查看日志和pid信息 daemonize=uwsgi.log master=True
nginx配置文件默認(rèn)在/etc/nginx/nginx.conf,需要編輯的是http下的server內(nèi)容
location中增加兩個(gè)內(nèi)容
uwsgi_pass 0.0.0.0:8000; # 與uwsgi.ini文件配置的socket保持一致 include /etc/nginx/uwsgi_params; # 引用nginx的uwsgi_params載入?yún)?shù)
server部分如下
server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { uwsgi_pass 0.0.0.0:8000; include /etc/nginx/uwsgi_params; } }
可以用nginx -t語句檢查是否合法
通過server語句啟動(dòng)/停止/重啟 nginx
server nginx start/stop/restart
nginx默認(rèn)開啟端口為80,也可通過查看端口情況觀察是否成功開啟
netstat -tlnp|grep 80
若啟動(dòng)成功則nginx反向代理成功,已經(jīng)可以通過訪問80端口訪問django程序
配置ssl證書以提供https訪問
需要在服務(wù)器代理廠商處申請(qǐng)ssl證書并下載nginx版本,將得到包含域名在內(nèi)的證書文件.pem和證書密鑰.key,將兩個(gè)文件傳輸?shù)椒?wù)器nginx目錄下,最好建立一個(gè)證書專用目錄
更改nginx.conf配置文件server內(nèi)容
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name _; root /usr/share/nginx/html; ssl_certificate "/etc/nginx/cert/證書名.pem"; ssl_certificate_key "/etc/nginx/證書密鑰.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { uwsgi_pass 0.0.0.0:8000; include /etc/nginx/uwsgi_params; } error_page 404 /404.html; location = /40x.html { error_page 500 502 503 504 /50x.html; location = /50x.html { }
注:每次更改nginx配置都需要重啟nginx服務(wù)才能生效
到此這篇關(guān)于Django+uwsgi+nginx服務(wù)器部署的文章就介紹到這了,更多相關(guān)Django+uwsgi+nginx服務(wù)器部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx 隱藏版本號(hào)與WEB服務(wù)器信息的解決方法
這篇文章主要介紹了nginx 隱藏版本號(hào)與WEB服務(wù)器信息的解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11Kubernetes中Nginx服務(wù)啟動(dòng)失敗排查流程分析(Error:?ImagePullBackOff)
這篇文章主要介紹了Kubernetes中Nginx服務(wù)啟動(dòng)失敗排查流程(Error:?ImagePullBackOff),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03Nginx配置動(dòng)態(tài)代理后通過curl訪問報(bào)403問題
本文主要介紹了Nginx配置動(dòng)態(tài)代理后通過curl訪問報(bào)403問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Ubuntu上安裝Nginx服務(wù)器程序及簡單的環(huán)境配置小結(jié)
Nginx是一款高性能的異步非阻塞服務(wù)器應(yīng)用程序,人氣相當(dāng)高,這里我們就來看一下在Ubuntu上安裝Nginx服務(wù)器程序及簡單的環(huán)境配置小結(jié):2016-07-07