1. 程式人生 > 程式設計 >Nginx+Uwsgi+Django 專案部署到伺服器的思路詳解

Nginx+Uwsgi+Django 專案部署到伺服器的思路詳解

首先先說一下思路:

1.本地django專案打包 主要用到的是 python自帶的distutils.core 下的 setup,具體程式碼在下面,主要講的兩個問題是package主要打包為和目錄同級的程式碼,例如:TCMS如果還有一個子資料夾,那就不能自動打包了。這個時候需要用到data_files。glob(*filename)檔名模式匹配,不用遍歷整個目錄判斷每個檔案是不是符合。

from distutils.core import setup
import glob

setup(
 name = "demo",version = "0.1",packages = ['author_zxx','TCMS','static'],data_files= glob.glob('templates/*.html')
 )

2.打包用到的木塊,也就是python的庫,pip freeze >> requirement.txt (requirement.txt 問檔名,隨便起)

pip freeze > requeirement.txt

3.伺服器安裝虛擬環境(非常重要,這一步一定要在開始。)

yum install virtualenv

yum install cirtualenvwrapper

4.建立虛擬環境 並且 指定虛擬換 用到的python 直譯器版本

# 建立一個專案目錄
cd my_project

# 建立虛擬環境 my_project_env 為虛擬環境的名稱
virtualenv my_project_env

# 指定虛擬環境所用到的python直譯器版本 -p後面為python直譯器存放的路徑,my_project_env 為虛擬環境的名稱
virtualenv -p /usr/bin/python2.7 my_project_env

# 建立完成虛擬環境之後會生成一個資料夾,之後在bin資料夾中會有一個activate,我們在使用虛擬環境需要啟用虛擬環境,source activate。
source my_project_env/bin/activate

#退出虛擬環境
deactivate

5.在虛擬環境中安裝django 和 uwsgi 。要指定安裝版本和開發環境要一樣

pip install django==3.0.4

pip install uwsgi

6.建立django中的專案

# . 表示在當前目錄下建立,如果不加,會在project_name 下建立一個同名的目錄。
django-admin startproject 'project_name' .

7. 將專案通過FileZilla 或者其他互動軟體,傳入到剛剛所建立的目錄中。

8.專案上傳完畢之後,需要安裝我們所需要的包。

# 剛剛 pip freeze > requirement.txt 所得
pip install -r requirement.txt

9.完成之後,可以通過 python manage.pu runserver 進行測試,是否成功。顯示出下面得內容,即為成功。

May 08,2020 - 10:53:33
Django version 3.0.4,using settings 'TsmWeb.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

10.之後我們需要安裝uwsgi替我們代替 python manage.py runserver. 因為在生產環境中我們不可能一直手動得去開啟伺服器,這個時候就需要uwsgi,剛剛已經安裝過uwsgi。我們在伺服器專案目錄下建立一個test.py 檔案。

# test.py

def application(env,start_response):
 start_response('200 OK',[('Content-Type','text/html')])
 return "Hello World"

11. 之後在linux 命令列輸入

uwsgi --http :8001 --wsgi-file /‘路徑,從跟開始'/test.py

如果出現下面得程式碼,則表示成功:

*** Starting uWSGI 2.0.18 (64bit) on [Fri May 8 11:00:36 2020] ***
compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-39) on 07 May 2020 02:26:03
os: Linux-3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020

12.之後我們需要安裝Nginx

yum install -y pcre pcre-devel

yum install -y zlib zlib-devel

yum install gcc-c++
yum install -y openssl openssl-devel

wget -c https://nginx.org/download/nginx-1.14.0.tar.gz

tar -zxvf nginx-1.14.0.tar.gz

cd nginx-1.14.0
./configure

make
make install

13.之後測試nginx是否可以正常使用,我們需要進到nginx檔案下得sbin/ 目錄,執行 ./nginx ,之後在瀏覽器訪問我們地址即可。如果出現 Welcome to Nginx! 即表示成功

14.現在是nginx和uwsgi配置,這個也是最頭疼的。

# uwsgi 官網
https://uwsgi-docs.readthedocs.io/en/latest/


# nginx主要問題在 nginx.conf,下面附上詳解
https://www.jb51.net/article/131362.htm

總結

到此這篇關於Nginx+Uwsgi+Django 專案部署到伺服器的文章就介紹到這了,更多相關nginx uwsgi django 專案部署內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!