Go / Node.js / PHP + NGINX / Apache web 根目录约定/最佳实践
Go / Node.js / PHP + NGINX / Apache web root directory conventions / best practices
我刚刚在我的专用 Linux (Ubuntu Server 14.04) 服务器上完成了我的 CMS(用 Go 编程)的设置,并将 NGINX 作为我的主要网络服务器,除了 Go 之外,我希望利用它来提供静态内容(和 Node.js)http 网络服务器,而不是使用它们各自的文件服务器。
由于这是我第一次使用 Linux,通常使用专用服务器并在线部署 Go 应用程序,我很想听听您对我们存储的良好约定的意见 - 理想情况下 - 我们所有的不同 websites/webapplications.
默认情况下,NGINX 使用 /usr/share/nginx/ 来提供内容。我知道把它改成我们想要的是世界上最容易的事情,但我喜欢从一开始就把事情做好。
现在我将我的 CMS(Go 应用程序)存储在 /home/[myuser]/gocode/src/[projectname] 中。这是 go 应用程序所在的位置,但它也在那里我有文件夹,"public" 和 "media",我最好将它们与 NGINX 一起使用。
由于我希望能够在相同的整体根位置切换网络服务器并托管 Apache-、NGINX- 等应用程序,我现在对使用 /var/www 或 /var/www/html 作为我的根目录。原因是 apache 默认使用这个位置,我不想提供我的应用程序文件——只有我的静态文件。其他人似乎在使用 /home/user/public_html 但同样,对于不同的网络服务器和编程来说效果不佳 languages/platforms.
对于我们所有 PHP/Apache、Go/NGINX、Node.js 等应用程序的理想 gather/place,您有什么好的论据吗?
我用 go 和 node.js 标记了它,因为 go 是我选择的主要编程语言,我的大部分应用程序都将使用该语言。然而,我确实也想托管我的旧 PHP 和 Node.js 应用程序 - 最好在同一个根目录中 - 取决于你是否有任何关于如何组织这样一个多平台环境的金块与我分享.
我把所有的申请都放在了/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 不仅能够提供 public 和媒体目录中的文件。
如果您需要一个可写文件夹(大多数网络应用程序是只读的),那么我建议将该数据存储在 /tmp
或 /var
中,但不要与您的应用程序一起存储。
我刚刚在我的专用 Linux (Ubuntu Server 14.04) 服务器上完成了我的 CMS(用 Go 编程)的设置,并将 NGINX 作为我的主要网络服务器,除了 Go 之外,我希望利用它来提供静态内容(和 Node.js)http 网络服务器,而不是使用它们各自的文件服务器。
由于这是我第一次使用 Linux,通常使用专用服务器并在线部署 Go 应用程序,我很想听听您对我们存储的良好约定的意见 - 理想情况下 - 我们所有的不同 websites/webapplications.
默认情况下,NGINX 使用 /usr/share/nginx/ 来提供内容。我知道把它改成我们想要的是世界上最容易的事情,但我喜欢从一开始就把事情做好。
现在我将我的 CMS(Go 应用程序)存储在 /home/[myuser]/gocode/src/[projectname] 中。这是 go 应用程序所在的位置,但它也在那里我有文件夹,"public" 和 "media",我最好将它们与 NGINX 一起使用。
由于我希望能够在相同的整体根位置切换网络服务器并托管 Apache-、NGINX- 等应用程序,我现在对使用 /var/www 或 /var/www/html 作为我的根目录。原因是 apache 默认使用这个位置,我不想提供我的应用程序文件——只有我的静态文件。其他人似乎在使用 /home/user/public_html 但同样,对于不同的网络服务器和编程来说效果不佳 languages/platforms.
对于我们所有 PHP/Apache、Go/NGINX、Node.js 等应用程序的理想 gather/place,您有什么好的论据吗?
我用 go 和 node.js 标记了它,因为 go 是我选择的主要编程语言,我的大部分应用程序都将使用该语言。然而,我确实也想托管我的旧 PHP 和 Node.js 应用程序 - 最好在同一个根目录中 - 取决于你是否有任何关于如何组织这样一个多平台环境的金块与我分享.
我把所有的申请都放在了/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 不仅能够提供 public 和媒体目录中的文件。
如果您需要一个可写文件夹(大多数网络应用程序是只读的),那么我建议将该数据存储在 /tmp
或 /var
中,但不要与您的应用程序一起存储。