1. 程式人生 > >Ubuntu下Django+Apache+mod_wsgi部署

Ubuntu下Django+Apache+mod_wsgi部署

OS: Ubuntu16.04LTS
Django: 1.11
Python: 2.7.11
Apache: 2.4

本文只是Django+Apache的簡單部署
首先將Django Project放到/var/www目錄下

1. 安裝Apache和mod_wsgi

sudo apt-get install apache2
sudo apt install libapache2-mod-wsgi
pip install virtualenv

2. 修改Django wsgi.py

import os
import sys

from django.core.wsgi import
get_wsgi_application PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, PROJECT_DIR) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") application = get_wsgi_application()

3. 建立Apache配置檔案

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

內容如下:

<VirtualHost *:80>
    ServerName 192.168.191.2
    ServerAlias otherdomain.com
    ServerAdmin [email protected]163.com

    DocumentRoot /var/www/mysite    

    Alias /media/ /var/www/mysite/media/
    Alias /static/ /var/www/mysite/static/

    <Directory /var/www/mysite/media>
        Require all
granted </Directory> <Directory /var/www/mysite/static> Require all granted </Directory> WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py WSGIDaemonProcess http://192.168.191.2 python-path=/var/www/mysite:/home/dang/pywork/webenv/lib/python2.7/site-packages WSGIProcessGroup http://192.168.191.2 <Directory /var/www/mysite/mysite> <Files wsgi.py> Require all granted </Files> </Directory> #ErrorLog ${APACHE_LOG_DIR}/error.log #CustomLog ${APACHE_LOG_DIR}/access.logcombined </VirtualHost>

由於我使用的是virtualenv環境,所有需要在上面的配置檔案中新增如下內容:

WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py
WSGIDaemonProcess http://192.168.191.2 python-path=/var/www/mysite:/home/dang/pywork/webenv/lib/python2.7/site-packages
WSGIProcessGroup http://192.168.191.2

啟用配置檔案

sudo a2ensite sitename.conf

重啟Apache server

sudo service apache2 restart

此時可以就去訪問了。
注意:如果專案使用sqllite資料庫或者目錄下存在上傳目錄需要設定修改許可權。