Wyszukiwanie w witrynie

Kompletny przewodnik po konfigurowaniu Apache Subversion SVN i TortoiseSVN do kontroli wersji


Jeśli Twoja praca wymaga obsługi dokumentów, stron internetowych i innych rodzajów plików, które są regularnie aktualizowane, możesz skorzystać z mechanizmu kontroli wersji, jeśli jeszcze tego nie robisz.

Między innymi pozwala to Tobie (i grupie potencjalnych współpracowników) śledzić zmiany wprowadzone w danym pliku i pozwala przywrócić poprzednią wersję, jeśli napotkany zostanie problem lub gdy aktualizacja nie przyniosła oczekiwanych rezultatów .

W ekosystemie wolnego oprogramowania najczęściej używany system kontroli wersji nazywa się Apache Subversion (lub w skrócie SVN). Za pomocą mod_dav_svn (modułu Apache dla Subversion) możesz uzyskać dostęp do repozytorium Subversion za pomocą protokołu HTTP i serwera WWW.

To powiedziawszy, zakasujmy rękawy i zainstalujmy te narzędzia na RHEL/CentOS 7, Fedora 22-24, Debian 8/7 i Serwer Ubuntu 16.04–15.04. Do naszych testów użyjemy serwera CentOS 7 z adresem IP 192.168.0.100.

Po stronie klienta (komputer Windows 7) zainstalujemy i będziemy używać TortoiseSVN (opartego na Apache Subversion) jako interfejsu do SVN.

Nasze środowisko testowe


Server - CentOS 7
IP Address - 192.168.0.100
Client - Windows 7

Krok 1 – Instalacja i konfiguracja SVN w systemie Linux

Jak już wspomnieliśmy, będziemy polegać na Apache, aby uzyskać dostęp do repozytorium SVN za pomocą interfejsu internetowego. Jeśli nie jest jeszcze zainstalowany, pamiętaj o dodaniu go do listy pakietów, jak pokazano poniżej:


------------------ On CentOS / RHEL / Fedora ------------------ 
yum update && yum install mod_dav_svn subversion httpd -y

------------------ On Debian / Ubuntu ------------------ 
apt-get update && apt-get install libapache2-svn subversion apache2 -y 

Podczas instalacji w CentOS 7 plik konfiguracyjny Apache dla SVN zostanie utworzony jako /etc/httpd/conf.modules.d/10-subversion.conf. Otwórz plik i dodaj następujący blok konfiguracyjny:


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/httpd/subversion-auth
    Require valid-user
</Location>

Uwaga: w Debianie/Ubuntu musisz dodać poniższe linie do /etc/apache2/mods-enabled/dav_svn.conf plik.


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/apache2/subversion-auth
    Require valid-user
</Location>

Na Debianie/Ubuntu musisz włączyć moduł dav_svn Apache:


a2enmod dav_svn

Kilka wyjaśnień:

  1. Dyrektywa SVNParentPath wskazuje katalog, w którym później zostaną utworzone nasze repozytoria. Jeśli ten katalog nie istnieje (co jest najprawdopodobniej prawdą), utwórz go za pomocą:

    
    mkdir -p /websrv/svn
    

    Należy pamiętać, że katalog ten NIE może znajdować się w katalogu DocumentRoot hosta wirtualnego aktualnie obsługiwanego przez Apache ani nakładać się na niego. To jest hit!

  2. Dyrektywa AuthUserFile wskazuje plik, w którym będą przechowywane poświadczenia prawidłowego użytkownika. Jeśli chcesz zezwolić wszystkim na dostęp do SVN bez uwierzytelniania, usuń ostatnie cztery linie z bloku Lokalizacja. W takim przypadku pomiń Krok 2 i przejdź bezpośrednio do Kroku 3.
  3. Chociaż może Cię kusić ponowne uruchomienie Apache w celu zastosowania tych ostatnich zmian, nie rób tego jeszcze, ponieważ nadal musimy utworzyć plik uwierzytelniający z prawidłowymi użytkownikami dla SVN i samego repozytorium.

Krok 2 – Dodaj dozwolonych użytkowników do dostępu do SVN

Użyjemy teraz htpasswd do utworzenia hasła dla kont, które będą miały dostęp do SVN. Tylko dla pierwszego użytkownika będziemy potrzebować opcji -c.

Dozwolone konta i hasła zaszyfrowane za pomocą szyfrowania bcrypt (-B) będą przechowywane w /etc/httpd/subversion-auth w parach klucz-wartość. Należy pamiętać, że według dzisiejszych standardów domyślne szyfrowanie MD5 lub SHA używane przez htpasswd jest uważane za niebezpieczne.


------------------ On CentOS / RHEL / Fedora ------------------ 
htpasswd -cB /etc/httpd/subversion-auth tecmint

------------------ On Debian / Ubuntu ------------------ 
htpasswd -cB /etc/apache2/subversion-auth tecmint

Nie zapomnij ustawić praw własności i uprawnień do pliku uwierzytelniającego:


------------------ On CentOS / RHEL / Fedora ------------------ 
chgrp apache /etc/httpd/subversion-auth
chmod 660 /etc/httpd/subversion-auth

------------------ On Debian / Ubuntu ------------------ 
chgrp www-data /etc/apache2/subversion-auth
chmod 660 /etc/apache2/subversion-auth

Krok 3 – Dodaj zabezpieczenia i utwórz repozytorium SVN

Ponieważ będziesz mieć dostęp do SVN poprzez interfejs internetowy, musisz zezwolić na ruch HTTP (i opcjonalnie HTTPS) przez swoją zaporę ogniową.


