برنامه نویسی

نحوه راه اندازی وب سرور Nginx در ماشین مجازی اوبونتو با استفاده از Vagrant

Vagrant یک ابزار حیاتی است که در بسیاری از ابزارهای توسعه دهندگان و DevOps پیدا خواهید کرد. می توان از آن برای ایجاد محیط های مجازی استفاده کرد که آینه محیط تولید است و با دیگران قابل اشتراک گذاری است. یکی از مزایای استفاده از Vagrant این است که می تواند به کاهش باگ ها یا مشکلات قبل از انتشار کد شما در محیط تولید کمک کند. در این آموزش، نحوه راه اندازی وب سرور Nginx در اوبونتو و همچنین راه اندازی یک صفحه وب به صورت دستی و خودکار با Vagrant را خواهید آموخت. در پایان، یاد خواهید گرفت که چگونه:

  • Vagrant و VirtualBox را نصب کنید
  • با استفاده از Vagrant ماشین مجازی اوبونتو را در VirtualBox راه اندازی کنید
  • وب سرور Nginx را در اوبونتو نصب کنید
  • صفحه اصلی وب سرور پیش فرض Nginx را با برنامه وب ما جایگزین کنید.
  • فرآیند را خودکار کنید
  • اعتبارسنجی و دسترسی به صفحه وب ما در یک مرورگر

ولگرد

Vagrant یک ابزار منبع باز برای ایجاد و مدیریت محیط های توسعه مجازی قابل تکرار است که روی هر ماشینی اجرا می شود. ماشین های مجازی را با یک فایل پیکربندی به نام Vagrantfile مدیریت می کند. این فایل قابل اشتراک‌گذاری است و چرخه حیات یک ماشین مجازی شامل راه‌اندازی، توقف و تامین آن‌ها را کنترل می‌کند. بیایید تصور کنیم که یک Vagrantfile دارید که توسط شخص دیگری در رایانه شما ایجاد شده است. شما می توانید همان محیط یا ماشین مجازی (VM) را به عنوان نسخه اصلی تنها با دستور “ولگرد بالا” تکرار کنید.
در سال 2010، HashiCorp Vagrant را ایجاد کرد که به طور گسترده در پشته های فناوری سازمان هایی مانند Airbnb، Accenture، Coursera و Shopify استفاده می شود. چندین ارائه دهنده خدمات مجازی سازی از جمله VirtualBox، VMware، Docker و Hyper-V توسط Vagrant پشتیبانی می شوند.

VirtualBox

VirtualBox یک نرم افزار مجازی سازی رایگان است که به کاربران کمک می کند رایانه دوم را با سیستم عامل متفاوت از رایانه میزبان خود اجرا کنند. مانند مورد ما، ما یک سیستم عامل اوبونتو را در VirtualBox جدا از کامپیوتر میزبان ویندوز خود اجرا خواهیم کرد. VirtualBox از انواع سیستم عامل ها از جمله ویندوز، لینوکس و macOS پشتیبانی می کند. همچنین دارای برخی از ویژگی های خوب است. به عنوان مثال، از شبکه مجازی پشتیبانی می کند که ارتباط بین ماشین های مجازی و کامپیوتر میزبان را امکان پذیر می کند. هنگام آزمایش تنظیمات شبکه یا اجرای سرورها در یک محیط مجازی، این می تواند فوق العاده مفید باشد.

اوبونتو

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

NGINX

Nginx یک نرم افزار وب سرور محبوب است که به طور گسترده برای میزبانی صفحات وب استاتیک و پویا که توسط کاربران از طریق اینترنت قابل دسترسی هستند استفاده می شود.

قبل از شیرجه رفتن

  • به عنوان پیش نیاز، رایانه شما باید حدود 10 گیگابایت فضای دیسک آزاد و حداقل 8 گیگابایت رم برای اجرای لینوکس در یک ماشین مجازی داشته باشد.
  • دستورالعمل های ارائه شده در مستندات رسمی VirtualBox را برای دانلود و نصب VirtualBox دنبال کنید
  • به همین ترتیب، Vagrant را با پیروی از دستورالعمل های ارائه شده در اسناد رسمی Vagrant دانلود و نصب کنید.

