基于组件的Web项目目录布局,使用git和符号链接

我正在规划一个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/目录只会在phppath中。

为了使css和js文件在webroot目录中可见,我计划使用符号链接

  webroot/ index.php comp1/ comp1.js (symlinked) comp2/ comp2.css (symlinked) 

我试着遵循这些原则:

  • 由组件和库的布局,而不是由文件types,而不是由“公共”或“非公开”,index.php是一个例外,这是为了更容易的发展。
  • 公开网站目录中的最小文件集,并使其他网站无法访问。 将需要公开组件和库的文件编译到公共位置,但仍然镜像布局。 因此,组件和库结构也可以在链接中生成的html代码中看到,这可能有助于开发。
  • git的使用应该是安全的,并始终工作。 可以按照一些步骤来添加一个符号链接到git,但是之后检查它们或者改变分支应该被安全和清理地处理

git将如何正确处理单个文件的符号链接,有什么需要考虑的?

当涉及到图像,我将需要链接目录,如何处理与git?

  component/ comp3/ comp3.class.php img/ img1.jpg img2.jpg img3.jpg 

他们应该链接在这里:

  webroot/ comp3/ img/ (symlinked ?) 

如果使用符号链接有缺点,也许我可以直接将图像移动到webroot / tree,这将打破第一个原则(git的实用性)。

所以这是一个混帐和符号链接的问题。 但我会有兴趣听到关于PHP布局的意见,也许你想使用评论function。

只要你需要在其他地方重新使用一些文件,那么你应该开始考虑组件或(在git中) 子模块

您可以在相同的仓库(这是SVN或CVCS的“集中方式” )中管理webrootcomplib ,而是定义:

  • n repos,每个组件需要重用一次(所以' img '是一个Git webroot ,在webroot作为子模块重用)
  • 一个参考您需要的子模块的确切修订的主要项目。

这是symlink子模块的优点之一:你引用一个确切的修订,如果这个组件有一些自己的进化,你不会立即看到它们(直到你更新你的子模块)。
使用符号链接,可以看到该链接另一端的文件集合。