在windows server 2008上部署go web项目
我的项目:go-1.12.5;杜松子酒;vue cli-3.8.2 在windows server 2008上,在本地帐户下运行main.exe-效果良好。但当注销我的帐户时,所有本地帐户程序都将关闭,包括我的go服务器 我做的第一件事是尝试为我的GO配置IIS。没有什么好结果 然后我尝试从系统帐户运行main.exepsexec-s c:\rafd\main.exe。注销时,进程不会关闭。但是前端在我的帐户中,系统看不到我项目的本地文件(js、html、css)在windows server 2008上部署go web项目,windows,http,go,deployment,Windows,Http,Go,Deployment,我的项目:go-1.12.5;杜松子酒;vue cli-3.8.2 在windows server 2008上,在本地帐户下运行main.exe-效果良好。但当注销我的帐户时,所有本地帐户程序都将关闭,包括我的go服务器 我做的第一件事是尝试为我的GO配置IIS。没有什么好结果 然后我尝试从系统帐户运行main.exepsexec-s c:\rafd\main.exe。注销时,进程不会关闭。但是前端在我的帐户中,系统看不到我项目的本地文件(js、html、css) 告诉我如何启动Go服务器,以在
告诉我如何启动Go服务器,以在注销我的项目后不停止生活两种方法实现它
- 保持项目代码不变,但是
- 确保能够告诉它在哪个套接字上侦听连接,以便您可以告诉它在
localhost:8080上侦听。 例如,教您的程序接受命令行参数,例如
或其他-listen
- 配置IIS的方式应确保它能够将特定虚拟主机上的传入HTTP请求和/或服务器运行实例的路径前缀发送到服务器。您必须使IIS配置成为它代理请求的套接字,并且IIS启动程序的方式彼此一致
- 确保能够告诉它在哪个套接字上侦听连接,以便您可以告诉它在
- 重新编写代码,改用FastCGI协议。
这基本上相当于使用
而不是net/fastcgi
好处是IIS(甚至它的旧版本)支持FastCGI开箱即用。 缺点是FastCGI被认为比Go中的普通HTTP稍慢,并且您将失去在独立模式下运行程序的能力net/http
srvany
、nssm
、winsv
等工具
请注意,其中只有srvany
是由Microsoft®提供的,而且它在Win7、W2k8之后就不存在了,因此您最好的内置赌注可能是搞乱了sc.exe
在任何一种情况下,如果您选择此路径,您都必须处理在应用程序资产上设置适当权限的问题。
这个问题本身相当复杂,因为涉及到许多运动部件
首先,您必须确保您的资产不是从“进程的当前目录”访问的——当它作为一个服务运行时,这个目录基本上是随机的,但可以是从进程运行时被明确告知的位置(通过命令行选项或其他方式)访问的,也可以是通过合理的猜测得出的(这本身就是一个复杂的话题)
下一步,您必须确保帐户位于您的Windows™ 用于运行服务的确实具有访问资产存储位置的权限。
另一种可能是添加一个专用帐户,并让SCM使用它来运行您的服务
请注意,在任何一种情况下,正确的错误处理及其报告都是至关重要的:当您的程序以非交互方式运行时,您想知道什么时候出错:套接字无法打开或侦听、未找到资产、尝试打开资产文件时拒绝访问,等等在所有这些情况下,您必须1)处理错误,2)以您可以处理的方式报告错误。
对于非交互式窗口™ 编程最好的方法可能是使用事件日志(例如,通过golang.org/x/sys/windows/svc/eventlog
)有两种方法
- 保持项目代码不变,但是
- 确保能够告诉它在哪个套接字上侦听连接,以便您可以告诉它在
localhost:8080上侦听。 例如,教您的程序接受命令行参数,例如
或其他-listen
- 配置IIS的方式应确保它能够将特定虚拟主机上的传入HTTP请求和/或服务器运行实例的路径前缀发送到服务器。您必须使IIS配置成为它代理请求的套接字,并且IIS启动程序的方式彼此一致
- 确保能够告诉它在哪个套接字上侦听连接,以便您可以告诉它在
- 重新编写代码,改用FastCGI协议。
这基本上相当于使用
而不是net/fastcgi
好处是IIS(甚至它的旧版本)支持FastCGI开箱即用。 缺点是FastCGI被认为比Go中的普通HTTP稍慢,并且您将失去在独立模式下运行程序的能力net/http
srvany
、nssm
、winsv
等工具
请注意,其中只有srvany
是由Microsoft®提供的,而且还缺少si