تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

نحوه نصب Nginx در سرور مجازی اوبونتو Ubuntu


۶ بهمن ۱۴۰۳

مقدمه

Nginx یکی از محبوب‌ترین وب‌سرورهای جهان است که برخی از بزرگترین و پرترافیک‌ترین سایت‌های اینترنتی را میزبانی می‌کند. این وب‌سرور سبک، می‌تواند به عنوان یک سرور ساده یا پروکسی معکوس، مورد استفاده قرار گیرد.

در این راهنما، نحوه نصب Nginx بر روی سرور مجازی اوبونتو، نحوه تنظیم فایروال، نحوه مدیریت فرآیندهای Nginx و نحوه پیکربندی بلاک‌های سرور (Server Blocks) برای میزبانی چندین دامنه از یک سرور را، بررسی خواهیم کرد.

پیش‌نیازها

قبل از شروع این راهنما، باید یک کاربر معمولی غیر روت (non-root) با دسترسی sudo در سرور خود تنظیم کرده باشید. برای یادگیری نحوه تنظیم حساب کاربری معمولی، می‌توانید به مقاله نحوه راه‌اندازی اولیه سرور مجازی با اوبونتو Ubuntu مراجعه کنید. همچنین، بهتر است پیش از تکمیل مراحل پایانی این آموزش، یک نام دامنه ثبت کرده باشید.

در صورتی که با مفاهیم مربوط به سرور مجازی یا VPS آشنایی ندارید؛ توصیه می‌شود در ابتدا مقاله‌های زیر را مطالعه بفرمایید:

هنگامی که حساب کاربری مورد نظر خود را تنظیم کردید، به عنوان کاربر غیر روت وارد شوید تا مراحل زیر را انجام دهید:

  • مرحله اول: نحوه نصب Nginx
  • مرحله دوم: نحوه تنظیم فایروال
  • مرحله سوم: بررسی وب‌سرور
  • مرحله چهارم: مدیریت فرایندهای مربوط به Nginx
  • مرحله پنجم: تنظیم بلوک‌های سرور (اختیاری)
  • مرحله ششم: آشنایی بیشتر با فایل‌ها و دایرکتوری‌های Nginx
  • نتیجه‌گیری

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

از آنجا که Nginx در repositoryهای پیش‌فرض اوبونتو موجود است، می‌توان آن را با استفاده از سیستم پکیجینگ apt، از این repositoryها نصب کرد. در ابتدا فهرست پکیج‌های local را به‌روزرسانی می‌کنیم تا به آخرین فهرست پکیج‌ها دسترسی داشته باشیم. سپس می‌توانیم Nginx را نصب کنیم:

sudo apt update
sudo apt install nginx

هنگامی که برای تأیید نصب، از شما در ترمینال، درخواست می‌شود، کلید Y را فشار دهید. اگر از شما خواسته شد خدماتی را مجدداً راه‌اندازی کنید، کلید ENTER را فشار دهید تا تنظیمات پیش‌فرض پذیرفته شوند و فرایند، ادامه پیدا کند. دستور apt، ماژول Nginx و هر وابستگی مورد نیاز را روی سرور مجازی شما نصب خواهد کرد.

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

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

برای مشاهده پیکربندی‌هایی که ufw می‌تواند با آن‌ها کار کند، این دستور را وارد کنید:

sudo ufw app list

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

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

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

  • Nginx Full: این پروفایل، پورت‌ 80 (ترافیک عادی و بدون رمزگذاری وب) و 443 (ترافیک رمزگذاری شده TLS/SSL) را باز می‌کند.
  • Nginx HTTP: این پروفایل فقط پورت 80 (ترافیک عادی و بدون رمزگذاری وب) را باز می‌کند.
  • Nginx HTTPS: این پروفایل فقط پورت 443 (ترافیک رمزگذاری شده TLS/SSL) را باز می‌کند.

توصیه می‌شود محدودکننده‌ترین پروفایلی را فعال کنید که همچنان ترافیک موردنظر شما را مجاز می‌کند. در حال حاضر، فقط باید اجازه ترافیک روی پورت 80 را بدهیم.

sudo ufw allow 'Nginx HTTP'

برای تأیید تغییر، دستور زیر را وارد کنید:

sudo ufw status

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

Status: active

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

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

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

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 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 است.

