Nginx

Nginx o'rnatish va boshqarish

Nginx bilan ishlashning birinchi qadami โ€” uni serverga o'rnatish va boshqarishni o'rganish. Ushbu darsda Nginx'ni turli Linux distributivlarida o'rnatishni, uni ishga tushirish/to'xtatish/qayta yuklashni, config'ni tekshirishni hamda uning fayllari qayerda joylashishini batafsil ko'rib chiqamiz.

Quyidagi buyruqlar Linux serverida terminal (buyruq qatori) orqali bajariladi. Ko'pchilik buyruqlar administrator huquqini talab qiladi, shuning uchun ular oldida sudo yoziladi.

Nginx'ni o'rnatish

O'rnatish usuli Linux distributividan bog'liq. Har bir distributivning o'z paket menejeri bor.

Debian / Ubuntu (apt)

Debian oilasidagi tizimlarda (Ubuntu shular jumlasidan) apt paket menejeri ishlatiladi. Avval paketlar ro'yxatini yangilab, keyin Nginx'ni o'rnatamiz:

sudo apt update
sudo apt install nginx

O'rnatish tugagach, Nginx odatda avtomatik ishga tushadi. Buni brauzerda server IP manzilini ochib tekshirish mumkin โ€” standart "Welcome to nginx!" sahifasi ko'rinishi kerak.

CentOS / RHEL / Fedora (yum yoki dnf)

Red Hat oilasidagi tizimlarda yum yoki uning yangi varianti dnf ishlatiladi:

sudo yum install nginx
# yoki yangiroq tizimlarda:
sudo dnf install nginx

Bu tizimlarda o'rnatishdan keyin Nginx'ni qo'lda ishga tushirish kerak bo'lishi mumkin (buni pastda ko'ramiz).

systemctl bilan boshqarish

Zamonaviy Linux tizimlarida xizmatlar (servicelar) systemd orqali boshqariladi. Uning buyrug'i โ€” systemctl. Nginx ham xizmat sifatida ro'yxatga olingani uchun uni shu buyruq bilan boshqaramiz.

Ishga tushirish (start)

sudo systemctl start nginx

Bu buyruq Nginx'ni ishga tushiradi. U so'rovlarni tinglashni boshlaydi.

To'xtatish (stop)

sudo systemctl stop nginx

Nginx'ni butunlay to'xtatadi. Bundan keyin sayt ochilmaydi, chunki so'rovlarni tinglaydigan hech kim qolmaydi.

Qayta ishga tushirish (restart)

sudo systemctl restart nginx

Nginx'ni to'xtatib, keyin qaytadan ishga tushiradi. Bu barcha ulanishlarni uzadi. Config'da katta o'zgarish qilingan bo'lsa foydalidir, lekin kichik o'zgarishlarda reload yaxshiroq (pastga qarang).

Holatini ko'rish (status)

sudo systemctl status nginx

Nginx hozir ishlab turibdimi yoki yo'qmi โ€” shuni ko'rsatadi. Chiqishida active (running) yozuvi bo'lsa, hammasi joyida. Xatolik bo'lsa, shu yerda dastlabki ma'lumot ko'rinadi.

Avtoyuklashni yoqish (enable)

Server qayta yuklanganda (reboot) Nginx avtomatik ishga tushishi uchun uni enable qilib qo'yamiz:

sudo systemctl enable nginx
enable โ€” server har qayta ishga tushganda xizmatni avtomatik yoqadi. start esa faqat hozir ishga tushiradi. Ikkalasini birga bajarish uchun sudo systemctl enable --now nginx ishlatish mumkin.

Config'ni tekshirish: nginx -t

Config'da xato qilib, keyin Nginx'ni qayta yuklash โ€” xavfli. Agar config buzuq bo'lsa, Nginx ishga tushmay, saytingiz "o'lib" qolishi mumkin. Shuning uchun har doim avval config'ni sinab ko'ring:

sudo nginx -t

Agar hammasi to'g'ri bo'lsa, quyidagicha xabar ko'rinadi:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Agar xatolik bo'lsa, Nginx aynan qaysi faylning nechanchi qatorida muammo borligini aytadi.

Muhim odat: config'ni o'zgartirgandan so'ng, uni ishga solishdan oldin doim sudo nginx -t ishlatib tekshiring. Bu ishlab turgan saytni kutilmagan uzilishdan asraydi.

Qayta yuklash: nginx -s reload

Config'ni o'zgartirdingiz va u sinovdan o'tdi. Endi o'zgarishni qo'llash kerak. Bunda reload ishlatiladi โ€” bu Nginx'ni to'xtatmasdan, faqat yangi config'ni o'qib qayta yuklaydi:

sudo nginx -s reload
# yoki systemctl orqali:
sudo systemctl reload nginx

reload ning restart dan afzalligi โ€” u ochiq ulanishlarni uzmaydi. Nginx eski jarayonlar joriy so'rovlarni tugatguncha kutadi, yangi so'rovlarni esa yangi config bilan qabul qiladi. Foydalanuvchi hech qanday uzilishni sezmaydi.

Amaliy ketma-ketlik: (1) config'ni tahrirlash, (2) sudo nginx -t bilan tekshirish, (3) sudo nginx -s reload bilan qo'llash. Har doim shu tartibda ishlang.

Fayl va papkalar joylashuvi

Nginx'ning fayllari odatda quyidagi joylarda bo'ladi (Debian/Ubuntu misolida):

sites-available va sites-enabled juftligi Debian/Ubuntu'ning qulay yondashuvi. Siz sayt config'ini sites-available ichida yaratasiz, keyin uni faollashtirish uchun sites-enabled ichida unga symbolik havola (symlink) hosil qilasiz:

sudo ln -s /etc/nginx/sites-available/mening-saytim /etc/nginx/sites-enabled/

Saytni vaqtincha o'chirmoqchi bo'lsangiz โ€” config'ni o'chirmasdan, faqat sites-enabled dagi havolani olib tashlaysiz. Config esa sites-available da saqlanib qoladi.

CentOS/RHEL tizimlarida sites-available/sites-enabled odatda bo'lmaydi โ€” u yerda config'lar to'g'ridan-to'g'ri /etc/nginx/conf.d/ ichiga .conf kengaytmasi bilan joylashtiriladi.

Loglar: access.log va error.log

Nginx ikki asosiy log yuritadi, ikkalasi ham /var/log/nginx/ papkasida:

Loglarni real vaqtda kuzatish uchun tail -f ishlatiladi (yangi qatorlar paydo bo'lishi bilan ekranda ko'rinadi):

sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
Sayt ishlamay qolganda birinchi qaraydigan joyingiz โ€” error.log. Ko'pincha muammoning aniq sababi (masalan, "Permission denied" yoki "connection refused") aynan shu yerda yoziladi.

Xulosa