آموزش کامل راه‌اندازی Nginx داخل LXD Container روی Ubuntu 18.04

معرفی

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

فرض کنید یک سرور دارید که باید چندین وب‌سایت برای مشتریان اجرا کند. شما می‌توانید هر وب‌سایت را به عنوان یک virtual host در همان اینستنس Apache یا Nginx اجرا کنید یا برای هر وب‌سایت یک ماشین مجازی جداگانه بسازید. کانتینرهای لینوکس جایگاهی بین virtual hostsها و ماشین‌های مجازی دارند.

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

پیش‌نیازها

  • یک سرور با سیستم‌عامل Ubuntu 18.04.
    کار را آغاز کنید. آدرس آی‌پی عمومی سرور خود را یادداشت کنید؛ از این آدرس بعدا استفاده خواهیم کرد.
  • حداقل ۵ گیگابایت فضای block storage. برای راه‌اندازی آن در بخش تنظیمات، گزینه Manually Format & Mount را انتخاب نمایید.

نکته: LXD در Ubuntu 18.04 به صورت از پیش نصب شده (deb package) موجود است. از Ubuntu 20.04 به بعد، فقط به صورت snap package عرضه می‌شود.

بنابراین، Ubuntu 18.04 آخرین نسخه‌ای است که LXD به صورت deb package ارائه می‌شود.

گام اول: افزودن کاربر به گروه lxd و نصب پیش‌نیازها

برای استفاده از LXD باید کاربر خود را به گروه lxd اضافه کنید:

sudo adduser $USER lxd

سپس لازم است تنظیمات جدید عضویت گروه را اعمال کنید:

newgrp lxd

برای اطمینان از عضویت کاربر در گروه lxd:

id

گام دوم: نصب ZFS و آماده‌سازی Storage Backend

برای استفاده از بهترین performance در ParminCloud، پیشنهاد می‌شود از ZFS استفاده کنید:

sudo apt update
sudo apt install zfsutils-linux

نام Device مربوط به block storage خود را به کمک دستور زیر بدست آورید:

ls -l /dev/disk/by-id/

به عنوان مثال: /dev/disk/by-id/scsi-0DO_Volume_volume-fra1-0
آدرس کامل را یادداشت کنید.

گام سوم: راه‌اندازی اولیه LXD

sudo lxd init

در پاسخ‌دهی به سوالات مطابق زیر عمل کنید:

  • LXD clustering: no
  • Storage backend: zfs
  • Create a new ZFS pool: yes
  • Name of the storage pool: zpool (یا مقدار پیش‌فرض)
  • Disks to use: آدرس کامل Device
  • Size in GB: اندازه مورد نظر

در بخش تنظیمات شبکه، bridge جدید را ایجاد کنید:

  • Create new local bridge: yes
  • Name: lxdbr0 (پیش‌فرض)
  • Auto-select IPv4 subnet: ENTER
  • IPv6: ENTER (در صورت نیاز)
  • Manage LXD over the network: no
  • Update images automatically: yes
  • View YAML: اختیاری

گام چهارم: ساخت و راه‌اندازی کانتینر Nginx

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

lxc list

ساخت کانتینر با نام webserver:

lxc launch ubuntu:18.04 webserver

پس از اتمام، با دستور زیر اطلاعات و IP را بررسی کنید:

lxc list --columns ns4

برای اختصاص IP استاتیک به کانتینر:

lxc config device override webserver eth0

سپس:

lxc config device set webserver eth0 ipv4.address کانتینر IP

ری‌استارت کانتینر:

lxc restart webserver

وضعیت کانتینر را مجدد بررسی کنید:

lxc list --columns ns4

گام پنجم: نصب و پیکربندی Nginx داخل کانتینر

وارد کانتینر شوید:

lxc shell webserver

داخل کانتینر:

apt update
apt install nginx

فایل پیش‌فرض Nginx را ویرایش کنید:

nano /var/www/html/index.nginx-debian.html

دو عبارت زیر را به فایل اضافه نمایید:

  • این سایت روی LXD container webserver میزبانی می‌شود.
  • ParminCloud.

فایل را ذخیره و از کانتینر خارج شوید:

exit

تست صحت عملکرد Nginx با curl:

curl http://کانتینر IP

گام ششم: انتقال ترافیک اینترنت به کانتینر

قانون iptables را برای فورواد پورت 80 قرار دهید (PARMINCLOUD_IP و CONTAINER_IP را جایگزین کنید):

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -d PARMINCLOUD_IP -j DNAT --to-destination CONTAINER_IP:80

بررسی قوانین iptables:

iptables -t nat -L -n --line-numbers

تست دسترسی از بیرون:

curl -I http://PARMINCLOUD_IP

گام هفتم: ذخیره قوانین iptables

برای ذخیره‌سازی دائمی قوانین:

sudo apt install iptables-persistent

در حین نصب، گزینه ذخیره قوانین فعلی را تایید کنید.

گام هشتم: حذف کانتینر و قوانین فایروال

  1. توقف کانتینر:
    lxc stop webserver
  2. حذف کانتینر:
    lxc delete webserver
  3. مشاهده شماره خط قانون مربوطه در iptables:
    iptables -t nat -L PREROUTING --line-numbers
  4. حذف قانون (شماره را جایگزین کنید):
    iptables -t nat -D PREROUTING شماره_خط
  5. ذخیره تنظیمات:
    sudo netfilter-persistent save

جمع‌بندی

در این آموزش، LXD را روی Ubuntu 18.04 راه‌اندازی و کانتینری با Nginx ساختید که با iptables از طریق اینترنت قابل دسترسی است. این سناریو قابلیت توسعه برای میزبانی چندین سایت مجزا با استفاده از reverse proxy دارد.
برای اطلاعات بیشتر، مستندات رسمی LXD را اینجا مطالعه کنید.

از همراهی شما با پارمین کلود متشکریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

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

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