# Yiini o'rnatish ¶

Siz Yii'ni ikki usulda o'rnatishingiz mumkin: Composer - dan foydalanishingiz mumkin yoki arxivdan yuklab olib ishlatishingiz mumkin. Birinchi usul afzalroq bo'ladi, chunki u yangi kengaytmalar o'rnatish yoki Yii'ni bitta buyruq bilan yangilash imkonini beradi.

> Eslatma: Yii 1 dan farqli o'laroq, Yii2ni standart yo`li bilan o`rnatsangiz siz ham shabloni va freymvorkni o`rnatasiz.

## Composer bilan o'rnatish usuli ¶

### Composer-ni o'rnatish ¶

Agar Composer xali o'rnatilmagan bo'lsa, uni getcomposer.org saytiga kirib ko'rsatmalarga rioya qilib o`rnatishingiz mumkin yoki quyidagi usullardan birini amalga oshirishingiz mumkin. Linux yoki Mac-da quyidagi buyruqni bajaring:

    curl -sS https://getcomposer.org/installer | php
    mv composer.phar /usr/local/bin/composer

Windowsda Composer-Setup.exe-ni yuklab oling va ishga tushiring.

Muammo bo'lsa, Composer hujjatida "Muammo bartaraf qilish" bo'limini o'qing. Agar siz faqat Composer dasturidan foydalanmoqchi bo'lsangiz, hech bo'lmasa "Foydalanish asoslari" bo'limini o'qishni tavsiya etamiz.

Ushbu qo'llanma `composer` global tizim boyicha umumiy o'rnatilganligini ta'kidlaydi. Ya'ni, bu `composer` buyrug'i orqali mavjud. Agar local (ichki) katalogdan `composer.phar` foydalanayotgan bo'lsangiz, buyruqlar mos ravishda o'zgartiring.

Composer o'rnatilgan bo'lsa, uni composer `self-update`.

> Eslatma: O'rnatish vaqtida Yii Composer Github API orqali juda ko'p miqdordagi ma'lumotlarni yulaydi. >So'rovlar soni sizning loyihangizning boglanmalar soniga bog'liq bo'lib, Github API chegaralaridan oshib ketishi mumkin. Agar shunday bo'lsa qolsa, Composer Githubdan login va parolni so'raydi. Bu Github API uchun token olish uchun zarur. Internet tezligi tez bo'lsa Composer xatolikni bartaraf qilishdan oldin ham sodir bo'lishi mumkin, shuning uchun Yii'ni o'rnatishdan avval kirish uchun tokeni o'rnatish tavsiya etamiz. >Ko'rsatmalar Composer qo`lanmasida Github API'sining identifikatorlari bo'yicha taqdim etiladi.

### Yiini o'rnatish ¶

    composer create-project --prefer-dist yiisoft/yii2-app-basic basic

Ushbu buyruq Yining oxirgi ishlaydigan versiyasini `basic` katalogiga o'rnatadi. Agar xohlasangiz, boshqa katalog nomini tanlashingiz mumkin.

> Ma'lumot uchun: Agar `composer create-project` buyrug'i yaxshi ishlamasa , Composer hujjatining "Muammo bartaraf qilish" bo'limiga murojaat qiling . Yozib otilgan boshqa odatiy xatolar mavjud. Xatolikni bartaraf qilganingizdan so'ng, `basic` katalogda `composer update` ishga tushiring.

> Maslahat: Agar siz Yii ning eng so`ngi tekshirilmagan taxririni o'rnatmoqchi bo'lsangiz, stability sozlamasini ozgartirib quydagi quyidagi buyruqni ishlatishingiz mumkin::

>     composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic

> Ishlab serverlarida Yii'ning tekshirilmagan taxrirlarini foydalanmaslikka harakat qiling, chunki bu taxrir tekshirilmagan kodi to'satdan xatolik kelib chiqishi mumkin.

## Arxivdan o'rnatish ¶

Yining arxivdan o'rnatilishi uch bosqichdan iborat:

