2015-01-05 85 views
1

我剛剛在我的專用Linux(Ubuntu Server 14.04)服務器上用我的主要網絡服務器NGINX設置完我的CMS(在Go中編程)希望利用除了Go(和Node.js)http網絡服務器之外的靜態內容,而不是使用它們各自的文件服務器。由於這是我第一次使用Linux,專用服務器以及在線部署Go應用程序,因此我非常有興趣聽取您對我們存儲位置的理解 - 理想情況下 - 我們所有不同的網站/ Web應用程序。Go/Node.js/PHP + NGINX/Apache web根目錄約定/最佳實踐

默認情況下NGINX使用/ usr/share/nginx /來提供內容。我知道這是世界上最簡單的事情,可以將其改變爲我們想要的任何東西,但我喜歡從一開始就做正確的事情。

現在我將我的CMS(Go應用程序)存儲在/ home/[myuser]/gocode/src/[projectname]中。這是去應用程序駐留的地方,但它也在那裏我有文件夾,「公共」和「媒體」,我會理想地與NGINX服務。

因爲我希望能夠在相同的整體根位置內切換web服務器並託管Apache-,NGINX-等應用程序,所以我現在對使用/ var/www或/ var/www/html作爲我的根目錄。原因是Apache默認使用這個位置,我不想提供我的應用程序文件 - 只有我的靜態文件。其他人似乎正在使用/ home/user/public_html,但是對於不同的Web服務器和編程語言/平臺來說,這樣做不太合適。

對於我們理想地收集/放置我們所有的PHP/Apache,Go/NGINX,Node.js等應用程序,您有什麼好的理由嗎?

我用go和node.js標記了這個,因爲go是我選擇的主要編程語言,我的大多數應用程序都是用這種語言編寫的。不過,我也希望託管我的舊PHP和Node.js應用程序 - 最好在同一個根目錄下 - 這取決於是否有任何金塊與我分享如何組織這樣的多平臺環境。

回答

0

我把所有的應用程序在/opt。當你構建你的程序時,你將會得到一個單一的二進制文件。例如,假設你有一個項目:

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,但不在你的應用程序旁邊。