برای تأیید اینکه نرم‌افزار به درستی اجرا می‌شود، می‌توانید به صفحه پیش‌فرض Nginx دسترسی پیدا کنید. کافی است آدرس IP سرور مجازی خود را در نوار آدرس مرورگر وارد کنید. اگر آدرس IP عمومی سرور خود را نمی‌دانید، می‌توانید از ابزار icanhazip.com استفاده کنید که آدرس IP عمومی شما را بر اساس موقعیت مکانی دیگری، در اینترنت ارائه می‌دهد:

curl -4 icanhazip.com

پس از دریافت آدرس IP سرور، آن را در نوار آدرس مرورگر وارد کنید:

http://your_server_ip

با وارد شدن به لینک فوق، باید صفحه پیش‌فرض Nginx را مشاهده کنید:

اگر این صفحه نمایش داده شد، وب سرور شما به درستی اجرا شده و آماده استفاده است.

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

اکنون که وب سرور شما فعال و در حال اجرا است، می‌توانیم برخی دستورات پایه مربوط به Nginx را بررسی کنیم.

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

sudo systemctl stop nginx

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

sudo systemctl start nginx

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

sudo systemctl restart nginx

اگر فقط تغییراتی را در پیکربندی Nginx اعمال کرده‌اید، می‌توانید Nginx را بدون قطع connectionها، مجدداً بارگذاری کنید. برای این کار دستور زیر را وارد کنید:

sudo systemctl reload nginx

به طور پیش‌فرض، Nginx طوری پیکربندی شده است که هنگام راه‌اندازی سرور، به‌صورت خودکار شروع به کار کند. اگر نمی‌خواهید این رفتار ادامه یابد، دستور زیر را وارد کنید:

sudo systemctl disable nginx

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

sudo systemctl enable nginx

شما اکنون دستورات پایه را یاد گرفته‌اید و آماده هستید تا تنظیمات سرور مجازی خود را برای میزبانی بیش از یک دامنه پیکربندی کنید.

مرحله پنجم: تنظیم بلوک‌های سرور (اختیاری)

در وب‌سرور Nginx، بلوک‌های سرور (server blockها) مشابه میزبان‌های مجازی (virtual hostها) در Apache، برای کپسوله‌کردن جزئیات پیکربندی و میزبانی بیش از یک دامنه در یک سرور، استفاده می‌شوند. در اینجا یک دامنه به نام your_domain تنظیم می‌کنیم، اما باید آن را با نام دامنه خود جایگزین کنید.

به‌طور پیش‌فرض، Nginx در اوبونتو، بلوک سرور پیش‌فرضی دارد که برای ارائه داده‌ها از دایرکتوری /var/www/html پیکربندی شده است. اما برای مدیریت چندین سایت بهتر است دایرکتوری جدیدی برای دامنه خود ایجاد کنیم. برای این کار دستور زیر را وارد کنید:

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

سپس مالکیت دایرکتوری را به کاربر فعلی تغییر دهید:

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

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

sudo chmod -R 755 /var/www/your_domain

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

nano /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 را به نام دامنه خود به‌روزرسانی کنیم. برای فعال‌سازی فایل، یک لینک از آن به دایرکتوری sites-enabled بسازید که Nginx هنگام راه‌اندازی، آن را می‌خواند:

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

توجه: Nginx از یک روش معمول به نام symbolic links برای ردیابی بلوک‌های سرور فعال شده، استفاده می‌کند. ساخت یک symlink مانند ایجاد میان‌بر روی دیسک است، به طوری که می‌توانید در آینده میان‌بر را از دایرکتوری sites-enabled حذف کنید و بلوک سرور را در sites-available نگه دارید.

در حال حاضر، دو بلاک سرور فعال شده‌اند که بر اساس دستورات listen و server_name هر درخواست، به آن‌ها پاسخ خواهند داد:

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

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

sudo nano /etc/nginx/nginx.conf

دستور server_names_hash_bucket_size را پیدا کنید و علامت # را از ابتدای خط حذف کنید تا آن را از حالت comment خارج کنید. اگر از nano استفاده می‌کنید، می‌توانید با فشردن CTRL+W به جستجوی فایل بپردازید.