1. Yiiframework.com dan arxivni yuklab oling.
2. Yuklangan arxivni Internetdan kirib boladigan katalogiga tashlab, arxivni oching.
3. `config/web.php` `cookieValidationKey` (Composer orqali o'rnatilganda, bu avtomatik tarzda amalga oshiriladi) uchun maxsus kalitni qo'shing:

    // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
    'cookieValidationKey' => 'enter your secret key here',

## Boshqacha o'rnatish sozlamalari ¶

Yuqorida, Yii'ni ishlatish uchun tayyor bo'lgan asosiy dastur sifatida o'rnatish bo'yicha ko'rsatmalar mavjud. Bu kichik loyihalar uchun yoki "Yii" ni o'rgana boshlaganlar uchun ajoyib variant.

Bunday o'rnatish uchun ikkita asosiy variant mavjud:

- Agar sizga faqatgina freymvork kerak bolsa va dasturni noldan yaratmoqchi bo'lsangiz, «Noldan ilovani yaratish» bo'limida ko'rsatilgan ko'rsatmalardan foydalaning.
- Agar siz jamoaviy ish uchun juda kengaytirilgan taxriri bilan boshlamoqchi bolsangiz, murakkab shabloni ishlatishingiz mumkin.

## O`rnatilganligini tekshirish ¶

O`rnatilgandan so'ng, dastur quyidagi URLda mavjud bo'ladi:

    http://localhost/basic/web/index.php

Ushbu dasturni veb-serveringizning ildiz katalogidagi `basic` katalogiga o'rnatgan deb hisoblaydi, server ichki `(localhost)` ishlayapti. Uni oldindan sozlashingiz kerak bo'lishi mumkin.

Sizni "Tabriklaymiz!" Xush kelibsiz sahifasini ko'rishingiz kerak. Agar shunday bo'lmasa - Yii talablarini quyidagicha tekshiring:

- Browserda quydagi sahifani oching `http://localhost/basic/requirements.php`
- Yoki quydagi buyrug'ni terminalda bajaring:

    cd basic
    php requirements.php

Freymvork to'g'ri ishlashi uchun PHPni minimal talablarga javob beradigan tarzda sozlashingiz kerak. Asosiy talablardan biri bu PHP versiyasi 5.4 va undan yuqori bolishi kerak. Agar veb-ilovangiz ma'lumotlar bazasi bilan ishlayotgan bo'lsa , PHP PDO kengaytmasini va tegishli drayverni (masalan, MySQL uchun pdo_mysql ) o'rnatishingiz kerak.

## Web-server sozlamasi ¶

> Ma'lumot uchun:Agar siz faqatgina freymvork bilan tanishishni boshlagan bo'lsangiz va uni ish serveriga joylashtirmagan bo'lsangiz, ushbu bo'limni o'tkazib yuborishingiz mumkin.

Yuqoridagi ko'rsatmalarga muvofiq o'rnatilgan ilovalar Windows va Linux ostida PHP 5.4 va undan yuqori taxrirlarda o'rnatilgan Apache va Nginx bilan ishlaydi.Yii 2.0 HHVM bilan ham mos keladi. Etiborli bo'ling, ba'zi hollarda, HHVM bilan ishlashda odatdagi PHPdan farq qiladi.

Ish serverida siz `http://www.example.com/basic/web/index.php` dan `http://www.example.com/index.php` manziliga dastur URL manzilini o'zgartirishni xohlasangiz. Buni amalga oshirish uchun veb-server parametrlarida ildiz katalogini `basic/web` ga o'zgartiring. Bundan tashqari, "URL sozlamalari" qismidagi malumotga ko'ra, `index.php` yashirishi mumkin. Keyinchalik Apache va Nginx ni qanday sozlashni ko'rsatamiz.

> Ma'lumot uchun: Veb-serverning `basic/web` ildiz katalogini o'rnatib, siz ruxsat berilmagan kirish kodidan va `basic/web` sahifadagi ma'lumotlardan himoya qilasiz. Bu ilovani yanada xavfsiz holga keltiradi.

> Ma'lumot uchun: Agar dastur veb-server sozlamalariga kirish imkoni bo'lmagan hosting bilan ishlayotgan bo'lsa, siz "Birgalikda Hosting ustida ishlash" bo'limida ko'rsatilganidek, ilovaning tuzilishini o'zgartirishingiz mumkin.

### Ta'vsiya etilgan Apache sozlamalari ¶

Quyidagilarni Apache `httpd.conf` yoki virtual sozlamalar faylga qo'shing. `path/to/basic/web` to'g'ri manzilga `path/to/basic/web` almashtirishni unutmang.

    # Ildiz kotalogini o`rnatayapmiz "basic/web"
    DocumentRoot "path/to/basic/web"

    <Directory "path/to/basic/web">
        RewriteEngine on

        #Agar so`ralayotgan fayl yoki katalogiy bor bo`lsa unga to`g`ridan to`g`ri murojat qilamiz
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        # Agar yo`q bo`lsa index.php ga o`tqazib yuboramiz.
        RewriteRule . index.php

        # ...boshqa sozlamalar...
    </Directory>

### Tavsiya etilgan Nginx sozlamalari ¶

PHP Nginx uchun FPM SAPI sifatida o'rnatilishi kerak. Quyidagi Nginx sozlamalaridan foydalaning va `basic/web` va `mysite.test` to'g'ri manzilini hostname-ga almashtirishni va `path/to/basic/web` ni almashtirishni unutmang.

    server {
        charset utf-8;
        client_max_body_size 128M;

        listen 80; ## listen for ipv4
        #listen [::]:80 default_server ipv6only=on; ## слушаем ipv6

        server_name mysite.test;
        root        /path/to/basic/web;
        index       index.php;

        access_log  /path/to/project/log/access.log;
        error_log   /path/to/project/log/error.log;

        location / {
            # Barcha so'rovlarni indeks bo'lmagan katalog va fayllarga yo'naltiramiz. Index.php
            try_files $uri $uri/ /index.php?$args;
        }

        # Yii-ni ishlamaslik uchun mavjud bo'lmagan statik fayllarni chaqirish uchun quyidagi qatorlarni belgilang
        #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
        #    try_files $uri =404;
        #}
        #error_page 404 /404.html;

        location ~ \.php$ {
            include fastcgi.conf;
            fastcgi_pass   127.0.0.1:9000;
            #fastcgi_pass unix:/var/run/php5-fpm.sock;
        }

        location ~ /\.(ht|svn|git) {
            deny all;
        }
    }

Ushbu konfiguratsiya yordamida `php.ini` `cgi.fix_pathinfo=0` ni `stat()` tizimiga keraksiz tizim chaqiruvlariga yo'l qo'ymaslik uchun o'rnating.

HTTPS-dan foydalanib, `fastcgi_param HTTPS on;` ni belgilash kerak `fastcgi_param HTTPS on;` Shunday qilib Yii xavfsiz ishlashini aniq belgilashi mumkin.