繁体   English   中英

Apache2 上的 Django - 进行更改时重新启动服务器?

[英]Django on Apache2 - Restart Server when making changes?

现在,我正在尝试 - 第一次 - 使用 mod_wsgi 在 Apache2 上部署 Django 应用程序,但它仍然没有按照我希望的方式工作。 无论如何,我正在与我的管理员争论,他说我不必在更改我的 python 代码后重新启动服务器,只有当 .conf 文件发生更改时。 在线教程对于这个特定问题也不是很有用,有些人说“A”。 有些人说“B”,有些人根本不提这个话题。

    <VirtualHost *:80>
        ServerName webapp.company.local
        ServerAlias cmp-workbench.company.local
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/cmp-workbench
    #for django
        Alias /static /var/www/cmp-workbench/static
        <Directory /var/www/cmp-workbench/static>
            Require all granted
        </Directory>
        <Directory /var/www/cmp-workbench/cmp_workbench>
            <Files wsgi.py>
                Require all granted
            </Files>
        </Directory>
        WSGIDaemonProcess cmp-workbench python-path=/var/www/cmp-workbench python-home=/var/www
        /cmp-workbench/cmp_workbench
        WSGIProcessGroup cmp-workbench
        WSGIScriptAlias / /var/www/cmp-workbench/cmp_workbench/wsgi.py

        ErrorLog ${APACHE_LOG_DIR}/error_cmp-workbench.log
        CustomLog ${APACHE_LOG_DIR}/access_cmp-workbench.log combined
    </VirtualHost>
    import os
    import time
    import traceback
    import signal
    import sys

    from django.core.wsgi import get_wsgi_application
  
    sys.path.append('/var/www/cmp-workbench-stage/cmp_workbench_stage')
    sys.path.append('/var/www/cmp-workbench- 
    stage/cmp_workbench_stage/env/lib/python3.7/site-packages')

    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 
    'cmp_workbench_stage.settings')

    try:
        application = get_wsgi_application()
    except Exception:
        # Error loading applications
        if 'mod_wsgi' in sys.modules:
           traceback.print_exc()
            os.kill(os.getpid(), signal.SIGINT)
            time.sleep(2.5)

已经以这种方式部署的人可以回答我的问题吗? 谢谢,周末愉快!

在大多数情况下,您不需要在每次更改 python 文件时重新启动apache 您的系统管理员绝对是正确的。 apache作为 web 服务器旨在服务和处理 http 请求(除其他事项外)而不是处理脚本的执行(python,php ..)

正如这个答案所建议的那样,在您对 python 文件进行一些更改后,只需运行touch wsgi.py命令就可以强制守护进程重新加载,因为文件 ( wsgi.py ) 的时间戳已更新。

参考https://man7.org/linux/man-pages/man1/touch.1.html

将每个 FILE 的访问和修改时间更新为当前时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM