مقالات

آموزش نصب NGINX در اوبونتو

نصب NGINX چگونه است؟ آیا با آموزش نصب NGINX آشنایی دارید؟ به‌عنوان یکی از محبوب‌ترین وب سرورها در جهان، NGINX میزبانی برخی از بزرگ‌ترین و پربازدیدترین وب‌سایت‌ها در اینترنت را بر عهده دارد. انتخاب NGINX به‌عنوان یک گزینه ساده و سبک می‌تواند برای داشتن یک وب سرور یا پروکسی معکوس به شما کمک کند. این مقاله از بلاگ ابر زس، روش نصب NGINX را روی سرور اوبونتو 22.04 آموزش داده و همچنین سایر جزئیات ازجمله تنظیم فایروال، مدیریت فرآیند استفاده از این وب‌سرور و راه‌اندازی بلوک‌های سرور برای هاستینگ بیش از یک دامنه در سرور را بررسی می‌کنیم.

پیش از ادامه فرایند نصب، در صورتی که می‌خواهید در مورد این وب‌سرور بیشتر بدانید، پیشنهاد می‌کنیم مطلب «NGINX چیست» را مطالعه نمایید.

پیش‌نیازهای نصب

قبل از شروع آموزش نصب NGINX لازم است برخی پیش‌نیازهای سیستمی که قصد دارید روی آن نصب را انجام دهید، برآورده کنید. ابتدا باید یک یوزر معمولی غیر روت (Non-root) با امتیازات sudo روی سرور پیکربندی شده باشد. این کار برای نصب NGINX روی Ubuntu 22.04 ضروری است. همچنین می‌توانید قبل از اتمام مراحل آموزش نصب، یک دامنه را ثبت کنید. پس از آن که مطمئن شدید که یک حساب کاربری دردسترس دارید، می‌توانید برای شروع نصب به‌عنوان یک کاربر غیر روت به سیستم وارد شوید و لاگین کنید. سایر مراحل نصب به‌صورت زیر خواهد بود.

مرحله اول: نصب Nginx

اولین مرحله در این آموزش، نصب NGINX است که می‌توانید نسخه پیش‌فرض آن را از مخازن اوبونتو و با استفاده از سیستم پکیجینگ apt انجام دهید. اگر این اولین تعامل با سیستم پکیجینگ apt است، باید ابتدا شاخص پکیج محلی (local) خود را به‌روز کنیم تا به آخرین لیست‌های پکیج دسترسی پیدا کنیم. پس از این کار، می‌توان NGINX را نصب کرد:

sudo apt update
sudo apt install nginx

سپس با تایپ y فرایند نصب را تایید کنید. در صورتی که از شما درخواست شد هر دستگاه را ری‌استارت کنید، با فشردن ENTER این موضوع را تایید کنید. پس از پذیرش روند نصب، apt نصب NGINX و هرگونه وابستگی موردنیاز آن انجام می‌دهد.

مرحله دوم: تنظیم فایروال

قبل از آن که بخواهیم Nginx را تست کنیم، باید نرم‌افزار فایروال برای دسترسی به سرویس تنظیم شود. برای این‌که دسترسی مستقیم به NGINX فراهم شود، NGINX در فرایند نصب، خود را به عنوان یک سرویس ufw رجیستر می‌کند. برای فهرست کردن پیکربندی‌های برنامه از کد زیر استفاده می‌کنید.

sudo ufw app list

خروجی موردنظر، لیستی از پروفایل‌های اپلیکیشن مشابه لیست زیر است:

Output
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

همان‌طور که در خروجی می‌بینید، سه پروفایل برای NGINX وجود دارد که شامل موارد زیر است:

  • Nginx Full: برای باز کردن پورت ۸۰ (ترافیک وب عادی و رمزگذاری نشده) و پورت ۴۴۳ (ترافیک رمزگذاری شده TLS/SSL)
  • Nginx HTTP: فقط برای باز کردن پورت ۸۰ (ترافیک وب عادی و رمزگذاری نشده)
  • Nginx HTTPS: فقط برای باز کردن پورت ۴۴۳ (ترافیک رمزگذاری شده TLS/SSL)

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

برای فعال کردن می‌توانید کد زیر را تایپ کنید:

sudo ufw allow 'Nginx HTTP'

کد زیر هم برای تأیید تغییرات استفاده می‌شود:

sudo ufw status

خروجی مشابه آنچه در ادامه می‌بینید، نشان می‌دهد که کدام ترافیک HTTP مجاز است:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

مرحله سوم: بررسی وب سرور

در پایان مراحل نصب NGINX، اوبونتو 22.04 سرور NGINX را راه‌اندازی می‌کند. برای این‌که اطمینان پیدا کنیم، سرور اجرا شده از کد زیر استفاده می‌کنیم:

systemctl status nginx

خروجی باید به‌صورت زیر باشد:

Output
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2022-03-01 16:08:19 UTC; 3 days ago
     Docs: man:nginx(8)
 Main PID: 2369 (nginx)
    Tasks: 2 (limit: 1153)
   Memory: 3.5M
   CGroup: /system.slice/nginx.service
           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─2380 nginx: worker process

همان‌طور که در خروجی می‌توانید بررسی کنید، می‌بینید که سرویس با موفقیت نصب شده و می‌توان از آن استفاده کرد. برای تست راه‌اندازی NGINX بهتر است یک صفحه را از آن درخواست کنید. می‌توانید با استفاده از آدرس IP سرور خود، به صفحه لندینگ پیش‌فرض NGINX بروید تا از اجرای درست نرم‌افزار مطمئن شوید. اگر نمی‌دانید آدرس IP شما چیست، می‌توانید از ابزار icanhazip.com استفاده کنید.

curl -4 icanhazip.com

پس از پیدا کردن آدرس IP سرور خود، می‌توانید آن را در نوار آدرس مرورگر تایپ کرده و در آن وارد شوید:

http://your_server_ip

پس از وارد کردن آدرس IP، باید صفحه لندینگ مشابه تصویر زیر را مشاهده کنید:

آموزش نصب NGINX - مشاهده صفحه لندینگ NGINX

اگر این صفحه را می‌بینید، می‌توانید مطمئن شوید که سرور به‌درستی کار کرده و آماده مدیریت کردن است.

مرحله چهارم: مدیریت فرایند Nginx

پس از راه‌اندازی وب سرور و نصب NGINX می‌توانید ازطریق برخی دستورات مدیریتی که در ادامه بررسی می‌کنیم، مدیریت اولیه آن را انجام دهید.

کد زیر، برای متوقف کردن وب سرور استفاده می‌شود:

sudo systemctl stop nginx

در صورت توقف وب سرور، از کد زیر برای راه‌اندازی آن استفاده کنید:

sudo systemctl start nginx

کد زیر را می‌توانید برای توقف و ریستارت سرویس استفاده کنید:

sudo systemctl restart nginx

در NGINX می‌توانید بدون حذف اتصالات، تغییراتی را در پیکربندی انجام داده و آن را مجدد Load کنید. کد زیر این کار را انجام می‌دهد:

sudo systemctl reload nginx

پیکربندی پیش‌فرض NGINX به‌گونه‌ای است که در زمان بوت شدن سرور، به شکل خودکار دوباره شروع به کار می‌کند. اگر نمی‌خواهید این فرایند انجام شود، با کد زیر می‌توانید این ویژگی را غیرفعال کنید:

sudo systemctl disable nginx

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

sudo systemctl enable nginx

در این قسمت از آموزش نصب NGINX شما می‌توانید دستورات مدیریتی اولیه را بررسی کرده و آن‌ها را یاد بگیرید. با آموزش این دستورات، می‌توانید برای پیکربندی سایت جهت میزبانی بیش از یک دامنه، آماده باشید.

مرحله پنجم: راه‌اندازی بلوک‌های سرور

پس از نصب NGINX و استفاده از این وب سرور، می‌توانید از بلوک‌های سرور برای کپسوله کردن جزئیات پیکربندی و میزبانی بیش از یک دامنه هر سرور، استفاده کنید. در این آموزش نصب NGINX ما ایجاد بلوک را با دامنه‌ای به نام your_domain انجام می‌دهیم، اما شما باید نام دامنه خود را جایگزین کنید. یک بلوک سرور در وب سرور Nginx روی اوبونتو 22.04 به طور پیش‌فرض برای ارائه اسناد خارج از فهرست var/www/html/ فعال و پیکربندی شده است. این ویژگی برای یک وب‌سایت می‌تواند عملکرد خوبی داشته باشد، اما چنانچه بخواهیم هاستینگ چندین وب‌سایت را داشته باشیم، شرایط کمی سخت می‌شود.

