1. 程式人生 > >Nginx+uWSGI+Django部署web伺服器

Nginx+uWSGI+Django部署web伺服器

一.搭建專案

    1.建立一個虛擬環境
        建議個人學習和測試的話,直接建在 /home/ubuntu/使用者/ 目錄下,

virtualenv -p python3 py3env

  2.啟動虛擬環境

source py3env/bin/activate

  3.安裝django,之所以裝這個版本是學習所需要,後面自己的專案最好與時俱進。

pip install django

4 .新建專案和app

django-admin startproject weixin #安裝專案
 
cd weixin

python3 manage.py startapp newapp#安裝app

python3 manage.py migrate #依賴

5.專案目錄結構


(py3env) [email protected]:~/ybb/weixin$  tree -L 2
.
├── manage.py
├── newapp
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── weixin
    ├── __init__.py
    ├── __pycache__
    ├── settings.py
    ├── urls.py
    └── wsgi.py

二.Django部署

1.修改weixin/weixin/settings.py

ALLOWED_HOSTS = ['*', ]

 在ALLOWED_HOSTS 預設的空列表中填入你自己打算使用的域名,我這裡測試的時候填的是*,真正上線部署的時候不建議填成萬用字元的*,而是要填允許訪問的主機域名

INSTALLED_APPS = [
  ......,
 'newapp', ]

INSTALLED_APPS 列表下增加newapp,表示將newapp應用給安裝註冊上。

2.修改weixin/newapp/views.py

from django.shortcuts import render,HttpResponse

# Create your views here.

def index(request):
    return HttpResponse('Hello ybb')

3.編輯weixin/weixin/urls.py

from django.conf.urls import url
from django.contrib import admin
from newapp import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),
]

4.測試專案,執行結果(注意伺服器埠開放有哪些)

python manage.py runserver 0.0.0.0:3389

 

 

 

三.uWSGI部署

1.同樣的虛擬環境下安裝:

pip3 install uwsgi

2.在專案目錄下,編寫一個用於簡單測試uwsgi的python指令碼,

vim test.py

3.test.py 程式碼

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

4.測試執行uWSGI

以下命令表示執行uwsgi服務,同樣是在3389口上開放web訪問。
* 注意--http 後是一個空格再接:埠號。

uwsgi --http :3389 --wsgi-file test.py

ctrl+c中止程式,再來進行以下的測試。

5.使用uWSGI執行django專案

在虛擬環境下,進入到專案目錄下後敲以下命令:

 uwsgi --http :3389 --module weixin.wsgi

效果和之前的

python manage.py runserver 0.0.0.0:3389

一樣

6.uWSGi熱載入Djangoa專案

在啟動命令後面加上引數:

uwsgi --http :3389 --module weixin.wsgi --py-autoreload=1
  • 同樣,這個時候訪問伺服器3389埠,也就是訪問了django專案(weixin)。