基於Django框架的網站部署詳解

高洛峰
發布: 2017-03-09 09:56:49
原創
1644 人瀏覽過

                   

对于刚入门的同学,当完成了项目代码,在本地localhost的调试没问题后,会遇到如何让项目上线的问题。
网上的资料过于繁杂,因此希望这篇能简单地为刚入门的同学解惑。
登入後複製

1.網域名稱

    首先,當我們輸入一個網址http://www.example.com/時,因而解析至對應的位址該IP實現存取。所以,要讓別人存取我們專案的第一步,就是需要擁有兩樣東西,網域和公網ip。
    網域的取得很簡單,隨便註冊購買一個就好了。然後需要的是將網域解析到你的公網ip。而公網ip,一般在購買雲端伺服器的時候能取得。
    經過這一步驟,我們實現了:請求-->DNS-->伺服器ip,而我們的最終目的就是:請求-->DNS-->伺服器ip-->黑盒子- ->項目wsgi應用

2.使用gunicorn運行項目

    在此,我們使用django搭建項目,當你的項目完成後。我們需要執行監聽請求,接收請求並呼叫對應的wsgi應用的服務程式。例如執行python manage.py runserver 0.0.0.0:8000,runserver 就是django 內建的用於偵錯的基於wsgi的服務程式。

在雲端伺服器上我們建立一個專案

##django-admin.py startproject blog

其中wsgi.py

import os
import sys
# 当使用virtualenv等隔离项目环境时,需要将项目的路径添加添加到查找路径中
path = os.getcwd()
if path not in sys.path:
    sys.path.append(path)

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "blog.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
登入後複製
我們在專案下執行以下指令

gunicorn wsgi:application

預設綁定127.0.0.1:8000,具體gunicorn 的使用可以自行google一下

此時,我們能就能透過本地8000埠來存取我們的專案內容了。實現了:請求-->DNS-->伺服器ip-->黑盒子-->127.0.0.1:8000-->專案wsgi應用

3.nginx接收外部請求,內部轉送

在/etc/nginx/sites-available/資料夾下,新建一個檔案blog,並加入以下簡單設定

server {
    listen 80;
    server_name  你的域名 你的公网ip(可选);
    access_log  /var/log/nginx/blog.log;
    location /static {
        #静态文件如js,css的存放目录
        root /project/blog;
    }
    location / {
        include proxy_params;
        # 从外部接收请求后转发到本地的8000端口
        proxy_pass http://127.0.0.1:8000;
    }
}
登入後複製
從上面我們就可以明白,nginx 接收到請求後,轉發給gunicorn正在監聽的本地8000端口,gunicorn根據請求調用項目中相應的應用函數後返回結果。

自此我們就基本實現了請求-->DNS-->伺服器ip-->nginx(80埠)-->127.0.0.1:8000-->專案wsgi應用
而關於nginx和gunicorn的具體配置還有許多,不妨多google一下延伸學習

4.總結

gunicorn讓項目跑起來

nginx負責接收請求和轉發請求到運行中項目監聽請求的連接埠
部署到線上,主要需要域名,公網ip,二者均可以透過雲端伺服器來解決,所以最好還是直接買個雲端伺服器實踐一下,just do it




#

以上是基於Django框架的網站部署詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!