نحوه راه اندازی وب سرور 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 را با تغییر پیش فرض تغییر دهید 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
خروجی شما باید به شکل زیر باشد:
می توانید به ویرایش صفحه ادامه دهید تا ظاهر مورد نظر خود را به آن ببخشید. به عنوان مثال، می توانید یک رنگ پس زمینه یا یک تصویر اضافه کنید. مطبوعات 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 لذت میبرید، لطفاً دکمه دنبال کردن را فشار دهید و مرتباً از آن استفاده کنید.