ایجاد یک ماشین مجازی اوبونتو با استفاده از Vagrant

با فرض اینکه VirtualBox و Vagrant خود را نصب کرده اید، با راه اندازی یک ماشین مجازی با استفاده از Vagrant شروع می کنیم. ابتدا باید یک دایرکتوری جدید روی دسکتاپ خود ایجاد کنیم. برای انجام این کار، از Windows Command Prompt یا Windows Powershell خود برای اجرای دستورات زیر استفاده کنید:

cd Desktop       
mkdir myproject
cd myproject
vagrant init
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ترمینال شما باید به شکل زیر باشد:

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

در خط 1 شما استفاده کردید cd دستور برای حرکت به محیط دسکتاپ شما. درحالیکه در خط 2، شما استفاده کردید mkdir دستور ایجاد یک پوشه یا دایرکتوری جدید به نام myproject روی دسکتاپ شما بعد، شما cd به دایرکتوری جدید ایجاد شده در خط 3. سپس، یک ماشین ولگرد جدید را در آن مقداردهی اولیه می کنید خط 4.

پس از اجرای دستور در خط 4، متوجه خواهید شد که a Vagrantfile در دایرکتوری شما ایجاد شده است. بیایید قبل از شروع محیط مجازی خود مقداری تنظیمات را به “Vagrantfile” خود اضافه کنیم.

Vagrantfile را با استفاده از یک ویرایشگر کد راه اندازی کنید. در این آموزش از Visual Studio Code استفاده می کنم.
فایل را با افزودن کد زیر ویرایش کنید:

Vagrant.configure("2") do |config|


### Nginx VM ###
  config.vm.define "web01" do |web01|
    web01.vm.box = "ubuntu/bionic64"
    web01.vm.hostname = "web01"
    web01.vm.network "private_network", ip: "192.168.56.18"
    web01.vm.provider "vmware_desktop" do |vmware|
      vmware.gui = true
      vmware.allowlist_verified = true
    end
  end

end  
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجازه دهید توضیح دهم که فایل چه کاری انجام می دهد. این فایل پیکربندی Vagrant یک ماشین مجازی با نام “web01” را مشخص می کند که یک سیستم عامل 64 بیتی Ubuntu Bionic را اجرا می کند. در اینجا چیزی است که هر خط انجام می دهد:

Vagrant.configure("2") do |config|
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بلوک پیکربندی Vagrant را شروع می‌کند و مشخص می‌کند که نسخه 2 API پیکربندی باید استفاده شود.

config.vm.define "web01" do |web01|
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یک ماشین مجازی جدید به نام ایجاد می کند web01 و تنظیمات آن را مشخص می کند.

web01.vm.box = "ubuntu/bionic64"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تصویر جعبه پایه را روی آن تنظیم می کند ubuntu/bionic64.

web01.vm.hostname = "web01"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نام میزبان ماشین مجازی را روی آن تنظیم می کند web01.

web01.vm.network "private_network", ip: "192.168.56.18"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یک رابط شبکه خصوصی به ماشین مجازی با آدرس IP اضافه می کند 192.168.56.18.

web01.vm.provider "vmware_desktop" do |vmware|
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ارائه دهنده مجازی سازی را روی vmware_desktop و تنظیمات آن را مشخص می کند.

vmware.gui = true
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالت رابط کاربری گرافیکی را برای ماشین مجازی فعال می کند.

vmware.allowlist_verified = true
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به عنوان یک تنظیم عمل می کند که جعبه VMware به درستی برای تنظیمات لیست مجاز VMX پیکربندی شده است.

در نهایت، end برچسب ها را می بندد Vagrant.configure، config.vm.define، و Vagrant.configure به ترتیب بلوک ها

توجه: اگر آدرس IP “192.168.56.18” از قبل در رایانه شما در حال استفاده است، می توانید یک آدرس “IP” جایگزین انتخاب کنید.

ماشین مجازی را با استفاده از:

vagrant up
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چند دقیقه طول می کشد تا VM راه اندازی شود. با استفاده از دستور به web01 VM وارد شوید:

