【问题标题】:How to setup Django/Apache for a designer's dev environment如何为设计师的开发环境设置 Django/Apache
【发布时间】:2012-01-06 13:00:38
【问题描述】:

我已经在我自己的 django 环境中开发了一段时间,现在使用 manage.py runserver 没有任何问题,但是现在我们有一个设计师和一个前端开发人员需要在这个项目上工作,我发现我不知道什么是他们环境的最佳实践。

我可以要求他们设置自己的 Python 环境,但这要求很高,因为他们不是 Python 人员,而且他们运行的是 Windows(我的开发和生产环境都是 Linux)。

因此,我将它们设置在远程服务器上,它们可以在本地安装磁盘。然而在这个设置中,我实际上使用了在screen 实例中运行的manage.py runserver ip:port 的不同实例。它不能很好地处理诸如不断重新加载之类的事情(对于我们的设计师来说很常见),并且由于开发服务器的单线程特性,它有时会挂起。我想知道如何使用 Apache 进行设置。

这个问题当然是staticfiles。每次上述任何一方想要添加或更改静态文件时,他们都必须运行manage.py collectstatic,这是不切实际的。我只是不知道有任何其他方法可以做到这一点。我找到的所有使用 Apache 的文档都是针对生产环境的,所以……这就是我来这里的原因。

【问题讨论】:

  • 如果设计者只是改变静态文件和模板,django为什么要重新加载?
  • 好问题。每当她执行svn up 时都会发生这种情况,但这只是一次重新加载。老实说,我不知道为什么runserver 会挂起,只是我必须每隔几天重新启动一次,因为它停止响应。
  • 你可以试试 django-devserver。它的工作方式与 runserver 类似(实际上取代了 runserver),但与默认的 runserver 不同,它在多个线程中运行。至少可能更稳定。

标签: django apache


【解决方案1】:

源代码控制?让他们检查更改,然后设置提交后挂钩以收集静态并重新启动服务器。有了漂亮的 Windows GUI,我从来没有一个设计师不能掌握基本概念。如果您使用的是 dcvs,您始终可以将它们放在自己的 fork 中,因此您必须合并到主存储库中以防止它们错误地破坏其他东西。

【讨论】:

  • 他们都非常熟悉颠覆命令(cli 和 gui),但我不想强迫他们仅仅为了改变 CSS 中的颜色而提交。它会很慢,并且会用多余的更改填充日志。我希望找到一个可以重现 runserver 的合并效果的 Apache 配置。
  • 你考虑过使用 mod_wsgi 或 fast_cgi 吗?如果您触摸他们正在运行的脚本文件,它将重新加载服务器
【解决方案2】:

这个问题的答案比我想象的要简单得多,对于让那些回答的人感到困惑的人,我深表歉意。基本上,我想要的只是在screen 会话中以比./manage.py runserver ip:port 更稳定的方式托管我们设计师的开发环境。我认为必须有一种方法可以为 Apache 设置类似的东西,但不知道它是什么。

这是我要工作的内容:

在您的settings.py 中,将您的STATIC_URLMEDIA_URL 变量设置为相对网址。就我而言,我使用了/static//media/

MEDIA_ROOT = PROJECT_ROOT + "/htdocs/media/"
MEDIA_URL = "/media/"
SERVE_STATIC = True
STATIC_ROOT = PROJECT_ROOT + "/htdocs/public/"
STATIC_URL = "/static/"

如果您根本没有任何静态文件,请按照您的方式配置 Apache。换句话说,忽略文档中关于在 <Locaiton> 块中使用 SetHandler None 的建议。

<VirtualHost *:80>

    WSGIScriptReloading On
    WSGIDaemonProcess someprocessname
    WSGIProcessGroup somegroupname
    WSGIApplicationGroup somegroupname
    WSGIPassAuthorization On

    WSGIScriptAlias / /path/to/config.wsgi

    ServerName somewhere.awesome.ca

    <Location "/">
        Order Allow,Deny
        Allow from all
    </Location>

    ErrorLog  /var/log/apache2/somewhere.awesome.ca.err
    CustomLog /var/log/apache2/somewhere.awesome.ca.log combined

</VirtualHost>

我希望这有助于在未来为某人指明正确的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    相关资源
    最近更新 更多