Ở window, để có thể chạy được production golang cần làm 1 số bước sau:
- Build file exe
- Cài đặt proxy trên iis
- Cài đặt service thông qua NSSM
- Build file exe
- GOOS=windows GOARCH=amd64 go build
2. Cài đặt proxy trên iis
Giả sử rằng golang chạy ở http://localhost:3000
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{CACHE_URL}" pattern="^(https?)://" />
</conditions>
<action type="Rewrite" url="{C:1}://localhost:3000/{R:1}" />
</rule>
</rules>
<outboundRules>
<rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
<match filterByTags="A, Form, Img" pattern="^http(s)?://localhost:3000/(.*)" />
<action type="Rewrite" value="http{R:1}://servername/{R:2}" />
</rule>
<preConditions>
<preCondition name="ResponseIsHtml1">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
3. Cài đặt nssm
- Download nssm trên server: https://nssm.cc/download
- Vào commandline, chạy nssm.exe:
- nssm install testservice
- Ra 1 giao diện có rất nhiều điều chỉnh
- Ở tab đầu tiên, chọn file thực hiện của golang
- Ở tab đầu tiên, chọn folder thực hiện
- Ở tab log, do golang lưu log không tốt nên ở golang chạy lưu log ra ngoài stdout và cấu hình luôn phần lưu log trong nssm
- Sau khi lưu thì sẽ tạo ra 1 service: testservice
- Vào window service, tiến hành tắt bật service
- Trường hợp muốn xóa bỏ service:
- Vào command line administrator: sc delete atsoftservice