• خانه
  • وبلاگ
  • استقرار یک برنامه وب Go با استفاده از Nginx در اوبونتو 22.04

استقرار یک برنامه وب Go با استفاده از Nginx در اوبونتو 22.04

 تاریخ انتشار :
/
  وبلاگ
استقرار یک برنامه وب Go با استفاده از Nginx در اوبونتو 22.04


Go یک زبان برنامه نویسی با هدف عمومی منبع باز است. این برنامه از عملکرد پایتون الهام گرفته شده است در حالی که قابلیت C را ارائه می دهد. در ابتدا توسط گوگل برای رسیدگی به مشکلاتی که آنها در زمینه کدهای خود با آن مواجه بودند (پیچیدگی کد و زمان طولانی کامپایل) توسعه داده شد. مانند هر زبان برنامه نویسی مدرن دیگری، Go برای همه مقاصد مناسب است. به عنوان مثال، می توان از آن برای توسعه وب، برنامه نویسی خط فرمان، برنامه های کاربردی سرور شبکه، توسعه front-end و موارد دیگر استفاده کرد.

در این راهنما ما شما را از طریق مراحل استقرار یک برنامه وب ساده Go در اوبونتو 22.04 LTS راهنمایی می کند. ما همچنین یک پروکسی معکوس Nginx را برای مدیریت ترافیک پیاده سازی خواهیم کرد.

پیش نیازها

برای انجام مراحل نشان داده شده در این راهنما، به اجزای زیر از قبل پیکربندی شده نیاز دارید:

اگر قرار است از طریق یک نام دامنه به سرویس دسترسی داشته باشید، باید یک FQDN داشته باشید که به سرور اشاره دارد. در چنین شرایطی توصیه می شود Nginx را با SSL ایمن کنید. می توانید از آموزش ما درباره ایمن سازی Nginx با Let’s Encrypt در اوبونتو بیشتر بیاموزید.

مرحله 1 – یک برنامه Go Web ایجاد کنید

ما یک برنامه وب ساده Go ایجاد خواهیم کرد که با دسترسی به دامنه، “Hello World” را روی صفحه نمایش چاپ می کند. علاوه بر این، برنامه پس از دسترسی به کاربر خوش آمد می گوید<دامنه>/من تبریک می گویم/<نام کاربری>.

با ایجاد یک پروژه جدید در زیر شروع کنید$GOPATH. دایرکتوری پروژه را ایجاد کنید:

Go Web Application Make Dir

دایرکتوری فعلی را تغییر دهید:

Go Web Application Change Dir

سپس یک پروژه را آغاز کنید:

Go Web Application Init Project

سپس ایجاد کنیداصلی.من دارم میروم که به عنوان ریشه برنامه Go ما عمل می کند. کد منبع برنامه وب ما را میزبانی می کند:

پروژه را در VS Code باز کنید:

کد زیر را در فایل قرار دهیداصلی.من دارم میروم:

Go Web App Main Go

بیایید یک تفکیک سریع از برنامه Go را که به تازگی ایجاد کردیم انجام دهیم:

  • عبارتبسته بندی اصلی به عنوان نقطه ورود به برنامه ما عمل می کند. همچنین به کامپایلر Go دستور می دهد تا فایل را به عنوان یک فایل اجرایی به جای کتابخانه اشتراکی کامپایل کند.
  • راوارد كردن تمام ماژول های اضافی مورد نیاز برای کار برنامه را وارد می کند. در اینجا ما وارد کرده ایمfmt (برای چاپ متون) وخالص/http بسته های (برای برنامه های کاربردی وب سرور).
  • با استفاده از تابعhttp.HandleFuncما دو مسیر ایجاد کردیم:
    • مسیر اول/ به عنوان مسیر والد در داخل عمل می کندتابع اصلی.
    • مسیر دوم/من تبریک می گویم/ یک پارامتر URL (در این مورد یک رشته) را می گیرد. سپس رشته همراه با پیام تبریک نمایش داده می شود.
      • آدرس URL مسیر برای ذخیره مقدار بعد استفاده می شود/من تبریک می گویم/. سپس مقدار به عنوان ارسال می شودنام از پارامتر URL
    • راhttp.ListenAndServe تابع وب سرور را مقداردهی اولیه می کند. اینجا پورت گوش دادن است9990.

اکنون که برنامه ما آماده است، فایل را به یک فایل اجرایی کامپایل کنید:

کامپایلر Go یک فایل اجرایی با همان نام فایل ایجاد می کند. نتیجه را ببینید:

برو برنامه وب ls -lh

مرحله 2 – یک فایل systemd unit را برای اجرا در پس زمینه پیکربندی کنید

