Browse Source

Guide pl (#11321)

* caching fragment

* guide PL

Previous sections update
Tutorial: shared hosting
tags/2.0.8
Bizley 9 years ago committed by Dmitry Naumenko
parent
commit
88d79f78eb
  1. 165
      docs/guide-pl/caching-fragment.md
  2. 23
      docs/guide-pl/db-active-record.md
  3. 2
      docs/guide-pl/input-file-upload.md
  4. 1
      docs/guide-pl/input-forms.md
  5. 3
      docs/guide-pl/input-validation.md
  6. 4
      docs/guide-pl/output-pagination.md
  7. 4
      docs/guide-pl/start-databases.md
  8. 2
      docs/guide-pl/start-forms.md
  9. 2
      docs/guide-pl/start-gii.md
  10. 2
      docs/guide-pl/start-hello.md
  11. 74
      docs/guide-pl/start-installation.md
  12. 116
      docs/guide-pl/tutorial-shared-hosting.md

165
docs/guide-pl/caching-fragment.md

@ -0,0 +1,165 @@
Pamięć podręczna fragmentów
===========================
Pamięć podręczna fragmentów dotyczy zapisywania w pamięci podręcznej części strony Web. Dla przykładu, jeśli strona wyświetla podsumowanie danych rocznej sprzedaży w postaci tabeli,
można tę tabelę zapisać w pamięci podręcznej, aby wyeliminować konieczność generowania jej za każdym razem od nowa. Mechanizm pamięci podręcznej fragmentów zbudowany jest w oparciu
o [pamięć podręczną danych](caching-data.md).
Aby wykorzystać pamięć podręczną fragmentów, należy użyć następującego kodu w [widoku](structure-views.md):
```php
if ($this->beginCache($id)) {
// ... generowanie zawartości w tym miejscu ...
$this->endCache();
}
```
Jak widać, chodzi tu o zamknięcie bloku generatora zawartości pomiędzy wywołaniem metod [[yii\base\View::beginCache()|beginCache()]] i [[yii\base\View::endCache()|endCache()]].
Jeśli wskazana zawartość zostanie odnaleziona w pamięci podręcznej, [[yii\base\View::beginCache()|beginCache()]] wyrenderuje zapisaną zawartość i zwróci false, przez co pominie
blok jej generowania. W przeciwnym wypadku generowanie zostanie uruchomione, a w momencie wywołania [[yii\base\View::endCache()|endCache()]] wygenerowana zawartość zostanie zapisana
w pamięci podręcznej.
Tak, jak w przypadku [pamięci podręcznej danych](caching-data.md), unikalne `$id` jest wymagane do identyfikacji zawartości.
## Opcje zapisu w pamięci podręcznej <span id="caching-options"></span>
Możesz określić dodatkowe opcje zapisu pamięci podręcznej fragmentów, przekazując tablicę opcji jako drugi parametr w metodzie [[yii\base\View::beginCache()|beginCache()]].
Opcje te będą użyte do skonfigurowania widżetu [[yii\widgets\FragmentCache|FragmentCache]], który implementuje właściwą funkcjonalność zapisu pamięci podręcznej.
### Czas życia <span id="duration"></span>
Prawdopodobnie najczęściej używaną opcją zapisu fragmentów jest [[yii\widgets\FragmentCache::duration|duration]].
Parametr ten określa, przez ile sekund zawartość może być przechowywana w pamięci podręcznej, zanim konieczne będzie wygenerowanie jej ponownie. Poniższy kod zapisuje fragment
zawartości w pamięci podręcznej na maksymalnie godzinę:
```php
if ($this->beginCache($id, ['duration' => 3600])) {
// ... generowanie zawartości w tym miejscu ...
$this->endCache();
}
```
Jeśli ta opcja nie jest określona, przyjmuje domyślną wartość 60, co oznacza, że ważność zapisanej zawartości wygaśnie po upływie 60 sekund.
### Zależności <span id="dependencies"></span>
Tak, jak w przypadku [pamięci podręcznej danych](caching-data.md#cache-dependencies), zapis fragmentów może opierać się na zależnościach.
Dla przykładu, zawartość wyświetlanego posta zależy od tego, czy został on zmodyfikowany, bądź nie.
Aby określić zależność, należy ustawić opcję [[yii\widgets\FragmentCache::dependency|dependency]], która może przyjąć postać zarówno obiektu klasy [[yii\caching\Dependency|Dependency]],
jak i tablicy konfiguracyjnej, służacej do utworzenia obiektu zależności. Poniższy kod określa pamięć podręczną fragmentu jako zależną od zmiany wartości kolumny `updated_at`:
```php
$dependency = [
'class' => 'yii\caching\DbDependency',
'sql' => 'SELECT MAX(updated_at) FROM post',
];
if ($this->beginCache($id, ['dependency' => $dependency])) {
// ... generowanie zawartości w tym miejscu ...
$this->endCache();
}
```
### Wariacje <span id="variations"></span>
Zapisana zawartość może mieć kilka wersji, zależnych od niektórych parametrów. Przykładowo, w aplikacji Web wspierającej kilka języków, ten sam fragment kodu w widoku może generować
zawartość w różnych językach. Z tego powodu wymagana może być konieczność zapisu zawartości w wariacji zależnej od aktualnie wybranego języka aplikacji.
Aby określić wariacje pamięci podręcznej, ustaw opcję [[yii\widgets\FragmentCache::variations|variations]], która powinna mieć postać tablicy wartości skalarnych, z których każda
będzie reprezentować odpowiedni czynnik modyfikujący wersję. Dla prykładu, aby zapisać zawartość w zależności od języka, możesz użyć następującego kodu:
```php
if ($this->beginCache($id, ['variations' => [Yii::$app->language]])) {
// ... generowanie zawartości w tym miejscu ...
$this->endCache();
}
```
### Warunkowe uruchamianie pamięci podręcznej <span id="toggling-caching"></span>
Czasem konieczne może być uruchamianie pamięci podręcznej fragmentów tylko w przypadku, gdy spełnione są określone warunki. Przykładowo, dla strony zawierającej formularz,
pożądane może być zapisanie i wyświetlenie go z pamięci podręcznej tylko w momencie pierwszego pobrania jego treści (poprzez żądanie GET). Każde kolejne żądanie wyświetlenia formularza
(już za pomocą metody POST) nie powinno być zapisane w pamięci, ponieważ może zawierać dane podane przez użytkownika.
Aby użyć takiego mechanizmu, należy ustawić opcję [[yii\widgets\FragmentCache::enabled|enabled]], jak w przykładzie poniżej:
```php
if ($this->beginCache($id, ['enabled' => Yii::$app->request->isGet])) {
// ... generowanie zawartości w tym miejscu ...
$this->endCache();
}
```
## Zagnieżdżony zapis w pamięci <span id="nested-caching"></span>
Fragmenty zapisane w pamięci podręcznej mogą być zagnieżdżane. Oznacza to, że zapisany fragment może być częścią innego, również zapisanego w pamięci podręcznej.
Przykładowo, komentarze mogą być zapisane jako fragmenty w pamięci podręcznej, które z kolei w całości również są zapisane jako większy fragment w pamięci.
Poniższy kod pokazuje, w jaki sposób można zagnieździć dwa fragmenty w pamięci podręcznej:
```php
if ($this->beginCache($id1)) {
// ... generowanie zawartości ...
if ($this->beginCache($id2, $options2)) {
// ... generowanie zawartości ...
$this->endCache();
}
// ... generowanie zawartości ...
$this->endCache();
}
```
Zagnieżdżone fragmenty mogą mieć różne opcje zapisu. Dla przykładu, wewnętrzny i zewnętrzy fragment może mieć inną wartość czasu życia. Nawet w przypadku, gdy zawartość zapisana
w zewnętrznym fragmencie straci ważność, wewnętrzny fragment wciąż będzie pobierany z pamięci. Nie zadziała to jednak w przeciwnym przypadku - dopóki zewnętrzny fragment będzie ważny,
będzie zwracał tą samą zawartość za każdym razem, niezależnie od tego, czy zawartość wewnętrznego fragmentu już wygasła, czy nie. Z tego powodu należy zwrócić szczególną ostrożność
przy ustalaniu czasu życia lub zależności zagnieżdżonych fragmentów, ponieważ "stara" zawartość może być wciąż niezamierzenie przechowywana w zewnętrznym fragmencie.
## Dynamiczna zawartość <span id="dynamic-content"></span>
Używając pamięci podręcznej fragmentów, można napotkać na sytuację, kiedy duża część zawartości strony jest względnie statyczna z wyjątkiem kilku nielicznych miejsc.
Przykładowo, nagłówek strony może wyświetlać pasek głównego menu razem z imieniem aktualnie zalogowanego użytkownika. Innym kłopotem może być to, że zapisywana w pamięci zawartość
może zawierać kod PHP, który musi być wykonany dla każdego żądania (np. kod rejestrujący paczkę assetów). W obu tych przypadkach pomoże nam skorzystanie z funkcjonalności tzw.
*dynamicznej zawartości*.
Dynamiczna zawartość oznacza fragment zwrotki, który nie powinien zostać zapisany w pamięci podręcznej, nawet jeśli znajduje się w bloku objętym zapisem. Aby określić zawartość jako
dynamiczną, musi być ona generowana poprzez wykonanie jakiegoś kodu PHP dla każdego zapytania, nawet jeśli całość fragmentu serwowana jest z pamięci podręcznej.
Możesz wywołać metodę [[yii\base\View::renderDynamic()|renderDynamic()]] wewnątrz zapisywanego fragmentu, aby wstawić w danym miejscu zawartość dynamiczną, jak w przykładzie poniżej:
```php
if ($this->beginCache($id1)) {
// ... generowanie zawartości ...
echo $this->renderDynamic('return Yii::$app->user->identity->name;');
// ... generowanie zawartości ...
$this->endCache();
}
```
Metoda [[yii\base\View::renderDynamic()|renderDynamic()]] przyjmuje jako parametr kod PHP.
Wartość zwracana przez ten kod jest traktowana jako zawartość dynamiczna. Ten sam kod PHP będzie wykonany dla każdego zapytania, niezależnie od tego, czy obejmujący go fragment będzie
pobierany z pamięci podręcznej czy też nie.

23
docs/guide-pl/db-active-record.md

@ -1035,9 +1035,30 @@ Zwróć uwagę na to, że ten przykład różni się od poprzedniego, gdzie pobi
> Info: Jeśli [[yii\db\ActiveQuery|ActiveQuery]] zawiera warunek podany za pomocą [[yii\db\ActiveQuery::onCondition()|onCondition()]],
> będzie on umieszczony w części instrukcji `ON` tylko jeśli kwerenda zawiera JOIN. W przeciwnym wypadku warunek ten będzie automatycznie
> dodany do części `WHERE`.
> dodany do części `WHERE`. Może zatem składać się z warunków opierających się tylko na kolumnach powiązanej tabeli.
#### Aliasy dołączanych tabeli <span id="relation-table-aliases"></span>
Jak już wspomniano wcześniej, używając JOIN w kwerendzie, musimy ujednoznacznić nazwy kolumn. Z tego powodu często stosuje się aliasy dla tabel.
Alias dla kwerendy relacyjnej można ustawić, modyfikując ją w następujący sposób:
```php
$query->joinWith([
'orders' => function ($q) {
$q->from(['o' => Order::tableName()]);
},
])
```
Powyższy sposób wygląda jednak na bardzo skomplikowany i wymaga ręcznej modyfikacji w kodzie nazwy tabeli obiektu relacji lub wywołania `Order::tableName()`.
Od wersji 2.0.7, Yii udostępnia do tego celu skróconą metodę. Możliwe jest zdefiniowanie i używanie aliasu dla tabeli relacji w poniższy sposób:
```php
// dołącz relację 'orders' i posortuj wyniki po 'orders.id'
$query->joinWith(['orders o'])->orderBy('o.id');
```
### Odwrócone relacje <span id="inverse-relations"></span>
Deklaracje relacji są zazwyczaj obustronne dla dwóch klas Active Record. Przykładowo `Customer` jest powiązany z `Order` poprzez relację `orders`,

2
docs/guide-pl/input-file-upload.md

@ -74,6 +74,8 @@ use yii\widgets\ActiveForm;
Należy pamiętać, aby dodać opcję `enctype` do formularza, przez co plik będzie mógł być prawidłowo przesłany.
Wywołanie `fileInput()` spowoduje wyrenderowanie tagu `<input type="file">`, który pozwala użytkownikowi na wybranie oraz przesłanie pliku.
> Tip: od wersji 2.0.8, [[yii\web\widgets\ActiveField::fileInput|fileInput]] dodaje automatycznie opcję `enctype` do formularza, kiedy pole typu 'file input' jest używane.
## Implementacja kontrolera <span id="wiring-up"></span>
W akcji kontrolera musimy połączyć model oraz widok aby zaimplementować przesyłanie plików:

1
docs/guide-pl/input-forms.md

@ -117,7 +117,6 @@ Możemy użyć metody klasy ActiveForm [yii\widgets\ActiveForm::dropDownList()|d
```php
use app\models\ProductCategory;
use yii\helpers\ArrayHelper;
/* @var $this yii\web\View */
/* @var $form yii\widgets\ActiveForm */

3
docs/guide-pl/input-validation.md

@ -648,3 +648,6 @@ Powyższy kod sprawdzi, czy zapytanie zostało wysłane przy użyciu AJAXa. Jeś
> Info: Możesz również użyć [walidacji kolejkowej](#deferred-validation) do wykonania walidacji AJAX, jednakże walidacja AJAXowa opisana w tej sekcji jest bardziej systematyczna i
> wymaga mniej wysiłku przy kodowaniu.
Kiedy zarówno `enableClientValidation`, jak i `enableAjaxValidation` ustawione są na true, walidacja za pomocą AJAX zostanie uruchomiona dopiero po udanej
walidacji po stronie klienta.

4
docs/guide-pl/output-pagination.md

@ -57,10 +57,10 @@ Metoda ta wymaga podania parametru page i zwraca poprawnie sformatowany adres UR
// Jeśli nie będzie podana, użyta zostanie aktualna trasa
$pagination->route = 'article/index';
// wyświetla: /index.php?r=article/index&page=100
// wyświetla: /index.php?r=article%2Findex&page=100
echo $pagination->createUrl(100);
// wyświetla: /index.php?r=article/index&page=101
// wyświetla: /index.php?r=article%2Findex&page=101
echo $pagination->createUrl(101);
```

4
docs/guide-pl/start-databases.md

@ -210,7 +210,7 @@ Sprawdź jak to działa <span id="trying-it-out"></span>
Aby zobaczyć jak działa powyższy kod, użyj przeglądarki i przejdź pod podany adres URL:
```
http://hostname/index.php?r=country/index
http://hostname/index.php?r=country%2Findex
```
![Lista krajów](../guide/images/start-country-list.png)
@ -220,7 +220,7 @@ Jeśli klikniesz przycisk "2", zobaczysz stronę wyświetlającą pięć innych
Zauważ, że adres URL w przeglądarce również się zmienił na
```
http://hostname/index.php?r=country/index&page=2
http://hostname/index.php?r=country%2Findex&page=2
```
Za kulisami, [[yii\data\Pagination|Pagination]] dostarcza wszystkich niezbędnych funkcjonalności do stronicowania zbioru danych:

2
docs/guide-pl/start-forms.md

@ -178,7 +178,7 @@ Próba <span id="trying-it-out"></span>
Aby zobaczyć jak to działa, użyj przeglądarki i przejdź pod dany adres:
```
http://hostname/index.php?r=site/entry
http://hostname/index.php?r=site%2Fentry
```
Zobaczysz stronę wyświetlającą formularz z dwoma polami. Przed każdym polem znajduje się etykieta opisująca to pole. Jeśli klikniesz przycisk "Wyślij" nie wpisując żadnych danych, lub

2
docs/guide-pl/start-gii.md

@ -108,7 +108,7 @@ Sprawdzenie w działaniu <span id="trying-it-out"></span>
Aby zobaczyć, jak działa nowo wygenerowany kod, użyj przeglądarki, aby uzyskać dostęp do podanego adresu URL:
```
http://hostname/index.php?r=country/index
http://hostname/index.php?r=country%2Findex
```
Zobaczysz tabelę prezentującą kraje z bazy danych. Możesz sortować tabelę, lub filtrować ją przez wpisanie odpowiednich warunków w nagłówkach kolumn.

2
docs/guide-pl/start-hello.md

@ -88,7 +88,7 @@ Próba <span id="trying-it-out"></span>
Po utworzeniu akcji oraz widoku możesz uzyskać dostęp do nowej strony przez przejście pod podany adres URL:
```
http://hostname/index.php?r=site/say&message=Hello+World
http://hostname/index.php?r=site%2Fsay&message=Hello+World
```
![Witaj świecie](../guide/images/start-hello-world.png)

74
docs/guide-pl/start-installation.md

@ -21,8 +21,10 @@ Instalacja przez Composer <span id="installing-via-composer"></span>
Jeśli nie posiadasz jeszcze zainstalowanego Composera to możesz to zrobić podążając według zamieszczonych na [getcomposer.org](https://getcomposer.org/download/) instrukcji.
W systemach operacyjnych Linux i Mac OS X należy wywołać następujące komendy:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
```bash
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
```
W systemie Windows należy pobrać i uruchomić [Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe).
@ -33,8 +35,10 @@ Jeśli posiadałeś już wcześniej zainstalowanego Composera, upewnij się, że
Z zainstalowanym Composerem możesz przejść do instalacji Yii wywołując poniższe komendy w katalogu dostępnym z poziomu sieci web:
composer global require "fxp/composer-asset-plugin:~1.1.1"
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
```bash
composer global require "fxp/composer-asset-plugin:~1.1.1"
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
```
Pierwsza komenda instaluje [wtyczkę zasobów](https://github.com/francoispluchino/composer-asset-plugin/), która pozwala na zarządzanie zasobami [Bowera](http://bower.io) oraz
[paczkami zależności NPM](https://www.npmjs.com/) przez Composer.
@ -47,14 +51,16 @@ Druga komenda instaluje Yii w katalogu `basic`. Jeśli chcesz, możesz wybrać k
> Tip: Jeśli chcesz zainstalować najnowszą wersję deweloperską Yii, użyj poniższej komendy, która dodaje [opcję stabilności](https://getcomposer.org/doc/04-schema.md#minimum-stability):
>
> composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
> ```bash
> composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
> ```
>
> Pamiętaj, że wersja deweloperska Yii nie powinna być używana w wersjach produkcyjnych aplikacji, ponieważ mogą wystąpić niespodziewane błędy.
Instalacja z pliku archiwum <span id="installing-from-archive-file"></span>
-------------------------------
Instalacja Yii z pliku archiwum dotyczy trzech kroków:
Instalacja Yii z pliku archiwum składa się z trzech kroków:
1. Pobranie pliku archiwum z [yiiframework.com](http://www.yiiframework.com/download/).
2. Rozpakowanie pliku archiwum do katalogu dostępnego z poziomu sieci web.
@ -82,33 +88,43 @@ Dostępne są również inne opcje instalacji:
Sprawdzenie instalacji <span id="verifying-installation"></span>
--------------------------
Po instalacji możesz użyć swojej przeglądarki, aby uzyskać dostęp do swojej aplikacji Yii przechodząc pod adres:
Po zakończeniu instalacji, skonfiguruj swój serwer (zobacz następną sekcję) lub użyj
[wbudowanego serwera PHP](https://secure.php.net/manual/en/features.commandline.webserver.php), uruchamiając poniższą komendę w konsoli z poziomu folderu
`web` projektu:
```bash
php yii serve
```
http://localhost/basic/web/index.php
> Note: Domyślnym portem, na którym serwer HTTP nasłuchuje, jest 8080. Jeśli jednak ten port jest już w użyciu lub też chcesz obsłużyć wiele aplikacji w ten sposób,
możesz podać inny numer portu, dodając argument --port:
```bash
php yii serve --port=8888
```
Powyższy wpis zakłada, że zainstalowałeś Yii w katalogu o nazwie `basic`, bezpośrednio jako katalog głównego katalogu serwera, oraz że serwer jest uruchomiony na Twojej lokalnej
maszynie ('localhost').
Być może będziesz musiał dostosować go do Twojego środowiska instalacyjnego.
Możesz teraz użyć swojej przeglądarki, aby uzyskać dostęp do zainstalowanej aplikacji Yii przechodząc pod adres:
![Pomyślna instalacja Yii](../guide/images/start-app-installed.png)
```
http://localhost:8080/
```
![Poprawna instalacja Yii](../guide/images/start-app-installed.png)
Na stronie w przeglądarce powinienieś zobaczyć napis "Congratulations!". Jeśli nie, sprawdź czy zainstalowana wersja PHP jest wystarczająca do wymagań Yii.
Powinienieś zobaczyć stronę z napisem "Congratulations!" (Gratulacje!). Jeśli nie, sprawdź czy zainstalowane elementy środowiska spełniają wymagania Yii.
Możesz sprawdzić minimalne wymagania na dwa sposoby:
* Używając przeglądarki przejdź pod adres `http://localhost/basic/requirements.php`
* Wywołaj poniższą komendę:
* Skopiuj plik `/requirements.php` do `/web/requirements.php`, a następnie przejdź do przeglądarki i uruchom go przechodząc pod adres `http://localhost/requirements.php`
* Lub też uruchom następujące komendy:
```
cd basic
php requirements.php
```
```bash
cd basic
php requirements.php
```
Powinienieś skonfigurować swoją instalację PHP tak, aby spełniała minimalne wymogi Yii. Najważniejszym z nich jest posiadanie PHP w wersji 5.4 lub wyższej. Powinienieś również
zainstalować [rozszerzenie PDO](http://www.php.net/manual/en/pdo.installation.php) oraz odpowiedni sterownik bazy danych (np. `pdo_mysql` dla bazy danych MySQL), jeśli Twoja aplikacja
potrzebuje bazy danych.
Powinienieś skonfigurować swoją instalację PHP tak, aby spełniała minimalne wymogi Yii. Najważniejszym z nich jest posiadanie PHP w wersji 5.4 lub wyższej.
Powinienieś również zainstalować [rozszerzenie PDO](http://www.php.net/manual/en/pdo.installation.php) oraz odpowiedni sterownik bazy danych (np. `pdo_mysql` dla bazy danych
MySQL), jeśli Twoja aplikacja potrzebuje bazy danych.
Konfigurowanie serwerów WWW <span id="configuring-web-servers"></span>
@ -140,7 +156,7 @@ Blokowanie dostępu do tych folderów jest dużą poprawą bezpieczeństwa.
Użyj następującej konfiguracji serwera Apache w pliku `httpd.conf` lub w konfiguracji wirtualnego hosta.
Pamiętaj, że musisz zamienić ścieżkę `path/to/basic/web` na aktualną ścieżkę do `basic/web` Twojej aplikacji.
```
```apache
# Ustaw główny katalog na "basic/web"
DocumentRoot "path/to/basic/web"
@ -160,16 +176,16 @@ DocumentRoot "path/to/basic/web"
### Zalecane ustawienia Nginx <span id="recommended-nginx-configuration"></span>
Aby użyć [Nginx](http://wiki.nginx.org/) powinienieś zainstalować PHP jako [FPM SAPI](http://php.net/install.fpm).
Możesz użyć przedstawionej poniżej konfiguracji Nginx, zastępując jedynie ścieżkę `path/to/basic/web` aktualną ścieżką do `basic/web` Twojej aplikacji oraz `mysite.local` aktualną
nazwą hosta.
Możesz użyć przedstawionej poniżej konfiguracji Nginx, zastępując jedynie ścieżkę `path/to/basic/web` aktualną ścieżką do `basic/web` Twojej aplikacji oraz
`mysite.local` aktualną nazwą hosta.
```
```nginx
server {
charset utf-8;
client_max_body_size 128M;
listen 80; ## nasłuchuj ipv4
#listen [::]:80 default_server ipv6only=on; ## listen for ipv6
#listen [::]:80 default_server ipv6only=on; ## nasłuchuj ipv6
server_name mysite.local;
root /path/to/basic/web;
@ -183,7 +199,7 @@ server {
try_files $uri $uri/ /index.php?$args;
}
# odkomentuj aby uniknąć przetwarzania żądań do nieistniejących plików przez Yii
# dkomentuj aby uniknąć przetwarzania żądań do nieistniejących plików przez Yii
#location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
# try_files $uri =404;
#}

116
docs/guide-pl/tutorial-shared-hosting.md

@ -0,0 +1,116 @@
Współdzielone środowisko hostujące
==================================
Współdzielone środowiska hostujące są często ograniczone, jeśli chodzi o możliwości ich konfiguracji i struktury folderów. Pomimo to, wciąż, w większości przypadków,
możesz w takim środowisku uruchomić Yii 2.0 po kilku drobnych modyfikacjach.
Wdrożenie podstawowej aplikacji
-------------------------------
W standardowym współdzielonym środowisku hostującym jest zwykle tylko jeden główny folder publiczny (webroot), zatem wygodniej jest stosować podstawowy szablon projektu.
Korzystając z instrukcji w sekcji [Instalowanie Yii](start-installation.md), zainstaluj taki szablon lokalnie. Po udanej instalacji, dokonamy kilku modyfikacji, aby aplikacji
mogła działać na współdzielonym środowisku.
### Zmiana nazwy webroota <span id="renaming-webroot"></span>
Połącz się ze swoim współdzielonym hostem za pomocą np. klienta FTP. Prawdopodobnie zobaczysz listę folderów podobną do poniższej.
```
config
logs
www
```
W tym przykładzie, `www` jest folderem webroot. Folder ten może mieć różne nazwy, zwykle stosowane są: `www`, `htdocs` i `public_html`.
Webroot w naszym podstawowym szablonie projektu nazywa się `web`. Przed skopiowaniem aplikacji na serwer, zmień nazwę lokalnego folderu webroot, aby odpowiadała folderowi
na serwerze, czyli z `web` na `www`, `public_html` lub na inną nazwę, która używana jest na serwerze.
### Folder root FTP jest zapisywalny
Jeśli masz prawa zapisu w folderze poziomu root, czyli tam, gdzie znajdują się foldery `config`, `logs` i `www`, skopiuj foldery `assets`, `commands` itd. bezpośrednio w to
miejsce.
### Dodatkowe opcje serwera <span id="add-extras-for-webserver"></span>
Jeśli Twój serwer to Apache, będziesz musiał dodać plik `.htaccess` z poniższą zawartością do folderu `web` (czy też `public_html`, bądź jakakolwiek jest jego nazwa),
gdzie znajduje się plik `index.php`:
```
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
# jeśli katalog lub plik istnieje, użyj go bezpośrednio
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# w innym przypadku przekieruj żądanie na index.php
RewriteRule . index.php
```
W przypadku serwera nginx nie powinieneś potrzebować dodatkowego pliku konfiguracyjnego.
### Sprawdzenie wymagań
Aby uruchomić Yii, Twój serwer musi spełniać jego wymagania. Minimalnym wymaganiem jest PHP w wersji 5.4. Możesz sprawdzić wszystkie wymagania, kopiując plik
`requirements.php` z folderu root do folderu webroot i uruchamiając go w przeglądarce pod adresem `http://example.com/requirements.php`.
Nie zapomnij o skasowaniu tego pliku po sprawdzeniu wymagań.
Wdrożenie zaawansowanej aplikacji
---------------------------------
Wdrażanie zaawansowanej aplikacji na współdzielonym środowisku jest odrobinę bardziej problematyczne, niż w przypadku podstawowej aplikacji, ponieważ wymaga ona dwóch folderów
webroot, czego zwykle nie wspierają serwery środowisk współdzielonych. Będziemy musieli odpowiednio dostosować strukturę folderów.
### Przeniesienie skryptów wejściowych do jednego folderu webroot
Na początek potrzebujemy folderu webroot. Stwórz nowy folder i nazwij go tak, jak webroot docelowego serwera, jak opisane zostało to w
[Zmiana nazwy webroota](#renaming-webroot) powyżej, np. `www` czy też `public_html`. Następnie utwórz poniższą strukturę, gdzie `www` jest folderem webroot,
który właśnie stworzyłeś:
```
www
admin
backend
common
console
environments
frontend
...
```
`www` będzie naszym folderem frontend, zatem przenieś tam zawartość `frontend/web`. Do folderu `www/admin` przenieś zawartość `backend/web`.
W każdym przypadku będziesz musiał zmodyfikować ścieżki w plikach `index.php` i `index-test.php`.
### Rozdzielone sesje i ciasteczka
Backend i frontend zostały stworzone z myślą o uruchamianiu ich z poziomu oddzielnych domen. Jeśli uruchamiamy je z poziomu jednej domeny, frontend i backend będą dzielić
te same ciasteczka, co może wywołać konflikty. Aby temu zapobiec, zmodyfikuj backendową konfigurację aplikacji `backend/config/main.php` jak poniżej:
```php
'components' => [
'request' => [
'csrfParam' => '_backendCSRF',
'csrfCookie' => [
'httpOnly' => true,
'path' => '/admin',
],
],
'user' => [
'identityCookie' => [
'name' => '_backendIdentity',
'path' => '/admin',
'httpOnly' => true,
],
],
'session' => [
'name' => 'BACKENDSESSID',
'cookieParams' => [
'path' => '/admin',
],
],
],
```
Loading…
Cancel
Save