# Laravel loyihalariga boshqa qurilmalardan kirish imkoniyatini berish uchun Ngrok ni ishlatish

Ba'zida laravel loyihangizni boshqa komputerdan(qurilma) kirishga imkoniyat berishingiz kerak bo'ladi. Bunda sizga `ngrok` deb nomlangan xizmat katta yordam beradi. Quyida biz bu xizmatdan qanday foydalanish haqida ma'lumotlarni berib o'tamiz.

## Loyihani ishga tushirish

**Laravel loyihangizni ishga tushirish uchun o'zingiz uchun qulay bo'lgan usuldan foydalaning. Masalan sail instrument orqali:**

```php
sail up
```

Eslatma ishga tushirgan loyihamizda .env faylda `APP_PORT` parametrimiz 8000 qiymati qo'yilgan bo'lib bu degani loyihamiz http protokolida 8000 portda ishlaydi. Bu portni bizni `ngrok http` buyrug'ida keyingi bosqichlarda ishlatamiz.

## ngrok o'rnatish

[**https://ngrok.com/**](https://ngrok.com/) saytidan ro'yxatdan o'ting

Shundan so'ng ngrok agent ni yuklab oling, arxivdan chiqaring va ngrok saytida keltirilgan dokumentatsiyaning([**Setup & Installation guide**](https://dashboard.ngrok.com/get-started/setup)) birinchi va ikkinchi bosqichlarida keltirilgan ko'rsatmalar asosida ngrok agentini akkountingizga bog'lang.

ngrok agentini ishga tushiramiz quyida keltirilgan buyruqdan so'ng u bizga mana bu url manziliga o'xshash [**https://dsdee-12-56-88-652.ngrok-free.app/**](https://bdae-78-56-73-243.ngrok-free.app/) manzil yaratib beradi va sizning local laravel loyihangiz bilan bog'laydi

```bash
ngrok http 8000
```

How cool is that!

## Statik fayllarni yuklashni to'g'rlang

Boshqa qurilmalardan loyiha manziliga kirganingizda sizda ssl sertifikati bilan bog'liq muammoga duch kelishingiz mumkin, ya'ni https saytingni ochib lekin statik fayllarni http bilan yuklab ololmaganiz sababli statik fayllaringiz ochilmasligi mumkin. Bunda holatda ikki narsaga e'tibor berish kerak va hisob olish zarur bo'ladi.

Dastlab agar siz npm packagelardan foydalangan bo'lsangiz uni `build` qilish yodda chiqarmang. (`npm run dev` faqat local kompyuteringizda ishlaydi). Quyidagi buyruq orqali npm packagelarni build qilishingiz kerak bo'ladi:

```php
npm run build
```

Shundan so'ng Laravel default holatda http protokoli bilan ishlagani uchun ngrok orqali loyihaga murojaat qilganda uni https orqali ishlash majburlashimiz mumkin. Buning uchun middleware dan foydalanishimiz mumkin, uning vazifasi ngrok xizmatidan kelayotgan so'rovlarga https protokoli orqali javob berishi kerak bo'ladi. Quyidagi ishlarni ketma ketlikda bajaramiz:

1. Middleware classini yaratamiz `app/Http/Middleware/HttpsUnderNgrok.php`:
    
    ```php
     <?php
    
     namespace App\\Http\\Middleware;
    
     use Closure;
     use Illuminate\\Http\\Request;
     use Illuminate\\Support\\Facades\\URL;
     use Symfony\\Component\\HttpFoundation\\Response;
    
     class HttpsUnderNgrok
     {
         public function handle(Request $request, Closure $next): Response
         {
             if (str_ends_with($request->getHost(), '.ngrok-free.app')) {
                 URL::forceScheme('https');
             }
    
             return $next($request);
         }
     }
    ```
    
2. Middlewareni `app/Http/Kernel.php` ro'yxatdan o'tkazamiz:
    
    ```php
     protected $middlewareGroups = [
         'web' => [
                     ...
             HttpsUnderNgrok::class,
         ],
             ...
     ];
    ```
    

Barcha sozlamalarni yakunladik endi loyihangizni mijozlar, hamkasblaringiz bilan ulashsangiz muhokama qilsangiz bo'ladi.

Ngrok haqida to'liqroq bilmoqchi bo'lsangiz [quyidagi manzilda](https://ngrok.com/docs/getting-started/) ma'lumotlar olishingiz mumkin.