تا به حال، اگر کاربر فعلی از سیستم خارج شود، برنامه وب Go از کار می افتد. این طراحی بدی برای وب سرور است. برای حل این مشکل، ما یک فایل سیستمی با یک واحد ایجاد می کنیم تا حتی زمانی که کاربر از سرور خارج می شود، در پس زمینه اجرا شود. این پیکربندی را یک قدم به استقرار در سطح تولید نزدیک‌تر می‌کند.

یک فایل سیستمی خاص ایجاد کنیدوب.سرویس زیر/lib/سیستم شده/سیستم:

قطعه زیر را به فایل ماژول اضافه کنید:

به وب سرویس بروید

اینجا،

  • متغیرExecStart نقطه ورودی سرویس را از طریق فایل اجرایی اصلی واقع در فهرست پروژه ما نشان می دهد ($GOPATH/من دارم میروموب). توجه داشته باشید که به جای ذکر$GOPATH، وارد مسیر کامل فایل اجرایی شدیم. به این دلیل است که$GOPATH متغیر فقط برای کاربر قابل مشاهده است.
  • متغیرمن در حال راه اندازی مجدد هستم می گویدسیستم شده اگر برنامه از کار افتاد چه باید کرد. ارزشهمیشه می گویدسیستم شده برای راه اندازی مجدد برنامه هر زمان که اجرای آن متوقف شد.
  • متغیر RestartSec می گویدسیستم شده قبل از شروع مجدد برنامه، مدت زمان مشخصی منتظر بمانید. در اینجا مقدار تنظیم شده است5 ثانیه (5 ثانیه).
  • صورتحسابتحت تعقیب=چندکاربر.هدف مشخص می کند در چه حالتیسیستم شده سرویس را فعال خواهد کرد.

فایل را ذخیره کنید و ویرایشگر را ببندید. سرویس را شروع کنید:

به شروع وب بروید

بررسی کنید که آیا سرویس راه اندازی و اجرا می شود:

به حالت وب بروید

همانطور که خروجی نشان می دهد، برنامه در حال اجرا است. ما اکنون آماده استفاده از Nginx به عنوان یک پروکسی معکوس هستیم.

مرحله 3 – Nginx را به عنوان یک پروکسی معکوس پیکربندی کنید

اکنون یک بلوک سرور برای Nginx ایجاد می کنیم تا به عنوان یک پروکسی معکوس عمل کند. برنامه وب از طریق پروکسی معکوس (برای عملکرد و امنیت بیشتر) در معرض اینترنت قرار می گیرد.

دایرکتوری فعال فعلی را به تغییر دهیدسایت هایدر دسترس:

سی دی

اکنون یک فایل با نام دامنه ای که می خواهید در معرض برنامه خود قرار دهید ایجاد کنید. برای نمایش استفاده خواهیم کردمثال.com:

کد زیر را در فایل بلوک وارد کنید:

example.com

در اینجا ما استفاده می کنیمproxy_pass برای ارائه برنامه وب Go بر روی آدرس IP سرور (localhost) در یک پورت9990.

برای فعال کردن بلوک Nginx، یک پیوند نمادین (همچنین به عنوان پیوند نرم‌افزاری) از فایل به پوشه‌ای با سایت‌های فعال ایجاد کنید:

یک سیم کارت ایجاد کنید

برای اعمال تغییرات، پیکربندی Nginx را دوباره بارگیری کنید:

بارگیری مجدد nginx

مرحله 4 – بررسی کنید

اگر همه چیز همانطور که انتظار می رود پیش برود، برنامه وب اکنون باید در دسترس باشدمیزبان محلی:9990 و دامنه ای که ما پیکربندی کردیم. URL را در مرورگر وب باز کنید:

سلام دنیا

همانطور که انتظار می رفت، برنامه “Hello World” را روی صفحه نمایش چاپ می کند. این کار مسیر اصلی است. سپس مسیر دوم را با مراجعه به URL زیر تست کنید:

سلام ابر

برنامه با موفقیت پیام تبریک ساده را با نام پارامتر به دست آمده از URL برمی گرداند.

اینجا! ما با موفقیت یک برنامه وب Go را در سرور محلی خود مستقر کردیم!

افکار نهایی

در این راهنما، پیاده سازی یک برنامه وب ساده Go را با استفاده از کتابخانه های استاندارد Go نشان دادیم. ما همچنین یک پروکسی معکوس را با استفاده از Nginx پیاده سازی کردیم. در حالی که نمایش بر روی یک سرور محلی انجام شد، برای یک سرور عمومی به شدت توصیه می‌شود که یک گواهی SSL را برای افشای امن دسترسی به اینترنت پیاده‌سازی کنید. برای برنامه نویسی Go بیشتر، می توانید آموزش ساخت و نصب برنامه های Go را بررسی کنید.

کار کامپیوتر مبارک!

استقرار یک برنامه وب Go با استفاده از Nginx در اوبونتو 22.04

درباره Pranay Kapgate

مهندس نرم افزار | علاقه مندان به نرم افزارهای متن باز