国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Django】在Linux上部署Django(nginx+uwsgi)

這篇具有很好參考價值的文章主要介紹了【Django】在Linux上部署Django(nginx+uwsgi)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.說明

關于在Linux上使用uwsgi部署Django的項目的過程并不難,主要是配置文件的寫法,尤其是nginx的配置文件,本文在Ubuntu20.04上通過uwsgi和nginx部署Django項目

2.安裝環(huán)境

安裝環(huán)境主要有Nginx、Python、MySQL、Redis,可以根據你的實際情況進行安裝

2.1 安裝nginx

大多數(shù)發(fā)行版Linux都支持通過包管理器直接安裝nginx,如果不支持,那你就只能去網上找一下通過編譯源碼的方式安裝nginx了。我這里是在Ubuntu20.04安裝,可以直接通過apt命令安裝nginx

sudo apt update
sudo apt install nginx

安裝完之后,它會自動運行nginx,訪問一下本機的IP(http://localhost也行),如果看到Welcome to nginx!的頁面提示,說明安裝成功了

2.2 安裝python

由于我使用Ubuntu20.04已經自帶Python3.8,所以我這里就直接使用Python3.8了,如果你需要其他版本,可以參考一下之前的文章
【Linux】Linux系統(tǒng)安裝Python3和pip3

我這里只需要再安裝一個pip

sudo apt install python3-pip

之后自己安裝一下項目需要用到的庫就好,至少把Django項目能用runserser跑起來

2.3 安裝mysql

安裝MySQL可以參考
【mysql】Ubuntu18安裝MySQL、忘記root密碼

如果安裝通過pip安裝mysqlclient報錯,可以基本上因為少了某些依賴

sudo apt install build-essential
sudo apt install pkg-config
sudo apt install libmysqlclient-dev
sudo apt install default-libmysqlclient-dev
2.4 安裝redis

如果你的項目需要安裝Redis,可以參考
【redis】redis簡介、安裝、連接指定庫

3.收集靜態(tài)文件

打開Django配置文件(一般是settings.py),把DEBUG改為False,然后用STATIC_ROOT寫上收集靜態(tài)文件存放的路徑,可以使用絕對路徑放到任意有權限的位置,但它會覆蓋已有文件,所以建議該路徑與STATICFILES_DIRS不同,我這里是/home/pan/productions/static

DEBUG = False
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]
STATIC_ROOT = '/home/pan/productions/static'

修改好配置文件之后,就可以通過collectstatic收集靜態(tài)文件了,這個操作就是把Django項目中用到的靜態(tài)文件復制一份到指定文件夾,目的是為了方便nginx代理

python3 manage.py collectstatic

如果沒有報錯的話,打開STATIC_ROOT路徑應該可以看到已經收集好的靜態(tài)文件了

4.使用uwsgi啟動
4.1 安裝uwsgi

首先需要安裝uwsgi,使用pip安裝就行

sudo pip install uwsgi

安裝好之后在終端執(zhí)行一下uwsgi如果有輸出那就可以了

4.2 uwsgi配置文件

新建一個ini文件,比如說uwsgi.ini,下面是我的uwsgi.ini配置文件的寫法,把該文件放在manage.py所在目錄就行

[uwsgi]
# 啟動項目的IP端口,可以使用IP端口也可以使用本地文件
socket = 127.0.0.1:8000
# socket = /path/to/your/mysite/mysite.sock
# 項目目錄(一般是manage.py所在目錄)
chdir = /home/pan/productions/baiduwp_python/baiduwp_python
# 指定項目里的wsgi.py,絕對路徑和相對路徑都行
wsgi-file = baiduwp_python/wsgi.py
# 進程數(shù)
processes = 1
# 線程數(shù)
threads = 2
# 主程序
master = True
# 存放pid文件路徑
pidfile = uwsgi.pid
# 存放日志文件路徑
daemonize = uwsgi.log
# 緩存大小,如果提示緩存不夠就需要改大一點
buffer-size=4095
# 虛擬環(huán)境路徑(如果使用Python虛擬環(huán)境的話)
# virtualenv=/root/.virtualenvs/django_env
# 靜態(tài)文件的路徑,我們已經讓nginx處理,所以注釋掉
# static-map = /static=/home/pan/productions/static

關于日志格式
uwsgi有默認的日志格式,[pid: %(pid)|app: -|req: -/-] %(addr) (%(user)) {%(vars) vars in %(pktsize) bytes} [%(ctime)] %(method) %(uri) => generated %(rsize) bytes in %(msecs) msecs (%(proto) %(status)) %(headers) headers in %(hsize) bytes (%(switches) switches on core %(core))
如果你想要修改uwsgi的日志格式可以參考官網鏈接:https://uwsgi-docs.readthedocs.io/en/latest/LogFormat.html

