Django之Apache2部署


  雖然Django自帶了wsgi,能進行簡單部署,但是在實際部署時多采用Apache和Nginx。本文簡單介紹了如何用apache2來部署一個django的項目。

  環境安裝:

    安裝apache2:

sudo apt-get install apache2

    安裝mod-wsgi:  

sudo apt-get install libapache2-mod-wsgi-py3

      注意:此時無需安裝python2的mod-wsgi,否則apache2將會自動關聯python2,導致項目部署出現不能導入wsgi.py模塊的問題。

  部署:

    1.創建簡單項目:我們在桌面上臨時創建一個test_apache的項目,用於部署  

cd Desktop/
sudo dajngo-admin startproject  test_apache

     2.創建項目的配置文件: 在apache2的配置文件夾下面創建一個與項目同名的配置文件即可。    

sudo vim /etc/apache2/sites-available/test_apache.conf

       注意:Ubntu與CentOS的apache配置文件夾路徑有區別,該項目時在Ubuntu系統進行配置的。

    3.添加配置

<!-- PORT 8888 -->
<VirtualHost *:8888>

<!-- IP 12.82.166.83 -->
ServerName 12.82.166.83

<!-- 項目根目錄 -->
DocumentRoot /home/proetest02/Desktop/test_apache

<!-- 通過wsgi連接django項目和apche2 -->
WSGIScriptAlias / /home/protest02/Desktop/test01/test_apache/wsgi.py

<!-- 文件授權 -->
<Directory /home/protest02/Desktop/test_apache/test_apache>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>
</VirtualHost>

    4.端口監聽:

#編輯端口配置文件
sudo vi  /etc/apache2/ports.conf
#修改或者添加監聽端口
Listen 8888

     5.添加項目所在地:

#編輯wsgi.conf
sudo vim /etc/apache2/mods-available/wsgi.conf
#添加項目路徑
WSGIPythonPath /home/protest02/Desktop/test_apache

       6.修改項目wsgi.py:加入下面代碼即可

from os.path import join,dirname,abspath 
import sys
        
PROJECT_DIR = dirname(dirname(abspath(__file__)))   
sys.path.insert(0,PROJECT_DIR)
    

    7.權限修改:

      由於apache2默認啟用用戶:www-data(相關配置文件見:/etc/apache2/envvars),所以在當前Linux登陸用戶下需要給www-data相關的執行權限,當然你可以去配置文件中修改默認用戶。

#權限修改,后期還有新增應用也需修改權限
sudo chmod -R 644 test_apache
sudo find test_apache -type d | xargs chmod 755
sudo chgrp www-data test_apache
sudo chmod g+w test_apache

     8.啟動服務

sudo service apache2 reload 
sudo a2ensite test_apache.conf
sudo service apache2 restar

    9.測試項目:

      進入瀏覽器輸入:12.166.80.83/admin,就可以看到django的后台管理登陸界面了。說明你項目配置成功。

   部署總結:

    1.apache查看版本命令:有可能需要加sudo

apachectl -v

    2.常見問題: 

      1.出現 Target WSGI script '/home/protest02/Desktop/test01/test01/wsgi.py' cannot be loaded as Python module.則有可能是安裝了python2的mod-wsgi. 卸載即可。

      2.配置文件腳本單詞選項拼寫錯誤,可根據終端提示命令查看或者進入日志查看:cat /var/log/apache2/error.log

    3.配置文件可編寫內容:

#端口配置
<VirtualHost *:80> 
# 填寫自己服務器的域名或者ip
ServerName IP:80
# 其他域名(此處可以不填),多個域名指向同一個站點時可以使用,要多少個就加多少個,空格隔開   
ServerAlias otherdomain.com 
#郵箱
ServerAdmin xxx@Email.com
# 多媒體文件存放的路徑,具體路徑根據你自己的來,這里只是例子
Alias /media/ /home/user/項目名稱/media/ 
# 靜態文件文件( js, css, 圖片,視頻等文件)存放的路徑,具體路徑根據歲需求
Alias /static/ /home/user/項目名稱/static/ 
# 文件授權
<Directory /home/user/項目名稱/media>
     Require all granted 
</Directory> 

<Directory /home/user/項目名稱/static> 
    Require all granted 
</Directory>

# 通過wsgi.py 連接apache2和你的Django項目
WSGIScriptAlias / /home/user/項目名稱/項目名稱/wsgi.py

<Directory /home/user/項目名稱/項目名稱>
    <Files wsgi.py> 
        Require all granted 
    </Files> 
</Directory> 
</VirtualHost> 

 

    

    

      

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM