2009-04-06 14 views
5

W przeszłości zawsze edytowałem wszystkie moje witryny na żywo; nie byłem zbyt zaniepokojony, gdy moi 2 odwiedzający widzieli komunikat o błędzie.Jak skonfigurować środowisko programistyczne do generowania kodu w witrynie na żywo?

Może się jednak zdarzyć, że dostanę więcej niż 2 osoby. Jaki byłby najlepszy sposób testowania moich zmian, a następnie jednoczesnego wprowadzania wszystkich zmian?

Czy powinienem skopiować i wkleić kiedykolwiek pojedynczy plik do podfolderu i edytować je, a następnie skopiować po zakończeniu? Co się stanie, jeśli mam pełny kod w moim kodzie (zepsują się, jeśli je przeniesię)? Może mogę użyć jakiegoś hackery .htaccess, żeby to obejść? A co z danymi testowymi bazy danych? Czy powinienem skopiować wszystkie moje tabele MySQL i odwoływać się do nich?

Używam CakePHP dla konkretnego projektu, który mnie interesuje, ale jestem ciekawy, jakie podejście ludzie podejmują zarówno z Cake (który może mają narzędzia, aby pomóc w tym?), A bez ramy.


byłem coraz wiele zaleceń dla SVN, który brzmi świetnie, ale niestety mój gospodarz nie obsługuje: \

+0

Nie trzeba uruchamiać SVN na żywo miejscu. Uruchom go lokalnie na maszynie programistycznej i po prostu skopiuj zmienione pliki, gdy dokonasz (i przetestujesz) swoje zmiany lokalnie. – RodeoClown

+0

+1 RodeoClown - i jeszcze lepiej, jeśli uruchamiasz SVN lokalnie i możesz udostępnić go na publicznym IP, a twój ISP obsługuje klienta SVN, rozwinięcie twoich aktualizacji jest tak proste, jak polecenie "svn up" – mozboz

+0

Możesz skonfigurować SVN również do przesyłania plików? To całkiem miłe. Będę musiał zagłębić się w to jeszcze bardziej, dzięki chłopaki – mpen

Odpowiedz

18

Najlepszą rzeczą, jaką możesz zrobić, jest stworzenie środowiska pomostowego w którym testujesz swoje zmiany. Środowisko pomostowe (idealnie) jest kompletnym, działającym duplikatem twojego systemu produkcyjnego. Zapobiegnie to występowaniu wielu bólów głowy i niezamierzonych awarii produkcyjnych.

Jeśli pracujesz nad małym projektem, najlepszą rzeczą do zrobienia jest odtworzenie lokalnej witryny zdalnej (w tym bazy danych). Zakoduj wszystkie swoje zmiany, a następnie, po upewnieniu się, że skończysz, rozmieść zmiany w zdalnej witrynie za jednym razem.

+0

Będę drugi. Udowodniono, że jest niezwykle cenny, szczególnie podczas pracy z klientami i pokazywania im zmian przed ich uruchomieniem. – jerebear

+0

Ponadto może wydawać się kłopotliwe kopiowanie i kopiowanie za każdym razem, ale o wiele gorzej jest umieścić tam śrubę, aby odwiedzający ją mogli zobaczyć. – jerebear

+0

To mniej kłopotów, jeśli używasz oprogramowania do kontroli wersji, więc proces wdrażania polega jedynie na zatwierdzeniu sprawdzonego działającego kodu i zaktualizowaniu go z repozytorium w instancji na żywo. – chaos

3

Zainstalowałem na moim laptopie serwer programistyczny, który dokładnie powiela mój serwer (oprogramowanie i konfiguracja serwera, system operacyjny, układ systemu plików, zainstalowane oprogramowanie itp.) W ten sposób mogę napisać kod na moim laptopie i przetestuj go lokalnie; kiedy już pracuję, kopiuję je na serwer. Czasami pojawia się kilka problemów z powodu niewielkich różnic pomiędzy dwoma komputerami, ale te są zawsze szybko rozwiązywane (i na wszelki wypadek, jeśli nie, mam swoją witrynę w repozytorium SVN, więc zawsze mogę ją przywrócić).