------------------ On CentOS / RHEL / Fedora ------------------ 
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload 

Po ponownym załadowaniu konfiguracji zapory sieciowej za pomocą --reload stałe ustawienia zostaną natychmiast zastosowane.

Utwórz początkowe repozytorium SVN o nazwie tecmint:


svnadmin create /websrv/svn/tecmint

Zmień rekursywnie właściciela i właściciela grupy na Apache:


------------------ On CentOS / RHEL / Fedora ------------------ 
chown -R apache:apache /websrv/svn/tecmint

------------------ On Debian / Ubuntu ------------------ 
chown -R www-data:www-data /websrv/svn/tecmint

Na koniec będziesz musiał zmienić kontekst bezpieczeństwa /websrv/svn/tecmint (pamiętaj, że będziesz musiał powtórzyć ten krok, jeśli później zdecydujesz się utworzyć inne repozytoria):


------------------ On CentOS / RHEL / Fedora ------------------ 
chcon -R -t httpd_sys_content_t /websrv/svn/tecmint/
chcon -R -t httpd_sys_rw_content_t /websrv/svn/tecmint/

Uwaga: dwa ostatnie polecenia mogą nie mieć zastosowania, jeśli instalujesz SVN na VPS z wyłączonym SELinux.

Sugerowana lektura: Dowiedz się, jak tymczasowo lub na stałe wyłączyć SELinux w systemie Linux

Uruchom ponownie Apache i sprawdź, czy repozytorium jest dostępne.


------------------ On CentOS / RHEL / Fedora ------------------ 
systemctl restart httpd

------------------ On Debian / Ubuntu ------------------ 
systemctl restart apache2

Następnie uruchom przeglądarkę internetową i wskaż ją http://192.168.0.100/svn/tecmint. Po wprowadzeniu danych uwierzytelniających prawidłowego użytkownika, którego utworzyliśmy w Kroku 1, wynik powinien być podobny do:

W tym momencie nie dodaliśmy żadnego kodu do naszego repozytorium. Ale zrobimy to za chwilę.

Krok 4 – Zainstaluj TortoiseSVN na kliencie Windows 7

Jak wspomnieliśmy we wstępie, TortoiseSVN to przyjazny dla użytkownika interfejs Apache Subversion. Jest to bezpłatne oprogramowanie na licencji GPL, które można pobrać ze strony https://tortoisesvn.net/downloads.html.

Wybierz architekturę (32 lub 64-bit) odpowiadającą Twojemu komputerowi i zainstaluj program przed kontynuowaniem.

Krok 5 – Skonfiguruj repozytorium SVN na komputerze klienckim

W tym kroku użyjemy folderu o nazwie webapp znajdującego się w Dokumentach. Ten folder zawiera plik HTML oraz dwa foldery o nazwach scripts istyles z plikiem JavaScript i CSS (odpowiednio script.js i styles.css), które chcemy dodać do kontroli wersji.

Kliknij prawym przyciskiem aplikację internetową i wybierz SVN Checkout. Spowoduje to utworzenie lokalnej kopii zdalnego repozytorium (które w tej chwili jest puste) i zainicjalizowanie folderu do kontroli wersji:

W adresie URL repozytorium wpisz http://192.168.0.100/svn/tecmint i upewnij się, że lokalny katalog realizacji transakcji pozostaje ten sam, a następnie kliknij OK:

Wpisz nazwę użytkownika i hasło (patrz Krok 2) i kliknij OK:

Zostaniesz zapytany, czy chcesz dokonać transakcji w niepustym katalogu. Potwierdź, aby kontynuować realizację transakcji. Po zakończeniu obok nazwy folderu pojawi się zielony znacznik wyboru:

Krok 6 – Zatwierdź zmiany i wdróż pliki do zdalnego repozytorium SVN

Kliknij ponownie prawym przyciskiem aplikację internetową i tym razem wybierz Zatwierdź. Następnie napisz opisowy komentarz, aby później zidentyfikować to zatwierdzenie, i sprawdź pliki i foldery, które chcesz wdrożyć w repozytorium. Na koniec kliknij OK:

W zależności od rozmiaru plików zatwierdzenie nie powinno zająć więcej niż minutę. Po zakończeniu zobaczysz, że pracujemy nad wersją 1, która odpowiada wersji i plikom wymienionym w interfejsie internetowym:

Jeśli nad tymi samymi plikami pracuje kilka osób, warto zaktualizować swoją kopię lokalną, aby mieć dostęp do najnowszej wersji. Możesz to zrobić, klikając prawym przyciskiem myszy aplikacja internetowa i wybierając Aktualizuj z menu kontekstowego.

Gratulacje! Pomyślnie skonfigurowałeś serwer SVN i zatwierdziłeś/zaktualizowałeś prosty projekt pod kontrolą wersji.

Streszczenie

W tym artykule wyjaśniliśmy, jak zainstalować i skonfigurować serwer repozytorium Apache Subversion na serwerze CentOS 7 oraz jak zatwierdzić zmiany w tym repozytorium za pomocą TortoiseSVN.

Pamiętaj, że SVN i TortoiseSVN to znacznie więcej, niż możemy tutaj odpowiednio opisać (szczególnie jak wrócić do poprzednich wersji), więc możesz odnieść się do oficjalnego docs (SVN i TortoiseSVN), aby uzyskać więcej informacji i przypadków konfiguracji.

Jak zawsze, nie wahaj się dać nam znać, jeśli masz jakiekolwiek pytania! Aby w każdej chwili skontaktować się z nami, możesz skorzystać z poniższego formularza komentarza.