【问题标题】:Go / Node.js / PHP + NGINX / Apache web root directory conventions / best practicesGo / Node.js / PHP + NGINX / Apache web 根目录约定/最佳实践
【发布时间】:2015-03-03 08:53:19
【问题描述】:

我刚刚在我的专用 Linux(Ubuntu Server 14.04)服务器上完成了我的 CMS(用 Go 编程)的设置,并使用 NGINX 作为我的主要网络服务器,我希望利用它来提供除 Go(和 Node.js)之外的静态内容http 网络服务器,而不是使用它们各自的文件服务器。

由于这是我对 Linux、一般专用服务器和在线部署 Go 应用程序的第一次体验,我非常想听听您对我们存储位置的良好约定的意见 - 理想情况下 - 我们所有不同的网站/网络应用程序。

默认情况下,NGINX 使用 /usr/share/nginx/ 来提供内容。我知道将其更改为我们想要的任何东西是世界上最简单的事情,但我喜欢从一开始就做事。

现在我将我的 CMS(Go 应用程序)存储在 /home/[myuser]/gocode/src/[projectname] 中。这是 go 应用程序所在的位置,但我也有文件夹,“公共”和“媒体”,我最好使用 NGINX 来提供它们。

由于我希望能够在同一根目录中切换网络服务器和托管 Apache、NGINX 等应用程序,所以我现在对使用 /var/www 或 /var/www/html 有第二个疑问作为我的根目录。原因是apache默认使用这个位置,我不想提供我的应用程序文件——只提供我的静态文件。其他人似乎在使用 /home/user/public_html,但同样,对于不同的网络服务器和编程语言/平台来说,这也不能很好地工作。

对于我们将所有 PHP/Apache、Go/NGINX、Node.js 等应用程序理想地收集/放置在哪里,您有什么好的论据吗?

我用 go 和 node.js 标记了它,因为 go 是我选择的主要编程语言,我的大多数应用程序都将使用该语言。不过,我也希望将我的旧 PHP 和 Node.js 应用程序托管在同一个根目录中 - 取决于您是否有任何关于如何组织这样一个多平台环境的金块与我分享。

【问题讨论】:

    标签: node.js apache nginx go directory-structure


    【解决方案1】:

    我把所有的申请都放在/opt。当你构建你的 go 程序时,你最终会得到一个二进制文件。例如假设你有一个项目:

    gocode/src/github.com/someorg/foo
    

    你会跑:

    go build -o /tmp/foo
    

    然后把它放到服务器上:

    /opt/foo/foo
    

    对于您的静态内容,只需复制文件:

    /opt/foo/public/images/logo.png
    /opt/foo/public/styles/site.css
    /opt/foo/public/scripts/site.js
    

    所以在这个例子中你只有4个文件,你没有上传任何.go文件,也不需要匹配你本地的文件夹结构。

    对于 nginx,你只需要将流量转发到一个端口,所以它不需要知道文件在哪里。 Go 不仅能够提供公共和媒体目录中的文件。

    如果您需要一个可写文件夹(大多数网络应用程序都是只读的),那么我建议将该数据存储在 /tmp/var 中,但不要与您的应用程序一起存储。

    【讨论】:

      猜你喜欢
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 2013-06-03
      相关资源
      最近更新 更多