部署Django应用HTTPD

时间:2018-07-12 09:14:08

标签: django apache

我想部署Django应用程序,并尝试通过 Whitenoise 实现该目标, 但是最后一个仅提供我的静态文件,现在我需要提供我的媒体文件。 我想使用 Apache (Manjaro / Arch中的 HTTPD )来执行此操作,但是在尝试了多个tuto之后却无法解决。

这是我的配置:

httpd.conf

ImmutableArray<T> im = Unsafe.As<T[], ImmutableArray<T>>(ref array);

settings.py

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias / /home/chemsouh/dev/rci/rci/wsgi.py
WSGIPythonHome /home/chemsouh/dev/rci
WSGIPythonPath /home/chemsouh/dev/rci/rci

<Directory /home/chemsouh/dev/rci/rci>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

我也尝试过:

在我的 httpd-vhosts.conf 中:

MEDIA_URL = '/media-directory/'
MEDIA_ROOT=os.path.join(os.path.dirname(BASE_DIR), "media-serve/")

在我的 httpd.conf 中:

<VirtualHost 127.0.0.1:80>
    ServerAdmin RCI
    DocumentRoot "/home/chemsouh/dev/rci/media-serve"
    ServerName rci.co
    ServerAlias www.rci.co    
    ErrorLog "/var/log/httpd/dummy-host.example.com-error_log"
    CustomLog "/var/log/httpd/dummy-host.example.com-access_log" common
</VirtualHost>

我得到了我要提供的我的媒体目录

My media directory that I want to serve

这是我的项目树: $ pwd给了 / home / chemsouh / dev / rci

project tree

NB 我使用:

Apache 2.4 的Django 2.0.6 在设置中有settings.py

1 个答案:

答案 0 :(得分:1)

您的Django项目架构对我来说很奇怪,而且我没有使用Manjaro。在我的回答中,我使用的是Ubuntu 16.04,您可以使用Manjaro复制它。

除此之外,这是一个简单的教程,说明如何使用ApachePython3+来部署django项目。

首先,您需要为Python3安装Apache2mod_wsgi

$> sudo apt update
$> sudo apt install apache2
$> sudo apt install libapache2-mod-wsgi-py3

然后,我想您的Django项目在/var/www/html目录下,并且类似于此建筑:

$> tree -I '__pycache__|migrations'
.
└── deploy_django
    ├── deploy_django
    │   ├── __init__.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── django_app
    │   ├── admin.py
    │   ├── apps.py
    │   ├── __init__.py
    │   ├── models.py
    │   ├── tests.py
    │   └── views.py
    ├── manage.py
    ├── media
    └── static

然后,您需要配置Apache虚拟主机:

$> sudo nano /etc/apache2/sites-enabled/000-default.conf

并在<virtualHost></virtualHost>之间添加这些行:

WSGIDaemonProcess django \ # Your Django's project process name
python-home=/usr/local/lib/python3.5/dist-packages/ \ # Python3 dist packages OR even better use your virtualenv's python path
python-path=/var/www/html/deploy_django # Path of your Django project folder
WSGIProcessGroup django # Your django's Process Group
WSGIScriptAlias / /var/www/html/deploy_django/deploy_django/wsgi.py # Where is your WSGI File 
<Directory /var/www/html/deploy_django/deploy_django>
    Require all granted
</Directory>
Alias /media/ /var/www/html/deploy_django/media/ # Media dir
Alias /static/ /var/www/html/deploy_django/static/ # Static dir

<Directory /var/www/html/deploy_django/static>
    Require all granted
</Directory>

<Directory /var/www/html/deploy_django/media>
    Require all granted
</Directory>

最后:

$> service apache2 restart

然后在浏览器中打开127.0.0.1,一切正常。

除此之外,如果遇到一些错误,可以在文件Apache's logs或目录/var/log/apache2/error.log下检查/var/log/apache2