比如說我這里需要修改一下日志時間的格式,它默認是ctime,用英文縮寫表示的格式(例如“25/Sep/2023:17:12:21 +0800”),這里使用ftime啟用自定義格式(例如“2023-09-25 17:14:36”)

[uwsgi]
socket = 127.0.0.1:8000
...
log-format-strftime = true
log-date = %%Y-%%m-%%d %%H:%%M:%%S
log-format = [pid: %(pid)|app: -|req: -/-] %(addr) (%(user)) {%(vars) vars in %(pktsize) bytes} [%(ftime)] %(method) %(uri) => generated %(rsize) bytes in %(msecs) msecs (%(proto) %(status)) %(headers) headers in %(hsize) bytes (%(switches) switches on core %(core))

還要注意,你需要看一下Django項目的wsgi.py讀取的配置文件對不對,因為這個文件是Django自動生成的,如果你項目結構改變過,需要手動更新一下

4.3 啟動uwsgi

uwsgi的基本命令,在終端執(zhí)行

uwsgi --ini uwsgi.ini  # 啟動uwsgi
uwsgi --stop uwsgi.pid  # 關閉uwsgi
uwsgi --reload uwsgi.pid  # 重啟uwsgi

其中uwsgi.ini是使用uwsgi的啟動文件,按照上面的案例寫就行,啟動之后會生成uwsgi.pid文件保存對應的ID,關閉uwsgi的時候需要指定該文件

5.使用nginx代理

上面是通過uwsgi以socket的方式啟動Django項目,這種協(xié)議瀏覽器是不能直接訪問的,所以需要借助nginx把請求轉發(fā)給Django

我們要修改nginx的配置文件,如果你希望監(jiān)聽80端口,你可以直接修改nginx的默認配置文件,一般是/etc/nginx/sites-enabled/default,不過為了方便管理,我這里還是在/etc/nginx/conf.d新建一個配置文件吧,一個項目一個配置文件比較方便后期管理

sudo vim /etc/nginx/conf.d/django_8000.conf

配置內容如下

# 這種寫法比較方便配合負載均衡
upstream backend {
	# 這里的IP端口即Django項目的IP端口
    server 127.0.0.1:8000;
    # 如果uwsgi使用的本地文件,此處寫法參考
    # server unix:/path/to/your/mysite/mysite.sock;
}
server {
	# nginx監(jiān)聽端口,即在瀏覽器訪問時的端口,我這里是監(jiān)聽8080端口
    listen 8080;
    autoindex on;
    location /static {
        alias /home/pan/productions/static;
    }
    location / {
        include uwsgi_params;
        uwsgi_pass backend;
    }
}

保存好nginx配置文件之后,需要重新加載一下nginx配置

sudo nginx -t
sudo nginx -s reload

現(xiàn)在打開瀏覽器訪問http://localhost:8080應該是可以正常訪問了

一般來說,如果是Django項目與nginx處于同一臺服務器,sock文件的方式會比IP端口更高效一點,但是使用sock文件的時候注意一下是否有讀寫權限文章來源地址http://www.zghlxwxcb.cn/news/detail-522040.html

