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