Na innej stronie, którą kiedyś utrzymywałem, użyłem nieco innej taktyki: wyznaczyłem ścieżkę URL w witrynie, która byłaby wersją rozwojową strony bazowej. Oznacza to, że http://www.example.com/devweb zwykle odzwierciedlają: http://www.example.com, http://www.example.com/devweb/foo/bar.php będzie lustrem http://www.example.com/foo/bar.php, itp. Utworzono folder devweb w katalogu głównym dokumentów, ale zamiast kopiować wszystkie pliki, skonfigurowałem serwer tak, że jeśli żądany plik nie istnieje w /devweb katalogu, będzie go szukać pod głównym katalogu dokumentu. To była bardziej krucha konfiguracja niż posiadanie oddzielnego serwera programistycznego.

+0

Dlaczego było bardziej kruche? To brzmi jak sprytne rozwiązanie. Byłoby znacznie łatwiej skonfigurować niż próbować duplikować mój serwer. – mpen

+0

Zasadniczo trzeba było trochę sztuczek, aby PHP odczytało oddzielny plik konfiguracyjny dla witryny programistycznej i scaliło go z plikiem konfiguracyjnym na żywo; plus ograniczaliśmy się do używania względnych adresów URL dla obrazów, arkuszy stylów, linków wewnątrzlokacyjnych itp. –

5

Zalecam umieszczenie kodu witryny pod pełną kontrolą wersji (git lub subversion). Przetestuj i zachowaj swoje źródło na osobnym, prywatnym serwerze piaskownicy i po prostu sprawdź najnowszą stabilną wersję w witrynie produkcyjnej, kiedy tylko będzie gotowa do wydania.

Do obsługi baz danych, nawet w przypadku małych projektów, prowadzę oddzielne bazy danych dotyczące programowania i produkcji. Możesz wersję SQL używaną do generowania i utrzymywania schematu i testowania lub ładowania danych wraz z resztą witryny. Zarządzaj środowiskiem bazy danych używanym w witrynie z łatwego do oddzielenia pliku konfiguracyjnego i powiedz systemowi kontroli wersji, aby go zignorował.

Bezwzględne adresy URL będą stanowić problem. Jeśli nie możesz ich uniknąć, zawsze możesz zapisać nazwę hosta w tym samym pliku konfiguracyjnym i przeczytać ją w razie potrzeby ... z wyjątkiem oczywiście w arkuszach stylów i zasobach Javascript. Moim drugim wyborem dla tego problemu byłaby magia przepisująca URL lub jej odpowiednik na serwerze programistycznym, a mój ostatni wybór byłby po prostu kłopotliwy z plikiem /etc/hosts, kiedy chciałem przetestować funkcje, które zależą od nich.

+0

+1. Korzystanie z pewnego rodzaju systemu wersjonowania pozwala zaoszczędzić tyle czasu na migrację zmian z dev do produkcji. –

2

Mam wiele stron internetowych napisanych w CakePHP. Rozwijam i testuję na komputerze lokalnym, używając bazy danych na moim serwerze produkcyjnym (mam tylko login MySQL, który działa na mój statyczny adres IP).

Cały kod jest sprawdzana w Subversion, i wtedy mają serwera ciągłej integracji - Hudson:

https://hudson.dev.java.net/

To buduje i wdraża mój projekt na maszynie produkcyjnej. Po prostu sprawdza kod w subversion dla konkretnego projektu, a następnie uruchamia prosty skrypt do SSH/kopiuje pliki do miejsca postoju lub produkcji na serwerze. Możesz ustawić to jako proces ręczny (który mam obecnie) lub możesz ustawić to tak, aby był wdrażany po sprawdzeniu kodu. Istnieje wiele innych narzędzi CI, które można skonfigurować, aby to zrobić (mają spójrz na Xinc).

http://code.google.com/p/xinc/

chodzi o bezwzględnych adresów URL zawsze można skonfigurować coś w pliku hosta rozwiązać witrynę lokalnie na komputerze zamiast. To działa na mnie, tylko nie zapomnij zabrać go potem:)

nadzieję, że pomoże ...

2

Mam wersję config/database.php że używa zmiennej serwera php „nazwa serwera "aby określić, w którym systemie aplikacja jest uruchomiona. Następnie, kiedy sklonuję moje repozytorium git w moim systemie domowym, witrynie deweloperskiej (która ma takie same specyfikacje jak na żywo), a także na maszynie wirtualnej, wszystkie łączą się z odpowiednimi bazami danych.

Tutaj wkleiłem, ale wierzę też, że jest dostępny na stronie.

http://pastebin.com/f1a701145

+0

Oh! To całkiem sprytne rozwiązanie. Dzięki za udostępnienie :) – mpen

Powiązane problemy