Nginx یک وب سرور متنباز است که با کارایی و همزمانی در ذهن توسعه یافته است. به عنوان یک وب سرور که مشکلات مقیاسپذیری را حل میکند و بهترین عملکرد را ارائه میدهد، در میان وب سرورهای جهان محبوب است. برخی از معروفترین و پربازدیدترین وبسایتهای اینترنت را میزبانی میکند. معماری رویدادمحور Nginx ویژگی متمایزکننده آن و دلیل برتری آن نسبت به سایر رقبا بوده است. Nginx بهترین عملکرد را در بارگذاری متعادل، پنهانسازی و عمل به عنوان یک پراکسی معکوس دارد و گزینه انعطافپذیری است که به عنوان یک پراکسی معکوس یا وب سرور استفاده میشود.
برخی از کاربران اوبونتو به دنبال یک آموزش راهنما برای هدایت آنها در نصب Nginx هستند. به همین دلیل، در این مقاله، به شما آموزش خواهیم داد که چگونه Nginx را روی سرور اوبونتو ۲۰.۰۴ نصب و مدیریت کنید، دیوار آتش را پیکربندی کنید و بلوکهای سرور را برای میزبانی چندین دامنه از یک سرور پیکربندی کنید.
پیشنیازهای نصب Nginx
قبل از شروع، باید یک حساب کاربری منظم، غیر روت با مجوز sudo روی سرور خود پیکربندی کنید. اختیاری، ممکن است نام دامنه خود را ثبت کنید زیرا در مراحل نهایی به آن نیاز خواهید داشت.
علاوه بر این، ممکن است بخواهید نام میزبان خود را مشخص کنید، منطقه زمانی را تعریف کنید و دسترسی SSH را پیکربندی کنید.
اگر حساب کاربری دارید، میتوانید فرآیند نصب Nginx را با ورود به عنوان یک کاربر غیر روت آغاز کنید.
بهطور مهمتر، برای استفاده از Nginx بر روی سرور خود، باید یک VPS لینوکس مناسب با منابع کافی خریداری کنید و سپس Nginx را بر روی سرور اوبونتو خود با دنبال کردن مراحل زیر نصب کنید.
مرحله ۱: نصب Nginx
از آنجا که Nginx در مخازن پیشفرض اوبونتو قرار دارد، میتوانید Nginx را از این مخازن نصب کنید با وارد کردن دستور سیستم بسته apt.
برای دسترسی به آخرین لیست بستهها، بهتر است دایرکتوری بستههای محلی خود را بهروز کنید و سپس Nginx را نصب کنید:
sudo apt update
sudo apt install nginx
پس از تأیید عملیات، Nginx و تمام وابستگیهای مورد نیاز برای نصب Nginx توسط apt بر روی سرور شما نصب خواهد شد.
مرحله ۲: پیکربندی دیوار آتش
قبل از تست Nginx، باید دیوار آتش پیکربندی شود تا دسترسی به سرویس را ممکن سازد. پس از نصب، Nginx به عنوان یک سرویس در ufw ثبت میشود که دسترسی به Nginx را آسانتر میکند. در اوبونتو، ufw به عنوان یک رابط کاربری برای مدیریت قوانین دیوار آتش استفاده میشود.
برای دیدن لیست پیکربندیهای برنامههایی که ufw با آنها آشنا است و میتواند این پیکربندیهای برنامه را انجام دهد، دستورات زیر را تایپ کنید:
sudo ufw app list
به عنوان نتیجه این دستور، یک لیست از پروفایلهای برنامه به شما نمایش داده میشود:
خروجی
برنامههای موجود:
در خروجی دریافتی، شما سه پروفایل Nginx Full، Nginx HTTP و Nginx HTTPS را خواهید دید، هرکدام برای یک عملکرد نمایش داده شده است.
Nginx Full: فعال کردن این پروفایل شامل قوانین برای پورت ۴۴۳ (ترافیک رمزنگاری شده TLS/SSL) و پورت ۸۰ (ترافیک وب معمولی، غیر رمزنگاری شده) خواهد بود و هر دو پورت را برای شما باز خواهد کرد.
Nginx HTTP: این پروفایل زمانی استفاده میشود که فقط میخواهید پورت ۸۰ (ترافیک وب معمولی، غیر رمزنگاری شده) را باز کنید.
Nginx HTTPS: این پروفایل همچنین فقط پورت ۴۴۳ را باز میکند.
ما پیشنهاد میدهیم یک پروفایل را فعال کنید که جزئیات و محدودیتهای بیشتری داشته باشد و بتواند ترافیک پیکربندی شده را اجازه دهد.
مرحله ۳: بررسی وضعیت وب سرور
پس از اتمام فرآیند نصب، Nginx با موفقیت بر روی سرور اوبونتو راهاندازی خواهد شد و وب سرور باید از قبل پیکربندی و در حال اجرا باشد. برای اطمینان از فعال بودن سرویس Nginx، میتوانید وضعیت سرویس را با استفاده از دستور زیر بررسی کنید:
systemctl status nginx
خروجی
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 2020-04-20 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
├─۲۳۶۹ nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─۲۳۸۰ nginx: worker process
پس از اجرای دستور بالا، خواهید دید که active (running) است و متوجه خواهید شد که سرویس Nginx به طور پیشفرض با موفقیت فعال شده است و به محض اینکه سیستم شما شروع به کار کند، سرویس Nginx به طور خودکار اجرا خواهد شد.
با این حال، درخواست صفحه مستقیماً از Nginx بهترین راه برای بررسی وضعیت اجرای سرویس Nginx است. با مراجعه به آدرس IP سرور خود، میتوانید به صفحه فرود پیشفرض Nginx دسترسی پیدا کنید تا تأیید کنید که Nginx به درستی کار میکند. با داشتن آدرس IP سرور خود، آن را در نوار آدرس مرورگر تایپ کنید:
http://your_server_ip
پس از وارد کردن آدرس IP سرور اوبونتو، خروجی باید به شرح زیر باشد:
مرحله ۴: مدیریت سرویس Nginx
اکنون که وب سرور Nginx را بر روی سرور اوبونتو در دسترس دارید، بهتر است با برخی از فرمانهای مدیریتی اساسی آشنا شوید.
هنگامی که میخواهید وب سرور را متوقف کنید، فرمان زیر را وارد کنید:
sudo systemctl stop nginx
هنگامی که سرویس Nginx متوقف شده و میخواهید آن را شروع کنید، فرمان زیر را استفاده کنید:
sudo systemctl start nginx
اگر تغییرات پیکربندی میدهید، Nginx توانایی reload بدون قطع را دارد. برای این منظور، فرمان زیر را وارد کنید:
sudo systemctl reload nginx
برای غیرفعال کردن شروع خودکار سرویس Nginx هنگام راهاندازی سرور، فرمان زیر را اجرا کنید:
sudo systemctl disable nginx
برای فعال کردن شروع خودکار سرویس Nginx هنگام راهاندازی سرور، فرمان زیر را وارد کنید:
sudo systemctl enable nginx
فرمانهای ارائه شده ما فرمانهای اساسی برای مدیریت وب سرور Nginx هستند. در ادامه، آموزش میدهیم که چگونه میتوانید یک سایت را برای میزبانی چندین دامنه از طریق Nginx پیکربندی کنید.
مرحله ۵: پیکربندی بلوکهای سرور
بلوکهای سرور، مانند میزبانهای مجازی در Apache، برای ان Capsulation اطلاعات پیکربندی و میزبانی چندین دامنه از یک سرور در حال اجرا Nginx استفاده میشوند.
ما در فرمانهای خود، نام دامنه خود را به جای your_domain قرار دادهایم، بنابراین هنگام وارد کردن فرمانها، نام دامنه خود را به جای your_domain تایپ کنید.
بلوک سرور Nginx، که به طور پیشفرض در اوبونتو فعال است، برای سرویس فایلهای خارج از دایرکتوری /var/www/html پیکربندی شده است. اما توجه داشته باشید که این ویژگی برای میزبانی یک سایت کار میکند، اما برای میزبانی بیشتر از یک سایت مشکلآفرین است.
پیشتر، ایجاد یک دایرکتوری جدید در /var/www برای سایت با نام دامنه خود بهتر است از تلاش برای تغییرات در /var/www/html. میتوانید دایرکتوری /var/www/html را به عنوان دایرکتوری پیشفرض در نظر بگیرید تا هنگامی که درخواست مشتری با دیگر سایتها مطابقت ندارد، دایرکتوری /var/www/html وظیفه خود را انجام دهد.
برای ایجاد دایرکتوری برای نام دامنه خود، فرمان زیر را وارد کنید، جایی که جفت -p برای ایجاد دایرکتوری استفاده میشود:
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>
<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 را فشار دهید.
برای ایجاد بلوک سرور با DIRECTIVES مناسب، تا Nginx بتواند محتوای این را سرویس کند.
بدین ترتیب، در عوض تغییرات در فایل پیکربندی پیشفرض، یک فایل پیکربندی جدید در /etc/nginx/sites-available/your_domain ایجاد میکنیم. بنابراین، برای انجام این کار، فرمان زیر را اجرا کنید:
sudo nano /etc/nginx/sites-available/your_domain
در مرحله بعدی، آن را در بلوک پیکربندی زیر پیست کنید. این بلوک پیکربندی برای نام دامنه و دایرکتوری جدید ما به روز شده است.
/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;
}
}
ما نام سرور را به نام دامنه خود تغییر دادهایم و تنظیمات ریشه را به دایرکتوری جدید ما تغییر دادهایم.
اکنون، فایل را به دایرکتوری sites-enabled پیوند دهید که Nginx از آن هنگام راهاندازی میخواند، و فایل را با فرمان زیر فعال کنید:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
باید توجه داشته باشید که Nginx میتواند فعال شدن بلوکهای سرور را با استفاده از لینکهای نمادین ردیابی کند. لینکهای نمادین مانند ایجاد یک شورتکات در دیسک است که به شما اجازه میدهد بلوکهای سرور را در لیست سایتها اگر میخواهید فعال نگه دارند. اگر تصمیم به حذف آنها دارید، میتوانید شورتکات را از دایرکتوری sites-enabled در آینده حذف کنید.
بنابراین، برای پاسخ به درخواستها بر اساس قوانین و تنظیمات listen و server_name، دو بلوک سرور به شرح زیر پیکربندی میشوند:
your_domain: پاسخ به درخواستهای your_domain و www.your_domain را مدیریت میکند.
Default: پاسخ به درخواستهایی را که با دیگر بلوکها مطابقت ندارد، بر روی پورت ۸۰ مدیریت میکند.
ممکن است به دلیل افزودن نامهای سرور مختلف، مشکلات حافظه هاش بک را تجربه کنید، بنابراین باید یک متغیر را در فایل /etc/nginx/nginx.conf تغییر دهید. برای انجام این کار، فایل را باز کنید:
sudo nano /etc/nginx/nginx.conf
در فایل، پس از یافتن DIRECTIVE server_names_hash_bucket_size، علامت # را حذف کنید تا خط را uncomment کنید.
در ویرایشگر nano، میتوانید به راحتی به کلمات مورد نظر در فایل جستجو کنید و آن را پیدا کنید با فشار دادن کلیدهای CTRL و w همزمان.
/etc/nginx/nginx.conf
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
پس از اعمال تنظیمات، فایل را ذخیره کنید و خروج کنید.
سپس، برای اطمینان، بررسی کنید که در فایلهای Nginx هیچ خطا سyntax وجود ندارد.
sudo nginx –t
پس از تأیید absence هر گونه خطا سyntax در هیچ یک از فایلهای Nginx، برنامه Nginx را با فرمان زیر restart کنید تا تنظیمات خود را اعمال کنید:
sudo systemctl restart nginx
در خروجی، نام دامنه خود توسط Nginx نمایش داده میشود.
توجه: همچنین میتوانید این مسئله را با بازدید از http://your_domain بررسی کنید و باید خروجی زیر را با بازدید از http://your_domain دریافت کنید.
خلاصه
پس از راهاندازی موفقیتآمیز وب سرور Nginx، اکنون گزینههای مختلفی برای محتوایی که میخواهید سرویس دهید و فناوریهایی که میخواهید برای ارائه تجربه لذتبخش استفاده کنید، دارید. برای شما، یک درِ جدید برای ورود به مسیر توسعه و پیشرفت خود با استفاده از ویژگیهای Nginx باز خواهد شد.
هدف ما در این مقاله آموزش نصب Nginx بر روی سرور اوبونتو و نحوه مدیریت آن، همچنین آشنایی با Nginx است. امیدواریم که بتوانیم آن را به بهترین شکل ممکن توضیح داده باشیم. اگر در هر قسمتی با مشکلی مواجه شدید، سؤال خود را در بخش نظرات با ما به اشتراک بگذارید تا بتوانیم هرچه سریعتر شما را راهنمایی کنیم.