到了這里,關于【Django】在Linux上部署Django(nginx+uwsgi)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Django使用uwsgi+nginx部署,admin沒有樣式解決辦法

    Django使用uwsgi+nginx部署,admin沒有樣式解決辦法

    若在服務器上部署的項目admin沒有樣式,則檢查下一下配置: settings uwsgi.ini urls nginx.conf } 如果使用了虛擬環(huán)境則修改nginx.conf文件中的/static/路徑為你虛擬環(huán)境的路徑,沒有使用虛擬環(huán)境則改為你python安裝路徑下的static 修改完后,cd/usr/sbin,使用./nginx -s reload,重啟nginx,重啟項目

    2024年02月14日
    瀏覽(23)
  • Ubuntu純凈服務器系統(tǒng)使用Nginx+uwsgi部署django項目

    當前文章依賴最新的ubuntu-22.04.3-live-server-amd64服務器系統(tǒng),python3-10版本,django為5.0版! 該服務器系統(tǒng)我們可以通過虛擬機來在本地安裝,也可以使用云服務器,操作方式方法大同小異! 這里我們以開源項目baykeshop為基礎來演示! 開源地址:baykeShop: baykeshop是一款python棧采用

    2024年01月17日
    瀏覽(59)
  • 2-Docker-應用-多容器部署Django+Vue項目(nginx+uwsgi+mysql)

    2-Docker-應用-多容器部署Django+Vue項目(nginx+uwsgi+mysql)

    基于Linux CentOS 7系統(tǒng)(虛擬機),使用Docker,多容器部署Django+Vue項目 整體部署用到了:Django+Vue+nginx+mysql+uwsgi 先每一個容器單獨部署,最后用Docker compose 語法整合,統(tǒng)一部署 參考文章:https://blog.csdn.net/qq_45445505/article/details/135563784 章標題:Docker介紹 節(jié)標題:Docker安裝 總結梳

    2024年03月10日
    瀏覽(33)
  • nginx uwsgi配置django

    nginx uwsgi配置django

    uwsgi文件 nginx.conf electric目錄 nginx access.log查看 技術無止境

    2024年02月15日
    瀏覽(21)
  • 設置nginx連接uWSGI的配置(nginx-uwsgi-django)

    1:non_idempotent是指POST、LOCK、PATCH請求方法的處理。 2:uwsgi_cache與uwsgi_store指令不可在同一指令域中同時使用。 3:除uwsgi_cache_path指令外,uWSGI模塊指令均可編寫在http、server、location指令域中。 4:uwsgi_cache_path指令只能編寫在http指令域中。 uWSGI模塊配置指令 指令名稱 指令值格式 默

    2024年02月17日
    瀏覽(18)
  • Django+Nginx+uWSGI+Supervisor實戰(zhàn)

    Django+Nginx+uWSGI+Supervisor實戰(zhàn)

    大家好,真的是許久沒有更新文章了,甚是想念,最近這段時間事情很多,家里的事情、工作的事情,真沒有太多時間去碼文章,其實已經擱置了些許文章,沒有整理,趁著這段時間風平浪靜,我還是不忘初心,給大家分享。 嘮嗑下網絡自動化(NetDevOps): 為什么要討論這個,

    2024年02月09日
    瀏覽(18)
  • Django筆記四十三之使用uWSGI部署Django系統(tǒng)

    Django筆記四十三之使用uWSGI部署Django系統(tǒng)

    本文首發(fā)于公眾號:Hunter后端 原文鏈接:Django筆記四十三之使用uWSGI部署Django系統(tǒng) 目前部署 Django 的方式一般來說是使用 Nginx + uWSGI + Django 來實現(xiàn)。 處理流程是,當一個請求發(fā)送過來會先經過 Nginx,如果是靜態(tài)文件請求,Nginx 這一層直接處理,如果是后端動態(tài)接口,則會發(fā)送

    2024年02月05日
    瀏覽(24)
  • linux安裝python和部署Django項目

    linux安裝python和部署Django項目

    1 python安裝 官網地址:https://www.python.org/ 本次下載的python安裝包地址:https://www.python.org/ftp/python/3.8.16/Python-3.8.16.tgz 解壓下載的python壓縮包 編輯文件 vim /usr/bin/yum ,將首行修改為 #!/usr/bin/python2 。 2 Django項目部署 編寫一個django.ini文件,文件內容如下 在nginx中配置下面信息,就

    2024年02月14日
    瀏覽(49)
  • 【學習心得】如何用uwsgi快速部署Django

    問題描述: 有時候,只想快速的部署一個Django項目實現(xiàn)項目迭代開發(fā)。本文介紹不使用Nginx只用uwsgi如何實現(xiàn)Django項目的快速部署。 如果還不會創(chuàng)建Ubuntu中的Python虛擬環(huán)境,可以參考我之前的文章: 【學習心得】Linux下的Python虛擬環(huán)境搭建_linux python虛擬環(huán)境搭建 優(yōu)點:最簡

    2024年02月12日
    瀏覽(23)
  • Python web實戰(zhàn) | Docker+Nginx部署python Django Web項目詳細步驟【干貨】

    Python web實戰(zhàn) | Docker+Nginx部署python Django Web項目詳細步驟【干貨】

    ? 在這篇文章中,我將介紹如何使用 Docker 和 Nginx 部署 Django Web 項目。一步步講解如何構建 Docker 鏡像、如何編寫 Docker Compose 文件和如何配置 Nginx。 1.1 配置 Django 項目 在開始之前,我們需要有一個 Django 項目。如果你還沒有 Django 項目,可以按照 Django 官方文檔的指導創(chuàng)建一

    2024年02月15日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包