django之項目部署上線


在開始配置之前,需要將整個項目文件拷貝一份,然后移入你想要的放置的目錄中。

 

 

一、Django配置

  1、settings.py配置

  復制全局settings.py配置文件,創建一個副本命名為/pro_settings.py,修改DEBUG為False。

DEBUG = False

# 填寫你自己的ip和域名
ALLOWED_HOSTS = [“ 192.168.216.137", "localhost", "127.0.0.1"] 
           
# 此處設置可以訪問服務器的IP地址,*為允許所以地址

 

 第一次部署的時候,最好先不要修改,否則出錯的時候不容易排錯。

  2、wsgi.py配置

# 修改pro_mysite/wsgi.py文件

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'peo_mysite.pro_settings')

application = get_wsgi_application()

 

   3、生成requirements.py文件(最好在根目錄下單獨建立一個目錄,用於存放這些文件)

  項目部署文件肯定也是運行在python環境下的,那么勢必需要依賴的包文件,所以也需要為部署的項目重新建立一個運行的虛擬環境,並安裝項目運行時所依賴的包、模塊,所以需要先進入開發時的虛擬環境,將安裝的包、模塊導出來,安裝在項目部署的虛擬環境中(注意:有的包、模塊不是我們通過pip install 從源地址安裝的,所以在導出時,需要將其刪除,通過源文件安裝。

  通過>>> pip freeze > requirements.txt

  將安裝的第三方包、模塊導出到requirements.txt文件,放在項目中,供部署時安裝。

 

 上面的fdfs-client-py==1.2.6不是通過源地址安裝的,而是直接通過源文件安裝的,所以需要將這個模塊刪除。

 

   通過>>> pip install requirements.txt

  安裝從源地址安裝的第三方包、模塊(在此之前,需要創建項目運行虛擬環境),

  安裝完成后,再安裝通過源文件安裝的第三方包、模塊,比如我的fdfs-client-py==1.2.6模塊

 

   兩類包、模塊都安裝完成后,接下來就是安裝django項目運行的服務器模塊了(注意:django項目部署時,與我們開發時運行的方式不太一樣;開發時,直接使用命令python manage.py runserver 0:8000就可以了,但是部署時,是運行在一個WSGI服務器上的,此時只需要相關配置,再運行wsgi服務器,就可以起啟動項目了。

  通過>>> pip install uwsgi

  安裝WSGI服務器

 

   可以寫一個test.py文件測試uwsgi是否安裝成功

 

    通過>>> uwsgi --http :8000 --wsgi-file test.py

  這個命令表示WSGI服務器運行在8000端口,一旦接收到請求,就會將解析請求,並調用test.py文件里的application函數,返回一個響應,

 

 

 

 

 

   uwsgi配置(創建uwsgi_conf_ini配置文件)

[uwsgi]
# 使用nginx連接時使用,Django程序所在服務器地址
# 選擇內網IP和端口
socket=172.26.149.79:8000

# 項目根目錄
chdir=/root/django-projects/dj32_pro/dj32_pro #項目中wsgi.py文件的相對目錄
wsgi-file=dj32_test/wsgi.py # 進程數
processes=2

# 線程數
threads=2

# uwsgi服務器的角色
master=True

# 存放進程編號的文件
pidfile=uwsgi.pid

# 日志文件,因為uwsgi可以脫離終端在后台運行,日志看不見。以前的runserver是依賴終端的
daemonize=logs/uwsgi.log # 指定虛擬環境所在目錄,不能填相對目錄
virtualenv=/root/python-venv/dj32

  要注意上述配置標紅的地方,一定要嚴格遵照執行,

  socket:表示項目運行的IP地址和端口號,一定要是內網地址

  chdir:表示項目的根目錄(使用pwd命令獲取);

  wsgi-file:表示項目中wsgi.py文件的位置,在主APP下;

  daemonize:記錄項目運行的日志,是相對於這個配置文件的位置,不是相對於根目錄,切記

  virtualenv:表示項目運行的虛擬環境的絕對路徑

  啟動uwsgi(進入.ini配置文件所在的目錄,啟動uwsgi服務)

  啟動uwsgi>>> uwsgi --ini uwsgi_conf.ini

  停止uwsgi>>> uwsgi --stop uwsgi.pid

二、nginx配置(想要了解更多,觀看教程:https://www.bilibili.com/video/BV1zJ411w7SV?p=9

  1、安裝nginx(根據自己的系統選擇合適的nginx配置,以Centos為例)

  >>> yum -y install nginx

  2、啟動nginx,查看啟動狀態,如果啟動狀態為active,則代表啟動成功

  

 

   3、測試是否安裝成功

 

  nginx默認運行在80端口,可以直接在瀏覽器中訪問,如果有顯示,表示在安裝成功,

 

 

  4、nginx常用命令(如果不是root用戶,需要在前面加sudo)

  停止nginx服務器>>> systemctl stop nginx

  啟動nginx服務器>>> systemctl start nginx

  重啟nginx服務器>>> systemctl restart nginx

  重載配置而不關閉>>> systemctl reload nginx

  設為開機自啟動>>>> systemctl enable nginx

  取消開機自啟動>>>> systemctl disable nginx

  5、nginx配置(找到配置文件的位置,修改配置文件,配置文件的位置,上面已經標出來了)

  /etc/nginx/nginx.conf

upstream dj32_pro {
    # 此處為uwsgi運行的ip地址和端口號
    server 172.26.149.79:8000;
}

server {
    # 監聽端口
    listen      80;

    # 服務器域名或者ip地址
    server_name www.blogcloud.info;

    # 編碼
    charset     utf-8;

    # 文件最大上傳大小
    client_max_body_size 75M;

    # 媒體文件
    location /media  {
        alias /home/pyvip/pro_mysite/media;
    }

    # 靜態文件
    location /static {
        alias /home/pyvip/pro_mysite/static;
    }

    # 主目錄
    location / {
        uwsgi_pass  pro_mysite;
        include    /etc/nginx/uwsgi_params;
    }
}
# 修改sudo vim /etc/nginx/nginx.conf
# 第一行開頭修改用戶,將www-data改為你當前的用戶 創建 Nginx 運行使用的用戶 www:

user root;

  user后面跟你自己主機的用戶名

 

   具體看一下nginx配置的全部內容

 

   具體看一下我們配置好的配置文件

 

   測試nginx配置文件是否正確>>> nginx -t -c /etc/nginx/nginx.conf

      如果打印如下內容,就表示成功了:

 

   重新加載配置>>> nginx -s reload -c /etc/nginx/nginx.conf

  詳細了解nginx配置正向代理、反向代理、負載均衡、動靜分離相關內容請看(https://www.bilibili.com/video/BV1zJ411w7SV?p=9),個人覺得講得不錯。

  補充:如果遇到啟動uwsgi和nginx時,啟動失敗,多半是端口占用的問題,那就解除占用

  查看指定端口>>> netstat -ap | grep 8000

  查看端口>>>>>>netstat -a

  殺死進程>>>>>>pkill -9 PID

  查看某個程序的進程>>> ps -aux | grep nginx

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM