Mam kilka projektów personnalnych PHP na współdzielonym hostingu; Oto kilka przemyśleń, od tego, co robię na jednym z tych (ten, który jest najbardziej aktywny, i potrzebuje co najmniej półautomatycznej synchronizacji):
Kilka słów o mojej konfiguracji :
- Jakiś czas temu, miałem wszystko na SVN; teraz używam bazaar; ale idea jest taka sama (z wyjątkiem, z bazaru, mam lokalnej historii i wszystko)
- Mam dostęp SSH do serwera produkcyjnego, jak ty
- pracuję na Linuksie exclusivly (tak co zrobić, może nie być tak łatwo z oknami)
teraz jak pracuję:
- Wszystko, co ma te znajdować się na serwerze produkcyjnym (kodu źródłowego, obrazy, .. .) jest zobowiązana do SVN/bazarr/cokolwiek
- pracuję lokalnie, z Apache/PHP/MySQL (używam zrzut DB produkcyjnej importować lokalnie raz na jakiś czas)
- jestem jedynym praca nad tym projektem; Prawdopodobnie byłoby to w porządku dla małego zespołu złożonego z 2/3 programistów, ale nie więcej.
co zrobiłem wcześniej:
- miałem jakiś skrypt PHP, który sprawdzany serwer SVN do modyfikacji pomiędzy "ostatniej rewizji popychany do produkcji" i szef
- zgaduję to domowej roboty Skrypt PHP wygląda jak skrypt Perla, którego obecnie używasz ^^
- Ten skrypt zbudował listę katalogów/plików do przesłania do produkcji
- I przesłałem te przez FTP dostęp
- To nie było bardzo satysfakcjonujące (były błędy w moim skrypcie, przypuszczam; Nigdy nie miałem czasu, aby je poprawić); i zmusił mnie do zapamiętania numer wersji po raz ostatni I pchnął do produkcji (dobrze, było automatycznie zapisywane w pliku przez skrypt, więc nie jest trudno ^^)
Co mam teraz zrobić:
- po przełączeniu na bazarze nie chciałem przerobić ten skrypt, który nie działa bardzo dobrze i tak
- I spadły skrypt całkowicie
- Jak mam ssh dostępu do serwera produkcyjnego , Używam rsync do synchronizacji od mojej maszyny programistycznej po serwer produkcyjny, kiedy to, co mam lokalnie, jest uważane za stabilne/gotowe do produkcji.
Kilka uwag na temat tego sposobu robienia rzeczy:
- nie mam serwera pomostowego: moja lokalna konfiguracja jest wystarczająco blisko jeden
- nieposiadające serwera pomostowego produkcji za jest OK, z prostego projektu z jednym lub dwoma developpers
- Gdybym serwera pomostowego, pewnie bym go z:
- zrobić „svn update” na niego, gdy chcesz STA ge
- gdy jest OK, uruchom polecenie rsync z serwera pomostowego (który będzie ba w najnowszej „stabilnej” wersji, więc OK, aby być przekazywane do produkcji)
- Z większego projektu, z więcej programistów, prawdopodobnie nie chciałbym wykonywać tego rodzaju konfiguracji; ale uważam, że jest to całkiem w porządku dla (niezbyt dużego) projektu osobowości.
Jedyne "specjalne" tutaj, co może być "linux-zorientowanych" jest za pomocą rsync; szybkie wyszukiwanie wydaje się wskazywać na plik wykonywalny rsync, który można zainstalować w systemie Windows: http://www.itefix.no/i2/node/10650
Jednak nigdy tego nie próbowałem.
Jak sidenote, oto co moje polecenie rsync wygląda następująco:
rsync --checksum \
--ignore-times \
--human-readable \
--progress \
--itemize-changes \
--archive \
--recursive \
--update \
--verbose \
--executability \
--delay-updates \
--compress --skip-compress=gz/zip/z/rpm/deb/iso/bz2/t[gb]z/7z/mp[34]/mov/avi/ogg/jpg/jpeg/png/gif \
--exclude-from=/SOME_LOCAL_PATH/ignore-rsync.txt \
/LOCAL_PATH/ \
[email protected]:/REMOTE_PATH/
Używam prywatne/publiczne klucze mecanism, więc rsync nie pyta o hasło, btw.
I, oczywiście, ja zazwyczaj używają tego samego polecenia w trybie „na sucho” Po pierwsze, aby zobaczyć, co dzieje się synchorised, z opcją „--dry-run
”
A ignore-rsync.txt
zawiera listę pliki, które nie chcą być odłożony do produkcji:
.svn
cache/cbfeed/*
cache/cbtpl/*
cache/dcstaticcache/*
cache/delicious.cache.html
cache/versions/*
Tutaj, po prostu zapobiec katalogi cache musi być odłożony do produkcji - wydaje się logiczne, aby nie wysyłać tych, jako dane produkcja nie jest taka sama jak rozwój dane.
(Ja tylko zauważyć tam jeszcze „.svn
” w tym pliku ... mogę go usunąć, ponieważ nie używam SVN już dla tego projektu ^^)
Nadziei to pomaga trochę ...
Bardzo dziękuję. Wciąż zdumiewa mnie nieraz wysiłek, jaki ludzie tacy jak ty wkładają w odpowiedzi z taką szczegółowością i jasnością. – zenna
Nie ma za co :-) (Niektóre odpowiedzi dostaję i/lub widzę też mnie zadziwić ;-), więc kiedy mogę pomóc ... cóż, po to właśnie jest SO!) –