2 回答

TA貢獻1835條經驗 獲得超7個贊
Golang 是一種編譯型語言。編譯源代碼的輸出是一個二進制文件,可以直接在操作系統(編譯)上執行,而不需要任何其他軟件。編譯后的二進制文件本身包含一個使用 http 請求的網絡服務器。這是與 PHP 等解釋性語言的主要區別,后者需要網絡服務器(Apache、Nginx)將傳入請求轉換為 PHP 可以理解的協議。
我嘗試添加 .htaccess 文件但沒有成功
該.htaccess
文件是 Apache 網絡服務器配置文件,運行已編譯的網絡服務器應用程序不需要它。
將我的Golang網站部署到托管上正常嗎?還是我應該買一臺服務器?
網站托管提供商希望您運行 PHP 或任何其他理解 CGI 協議的應用程序。
為了托管您的 golang webapp,您應該像對待任何其他編譯語言一樣進行操作:從經典托管提供商處購買服務器 (VPS) 或使用公共云提供商。
您的另一種選擇是使用像 Google 的App Engine這樣的托管平臺。它需要您部署 golang 源代碼,并為您管理其他一切。它可能會為您省去一些 devops 的麻煩。

TA貢獻1807條經驗 獲得超9個贊
共享主機計劃支持 CGI 是很常見的。net?/http/cgi包在 go 中提供了對此的支持。只要您使用標準庫中的 http 服務器,它只需要對您的 go 程序進行微小的更改。
http.ListenAndServe(":8080", myServeMux)
會變成cgi.Serve(myServeMux)
。?http.ListenAndServe(":8080", nil)
會變成cgi.Serve(nil)
。
請注意,您不再指定端口,因為該端口現在已在網絡服務器上配置。
對此有一些注意事項:
這比內置的 http 服務器慢,因為您的程序必須為每個頁面加載從頭開始。也就是說,go 啟動得非??臁V灰膽贸绦蛟趩訒r沒有一堆事情要做,那就還不錯。
您不能運行后臺線程。您的程序在請求進入時啟動,并應在響應發出后立即結束。
內存和 go 通道不能在不同的請求之間共享。
- 2 回答
- 0 關注
- 147 瀏覽
添加回答
舉報