Ubuntu LAMP与Zend目录结构进行Web托管

时间:2012-03-28 13:27:08

标签: zend-framework ubuntu lamp

我在Ubuntu 11.10上设置了基本的LAMP服务器,并且有一些关于网络托管的目录结构的问题。我的“要求”是我想主持两个网站(即:www.site1.com和www.site2.com)以及我想使用Zend框架。

目前,公用文件夹是/ var / www /。在某个地方包含所有Web应用程序代码的“Projects”文件夹是否常见,这些代码通常包含Zend项目文件夹(公共,测试,库等)?

你在哪里“正常”存储Zend框架文件夹?我只想存储在我的〜/目录中,并从每个项目的库文件夹创建一个符号链接到Zend库文件夹。这是推荐/不赞成的吗?

我是新手,只是进行设置,但这是我到目前为止的想法:

在主目录中创建一个项目文件夹(〜/)。在那里,有你不同的网络应用程序(〜/ Projects / site1和〜/ Projects / site2)。从/ var / www / site1创建一个指向〜/ Projects / site1 / Public的符号链接,对于site2也是如此。设置虚拟主机文件,DocumentRoot设置为/ var / www / site1,对于site2也是如此。

任何人都可以了解这可能存在的陷阱吗?这样做会好吗?有什么建议?我知道有很多版本的应该如何在SO上设置目录,但找不到具体解决这些问题的任何答案,所以如果这是重复,我会道歉。

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

是的,有很多方法可以做到这一点,请记住以下几点:

  • 拥有HTML / PHP文件的用户不应与运行Web服务器进程的用户相同。
  • ZF项目文件应位于Web服务器的文档根目录之外。
  • 如果您现在进行设置,这有助于拥有多个开发人员,您将不必在以后进行重大更改。

我通常会做一些像使用常规/家庭/网站目录的“网站”用户。这使站点文件与您的个人文件分开,并且更容易支持可能需要登录的多个管理员/开发人员。您也可以将它放在/ opt / site或/ usr / local / site或任何地方。我喜欢/ home因为shell骨架文件已经存在,我可以轻松添加我想要访问的人的SSH密钥。我会有类似的东西:

/home/site/
    library/
        fuel/
        geshi/
        sencha-touch-2.0.0-gpl/
        ZendFramework/
            ZendFramework-1.11.10/
            ZendFramework-1.11.11/
            latest -> ZendFramework-1.11.11
    site/
        domain1.com/
            application/
            library/
                MyApp/
                Zend -> /home/site/library/ZendFramework/latest/library/Zend
            public/
            scripts/
        domain2.com/
            application/
            library/
                MyApp/
                Zend -> /home/site/library/ZendFramework/latest/library/Zend
            public/
            scripts/

然后,您的vhost文档根设置将指向/home/site/site/domain1.com/public和/home/site/site/domain2.com/public

答案 1 :(得分:1)

目录结构不是有正确或错误的方法,许多人以不同的方式做,这是我的Ubuntu和一些CakePHP应用程序

/srv
    /site1/
           /app
           /webroot
           /cache
           /tmp
    /site2/
           /app
           /webroot
           /cache
           /tmp
    /share/
           /CakePHP
                   /1.3/
                   /2.0/

配置的两个主要部分是在apache中完成的,我将vhost的Document Root设置为webroot到/srv/site1/webroot/的确切位置,然后我将CakePHP放入include路径(你可以做到与Zend相同)使用vhost配置中的php_value include_path ".:/share/cakephp/2.0/lib"

我这样做是因为它允许我将CakePHP的维护版本轻松升级到所有站点(即不会破坏任何内容的站点),新版本将保证新文件夹(即2.1),并将站点升级到使用它只是编辑apache配置(或.htaccess)并重新启动服务器的情况。

这也使我不必在我的应用程序中包含任何类型的包含路径(因此版本控制),因此它可以在不同的开发/暂存设置中尽可能地移植。

当然,正如我所说,没有一种“正确”的方式。