我正在为这样的 linux/apache/php web 项目规划我的目录结构:
只有 www.example.com/webroot/
会暴露在 apache 中
www.example.com/
webroot/
index.php
comp1/
comp2/
component/
comp1/
comp1.class.php
comp1.js
comp2/
comp2.class.php
comp2.css
lib/
lib1/
lib1.class.php
component/
和 lib/
目录只会在 php 路径中。
为了使 css 和 js 文件在 webroot 目录中可见,我打算使用符号链接(symbolic link)。
webroot/
index.php
comp1/
comp1.js (symlinked)
comp2/
comp2.css (symlinked)
我尝试遵循这些原则:
- 按组件和库而不是文件类型和“公共(public)”或“非公共(public)”布局,index.php 是一个异常(exception)。这是为了更容易开发。
- 仅公开公共(public) Web 目录中的最少文件集,并使 Web 无法访问其他所有文件。将需要为组件和库公开的文件符号链接(symbolic link)到公共(public)位置,但仍镜像布局。因此,组件和库结构在链接中生成的 html 代码中也可见,这可能有助于开发。
- git 的使用应该是安全的并且总是有效的。可以按照一些程序将符号链接(symbolic link)添加到 git,但在此之后检查它们或更改分支应该安全和干净地处理
git 如何正确处理单个文件的符号链接(symbolic link),有什么需要考虑的吗?
当涉及到图像时,我需要链接目录,如何使用 git 处理它?</p>
component/
comp3/
comp3.class.php
img/
img1.jpg
img2.jpg
img3.jpg
它们应该链接在这里:
webroot/
comp3/
img/ (symlinked ?)
如果为此使用符号链接(symbolic link)有缺点,也许我可以将图像直接移动到 webroot/树,这会破坏第三个原则(git 实用性)。
所以这是一个 git 和符号链接(symbolic link)问题。但我很想听听有关 php 布局的评论,也许你想为此使用评论功能。
最佳答案
一旦您需要在别处重用一些文件集,您就应该开始考虑 components 或(在 git 中) submodules
不是在同一个存储库(即 SVN 或 "Centralized way" for CVCS)中管理 webroot
、comp
和 lib
,你定义:
- n 个存储库,每个您需要重用的组件一个(例如,'
img
' 将是作为webroot
中的子模块重用的 Git 存储库) - 一个主项目,用于引用您需要的那些子模块的确切修订版。
这是符号链接(symbolic link)子模块的优点之一:您引用了一个 精确的修订版,如果该组件有自己的一些演变,您不会立即看到它们(直到您更新您的无论如何都是子模块)。
使用符号链接(symbolic link),您可以看到该链接另一端的文件集的状态。
关于linux - 带有 git 和符号链接(symbolic link)的基于组件的 Web 项目目录布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2896944/