2013-09-10 6 views
0

Я использую centos, apache, mod_wsgi на сервере для проекта django.Автозагрузка файлов django на сервере

После загрузки через sftp измененных файлов проектов сайт открывается с изменениями и без изменений случайным образом.

Я думаю, что изменения не должны применяться перед перезапуском apache. Не так ли?

Apache настройки

<VirtualHost *:88> 
ServerName h1.ru 

UseCanonicalName Off 
ServerAdmin "[email protected]" 
DocumentRoot /var/www/h1/h1.ru/ 
AllowEncodedSlashes On 

WSGIDaemonProcess h1 processes=4 
#WSGIProcessGroup h1 


WSGIScriptAlias /site /var/www/h1/pyh1/h1/wsgi.py 
Alias /static /var/www/h1/pyh1/static 

<IfModule mod_ssl.c> 
    SSLEngine off 
</IfModule> 

<Directory /var/www/h1/h1.ru> 
    php_admin_flag engine on 
    php_admin_flag safe_mode off 
    php_admin_value open_basedir "/var/www/h1/h1.ru:/tmp" 
    Options -Includes -ExecCGI 
</Directory>  
</VirtualHost> 

WSGI:

#!/usr/local/bin/python2.7 
import os 
import sys 

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "h1.settings") 

from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 
+0

Прочитайте http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode и подумайте о переходе на режим демонов mod_wsgi, так как использование встроенного режима с Apache prefork MPM и PHP - плохая идея. –

ответ

0

не так. Обычно mod_wsgi запускается в нескольких отдельных процессах, автоматически управляя их запуском и выключением. Когда начнется новый процесс, код Python будет загружен с диска, поскольку он импортируется, поэтому процесс будет работать с новейшими версиями любых файлов. Между тем, все процессы, которые уже были в живых, будут использовать версии, которые они ранее загружали, поэтому не будут отражать изменения (если не активирован малоиспользуемый путь кода, что приводит к импорту модуля с очень неуправляемым).

Конечно, единственный способ убедиться, что у вас есть последний выбор во всех процессах, - это перезапустить Apache.

Смежные вопросы