基於Django框架的網站部署

對於剛入門的同窗,當完成了項目代碼,在本地localhost的調試沒問題後,會遇到如何讓項目上線的問題。
網上的資料過於繁雜,所以但願這篇能簡單地爲剛入門的同窗解惑。

1.域名

    首先,當咱們輸入一個網址http://www.example.com/時,首先通過DNS解析到對應的IP地址,從而對該IP實現訪問。因此,要讓別人訪問咱們項目的第一步,就是須要擁有兩樣東西,域名和公網ip。
    域名的得到很簡單,隨便註冊購買一個就行了。而後須要的是將域名解析到你的公網ip。而公網ip,通常在購買雲服務器的時候能得到。
    通過這一步,咱們實現了:請求-->DNS-->服務器ip,而咱們的最終目的就是:請求-->DNS-->服務器ip-->黑盒子-->項目wsgi應用css

2.使用gunicorn運行項目

    在此,咱們使用django搭建項目,當你的項目完成後。咱們須要運行監聽請求,接收請求並調用相應的wsgi應用的服務程序。例如執行python manage.py runserver 0.0.0.0:8000,runserver 就是django 自帶的用於調試的基於wsgi的服務程序。python

在雲服務器上咱們建立一個項目nginx

django-admin.py startproject blogdjango

其中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()

咱們在項目下執行如下命令app

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,並添加以下簡單設置google

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

相關文章
相關標籤/搜索