2009-01-01 12 views
12

Chciałbym skonfigurować dwa środowiska dla mojej nowej strony internetowej napisanej w PHP. Jeden - do opracowania nowych wersji i przetestowania ich. I druga produkcja, w której moja aktualna stabilna wersja strony będzie dostępna.Środowisko programistyczne i produkcyjne w PHP

Strona w PHP będzie składała się z wielu plików PHP i innych (JS, obrazów itd.). Tak więc myślę, jak najlepiej przygotować to środowisko, aby ułatwić kontrolę kodu źródłowego, szybkie kopiowanie strony internetowej ze środowiska programistycznego do środowiska produkcyjnego i udostępnienie wersji rozwojowej ludziom w Internecie, aby mogli zobaczyć rzeczywisty postęp pracy i sugerować zmiany lub zgłaszać błędy.

Czy możesz podać kilka wskazówek, od czego zacząć? Czy są na ten temat książki (z praktycznego punktu widzenia?) Lub masz doświadczenie lub wskazówki, na co uważać i co jest ważne, aby proces ten był łatwy i dobry dla mnie i innych osób zaangażowanych w rozwój nowego projektu?

Odpowiedz

3

W miarę możliwości wolę programowanie w lokalnym polu programisty. Jeśli zaangażowani są inni programiści, prawdopodobnie chcesz skonfigurować kontrolę wersji, tak aby zarówno schemat bazy danych, javascript, css, jak i kod php mogły być łatwo wyewidencjonowane i skonfigurowane na osobistym pudełku programisty (zakładając, że mają odpowiednią LAMPĘ/Konfiguracja WAMP)

Widziałem też, gdzie ludzie prowadzą stronę testową na serwerze, na którym następuje aktywny rozwój. Unikałbym tego dla aktywnego rozwoju, ale używaj tego do testowania czarnego pola najnowszego kodu sprawdzanego (najnowszy build).

Po sprawdzeniu witryny testowej jest to kwestia eksportowania kodu z kontroli wersji do lokalizacji, w której znajduje się witryna internetowa. Dzięki svn możesz po prostu zrobić aktualizację kodu live z aktualizacją svn, określając wersję lub tag wskazujący aktualną wersję na żywo.

Zalecam również zachowanie niektórych ustawień, takich jak db access/username/pass, w oddzielnym dołączonym pliku, który nie jest kontrolowany przez wersję. Zachowaj to gdzie indziej, pozwól programistom podłączyć prawa dostępu do ich lokalnej bazy danych na swoim komputerze. Na swoim serwerze podłącz wszystko, czego potrzebujesz, aby uzyskać dostęp do bazy danych. Powinien to być naprawdę trywialny kod (definiujący kilka zmiennych), więc brak kontroli wersji nie powinien być wielkim problemem. Jeśli chcesz, możesz kontrolować wersję na szablonie, ale nie wstawiłbym prawdziwych informacji o bazie danych do kontroli wersji.

6

Pracuję z taką konfiguracją, więc mogę dać ci kilka wskazówek, jak to zrobić. Robiłem to już od jakiegoś czasu, pracując nad tym, co się stało, i mam wrażenie, że to konfiguracja, którą mogę uczciwie powiedzieć, jest całkiem cholernie produktywna.

Mała uwaga: pracuję na OSX, więc konkretne aplikacje mogą być nieco inne od ciebie, jeśli jesteś użytkownikiem systemu Linux/Windows.

Prowadzę "serwer" produkcyjny na moim Macu, używając MAMP (www.mamp.info), aby łatwo dostarczyć mi serwer Apache z PHP i MySQL. Możesz użyć podobnego narzędzia, na przykład XAMPP lub zainstalować wszystko ręcznie, to naprawdę zależy od Ciebie.

Następnie mam swoje serwery na żywo, na których hostowane są moje witryny i witryny klientów. Dla każdego nowego projektu strony internetowej (przyjmijmy abc.com jako przykład) tworzę subdomenę o nazwie staging.abc.com, na której testuję. Zawsze dobrze jest przetestować rzeczy na tym samym sprzęcie i oprogramowaniu, zanim zaczną działać.

Używam Subversion (lub w skrócie SVN) do moich potrzeb związanych z wersjonowaniem, z dodaną premią, którą mogę łatwo dodać "hooks", aby automatycznie aktualizować mój serwer produkcyjny online za każdym razem, gdy wysyłam moją zaktualizowaną wersję do serwera SVN.SVN pozwala również łatwo pracować z więcej niż jedną osobą w tym samym projekcie. Aby uzyskać więcej informacji na temat SVN i jak z niego korzystać, proponuję świetną (i darmową) książkę online znalezioną tutaj: http://svnbook.red-bean.com/

Krótko: pracuję lokalnie z MAMP, dostarczając mi lokalnego, działającego serwera. Następnie testuję online w lokalizacji staging.abc.com, aby sprawdzić, czy wszystko działa dobrze, i, aby umożliwić innym osobom zobaczenie projektu (na przykład, jeśli chcesz, aby klient zobaczył, co się dzieje) i potem faktycznie opublikuję projekt, umieszczając go na rzeczywistej domenie.

Istnieje wiele innych rzeczy, które można zrobić, aby zoptymalizować przepływ pracy, ale powinno to zacząć.

Mam nadzieję, że to pomoże!

-Dave

13

Na początek skorzystać z następujących trzech kryteriów: SVN

  1. - to daje kontrolę źródła i pozwalają na śledzenie zmian. Możesz chcieć uzyskać GUI (żółw jest popularny), aby ułatwić naukę.

  2. RSYNC - pozwoli to usprawnić synchronizację między lokalną i zdalną lokacją za pomocą jednego polecenia. RSYNC używa mechanizmu diff do synchronizacji, co oznacza, że ​​przyrostowe synchronizacje mają miejsce w ciągu kilku sekund. Podczas intensywnego programowania czasami synchronizuję 4-5 razy w ciągu jednej godziny, wypychając małe zmiany bardzo szybko, tylko dlatego, że mogę tak łatwo.

  3. MySQLDump - Umożliwi to import/eksport danych z miejsca produkcji. Zwykle robię to raz w tygodniu, aby uzyskać dane produkcyjne na moich lokalnych serwerach, które nie tylko dają mi lokalną kopię zapasową, ale także pozwalają mi bawić się danymi produkcyjnymi w lokalnym środowisku testowym.

Te trzy produkty zaoszczędzą wiele czasu na dłuższą metę i pozwolą na skalowanie. Później możesz przyjrzeć się automatycznym narzędziom do budowania, ramom testowania jednostkowego, strukturze dokumentacji xml i tym podobne, aby zbudować poważne produkty.

+0

Dlaczego rsync, jeśli możesz wyewidencjonować bieżącą wersję z SVN na serwerze? –

+0

Jak śledzić zmiany w bazie danych? Próbuję dodać zmiany jako sql w oddzielnym katalogu/sql, ale czasami zapominam o tym; co zostawia mnie z "złamanym" zatwierdzeniem. – bouke

+0

@bouke - zobacz pięć części serii powiązanych w tym poście http://www.codinghorror.com/blog/archives/001050.html – aleemb