vagrant ssh web01
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پایانه

دایرکتوری شما باید به vagrant@web01:~$ در صورت موفقیت درست مانند تصویر بالا.

ورود میزبان ها را تأیید کنید

cat /etc/hosts
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با اجرای دستورات زیر سیستم عامل اوبونتو را با آخرین وصله ها به روز کنید:

sudo apt update
sudo apt upgrade
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Nginx را نصب کنید:

sudo apt install nginx -y
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از نصب Nginx، بیایید با دستور زیر بررسی کنیم که آن را آماده و اجرا می‌کنیم:

systemctl status nginx
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پایانه

وب سرور nginx همانطور که در تصویر بالا مشاهده می شود فعال (در حال اجرا) است.

دسترسی به وب سرور Nginx در مرورگر

پس از راه‌اندازی VM و نصب Nginx، اکنون می‌توانیم با استفاده از آدرس IP خصوصی که قبلاً در Vagrantfile خود تعریف کرده‌ایم، به وب سرور خود در مرورگر دسترسی پیدا کنیم.

برای تأیید اینکه تنظیمات شبکه ماشین مجازی ما همانگونه است که در Vagrantfile مشخص شده است ip: 192.168.56.18. در داخل جلسه SSH، اجرا کنید:

ip addr
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پایانه

شما باید خروجی مشابه آنچه در تصویر بالا مشاهده می کنید داشته باشید. خروجی تأیید می کند که آدرس IP ماشین مجازی روی تنظیم شده است 192.168.56.18 و ما می توانیم با استفاده از آدرس IP به وب سرور در مرورگر خود دسترسی پیدا کنیم.
مرورگر خود را باز کرده و “http:// Your IP ADDRESS” را وارد کنید. برای مثال، http://192.168.56.18.

صفحه وب nginx

صفحه نمایشی Nginx

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

می توانید ظاهر صفحه نمایشی Nginx را با تغییر پیش فرض تغییر دهید index.html فایل. برای ویرایش فایل، دستورات زیر را اجرا کنید:

cd /var/www/html
ls -al
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با این کار cd به پوشه /var/www/html می‌رود و همه فایل‌های موجود در فهرست را فهرست می‌کند
فایلی به نام خواهید دید index.html یا مثل مورد من index.nginx-debian.html

برای ویرایش فایل از ویرایشگر نانو استفاده کنید:

sudo nano index.nginx-debian.html
or
sudo nano index.html
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی شما باید به شکل زیر باشد:

ترمینال nginx

می توانید به ویرایش صفحه ادامه دهید تا ظاهر مورد نظر خود را به آن ببخشید. به عنوان مثال، می توانید یک رنگ پس زمینه یا یک تصویر اضافه کنید. مطبوعات ctrl+o برای ذخیره فایل ویرایش شده، و ctrl+x برای بستن ویرایشگر نانو تایپ کنید logout برای خروج از ماشین مجازی اوبونتو

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

ما یک وب سایت واقعی را به جای صفحه پیش فرض Nginx در این بخش آپلود خواهیم کرد. کد منبع این آموزش از طریق لینک GitHub قابل دسترسی است. من صفحه اصلی منبع باز html و css دینش پاندیان را تغییر داده ام تا آن را منحصراً مال من کنم. شما می توانید این را نیز شخصی سازی کنید.

یک پوشه جدید به نام ایجاد کنید samplepage در myproject دایرکتوری که قبلا ایجاد کردیم. قبل از اجرای این دستور مطمئن شوید که در دایرکتوری root هستید:

mkdir samplepage
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

دستورات زیر را اجرا کنید:

vagrant ssh web01
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای حرکت در داخل ماشین مجازی
در داخل ماشین مجازی، موارد زیر را اجرا کنید:

