1. 程式人生 > >【django】Nginx+uWSGI+Django部署我的部落格網站

【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

相關推薦

djangoNginx+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下部署Djangonginx+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下部署Djangonginx+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