به‌جای این که بخواهیم var/www/html/ را تغییر دهیم، می‌توان برای وب‌سایت با دامنه your_domain، یک دایرکتوری var/www/ ایجاد کرد. می‌توان همچنان var/www/html/ را به‌عنوان دایرکتوری پیش‌فرض برای مواقعی که درخواست کلاینت با هیچ‌کدام از سایت‌ها مطابقت ندارد، استفاده کرد. برای این کار، به‌صورت زیر یک دایرکتوری برای your_domain و با استفاده از فلگ p- دایرکتوری‌های parent مورد نیاز را ایجاد می‌کنیم.:

sudo mkdir -p /var/www/your_domain/html

حالا مالکیت دایرکتوری را به متغیر محیطی $USER اختصاص می‌دهیم:

sudo chown -R $USER:$USER /var/www/your_domain/html

اگر مقدار umask که مجوزهای فایل پیش‌فرش را تنظیم می‌کند تغییر نداده باشید، مجوزهای وب روت باید صحیح باشد. برای اطمینان از صحت مجوزها و همچنین اجازه دادن برای خواندن، نوشتن و اجرای فایل‌ها، می‌توانید از دستور زیر استفاده کنید:

sudo chmod -R 755 /var/www/your_domain

حالا باید یک صفحه نمونه index.html را با استفاده از nano یا هر ویرایشگر دیگری، ایجاد کنید:

sudo nano /var/www/your_domain/html/index.html

حالا داخل فایل var/www/your_domain/html/index.html/، نمونه HTML زیر را اضافه کنید:

<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>

برای خروج، دکمه Ctrl+X را فشرده و تغییرات را ذخیره کنید. برای ذخیره، ابتدا دکمه Y و سپس Enter را فشار دهید. وب سرور NGINX برای آن که بتواند این محتوا را ارائه دهد، به ایجاد یک بلوک سرور با دستورالعمل‌های صحیح نیاز دارد. به‌جای آن که فایل پیکربندی پیش‌فرض را به طور مستقیم تغییر دهیم، به‌صورت زیر یک فایل جدید در etc/nginx/sites-available/your_domain/ ایجاد می‌کنیم:

sudo nano /etc/nginx/sites-available/your_domain

سپس آن را در بلوک پیکربندی زیر که شبیه به پیش‌فرض است، اما برای فهرست و نام دامنه جدید به‌روزرسانی شده، جایگذاری می‌کنیم:

server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

        location / {
                try_files $uri $uri/ =404;
        }
}

به این نکته توجه کنید که پیکربندی root به دایرکتوری جدید و server_name به نام دامنه تغییر داده شده است.

در مرحله بعدی نصب NGINX باید با ایجاد لینک از فایل به دایرکتوری فعال شده توسط سایت‌ها (sites-enabled)، فایل را فعال می‌کنیم. NGINX حین فرایند استارتاپ این فایل را می‌خواند:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

در این قسمت از آموزش نصب NGINX نکاتی وجود دارد که باید به آن توجه کنید. در Nginx، از یک روش رایج تحت عنوان لینک‌های نمادین یا Symbolic Links برای بررسی بلوک‌های سرور فعال، استفاده می‌شود. این روش ایجاد لینک نمادین، مشابه ایجاد یک میان‌بر (Shortcut) روی دیسک است. یعنی همان‌طور که می‌توانید میان‌بر را از فهرست سایت‌های فعال (sites-enabled) حذف کنید، اما همچنان فعال (sites-available) بماند، می‌توانید بلوک سرور را در سایت‌ها در دسترس نگه دارید.

تا اینجا، دو بلوک سرور برای پاسخگویی به درخواست‌ها بر اساس دستورالعمل‌های listen و server_name فعال و پیکربندی شده‌اند. این بلوک‌ها عبارت‌اند از:

  • your_domain: برای پاسخ به درخواست‌های your_domain و www.your_domain
  • default: برای پاسخ به هر درخواستی در پورت 80 بدون تطابق با دو بلوک دیگر

