Jak prawidłowo wdrażać aplikacje od etapu projektowania po produkcję i jak radzić sobie z wieloma konfiguracjami witryn. Wszystkie moje prace są wykonywane przez svn w var/svn/myapp/trunk i faktyczny kod produkcyjny znajduje się w/var/www/myapp.Jak prawidłowo rozmieścić aplikacje PHP?
Sprawdzam najnowszy kod na moim komputerze lokalnym w katalogu o nazwie "myapp_latest_svn". mam miejsce i kod konkretną lokalizację w moim głównym settings.php, który ma H_PATH = „http://myapp.com” & db ustawienia konfiguracyjne dla db_host, db_user_name i hasło_bazy_danych która jak wiecie różne w lokalnych ustawień urządzenia (gdzie localhost/myapp. com to tylko alias Apache) & na serwerze produkcyjnym (witryna działa na żywo na myapp.com).
Również plik .htaccess różni się od tego na serwerze produkcyjnym. Krótko mówiąc, istnieje wiele różnic między deweloperem a produkcją.
Wszystkie prace wykonuję w SVN. Każdego ranka korzystam z aktualizacji SVN, która aktualizuje najnowszy kod do mojego lokalnego repozytorium svn. Kiedy jestem gotowy, aby rozpocząć transmisję, buduję wersję z svn Commit.
Następnie w wydaniu muszę pamiętać, aby zmienić wszystkie odpowiednie pliki dev na ich odpowiedniki produkcyjne. Teraz musiałem ręcznie edytować ustawienia production.php & .htaccess, aby odzwierciedlić zmiany specyficzne dla witryny.
Szukam automatycznego sposobu przejścia z dev do produkcji wraz z wersjonowaniem i bez ręcznej edycji plików, które są podatne na błędy i złe praktyki.
Jednym ze sposobów jest uczynienie wersji produkcyjnej plików tylko do odczytu (0444). W ten sposób, gdy wykonuję eksport svn, , nie są one nadpisywane przez wersję dev plików i nie muszę się martwić o edytowanie plików na każdym przejściu z dev do produkcji. Ale to zły sposób robienia rzeczy takich jak ciągła integracja.
Również wykonując wiele kopii pliku settings.php (jeden dla localhost, beta i prod). Następnie za pomocą skryptu powłoki , który eksportuje z svn, a następnie po zakończeniu eksportu, zastępuje on ustawienia settings.php odpowiednimi ustawieniami settings.php, w zależności od lokalizacji, do której wdrażamy. W ten sposób wszystko jest zautomatyzowane. Ale to także kiepska droga.
Ostatni sposób jest
if(eregi ("myapp.com$", $_SERVER['HTTP_HOST'])){
define('H_PATH', 'myapp.com');
} else {
define('H_PATH', 'localmyapp.com');
}
To jest w porządku o ile settings.php jest zaniepokojony. Ale co z tym .htaccess, nie możesz sprawdzić jak wyżej w .htaccess.
To czego nie chcę robić za każdym razem, gdy wdrażam moją stronę, że muszę zmienić ustawienia.
Mój schemat DB nie jest w kontroli wersji, więc db nie jest problemem ze mną, tylko settings.php i .htaccess.
Także w jaki sposób mogę nakazać svn nie aktualizować niektórych katalogów, ponieważ jest to również specyficzne dla witryny (/ log,/cache,/assets,/downloads). Muszę również zachować dostęp do plików apache (www_data) nienaruszony również dla powyższych plików.
Na koniec nie chcę skopiować pustego katalogu magistrali i plików .svn na serwer produkcyjny podczas eksportowania.
W jaki sposób mogę używać phing, a nawet skryptu powłoki do integracji, nie powodując żadnego z tych problemów podczas budowania z svn na serwerach produkcyjnych.
Może to być przydatne dla wielu twórców aplikacji, którzy chcą być na wolności.
Dzięki z góry,
ocptime
Wielką linku! Dzięki! –
Czy możesz wyjaśnić, co robi dowiązanie symboliczne katalogów zasobów? – dave1010