【django】Nginx+uWSGI+Django部署我的部落格網站
一.前言
我們通常將nginx作為伺服器最前端,它將接收WEB的所有請求,統一管理請求。然後nginx把所有靜態請求自己來處理(這是NGINX的強項),並將將所有非靜態請求通過uwsgi傳遞給Django,由Django來進行處理,從而完成一次WEB請求。
可見,uwsgi的作用就類似一個橋接器。
二.工作環境
Ubuntu14.04 LTS
Django1.8
三.安裝,測試uwsgi
$ export LDFLAGS="-Xlinker --no-as-needed"
$ pip install uwsgi
編寫程式test.py:
# test.py
def application (env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"
執行shell命令:
uwsgi --http :8000 --wsgi-file test.py
訪問網頁:
如果網頁上顯示Hello World,則執行正確。
四.配置django
編寫django_wsgi.py檔案,將其放在與檔案manage.py同一個目錄下。
注意,os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “blog.settings”)中,blog為專案名~
#!/usr/bin/env python
# coding: utf-8
import os
import sys
# 將系統的編碼設定為UTF8
reload(sys)
sys.setdefaultencoding('utf8')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
假設我們已經在專案的目錄下了(即django_wsgi.py所在目錄),執行:
uwsgi --http :8000 --chdir ./ --module django_wsgi
開啟瀏覽器中訪問你的Django程式了,所有的請求都是經過uwsgi傳遞給Django程式的(此時靜態檔案貌似是訪問不了的~)
五.配置uWSGI
為了實現Nginx與uWSGI的連線,兩者之間將採用soket來通訊。
這裡,我們將使用uWSGI配置檔案的方式來改進uWSGI的啟動方式。
假定你的程式目錄是 /home/work/testdjango/mysite
我們將要讓Nginx採用8077埠與uWSGI通訊,請確保此埠沒有被其它程式採用。
在 /home/work/testdjango/mysite下新建一個XML檔案djangochina_socket.xml:
<uwsgi>
<socket>:8077</socket>
<chdir>/home/work/testdjango/mysite</chdir>
<module>django_wsgi</module>
<processes>4</processes> <!-- 程序數 -->
<daemonize>uwsgi.log</daemonize>
</uwsgi>
在上面的配置中,我們使用 uwsgi.log 來記錄日誌,開啟4個程序來處理請求。
六.安裝,配置Nginx
$ sudo apt-get install nginx
我們假設你將會把Nginx程式日誌放到你的目錄/home/work/testdjango/mysite/logs/下,請確保該目錄存在。
我們假設你的Django的static目錄是/home/work/testdjango/mysite/blog/static/ ,請確保這些目錄存在。
我們假設你的域名是 localhost。
我們假設你的域名埠是 80(在除錯時你可以設定一些特殊埠如 8070)
基於上面的假設,我們為conf/nginx.conf新增配置。
(用whereis nginx檢視下nginx的目錄,在其目錄下即可找到conf/nginx.conf這個配置檔案。注意,可能conf下有一個叫做conf/nginx.conf.default的檔案,我們把它的名字改掉,不然系統預設使用這個檔案)
user root
server {
listen 80;
server_name localhost;
access_log /home/work/testdjango/mysite/logs/access.log;
error_log /home/work/testdjango/mysite/logs/error.log;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8077;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /static/ {
alias /home/work/testdjango/mysite/blog/static/;
index index.html index.htm;
}
}
於是,Nginx將處理靜態檔案(/static),非靜態檔案請求Nginx會發給 socket 8077,然後讓uWSGI來進行處理。
七.執行
在完成上面配置後,需要按以下步驟來做:
重啟Nginx伺服器,以使Nginx的配置生效。
nginx -s reload
重啟後檢查Nginx日誌是否有異常。
啟動uWSGI伺服器
cd /home/work/testdjango/mysite
uwsgi -x djangochina_socket.xml
檢查日誌 uwsgi.log 是否有異常發現。
訪問服務
用瀏覽器訪問localhost,如果發現程式與單獨使用Django啟動的程式一模一樣時,就說明成功了~!
關閉服務的方法
方式1
#查詢nginx主程序號
ps -ef | grep nginx
#從容停止 kill -QUIT 主程序號
#快速停止 kill -TERM 主程序號
#強制停止 kill -9 nginx
方式2
nginx -s stop :快速停止nginx
nginx -s quit :完整有序的停止nginx
相關推薦
【django】Nginx+uWSGI+Django部署我的部落格網站
一.前言 我們通常將nginx作為伺服器最前端,它將接收WEB的所有請求,統一管理請求。然後nginx把所有靜態請求自己來處理(這是NGINX的強項),並將將所有非靜態請求通過uwsgi傳遞給Django,由Django來進行處理,從而完成一次WEB請求。
【轉】阿里雲+wordpress搭建個人部落格網站【小白專用的圖文教程】
簡介 對於初次接觸雲伺服器的童鞋,想要搭建一個屬於自己的個人部落格是非常裝比的事情,那麼這裡有一個非常好的框架wordpress可以使用。 這裡主要分享一篇文章基於阿里雲伺服器以及WordPress從頭到尾搭建一個屬於自己的個人部落格 相信看完這篇博文
【python專案部署】Nginx+uWSGI+Django部署
前言 Django開發實際線上部署的最優架構:Nginx+uWSGI+Django。 採用動/靜分離高效的WEB設計。 WEB發展史回顧 wsgi概念 WSGI,全稱 Web Server Gateway Interface, 或者
Centos7+nginx+uwsgi來部署我的Django專案
前不久寫了個小的部落格專案,想著將它部署到伺服器上去,因為是第一次部署專案,有很多的東西都不這麼懂,走了很多的彎路,現在部署成功了,怕以後忘記了就記錄下筆記 首先我的專案結構如下: 關於伺服器的遠端連線,我用的伺服器是阿里雲的輕量應用伺服器,連線資料庫的軟體通過WinSCP來連線我的伺
centos7下部署Django(nginx+uwsgi+django+python3)
參考文獻: https://blog.csdn.net/anifans9350/article/details/80145535 https://www.cnblogs.com/dalanjing/p/8636338.html 0.安裝步驟預覽(1)系統預設自帶python2.x,所以需
Django學習(二)——實現個人部落格網站
Django網站快速入門 2.1 個人部落格網站規劃 個人部落格具有以下功能: 專案名稱mblog 通過admin管理介面張貼、編輯以及刪除貼文 使用Bookstrap網頁框架 在主頁中顯示每篇文章的標題,及發帖日期 建立專案: dja
【GitHub】建立Git分支將Hexo部落格遷移到其它電腦
GitHub+Hexo搭建部落格的過程比較平滑,但是它的配置卻非常耗時間,一旦電腦出現問題或者需要在另外一臺電腦上寫部落格,那麼Hexo部落格的遷移非常就讓人頭疼。下面參考其他部落格的方法,整理出一個能在平時就管理重要檔案的方法,方便隨時遷移 必備
五步教你實現使用Nginx+uWSGI+Django方法部署Django程序
設置 wsgi alias admin 生效 server static 出現 mar 新建一個XML文件: djangochina_socket.xml,將它放在/data/www/org_management目錄下: Nginx采用8077端口與uWSGI通訊,請確保此
ubuntu 16.04部署python項目(Nginx+uwsgi+django)
也有 src cnblogs 就是 主機 serve .cn ket essential 嘗試在linux上部署項目,先從最熟悉的python項目開始吧。 1、安裝Nginx 命令:sudo apt-get install nginx 2、安裝uwsgi,從pip倉庫安裝
centos7下部署Django(nginx+uWSGI+Python3+Django)
sbin socket `` onf upload SQ fig 目錄 down 部署代碼後uWSGI需要重新啟動,關閉系統防火墻或者開放端口 系統版本:CentOS7.0 Python版本:Python3.6.3 Django版本:2.0.5 uWSGI版本:2.0
Nginx+uWsgi生產部署Django
web服務器 上傳 完成 分享圖片 ram onf utf targe 還需 部署得過程很簡單,部署得核心在於,為什麽要這樣做,每一個參數代表什麽意思,最終的目的是得了解,一些基概念性的東西。 uWsgi簡介 說Uwsgi之前,先說一下Wsgi。 什麽是Wsgi?
Nginx+uWSGI+Django部署web服務器
使用配置 -- tin 排除 允許 發布 enable ble chdir 目錄 Nginx+uWSGI+Django部署web服務器 環境說明 前言 搭建項目 Django部署 編輯luffy/luffy/settings.py 編輯luffy/app01/views.
nginx+uWSGI+django+virtualenv+supervisor部署發布web項目
content its object src Pythonweb system perm 會有 targe Nginx (engine x) 是一個高性能的HTTP和反向代理服務,也是一個IMAP/POP3/SMTP服務。 wsgi是PythonWeb服務器網關接口(We
專案部署nginx+uwsgi+django
1.概念 Django專案(web應用) web服務 nginx:高併發處理的好 Apache:穩定 LAMP:Linux Apache MySQL Python/Php/Per1 LNMP:Linux Nginx My
Nginx+uWSGI+Django部署web伺服器
一.搭建專案 1.建立一個虛擬環境 建議個人學習和測試的話,直接建在 /home/ubuntu/使用者/ 目錄下, virtualenv -p python3 py
Nginx+Uwsgi+Django+Python伺服器部署及除錯(更新0.1)
Nginx+Uwsgi+Django+Python伺服器部署 環境:Ubuntu16.04 1.python開發環境 安裝pyenv,python,virtualenv,需要使用python虛擬環境env 2.安裝配置nginx 安裝 sudo apt-get ins
ubuntu16.04下nginx+uwsgi+django伺服器部署
1.python開發環境 安裝pyenv,python,virtualenv,需要使用python虛擬環境env365 2.安裝配置nginx 安裝 sudo apt-get install nginx 配置 cd /etc/nginx/sites-available cp
Django項目部署(nginx+uWSGI+django+virtualenv+supervisor發布web服務器 )
通過命令 code 應用程序服務器 不同 靜態文件處理 運行 web服務 文件 mysq 一、簡介 WSGI是Web服務器網關接口。它是一個規範,描述了Web服務器如何與Web應用程序通信,以及Web應用程序如何鏈接在一起以處理一個請求,(接收請求,處理請求,響應請求
Django專案部署(nginx+uWSGI+django+virtualenv+supervisor釋出web伺服器 )
一、簡介 WSGI是Web伺服器閘道器介面。它是一個規範,描述了Web伺服器如何與Web應用程式通訊,以及Web應用程式如何連結在一起以處理一個請求,(接收請求,處理請求,響應請求) 基於wsgi執行的框架有bottle,DJango,Flask,用於解析動態HTTP請求 支援WSGI的伺服器
python3 nginx+uwsgi+Django 部署
安裝Nginx(centos7) 1.新增源 2.安裝 sudo yum install -y nginx 3.啟動nginx systemctl start nginx.service systemctl restart nginx.service syst