# Deployment

Shu mavzugacha bo'lgan davrda, dasturimizni faqatgina **localhost** da yurgazib keldik. Albatta bu dasturni tuzish davomida eng yaxshi yo'l hisoblanadi. Lekin dasturimiz ishlab turishi uchun, doimiy serverga joylashimiz lozim.&#x20;

ASP.NET Core dasturlarini support qiluvchi bir nechta cloud serverlar mavjud. Xususan: *Microsoft Azure*, *AWS(Amazon Web Server)*, *Microsoft IIS server*, *Heroku* va h.k.&#x20;

Ushbu suxbatimiz davomida yaratgan botimizni Herokuga Windows OS tizimida deploy qilishni ko'rib chiqamiz.

## **Ilk qadam**:

* Herokudan ro'yxatdan o'ting:  [link](https://signup.heroku.com/)
* Git control tizimni yuklab, o'rnating: [link](https://git-scm.com/download/win)
* Heroku CLI(Command Line Interface) ni yuklab, o'rnating: [64 bit](https://cli-assets.heroku.com/heroku-x64.exe), [32 bit](https://cli-assets.heroku.com/heroku-x86.exe)

## **Asosiy qism:**

### CMD(Command Prompt) ni yurgazing

Foydalanayotgan OS da teminalni oching. Deploy qilmoqchi bo'lgan loyiha turgan joyga o'tish uchun **cd** buyrug'idan foydalaning.

```bash
cd loyiha_path
```

### Gitni initsalizatsiya qilish

Ushbu loyihani git repository sifatida lokal holatda initsalizatsiya qilish uchun quyidagi buyruqdan foydalaning

```csharp
git init
```

### Lokal repository hosil qilish

Loyihadagi barcha fayllarni lokal repository ga joylang.

```csharp
git add .
```

### Commit yozish

Yuklagan fayllaringiz uchun commit ham yozishingiz mumkin

```csharp
git commit -m "Herokuga botni deploy qilish"
```

### Heroku profilga bog'lanish

Yuqoridagi holatlardan so'ng loyiha fayllari lokal repository ga joylandi. Endi ularni herokuga o'tkazish uchun shaxsiy profilingizga bog'laning

```csharp
heroku login
```

![](/files/-MRTHlw5TxXoHxXDSutH)

Klaviaturadan biror-bir keyni bosing va sizda ushbu oyna ochiladi.

![](/files/-MRTI2zRN061it5D4_dM)

**Log in** tugamasini bosib o'zingizni profilingizga ulangandan so'ng, quyidagicha holat yuz beradi.

&#x20;

![](/files/-MRTINImlc-CWdPGXL_M)

![](/files/-MRTIZ1IyRPTe5r-z-TC)

### Herokuda yangi app hosil qilish

Loyiha fayllarni herokuga yuklash uchun, yangi app hosil qiling.

```csharp
heroku create app_nomi
```

Agarda app ga berilgan nom unique bo'lsa quyidagicha ko'rinish taqdim etiladi.

![](/files/-MRTLAXjTLqbZewrrZmy)

![](/files/-MRTOVlWtje8eZyeSpQS)

app yaratilgandan keyin yuqoridagi oynada ko'rinish beradi.

### Yaratilingan app ga build pack o'rnatish

Herokuda to'g'ridan to'g'ri ASP.NET Core ga support yo'q. Shuning uchun uni qo'shimcha buildpack orqali qurish kerak. BuildPack ni o'rnatish uchun. Yaratgan app ichki parametrlaridan **settings** bo'limiga o'ting.&#x20;

![](/files/-MRTPVj_uhvdAJ896v1z)

Settings bo'limidan **Add buildPack** tugmasini toping.

![](/files/-MRTQ0Zn-O9ZPM6NSB7c)

Build pack qo'shish uchun, tugmani bosing va  <https://github.com/jincod/dotnetcore-buildpack> ushbu linkni keltirilgan oraliqqa joylashtirib, **Save changes** tugmasini bir marta chertib qo'ying.

![](/files/-MRTR3o90njLIerh2k5N)

### Yaratilingan appni remote qilish

Build pack o'rnatilgandan so'ng appni remote qiling.

```csharp
heroku git:remote -a app_nomi
```

![](/files/-MRTN5YIMG4S3XttPjUs)

### Appni herokuga yuklash

Endi fayllarni herokuga push qiling.

```csharp
git push heroku master
```

![](/files/-MRTOBJnkCbxrW8GpspO)

Demak, dasturimiz muvaffaqiyatli herokuga deploy qilindi. Sizga taqdimi etilgan <https://app\\_nomi.herokuapp.com/> domainida dastur ishga tushirilda. Endi botdan hamma foydalanishi mumkin.

Heroku serverini free holatda foydalansangiz, sizga 500 mb joy va har oy 550 soat taqdim etilinadi.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dot-net.uz/c-.net/telegram-bot/advanced/deployment.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
