Go

8/13/2022 Go(golang)
647

پابلیش کردن برنامه های که با گو GO نوشته میشوند بر روی ویندوز سرور یکی از مشکلاتی بود  که وقت زیادی گرفت برای اینکه بتونیم یه برنامه نوشته شده با GOرا در ویندوز سرور پابلیش کنی من این مراحل را انجام دادم

اول اینکه برنامه  من در لینوکس نوشته شده و باید خروجی ویندوز ازش میگرفتم دستور خروجی ویندوز به این صورت است

GOOS=windows go build

بعد از اینکه این کار رو انجام بدین یه فایل exe در وشه برنامه به شما نشان داده خواهد این فایل رو م کپی کنیم و در پوشه ای که قرار است روی ویندوز سرور به عنوان پوشه مربوط به وب سایت  یا همان API ما قرار بگیره جای گذاری کنیم.

 

ابتدا تست میکنیم که ایا برنامه به درستی اجرا میشود!! ابتدا CMD را اجرا میکنیم اجرایی را مثلا به این صورت وارد میکنیم C:\websites\myGoSite\app.exe  برنامه ما با همان ادری و پورت اجرا خواهد شد

مثلا گر برنامه من روی پورت 9000 ساخته شده باشد در مرورگر ادرس یه به اینم صورت وارد میکنیم 

http://localhost:9000/my-route

فایل ما اجرا شد

اگر همه چیز به درستی انجام شده باشد به مشکلی بر نخواهید خورد

اگر CMD  ببندید دیگه پروژه  ما  اجرا نخواهد شد

برای اینکه بتوانیم در هر حال فایل پروژه اجرا شود و حتی در زمانی که ویندوز سرور ریستارت میشود این فایل به صورت اتوماتیک دوباره اجرا شود، لازم تا این فایل گو را در سرویس های ویندوز سرور بگنجانیم ،  تا زمان ویندوز ریستارت میشود نیز این فایل به صورت خود به خود اجرا شود

برای این کار نرم افزار  nssm که روی ویندوز سرور به استفاده کردم

این نرم افزار به این آدرس https://nssm.cc/download  روی ویندوز سرور دانلود کنید( حجم آن کمتر از یک مگابایت است)

برای اجرا شدن این برنامه لازم است تا آدرس اجرای ویندوز مثلاً ۶۴ بیت آن را به فایل path ویندوز معرفی کنید (امیدوارم بدونی چه جوری انجام بدهید)

بعد از آن وقتی که فایل به path معرفی کردیم از طریق CMD آن را اجرا مکنیم و یک محیط گرافیکی مشاهده خواهد کرد

 

را اجرا کردیم آدرس فایل رو میگیریم و تنظیماتی رو که من براتون نوشتم رو مرحله به مرحله انجام میدیم

حالا وب سایت رو توی DNS  تعریف میکنیم توی IIS  هم  سایت خودمان را  تعریف میکنیم فقط یادمان باشد

تنظیمات application Pool به صورت زیر باشد

 

حال نوبت یه تنظیمات IIS هست که بهترین تنظیمات به اسن صورخ خواهد بود

  1. تنظیم رفع حساسیت به حروف کوچک و بزرگ
  2. نمظیم استفاده از SSL
  3. حذف slah (/) از اخر URL

برای این تنظیمات میتوانید از IIS استفاده کنید و یا فایل web.config را در کنار فایل exeایجاد کنید و این تنظیمات را در آن قرار دهید

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="LowerCaseRule1" stopProcessing="true">
                    <match url="[A-Z]" ignoreCase="false" />
                    <action type="Redirect" url="{ToLower:{URL}}" />
                </rule>					
                <rule name="Reverse Proxy Rule" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://localhost:8080/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

رفرنس