cd /vagrant
ls
sudo cp -r /vagrant/samplepage/* /var/www/html/
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که یک ماشین مجازی Vagrant را راه اندازی می کنید، یک پوشه مشترک بین دو ماشین ایجاد می شود که به /vagrant دایرکتوری در دستگاه مهمان هر فایل یا دایرکتوری که در دایرکتوری پروژه شما در دستگاه میزبان قرار می گیرد به طور خودکار با آن همگام سازی می شود /vagrant دایرکتوری در دستگاه مهمان این بدان معنی است که Vagrant پوشه پروژه ما (myproject) را با ماشین مهمان به اشتراک می گذارد تا بتوانیم از داخل VM به آن دسترسی داشته باشیم.

در کد بالا:

  • cd /vagrant – این دستور دایرکتوری کاری فعلی را به /vagrant تغییر می دهد.
  • ls – این دستور نام تمام فایل ها و دایرکتوری ها را در فهرست فعلی لیست کرده و نمایش می دهد.
  • sudo cp -r /vagrant/samplepage/* /var/www/html/ – این دستور تمام فایل ها و دایرکتوری های داخل را کپی می کند /vagrant/samplepage/ دایرکتوری به /var/www/html/ فهرست راهنما.

من آدرس IP خود را از 192.168.56.18 به 192.168.56.19 تغییر داده بودم که با خطایی مواجه شدم که می گوید: “شبکه میزبان مشخص شده با یک شبکه غیر هاستون برخورد می کند! این باعث می شود IP مشخص شده شما غیر قابل دسترسی باشد. لطفاً IP یا نام شبکه فقط میزبان خود را تغییر دهید تا دیگر با شبکه های پل شده یا غیر میزبان مطابقت نداشته باشد.’ شما مجبور نیستید این گزیده را انجام دهید، شما هنگام تلاش برای ولگردی با همین مشکل مواجه شدید.

صفحه وب

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

گام بعدی این است که این فرآیند را خودکار کنیم تا مجبور نباشیم هر بار که ‘vagrant up’ را اجرا می کنیم به صورت دستی وب سرور را تهیه کنیم.

اتوماسیون ولگرد

در این بخش، کل فرآیند راه‌اندازی یک ماشین مجازی، نصب یک وب سرور و جایگزینی صفحه وب پیش‌فرض Nginx با صفحه وب واقعی خود را خودکار می‌کنیم. وقتی اجرا می کنیم vagrant up، وب سرور VM و Nginx ما به طور خودکار ارائه می شود. برای انجام این کار، یک اسکریپت bash می نویسیم که ماشین مجازی ما را به طور خودکار راه اندازی می کند.

یک فایل جدید به نام nginx.sh ایجاد کنید و کد زیر را به آن اضافه کنید:

# installing nginx and copying file
apt update
apt install nginx -y
cp -r /vagrant/samplepage/* /var/www/html/

#starting nginx web server
systemctl start nginx
systemctl enable nginx
systemctl restart nginx
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سپس در Vagrantfile خود کد زیر را اضافه کنید:

web01.vm.provision "shell", path: "nginx.sh" 
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این کد به Vagrantfile می گوید که یک اسکریپت پوسته به نام “nginx.sh” را به عنوان بخشی از فرآیند راه اندازی خود اجرا کند.

Vagrantfile خود را اعتبارسنجی کنید

برای بررسی اینکه Vagrantfile ما همانطور که انتظار می‌رود کار می‌کند، آن را تأیید می‌کنیم

vagrant validate
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این دستور باید خارج از ترمینال ssh اجرا شود.
شما باید خروجی مانند: “Vagrantfile تایید شده با موفقیت” را ببینید.

اجرا کن vagrant destroy برای از بین بردن ماشین موجود و vagrant up برای شروع VM با پیکربندی خودکار.

کارت عالی بود! اکنون می توانید صفحه وب خود را در مرورگر با استفاده از همان آدرس IP که در Vagrantfile مشخص کرده اید مشاهده کنید.

نتیجه

به طور خلاصه، یاد گرفتید که چگونه یک ماشین مجازی بسازید و Nginx را روی آن نصب کنید. یک VM تهیه کنید که یک وب سرور را هم به صورت دستی و هم به صورت خودکار اجرا کند. اگر از آموزش‌های DevOps و Cloud Computing لذت می‌برید، لطفاً دکمه دنبال کردن را فشار دهید و مرتباً از آن استفاده کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا