0

我在 django 项目的服务器上使用 centos、apache、mod_wsgi。

通过更改项目文件的 sftp 上传后,站点会随机打开更改和无更改。

我认为,在重新启动 apache 之前不应应用更改。不是吗?

阿帕奇设置

<VirtualHost *:88>
ServerName h1.ru

UseCanonicalName Off
ServerAdmin  "admin@h1.ru"
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()
4

1 回答 1

0

不对。通常 mod_wsgi 将在多个单独的进程中运行,自动管理它们的启动和关闭。当一个新进程启动时,Python 代码将在导入时从磁盘加载,因此该进程将使用任何文件的最新版本运行。同时,任何已经存在的进程都将使用它们之前加载的版本,因此不会反映更改(除非激活了一个很少使用的代码路径,导致导入一个迄今为止未导入的模块)。

当然,确保您在所有进程中都有最新选择的唯一方法是重新启动 Apache。

于 2013-09-10T07:18:31.433 回答