1. 程式人生 > >ubuntu環境下Apache2部署django2.0專案及問題解答

ubuntu環境下Apache2部署django2.0專案及問題解答

關於使用阿帕奇部署django專案的帖子網上有很多,但是部署時還是還有錯誤,那麼我把易錯點進一步總結,方便大家部署,這裡我才用本機部署,線上部署是一樣的原理

準備階段:

1.環境:ubuntu+python3.5.2+django2.0

2.準備一個寫好的django專案,通過命令python3 manage.py runserver可以執行,保證django專案是可以執行的

安裝apache:

1.sudo apt-get install apache2   這個命令來安裝apache2

2.sudo apt-get 

install libapache2-mod-wsgi-py3  安裝mod-wsgi依賴檔案,因為是python3的所以+py3,

如果是python2的專案命令為sudo apt-get install libapache2-mod-wsgi

3.apachectl -v  檢視apache的版本號,這個和一會配置連結有關係,不過如果你更新了自己的源,都會是最新的版本2.4.x,也可以不進行檢視,主要是為了2.x版本

配置apache2的連結檔案

1.cd /etc/apache2/sites-available/   進入這個目錄下

2.sudo vi 專案名稱.conf     新建這個檔案專案名稱.conf檔案,當然了每個人的習慣不一樣的,我為了方便區別於專案,就以專案名稱來命名,如果裡邊有其他的*.conf檔案,為了方便可以刪除

3.然後進行這個對這個.conf檔案進行配置,如下:

   配置相當關鍵,專案能不能部署成功,配置檔案佔了90%

 

  1 <VirtualHost *:80>
  2 
  3     ServerName localhost:80             # 本機部署,埠80


  4 
  5 #    ServerAdmin [email protected]            # 這個郵箱不重要
  6     WSGIScriptAlias / /home/python/Desktop/django_test/fang/fang/wsgi.py    # 這是專案的wsgi.py的絕對路徑,非常重要,是apache連結django專案的紐帶
  7 
  8     Alias /static/ /home/python/Desktop/django_test/fang/static/    # 這是專案的靜態檔案絕對路徑,非常重要
  9 
 10     <Directory /home/python/Desktop/django_test/fang   # 專案路徑>
 11          Require all granted
 12     </Directory>
 13 
 14     <Directory /home/python/Desktop/django_test/fang/static # 靜態檔案路徑>
 15          Require all granted
 16     </Directory>
 17 
 18     WSGIDaemonProcess fang python-path=/home/python/Desktop/django_test/fang  python-    path=/home/python/.virtualenvs/django_py3/lib/python3.5/site-packages    # 這個 WSGIDaemonProcess配置非常重要,後邊不能直接+python-path ,要+專案名稱,然後就是專案的依賴包路徑一定要正確,都在一直調不通,尤其是使用了虛擬環境的專案      
 19     WSGIProcessGroup fang
 20     <Directory /home/python/Desktop/django_test/fang/fang>
 21       <Files wsgi.py>
 22         Require all granted
 23       </Files>
 24     </Directory>
 25 
 26 
 27 </VirtualHost>

配置django專案的settings檔案

找到專案的settings檔案,然後開啟,進行如下配置:

import os

from os.path import join,dirname,abspath

 

PROJECT_DIR = dirname(dirname(abspath(__file__)))#3     #  原有基礎上新加的配置專案

import sys # 4

sys.path.insert(0,PROJECT_DIR) # 5

 

os.environ["DJANGO_SETTINGS_MODULE"= "blog.settings" # 7

 

from django.core.wsgi import get_wsgi_application

application = get_wsgi_application()

許可權修改

進入專案所在的目錄下

通過命令(1)sudo chmod -R 644 專案名稱  (2)sudo find 專案名稱 -type d | xargs chmod 755 修改專案執行許可權

啟動專案

1.通過命令啟用web專案:

sudo a2ensite 專案名稱 或 sudo a2ensite 專案名稱.conf

2.重新載入apache,sudo service apache2 reload

3.開啟或者重新開啟apache伺服器,命令如下:

sudo service apache2 start         開啟

sudo service apache2 restart       重啟

sudo service apache2 stop         停止

 

通過部署配置的servername訪問,我是本機部署,所以訪問地址是127.0.0.1:80

這個訪問process是 name.conf --> wsgi.py --> settings.py --> urls.py --> views.py

 

ubuntu環境下Apache2部署django2.0專案問題總結

1.第一次部署完成後,沒有連結成功是因為我自己的專案路徑錯誤

  答:修改正確的路徑

2.專案和伺服器聯通後,卻沒有返回資料,如下圖:

   答:1.通過sudo vi /var/log/apache2/error.log開啟阿帕奇的log記錄

          2.檢視log發現報了很多錯誤,但是最後一個是No module named ‘rest_framework’,所以是依賴檔案問題

             

           3.因為專案之前通過python3 manage.py runserver可以走通,說明在django專案的settings.py中的INSTALLED_APPS中已經註冊過rest_framework,那麼肯定問題在配置檔案 專案名稱.conf的依賴檔案路徑中,所以修改正確的路徑即可,如果是沒有配置WSGIDaemonProcess這一項,直接進行正確的配置,這個問題尤其容易發生在以虛擬環境部署的專案

            4.修改後成功訪問: