yii framework: struktura katalogów dla małych aplikacji

W poprzednim wpisie poruszyłem kwestie organizacji struktury katalogów dla aplikacji pisanych w Yii. Yii framework pozwala na całkowitą dowolność w tej kwestii. W tym wpisie przedstawie krok po kroku jak stworzyć prostą aplikacje z podziałem na część dla użytkownika oraz administratora. Dodatkowo wydzielimy część wspólną dla elementów używanych we wszystkich częściach. Struktura ta sprawdza się doskonale przy małych i średnich projektach tworzonych za pomocą yii framework.

Podstawy i ogólny zarys

W tym poradniku celowo pomijam konfigurację Apacha oraz zakładam, że każdy ma już jakieś doświadczenie z Yii.

Jeżeli nie wiesz jak zainstalować apache na systemie debian, bądź masz inne pytania odnośnie artykułu zapraszam do zadawania ich w komentarzach.

Taką strukturę katalogów chcemy osiągnąć:

.
|– framework
|– protected
|   |– backend
|   |– common
|   |– frontend
|
|– public_html

Opis poszczególnych katalogów

Nazwa katalogu    opis
framework    Nazwa mówi sama za Siebie 🙂
protected/backend    Tutaj będzie cały panel administracyjny
protected/frontend    W tym folderze umieszczamy całą aplikację dla użyszkodników
protected/common    do tego folderu przenosimy część wspólną dla aplikacji
public_html    jest to folder dostępny z przeglądarki użytkownika.

Dlaczego protected będzie poza web root’em

Jest to prosta technika, która zwiększa bezpieczeństwo naszej aplikacji. Folder protected poza katalogiem public_html blokuje możliwość wykonywania plików z poziomu przeglądarki. Dodatkowym usprawnieniem jest możliwość używania projektu dla kilku domen bez powielania kodu – tylko dodajemy kolejne „public_html” oraz pliki konfiguracji.

Instalacja yii framework

Pobranie najnowszej wersji frameworku z repozytorium

W tym przykładzie pobierzemy framework z repozytorium yiisoft. Kod z repozytorium pobierzemy do katalogu /tmp a nasza docelowa aplikacja będzie znajdować się w katalogu /srv/test/.

Kod:

$ cd /tmp

$ git clone https://github.com/yiisoft/yii.git

$ cp -R yii/framework /srv/test

Po wykonaniu powyższych poleceń możemy przejść do inicjacji naszego projektu (superapp):

$ cd yii

$ ./framework/yiic webapp superapp

Powyższe polecenie wygeneruje nam podstawową strukturę aplikacji w folderze superapp. Folder protected posłuży nam za bazę dla części naszej aplikacji: common, backend oraz frontend. Foldery umieszczamy w katalogu protected w naszym docelowym projekcie znajdującym się w /srv/test/. Skopiujmy też podstawowy plik index.php oraz folder css. Ostatnie polecenie przechodzi do folderu docelowej aplikacji.

$ cd superapp

$ mkdir -p /srv/test/protected/public_html

$ cp -R protected/ /srv/test/protected/backend

$ cp -R protected/ /srv/test/protected/common

$ cp -R protected/ /srv/test/protected/frontend

$ cp protected/index.php /srv/test/public_html/

$ cp -R protected/css /srv/test/public_html/

$ cd /srv/test

Frontend

Teraz zmienimy ścieżki konfiguracji w pliku index.php, aby wskazywały plik konfiguracji dla frontend’u.

$yii=dirname(__FILE__).’/../framework/yii.php’;

$config=dirname(__FILE__).’/../protected/frontend/config/main.php’;

Aby strona się poprawnie uruchomiła musimy utworzyć jeszcze 2 foldery: runtime oraz assets

$ mkdir -p protected/frontend/runtime -m u+x

$ mkdir -p public_/assets -m u+x

W tym momencie jeżeli uruchomicie przeglądarkę uruchomi się wam standardowa strona yii.

Backend

Teraz pozostaje kwestia części administracyjnej – aby działała potrzebujemy utworzyć plik .htaccess o następującej treści:

Options -Indexes +FollowSymLinks -MultiViews

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^admin/?(.*?)$ admin.php?url=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(?!admin\/)(.*?)$ index.php?url=$1 [QSA,L]

modeli oraz y

</IfModule>

oraz skopiowanie pliku index.php do pliku admin.php.

Po skopiowaniu pliku należy zmienić ścieżki do konfiguracji aplikacji backend

$yii=dirname(__FILE__).’/../framework/yii.php’;

$config=dirname(__FILE__).’/../protected/backend/config/main.php’;

oraz utworzyć katalog runtime

$ mkdir -p protected/backend/runtime -m u+x

Podsumowanie

Po powyższych czynnościach będą uruchamiały się dwie aplikacje pod różnymi adresami. Jednak to nie wszystko!

W kolejnym wpisie opiszę jak używać elementów umieszczonych w części wspólnej. Zajmiemy się także konfiguracją aplikacji: wprowadzimy „przyjazne” adresy url, dopracujemy konfigurację oraz przygotujemy naszą aplikację, aby można było uruchamiać kod pod różnymi domenami.

Zapraszam do komentowania!

Comments

comments

Comments

Leave a Reply

You must be logged in to post a comment.