2016-09-27 2 views
1

Я новичок в Django, и я хочу настроить свое приложение с помощью apache2. Я просто следую за гидом и другим вопросом, но я не могу понять! Мои сайты-доступных файлов простой конфигурации/000-default.conf:Django & wsgi - настройка на debian 8

<VirtualHost *:80> 
    WSGIScriptAlias//var/www/html/mysite/mysite/wsgi.py 
    WSGIPythonPath /var/www/html/mysite 

    <Directory /var/www/html/mysite/mysite> 
    <Files wsgi.py> 
    Require all granted 
    </Files> 
    </Directory> 
</VirtualHost> 

после apache2 перезагрузки есть ошибка синтаксиса в WSGIPythonPath

если положить utside WSGIPythonPath внутри apache2.conf файла , приложение не работает. В чем проблема?

Я следую https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/modwsgi/ но WSGIDaemonProcess, кажется, не работает

+2

Мне не нравится апач :) Вот почему я собираюсь рекомендовать вам Nginx + uwsgi или Nginx + gunicorn. Они очень просты в настройке – sebb

+3

, что говорит apache в журналах? – dahrens

+0

oh, и я согласен с @sebb - nginx + uwsgi работать достаточно хорошо и легко настраивается. – dahrens

ответ

1

Некоторые вещи для проверки: вы загружаете модуль wsgi?

LoadModule wsgi_module modules/mod_wsgi.so 

Также обратите внимание на этот ответ и потенциальный Gotcha в конфигурации Apache2: 403 Forbidden error with Django and mod_wsgi

-2

Хорошо, рекомендуя это не очень полезно, так вот базовая конфигурация для Nginx и gunicorn.

В заказе от сделать это просто, давайте предположим, что ваше приложение находится в этом каталоге: /home/root/app/src/ и мы собираемся использовать root пользователя (но вы должны создать отдельный пользователь для вашего приложения)

Первого вашего Nginx. Вы должны вставить новый файл в свой /etc/nginx/sites-enabled/yourapp.conf, если есть файл с именем default.conf - удалите его.

пыльник Я вывешивать конф файл Nginx, который попытается запустить службу с помощью gunicorn.sock:

upstream yourappname { 
    server  unix:/home/root/app/src/gunicorn.sock fail_timeout=0; 
} 

server { 
    root  /home/root/app/src/; 

    listen  80; 
    server_name yourdomain.com *.yourdomain.com 

    charset  utf-8; 

    client_max_body_size      100m; 

    access_log  /home/root/app/src/logs/nginx-access.log; #you have to have logs folder in src 
    error_log   /home/root/app/src/logs/nginx-error.log; 

    location /static/ { 
     alias   /home/root/app/src/static/; 
    } 


    location /media/ { 
     alias   /home/root/app/src/media/; 
    } 

} 

так что теперь на gunicorn запуска сценария.

#!/bin/bash 

ME="root" 
DJANGODIR=/home/root/app/src 
SOCKFILE=/home/root/app/src/gunicorn.sock 
USER=root 
GROUP=webapps 
NUM_WORKERS=3 
DJANGO_SETTINGS_MODULE=yourapp.yoursettings 
DJANGO_WSGI_MODULE=yourapp.wsgi 
echo "Starting $NAME as `whoami`" 

# Activate the virtual environment 
cd $DJANGODIR 

source /home/root/app/env/bin/activate 
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE 
export PYTHONPATH=$DJANGODIR:$PYTHONPATH 

# Create the run directory if it doesn't exist 
RUNDIR=$(dirname $SOCKFILE) 
test -d $RUNDIR || mkdir -p $RUNDIR 

# Start your Django Unicorn 
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon) 
exec /home/root/app/env/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \ 
    --name root \ 
    --workers $NUM_WORKERS \ 
    --user=$USER --group=$GROUP \ 
    --bind=unix:$SOCKFILE \ 
    --log-level=debug \ 
    --log-file=- 

нормально сейчас, чтобы быть в состоянии запустить gunicorn сценарий запуска он должен иметь модель исполнения позволили так

sudo chmod u+x gunicorn_start

теперь вы сможете запустить сервер gunicorn только с помощью ./gunicorn_start

В верхней части этого сообщения я также разместим диспетчер conf, который попытается запустить ваше приложение, когда он потерпит неудачу, или просто при загрузке системы.

Сначала установите диспетчер. Затем создайте .conf файл в главном каталоге /etc/supervisor/conf.d/your_conf_file.conf

внутри вставки:

[program:yourappname] 
command = /home/root/app/src/gunicorn_start 
user = root 
stdout_logfile = /home/root/app/src/logs/gunicorn_supervisor.log 
redirect_stderr = true 

так то, что сделано, мы должны сказать нашему руководителю, который мы только что добавили новый конфигурационный файл.Просто запустите эти команды:

sudo supervisorctl reread sudo supervisorctl update

и для того, чтобы проверить, если ваше приложение работает корректно только запустить

sudo supervisorctl status yourappname

Я надеюсь, что это полезно, если у вас есть какие-либо вопросы, просто ask