Golang

Chạy golang production trên window server

Ở 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
  1. 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