برای جلوگیری از مشکل احتمالی حافظه هش ناشی از افزودن نام سرورهای اضافی، باید یک مقدار واحد در فایل /etc/nginx/nginx.conf تنظیم شود. از طریق دستور زیر فایل را باز کنید:

sudo nano /etc/nginx/nginx.conf

حالا باید دستور server_names_hash_bucket_size را پیدا کرده و برای خارج کردن آن از حالت کامنت، نماد # را بردارید. اگر از ابزار nano استفاده می‌کنید، می‌توانید با فشردن دکمه‌های CTRL و w کلمات موجود در فایل را سرچ کنید.

...
http {
...
server_names_hash_bucket_size 64;
...
}
...

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

sudo nginx -t

چنانچه مطمئن شدید که مشکلی وجود ندارد، باید Nginx را برای فعال کردن تغییرات، ریستارت کنید:

sudo systemctl restart nginx

در این مرحله، باید Nginx نام دامنه شما را ارائه دهد. برای بررسی این مسئله، می‌توانید به آدرس http://your_domain بروید. اگر همه چیز به‌خوبی پیش رفته باشد، باید صفحه‌ای مشابه تصویر زیر را ببینید:

آموزش نصب NGINX

آشنایی با فایل‌ها و دایرکتوری‌های مهم Nginx

حالا که آموزش نصب NGINX را به طور کامل بررسی کرده و مراحل نصب را کامل کرده‌ایم، وقت آن است تا بیشتر برای مدیریت سرویس NGINX آماده شویم. برخی از مهم‌ترین فایل‌ها و بخش‌های اساسی که پس از نصب NGINX باید با آن آشنا شوید، عبارت است از:

محتوای nginx

قبل از این، به فایل var/www/html/ اشاره کرده‌ایم. var/www/html/ محتوای واقعی وب است که به طور پیش‌فرض تنها صفحه پیش‌فرض Nginx را شامل می‌شود؛ یعنی همان صفحه‌ای که پیش از این مشاهده کردیم و در خارج از دایرکتوری var/www/html/ ارائه می‌شود. این محتوا را می‌توانید متناسب با تغییرات فایل‌های پیکربندی nginx، تغییر دهید.

پیکربندی سرور

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

  • etc/nginx/: دایرکتوری پیکربندی Nginx شامل تمام فایل‌های پیکربندی
  • etc/nginx/nginx.conf/: فایل پیکربندی اصلی Nginx و قابل‌تغییر برای ایجاد تغییرات در پیکربندی گلوبال Nginx
  • /etc/nginx/sites-available/: فهرستی برای ذخیره بلوک‌های سرور هر سایت (معمولاً Nginx از فایل‌های پیکربندی این دایرکتوری استفاده نمی‌کند، مگر درصورتی‌که به دایرکتوری فعال شده سایت‌ها لینک شده باشد).
  • /etc/nginx/sites-enabled/: دایرکتوری اختصاصی برای ذخیره بلوک‌های سرور فعال در هر سایت (با لینک دادن به فایل‌های پیکربندی موجود در فهرست سایت‌ها، ایجاد می‎‌شود)
  • etc/nginx/snippets/: دایرکتوری شامل قطعات پیکربندی قابل جایگذاری در هر جای دیگری از پیکربندی Nginx.

گزارش سرور (Server Logs)

بخش دیگر در وب سرور Nginx، گزارش‌های سرور است که موارد زیر را شامل می‌شود:

  • var/log/nginx/access.log/: این گزارش دربردارنده هر درخواست ورودی به سرور وب است (به‌جز زمانی که Nginx به روش دیگری پیکربندی شده باشد).
  • var/log/nginx/error.log/: این گزارش هرگونه خطای Nginx را در خود ثبت می‌کند.

جمع‌بندی

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

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

نشانی ایمیل شما منتشر نخواهد شد.

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

دریافت سرویس تست رایگان

ارتباط با ابر زَس

تلفن:        91078149 –  021

ایمیل:       [email protected]