小编典典

带有git和symlinks的基于组件的Web项目目录布局

linux

我正在为这样的linux / apache / php网络项目计划目录结构:

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目录中可见,我计划使用符号链接。

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

我尝试遵循以下原则:

  • index.php是按组件和库进行布局的,而不是按文件类型进行布局的,而不是按“公共”或“非公共”布局的,这是一个例外,这是为了简化开发。
  • 仅公开公共Web目录中的最少文件集,并使其他所有内容无法访问Web。将需要对组件公开的文件和库的符号链接到公共位置,但仍镜像布局。因此,组件和库的结构在链接中生成的html代码中也可见,这可能有助于开发。
  • git的用法应该是安全的,并且可以正常工作。可以按照某些步骤向git添加符号链接是可以的,但是在此之后检查它们或更改分支应该安全,干净地进行。

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

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

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

它们应在此处链接:

  webroot/
    comp3/
      img/ (symlinked ?)

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

所以这是一个git和symlink问题。但是我很想听听有关php布局的评论,也许您想为此使用评论功能。


阅读 416

收藏
2020-06-03

共1个答案

小编典典

一旦您需要在其他地方 重用 某些文件集,就应该开始考虑组件 或(git)子模块

您可以定义以下内容webroot,而不是在同一存储库(SVN或CVCS的[“集中方式”内管理,和complib

  • n仓库,您需要重用的每个组件(例如,“ img”是作为Git仓库作为子模块重用的Git仓库webroot
  • 一个主要项目,用于引用您需要的那些子模块的确切版本。

这是symlink子模块的优点之一:您引用_一个_确切的修订版,并且如果该组件具有其自身的某些改进,则不会立即看到它们(直到您无论如何都更新了子模块)。 使用符号链接,您可以在该链接的另一端看到文件集的任何状态。

2020-06-03