# Ubuntu 24.04 versiyasi uchun qanday qilib  Nginx, MySQL, PHP (LEMP Stack) o'rnatish

**LEMP** - ochiq kodli veb-ilovalar to‘plami bo‘lib, serverda dinamik veb-ilovalarni ishlab chiqish va joylashtirish imkonini beradi. LEMP qisqartmasi ortida:Linux (**L**), Nginx (enjinx -**E**),Mysql(**M**),Php (**P**) lar nazarda tutiladi.

Ushbu maqolada Ubuntu 24.04 serveriga Nginx, MySQL va PHP (LEMP) to‘plamini qanday o‘rnatish haqida ma’lumotlar ketma tartibda beriladi. Siz to‘plam funksiyalarini sinab ko‘rish uchun asosiy veb-ilovani sozlaysiz va serverga ishonchli SSL sertifikatlari orqali xavfsiz protokol (https) orqali ulanishni ta’minlaysiz.

# Talablar

Boshlashdan oldin quyidagilarni bajaring:

* Ubuntu 24.04 o’rnatilgan server, personal kompyuter yoki virtual server bo’lishi ham mumkin [Quyidagi link](https://www.linode.com/lp/refer/?r=0c060179d7ee2ca2479ae191dd5b08190990d883) orqali 100$ bonusgacha virtual serverldan ishlatib bepul ishlatib ko’rishingiz mumkin .
    
* Server IP manziliga yo‘naltirilgan yangi domen A yozuvini yarating. Masalan, `app.example.com`. [Quyidagi link](https://billing.airnet.uz/pl.php?4639) orqali yangi domen osongina sotib olishingiz mumkin.
    
* SSH orqali serverga ulaning va `sudo` huquqlari bilan ildiz bo‘lmagan foydalanuvchi sifatida tizimga kiring.
    
* Serverni yangilang.
    

# Nginx o‘rnatish

Nginx’ni o‘rnatish uchun quyidagi buyruqni bajaring:

```bash
$ sudo apt install nginx -y
```

Nginx’ni ishga tushirish:

```bash
$ sudo systemctl start nginx
```

Nginx’ni tizim ishga tushganda avtomatik yuklanadigan qilish:

```bash
$ sudo systemctl enable nginx
```

Nginx xizmatining holatini tekshirish:

```bash
$ sudo systemctl status nginx
```

# MySQL o‘rnatish

MySQL ma’lumotlar bazasi serverini o‘rnatish:

```bash
$ sudo apt install mysql-server -y
```

MySQL xizmatini ishga tushirish:

```bash
$ sudo systemctl start mysql
```

MySQL xizmatini avtomatik ishga tushadigan qilish:

```bash
$ sudo systemctl enable mysql
```

MySQL holatini tekshirish:

```bash
$ sudo systemctl status mysql
```

MySQL xavfsizlik sozlamalarini o‘rnatish:

```bash
$ sudo mysql_secure_installation
```

Ushbu buyruq bajarilgandan so‘ng, tizim sizdan ba’zi xavfsizlik choralari bo‘yicha savollarga javob berishingizni talab qiladi.

# PHP o‘rnatish

PHP va PHP-FPM’ni o‘rnatish uchun quyidagi buyruqlarni bajaring:

```bash
$ sudo apt install php php-fpm -y
$ sudo apt install php-mysql php-cli -y
```

PHP versiyasini tekshirish:

```bash
$ php -v
```

PHP-FPM xizmatini ishga tushirish:

```bash
$ sudo systemctl start php8.3-fpm
$ sudo systemctl enable php8.3-fpm
```

# PHP-FPM sozlash

PHP-FPM socket manzilini tekshirish:

```bash
$ ss -pl | grep php
```

PHP-FPM konfiguratsiya faylini tahrirlash:

```bash
$ sudo nano /etc/php/8.3/fpm/pool.d/www.conf
```

Faylda quyidagi qatorlarni toping va `www-data` foydalanuvchisi sifatida ishga tushirilganligiga ishonch hosil qiling:

```bash
user = www-data
group = www-data
```

O‘zgarishlarni saqlang va chiqib keting.

# Nginx’ni PHP-FPM bilan konfiguratsiyalarni bir birga moslash

Veb-katalogda `index.php` faylini yarating:

```bash
$ sudo touch /var/www/html/index.php
```

Faylga quyidagi ma’lumotlarni qo‘shing:

```bash
$ echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/index.php
```

Standart Nginx konfiguratsiyasini olib tashlang va yangi virtual xost konfiguratsiya faylini yarating:

```bash
$ sudo nano /etc/nginx/sites-available/app.example.com.conf
```

Faylga quyidagi kodni kiriting (o‘z domeningizga mos ravishda o‘zgartiring - *app.example.com* o’rniga):

```bash
server {
    listen 80;
    server_name app.example.com;

    root /var/www/html;
    index index.php index.html;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
}
```

Konfiguratsiyani saqlang va chiqib keting.

Nginx’ni qayta yuklang:

```bash
$ sudo systemctl restart nginx
```

HTTP port 80’ni ochish:

```bash
$ sudo ufw allow 80/tcp
```

# Serverni xavfsiz qilish

UFW (Uncomplicated Firewall) orqali Nginx uchun kerakli portlarni oching:

```bash
$ sudo ufw allow 'Nginx Full'
$ sudo ufw reload
```

SSL sertifikatlarini o‘rnatish uchun Certbot’ni o‘rnating va sertifikat yarating:

```bash
$ sudo apt install python3-certbot-nginx
$ sudo certbot --nginx --agree-tos --redirect --email hello@example.com -d app.example.com
```

SSL sertifikatining avtomatik yangilanishini tekshirish:

```bash
$ sudo certbot renew --dry-run
```

Nginx’ni qayta yuklang:

```bash
$ sudo systemctl restart nginx
```

# Xulosa

Bu maqolada Ubuntu 24.04 serverida LEMP to‘plamini o‘rnatish va sozlash bo‘yicha batafsil qo‘llanma taqdim etildi. Savollaringiz bo’lsa izohlarda qoldiring. Endi siz serverda Nginx, MySQL va PHP ishlashini tekshirib, veb-ilovalar ishlab chiqish va joylashtirishni boshlashingiz mumkin.