خطوطی که با # شروع می‌شوند، معمولاً به عنوان commented out در نظر گرفته شده و به عنوان مستندات یا گزینه‌های غیر فعال عمل می‌کنند. شما می‌توانید این خطوط را برای فعال‌سازی به حالت کد بازگردانید یا برای غیرفعال کردن دوباره از # استفاده کنید.

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

پس از ویرایش فایل، با فشردن Ctrl+X آن را ببندید، سپس Y و Enter را برای ذخیره تغییرات فشار دهید. برای اطمینان از اینکه هیچ خطای نحوی در فایل‌های Nginx وجود ندارد، دستور زیر را اجرا کنید:

sudo nginx -t

اگر مشکلی وجود نداشت، پیام موفقیت‌آمیز نمایش داده می‌شود. برای اعمال تغییرات جدید، Nginx را مجدداً راه‌اندازی کنید:

sudo systemctl restart nginx

اکنون Nginx باید دامنه شما را سرو کند. شما می‌توانید این موضوع را با رفتن به آدرس http://your_domain آزمایش کنید. در صورت موفقیت، باید صفحه‌ای مشابه صفحه خوش‌آمدگویی Nginx مشاهده کنید:

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

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

محتوا (Content)

  • /var/www/html: این مسیر شامل محتوای وب‌سرور است. به صورت پیش‌فرض، فقط صفحه پیش‌فرض Nginx که قبلاً مشاهده کردید، در اینجا وجود دارد. این مسیر می‌تواند با تغییر فایل‌های پیکربندی Nginx، تغییر کند.

پیکربندی سرور (Server Configuration)

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

لاگ‌های سرور (Server Logs)

  • /var/log/nginx/access.log: تمامی درخواست‌ها به وب‌سرور شما در این فایل ثبت می‌شوند، مگر اینکه Nginx طور دیگری تنظیم شده باشد.
  • /var/log/nginx/error.log: هرگونه خطای مربوط به Nginx، در این فایل ثبت می‌شود.

نتیجه‌گیری

اکنون که وب سرور Nginx نصب شده است، می‌توانید انواع مختلف محتوا را میزبانی کرده و از فناوری‌های متنوعی برای ایجاد تجربه‌ای غنی‌تر، استفاده کنید.

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

ســــــــــــــــــــــال‌هاست که هستیم

۶ سال در کنار شما تجربه جمع کردیم. تازه در ابتدای مسیر هستیم، مسیر ساخت آینده.

sixth

جمع‌مـــــــــــان، جمع است

بیش از ۴۰ هزار توسعه‌دهنده و صاحبان کسب و کار در جمع ما هستند. جای شما خالی‌ست...

usersnumberusers

خدمات رایگان لیارا

۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان

۲.۵ گیگابایت Object Storage سازگار با پروتکل S3 با دیسک‌های SSD به‌صورت رایگان دریافت کنید.

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

دیتابیس‌های MariaDB، PostgreSQL و Redis را فقط با یک کلیک و به‌صورت رایگان تهیه کنید.

سرویس DNS رایگانسرویس DNS رایگان

به سادگی دامنه‌تان را اضافه کنید و به صورت رایگان رکورد‌های آن را مدیریت کنید.

۱۰۰ هزار تومان اعتبار اولیه۱۰۰ هزار تومان اعتبار اولیه

بعد از ثبت نام در لیارا مبلغ ۱۰۰ هزار تومان اعتبار هدیه دریافت می‌کنید که با توجه به ساعتی بودن هزینه سرویس‌ها، می‌توانید تمامی خدمات پولی را برای چندین هفته رایگان استفاده کنید.

ارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماهارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماه

در سرویس ایمیل لیارا شما می‌توانید تا ۱۰۰ ایمیل رایگان در هر ماه ارسال کنید. (به‌همراه دسترسی SMTP)

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

تفاوتی ندارد برای وبسایت خود از Node استفاده می‌کنید یا Laravel و Django، در لیارا می‌توانید به صورت کاملا رایگان آن را میزبانی کنید.

همراه شما هستیم

در خصوص سفارش یا استفاده از سرویس‌ها سوالی دارید؟
تلفن واحد فروش:
۰۲۵-۳۳۵۵۷۶۱۹ (روزهای کاری ۹ الی ۱۷)
call
تلفن واحد فروش: ۳۳۵۵۷۶۱۹-۰۲۵ (روزهای کاری ۹ الی ۱۷)