對於剛入門的同窗,當完成了項目代碼,在本地localhost的調試沒問題後,會遇到如何讓項目上線的問題。 網上的資料過於繁雜,所以但願這篇能簡單地爲剛入門的同窗解惑。
首先,當咱們輸入一個網址http://www.example.com/時,首先通過DNS解析到對應的IP地址,從而對該IP實現訪問。因此,要讓別人訪問咱們項目的第一步,就是須要擁有兩樣東西,域名和公網ip。
域名的得到很簡單,隨便註冊購買一個就行了。而後須要的是將域名解析到你的公網ip。而公網ip,通常在購買雲服務器的時候能得到。
通過這一步,咱們實現了:請求-->DNS-->服務器ip,而咱們的最終目的就是:請求-->DNS-->服務器ip-->黑盒子-->項目wsgi應用css
在此,咱們使用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應用學習
在/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一下延伸學習調試
gunicorn讓項目跑起來nginx負責接收請求和轉發請求到運行中項目監聽請求的端口部署到線上,主要須要域名,公網ip,兩者都可以經過雲服務器來解決,因此最好仍是直接買個雲服務器實踐一下,just do it