python-django 項目部署,不難!

前言

用django開發項目的時候,都是用debug=True模式運行,所以靜態文件都是django去處理。在實際項目中,還是需要多線程以及專門處理靜態文件的服務來配合,才能提升整個系統的性能。因此,可以選用nginx+gunicorn+django的架構進行部署。


python-django 項目部署,不難!


django項目結構

使用命令python startproject mysite創建項目,然後進入mysite文件夾 python manager.py startapp blog創建自己的應用,就是下面的目錄結構了,然後創建static目錄來存放靜態文件,創建templates來存放模板文件。

mysite/

├── blog

│ ├── admin.py

│ ├── apps.py

│ ├── __init__.py

│ ├── migrations

│ ├── models.py

│ ├── __pycache__

│ ├── tests.py

│ ├── urls.py

│ └── views.py

├── db.sqlite3

├── manage.py

├── mysite

│ ├── __init__.py

│ ├── __pycache__

│ ├── settings.py

│ ├── urls.py

│ └── wsgi.py

├── static

│ └── 1.img

└── templates

└── blog


配置模板和靜態文件路徑

修改配置文件mysite/mysite/settings.py

找到TEMPLATES中的DIRS的key,在列表裡面添加templates的路徑,有因為工作目錄是mysite,所以直接寫相對路徑即可。

python-django 項目部署,不難!

在同一個配置文件裡面找到STATIC_URL,在錢見加上STATICFILES_DIRS的設置,列表裡面填寫靜態文件的路徑即可。

python-django 項目部署,不難!


gunicorn

直接使用pip install gunicorn就可以安裝了。

cd ~/mysite

gunicorn -w 3 -b 127.0.0.1:8080 mysite.wsgi:application

這樣子gunicorn就跑起來了,直接訪問127.0.0.1:8000就可以看到自己的網站了。

-w 是指開啟幾個進程進行處理

-b 是指綁定的監聽IP及端口

mysite.wsgi:application,前半截很容易理解,就是調用了mysite下的wsgi.py,而後面的application就是wsgi.py裡面定義的一個對象,所以是固定的。

但是,你會發現靜態文件都訪問不到了。這時候就需要nginx


nginx配置

在nginx配置文件nginx.conf,修改對應的server就可以了。

server{

listen 80;監聽的端口

location / {

proxy_pass http://127.0.0.1:8000;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

}

# location 顧名思義,定位,就是當訪問 / 的時候,nginx會將請求轉給本地的8000端口,而後面的設置都是一些基本的配置,可以直接用

location /static {

alias /home/project/mysite/static;

}

# 這個就是配置靜態文件的地方,要用絕對地址,對應最開始的目錄形式,假設project就在/home/project/mysite下面,那麼這樣配置就可以的了.

}

配置完以後啟動nginx,然後直接訪問127.0.0.1就可以訪問到自己的網站。

python-django 項目部署,不難!

人生苦短,我用Python!


分享到:


相關文章: