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 启动得非常快。只要您的应用程序在启动时没有一堆事情要做,那就还不错。
您不能运行后台线程。您的程序在请求进入时启动,并应在响应发出后立即结束。
内存和 go 通道不能在不同的请求之间共享。
- 2 回答
- 0 关注
- 115 浏览
添加回答
举报