Migracja z Windows/Linux na Linux
Poniżej opisane są najważniejsze rzeczy które należy wziąć pod uwagę przy przenoszeniu systemu z Windows/Linux na Linux.
Migracja będzie wymagać:
- skopiowania plików systemu C:\Program Files\BetaSoft\eDokumenty\public_html do /home/edokumenty/public_html,
- eksportu bazy
pg_dump -U postgres -f edokumenty.sql edokumenty
- importu bazy na Linux
psql -U postgres -f edokumenty.sql edokumenty
- ustawienia właściwych praw do pliku (opisane w innym miejsu wiki)
- przeniesienia plików katalogu files
- przeniesienia plików repozytorium SVN, które jest szerzej opisane poniżej.
Czynności wstępne
Proces migracji danych na system Linux należy rozpocząć od przygotowania środowiska, czyli zainstalowania Apache'a, PHP, PostgreSQL oraz innych bibliotek w odpowiedniej wersji. Problem ten opisuje odpowiedni artykuł.
Migracja katalogu public_html
Jeżeli posiadamy przygotowany system, należy w pierwszej kolejności przekopiować system eDokumentów, czyli całego katalog public_html. Z poziomu Windows-a można wysłać z poziomu "starej" maszyny na nowy serwer przez SSH (używając narzędzi graficznych np. FileZilla, WinSCP lub innych). Pliki należy wrzucić do katalogu /home/edokumenty/ nadpisując istniejący katalog public_html.
Zanim jednak rozpoczniemy prace, to sugeruje się, aby wyczyścić katalog public_html/apps/edokumenty/var/tmp na dotychczasowym serwerze edokumentów. Znajdują się tam pliki tymczasowej, których kopiowanie nie ma sensu.
Jeżeli migrujemy z linuksa to z dowolnej maszyny możemy wykorzystać polecenie rsync (jako użytkownik root) np.
rsync -azP root@10.0.0.5:/home/edokumenty/public_html/ /home/edokumenty/public_html
W powyższym przykładzie kopiowanie odbywa sie konsoli "nowej" - docelowej maszyny, z której polecenie rsync pobiera dane. Należy pamiętać o ustawieniu po skończonym procesie uprawnień do katalogów :
- public_html
- files
- maildir
- repos
- repository
Po przekopiowaniu systemu należy przejść dalej do kopiowania plików i repozytorium
Kopiowanie plików
Kopiowanie plików należy wykonać korzystając z narzędzia rsync:
rsync -azP root@10.0.0.5:/home/edokumenty/files/ /home/edokumenty/files
Kopiowanie może zająć nieco czasu :-)
Przenoszenie repozytorium
Na Windows przed wykonaniem zrzutu sprawdzamy integralność repozytorium funkcją "Narzędzia > Integralność repozytorium" Co się da naprawiamy z eDokumenty. Resztę można ręcznie:
su - www-data cd /home/edokumenty/ mkdir repository
Następnie patrząc na listę
- te pliki które mają poczatek od ? dodajemy do repozytorium czyli svn add <file>
- te które maja literkę A zatwierdzamy czyli comitujemy svn ci -m "" <file>
Następnie wykonujemy zrzut:
@set edok_dir=C:\Program Files\BetaSoft\eDokument svnadmin dump "%edok_dir%\repo" > repos.dump
Następnie kopiujemy plik repos.dump na serwer z Linux i umieszczamy w katalogu /home/edokumenty. Następnie umożliwiamy chwilowy zapis użytkownikowi www-data do katalogu /home/edokumenty i przechodzimy na usera www-data i zakładamy repozytorium:
#chmod o+w /home/edokumenty #su - www-data $cd /home/edokumenty $svnadmin create repos
Następnie nadal z użytkownika www-data zaimportujemy pliki do repozytorium.
cd /home/edokumenty svnadmin load repos < repos.dump
W tym momencie powinny pojawiać się komunikaty z polecenia load, zatwierdzam wersję 1, 2, 3... itd. Następnie możemy pobrać zawartość repozytorium do lokalnej kopii umieszczonej w sąsiednim katalogu /home/edokumenty/repository. Wykonujemy to poleceniem checkout (w skrócie co).
cd /home/edokumenty/repository svn co file:///home/edokumenty/repos .
Polecenie to pobiera do katalogu /home/edokumenty/repository zawartosć bazy SVN.
Polecenie powinno zwracać dla każdego dodawanego pliku informację Pobieram 2009/09...
W efekcie listując zawartośc repository widzimy katalogi 2008, 2009, 2010 itp.
Jeżeli na źródłowym serwerze po wpisaniu komendy pojawią się nie zkomitowane dokumenty
su - www-data cd /home/edokumenty/reposioty svn st
Widok nie zkomitowanych dokumentów repozytorium
#widok dla Linux /home/eDokumenty/repository>svn st M 2015\12\23\file_1676.txt ? repos #widok dla Windows C:\www\eDokumenty\repository>svn st M 2015\12\23\file_1676.txt ? repos
Należy przed przeniesieniem plików wykonać polecenie usunięcia plików .svn
# Wyszukiwanie find . -name .svn # Usuwanie find . -name .svn -type d -print0 | xargs -0 rm -r --
GOTOWE! Gratulacje dobrej decyzji.
Ps. Dla posiadaczy starszych wersji systemu < 2.0 należy zwrócić uwagę czy struktura katalogów zaczynała się od repository_2 czy samo repository i odpowiednio zmodyfikować ścieżki.