準備工作
推薦使用anaconda進行python環境的管理,因python環境容易出現各種版本沖突問題
安裝anaconda:
1
2
|
wget https: //repo .anaconda.com /archive/Anaconda3-2020 .11-Linux-x86_64.sh bash Anaconda3-2020.11-Linux-x86_64.sh |
一路回車,有提示后“yes”再回車,這里安裝到的目錄在/root下
把conda添加到環境變量
1
|
vim /etc/profile |
在文件末尾添加
1
2
|
PATH=$PATH: /root/anaconda3/bin # 根據目錄情況 export PATH |
啟用環境變量
1
|
source /etc/profile |
新增合適的虛擬環境
1
2
3
4
5
|
conda env list # 查看環境 conda create -n myDjango python=3.7.5 conda activate myDjango # 啟動虛擬環境時可能需要先 source activate |
安裝需要的組件
需要的有django,uwsgi,nginx
1
2
3
|
pip install django # 版本為4以上 pip install uwsgi yum install nginx |
使用查看版本語句查看是否安裝成功
1
2
3
|
python -m django --version uwsgi --version nginx -V |
創建django程序(本地)
可在pycharm中一鍵創建,也可以使用命令行創建
1
|
django-admin startproject mysite |
獲得目錄如下
1
2
3
4
5
6
7
8
|
mysite/ manage.py mysite/ __init__.py settings.py urls.py asgi.py wsgi.py |
- manage.py 用于啟動項目 python manage.py runserver
- 二級mysite可對項目進行整體配置
- mysite/settings.py 項目配置文件,包含數據庫,debug,語言時區等
- mysite/urls.py 配置項目路由
- mysite/wsgi.py 使用uwsgi管理django程序時需要用到
創建應用
1
|
python manage.py startapp myApp |
得到app目錄如下,可在此編寫視圖模塊等,然后在urls內編寫路由以提供訪問,不再贅述
1
2
3
4
5
6
7
8
9
|
myApp/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py |
使用文件傳輸工具將django程序傳輸到服務器
可使用xftp,filezilla或寶塔之類
部署工作
配置uwsgi
在以放到服務器上的django項目目錄下創建uwsgi.ini文件,即uwsgi配置
我的項目目錄為/home/mysite
1
2
3
4
5
6
7
8
9
10
|
[uwsgi] chdir= /home/djangoProject # 項目位置 #socket=:8000 # 通過nginx使用的配置 http=:8000 # 單獨啟動時使用的配置 wsgi- file = /home/djangoProject/djangoProject/wsgi .py # 項目中wsgi文件位置 process=4 threads=2 pidfile=uwsgi.pid # 生產pid,log文件,以查看日志和pid信息 daemonize=uwsgi.log master=True |
此時可以啟動uwsgi來啟動項目
1
2
|
uwsgi --ini uwsgi.ini # 通過剛創立的ini配置來啟動,會生成pid和log文件 uwsgi --stop uwsgi.pid # 必須使用pid文件來停止程序 |
此時可以使用端口查看語句查看程序是否已經運行
1
|
netstat -tlnp| grep 8000 # django程序默認開啟端口為8000,也可在ini文件中自行修改 |
若已成功啟動,一句可以通過訪問域名/ip:8000訪問django程序
配置nginx
首先需要將uwsgi.ini配置進行更改,取消http,打開socket
1
2
3
4
5
6
7
8
9
10
|
[uwsgi] chdir= /home/djangoProject # 項目位置 socket=:8000 # 通過nginx使用的配置 #http=:8000 # 單獨啟動時使用的配置 wsgi- file = /home/djangoProject/djangoProject/wsgi .py # 項目中wsgi文件位置 process=4 threads=2 pidfile=uwsgi.pid # 生產pid,log文件,以查看日志和pid信息 daemonize=uwsgi.log master=True |
nginx配置文件默認在/etc/nginx/nginx.conf,需要編輯的是http下的server內容
location中增加兩個內容
1
2
|
uwsgi_pass 0.0.0.0:8000; # 與uwsgi.ini文件配置的socket保持一致 include /etc/nginx/uwsgi_params ; # 引用nginx的uwsgi_params載入參數 |
server部分如下
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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語句啟動/停止/重啟 nginx
1
|
server nginx start /stop/restart |
nginx默認開啟端口為80,也可通過查看端口情況觀察是否成功開啟
1
|
netstat -tlnp| grep 80 |
若啟動成功則nginx反向代理成功,已經可以通過訪問80端口訪問django程序
配置ssl證書以提供https訪問
需要在服務器代理廠商處申請ssl證書并下載nginx版本,將得到包含域名在內的證書文件.pem和證書密鑰.key,將兩個文件傳輸到服務器nginx目錄下,最好建立一個證書專用目錄
更改nginx.conf配置文件server內容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
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服務才能生效
到此這篇關于Django+uwsgi+nginx服務器部署的文章就介紹到這了,更多相關Django+uwsgi+nginx服務器部署內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/m0_48878393/article/details/123196851