我正在使用 Django 和 Apache2 配置一个 Linux 网络服务器来支持多个不同的网站。每个网站都有 Django 代码、一些支持每个网站的库以及 Apache 配置文件。这种布局会带来什么问题吗?
home/
|--django_libraries
| |--lib_one/
| |--lib_two/
|--sites
| |--site_one/
| |--site_two/
| |--site_three/
|--apache_conf/
| |--apache2.conf, etc
| |--sites-available/
| |--sites-enabled/
| |--et cetera
| |--[mods-enabled and the like left under /etc]
|--apache-support/
|--directories with certificates for ssl, authentication files, etc
我的理由:
- 这会将特定于站点的文件组织到一个目录下。我知道在哪里可以找到文件,并且可以使用单个 tar 语句对其进行备份或复制。
- 这似乎允许足够多的单独事物通过用户权限来控制访问和安全。
- 我不喜欢打扰 etc/ 下的默认 Apache 配置,因为我是新手,经常参考它们。而且我发现将 Apache 配置放在 Django 代码附近会减少混淆。
有什么想法吗?
答案1
只是一个想法。如果您正在共享库,当您需要更新其中一个库时可能会出现问题。
我们之前遇到过这个问题。我们用 Zend Framework 做了几个项目,只有一个 ZF 实例。其中一个项目需要升级 ZF,升级到没有向后兼容性的版本(例如 1.7.8 -> 1.8)。为了不影响其他项目,我们最终为这个项目单独安装了 ZF。
我的建议是使用 Git 或 SVN 之类的版本控制工具来使每个项目的库保持最新,并将这些库放入库存储库中。
答案2
这与我通常设置自己的 VPS 和服务器(如果我是唯一一个在服务器上执行操作的人)的方式类似。我想这更多地取决于该特定服务器的用途。
如果您只是自己维护,那么我认为您会没事的。上面提到了共享依赖项,所以这是需要考虑的事情。
答案3
您的应用程序(即 django 应用程序)是否位于站点目录中?如果是,哪些目录是站点的 Web 根目录?
我的工作方式如下:
var/
|--www/
| |--website-root/
| | |--media-files/
| | | |--css/
| | | |--javascript/
| | | |--images/
home/
|--djangisms
| |--django-libraries/
| |--my-django-website/
站点配置中包含了向 django 说明所有内容所在位置的说明。
答案4
我的声誉不足以添加评论。
@o_O Tync:您是否将此结构用于基于 Django 的网站?chernevik 的问题具体涉及多个不同的网站应如何在一台服务器上共存,以及它们是否应共享 Django 库或使用单独安装的版本。此外,Django 有特定的位置来存放文件类型(如果您知道自己在做什么,可以更改其中一些位置)。我假设您的设置不是 Django 特定的,因为您没有指定媒体文件、管理媒体文件、模板的保存位置、应用程序的保存位置以及 site.urls 的位置?
如果我对一台服务器上的多个站点有更多的了解,我会对 chernevik 的布局发表评论,但我不知道。