Jak skonfigurować serwer Subversion (SVN) w systemie GNU / Linux - Ubuntu [zamknięte]

95

Mam laptopa z systemem Ubuntu i chciałbym działać jako serwer Subversion. Zarówno dla siebie, aby zaangażować się lokalnie, jak i dla innych zdalnie. Jakie kroki są wymagane, aby to zadziałało? Proszę podać kroki, aby:

  • Zdobądź i skonfiguruj Apache i niezbędne moduły (wiem, że są inne sposoby tworzenia serwera SVN, ale chciałbym, aby był specyficzny dla Apache)
  • Skonfiguruj bezpieczny sposób uzyskiwania dostępu do serwera (SSH / HTTPS)
  • Skonfiguruj zestaw autoryzowanych użytkowników (tak jak w przypadku, muszą oni mieć uprawnienia do zatwierdzania, ale mogą swobodnie przeglądać)
  • Sprawdź poprawność konfiguracji za pomocą początkowego zatwierdzenia (coś w rodzaju „Hello world”)

Te kroki mogą obejmować dowolną kombinację poleceń wiersza poleceń lub instrukcji aplikacji z interfejsem graficznym. Jeśli możesz, zwróć uwagę, gdzie instrukcje są specyficzne dla określonej dystrybucji lub wersji i gdzie można zamiast tego skorzystać z wyboru określonego narzędzia przez użytkownika (powiedzmy, nano zamiast vi ).

Grundlefleck
źródło
Czy mogę używać serwera Subversion na Ubuntu i klientów na dowolnej platformie? jak klient Tortoise SVN w systemie Windows?
Raheel Hasan

Odpowiedzi:

146

Kroki, które podjąłem, aby mój laptop stał się serwerem Subversion. Kredytowa musi iść do AlephZarro dla swoich kierunkach tutaj . Mam teraz działający serwer SVN (który został przetestowany tylko lokalnie).

Specyficzna konfiguracja: Kubuntu 8.04 Hardy Heron

Wymagania dotyczące przestrzegania tego przewodnika:

  • program menedżera pakietów apt-get
  • edytor tekstu (używam Kate)
  • prawa dostępu sudo

1: Zainstaluj serwer Apache HTTP i wymagane moduły:

sudo apt-get install libapache2-svn apache2

Zostaną zainstalowane następujące dodatkowe pakiety:

apache2-mpm-worker apache2-utils apache2.2-common

2: Włącz SSL

sudo a2enmod ssl
sudo kate /etc/apache2/ports.conf

Dodaj lub sprawdź, czy w pliku znajduje się:

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

3: Wygeneruj certyfikat SSL:

sudo apt-get install ssl-cert
sudo mkdir /etc/apache2/ssl
sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

4: Utwórz wirtualnego hosta

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/svnserver
sudo kate /etc/apache2/sites-available/svnserver

Zmień (w ports.conf):

"NameVirtualHost *" to "NameVirtualHost *:443"

i (w svnserver)

<VirtualHost *> to <VirtualHost *:443>

Dodaj, pod ServerAdmin (również w pliku svnserver):

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM

5: Włącz witrynę:

sudo a2ensite svnserver
sudo /etc/init.d/apache2 restart

Aby obejść ostrzeżenia:

sudo kate /etc/apache2/apache2.conf

Dodaj:

"ServerName $your_server_name"

6: Dodawanie repozytoriów: Poniższa konfiguracja zakłada, że ​​chcemy obsługiwać wiele repozytoriów. Uruchom to, aby utworzyć pierwsze repozytorium:

sudo mkdir /var/svn

REPOS=myFirstRepo
sudo svnadmin create /var/svn/$REPOS
sudo chown -R www-data:www-data /var/svn/$REPOS
sudo chmod -R g+ws /var/svn/$REPOS

6.a. W przypadku większej liczby repozytoriów: ponownie wykonaj krok 6 (zmieniając wartość REPOS), pomijając ten krokmkdir /var/svn

7: Dodaj uwierzytelnionego użytkownika

sudo htpasswd -c -m /etc/apache2/dav_svn.passwd $user_name

8: Włącz i skonfiguruj WebDAV i SVN:

sudo kate /etc/apache2/mods-available/dav_svn.conf

Dodaj lub usuń komentarz:

<Location /svn>
DAV svn

# for multiple repositories - see comments in file
SVNParentPath /var/svn

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
SSLRequireSSL
</Location>

9: Zrestartuj serwer Apache:

sudo /etc/init.d/apache2 restart

10: Walidacja:

Uruchomiono przeglądarkę:

http://localhost/svn/$REPOS
https://localhost/svn/$REPOS

Oba wymagały nazwy użytkownika i hasła. Myślę, że odkomentowanie:

<LimitExcept GET PROPFIND OPTIONS REPORT>

</LimitExcept>

in /etc/apache2/mods-available/dav_svn.conf, pozwoliłoby na anonimowe przeglądanie.

Przeglądarka pokazuje „Wersja 0: /”

Zaangażuj się:

svn import --username $user_name anyfile.txt https://localhost/svn/$REPOS/anyfile.txt -m “Testing”

Zaakceptuj certyfikat i wprowadź hasło. Sprawdź, co właśnie popełniłeś:

svn co --username $user_name https://localhost/svn/$REPOS

Po wykonaniu tych kroków (zakładając, że nie wykonałem żadnego błędu podczas kopiowania / wklejania), miałem działające repozytorium SVN na moim laptopie.

Grundlefleck
źródło
Instrukcje działały doskonale również w przypadku Jaunty. Dzięki!
Michael Moussa
6
Wydawało się, że działa idealnie, ale próbując uzyskać do niego dostęp, otrzymuję zabroniony kod 403 i brak monitu o hasło. Jakieś wskazówki, co może być nie tak?
korona
@korona: Jak uzyskać do niego dostęp: uruchamianie poleceń SVN lub przeglądanie go?
Grundlefleck
1
"NameVirtualHost *" to "NameVirtualHost *:443"znajduje się w ports.conf, podczas gdy <VirtualHost *> to <VirtualHost *:443>jest w ustawieniach svnserver. należy o tym wspomnieć. Byłem dość zdezorientowany, ponieważ szukałem w ustawieniach serwera svnservera NameVirtualHost i nie mogłem go znaleźć.
Wandang
1
Wydaje się, że w Debian Stretch musisz zainstalować libapache2-mod-svnzamiast libapache2-svn(ponieważ ta ostatnia nie jest już dostępna).
TheStoryCoder
2

Potem musiałem wykonać (w kontekście przytoczonego powyżej przykładu)

$ sudo chmod g + w /var/svn/$REPOS/db/rep-cache.db

$ sudo chown www-data: www-data /var/svn/$REPOS/db/rep-cache.db

W przeciwnym razie otrzymywałem błąd 409 podczas wprowadzania lokalnych modyfikacji (chociaż zobowiązania były skuteczne po stronie serwera, musiałem śledzić lokalne aktualizacje)

Thierry Marianne
źródło
1

Ten artykuł wydaje się być całkiem niezłym podsumowaniem całego procesu. Poleciłbym postępować zgodnie z instrukcjami, a następnie opublikować kilka bardziej szczegółowych pytań dotyczących wszelkich napotkanych problemów, które nie są omówione w artykułach, do których ja i inne osoby dołączyliśmy w tych odpowiedziach.

Kibbee
źródło
1

Jeśli otrzymasz 403 zabronione, gdy trafisz na serwer WWW, może to być spowodowane tym, że użyłeś nazwy hosta, która nie jest taka, jaką podałeś w pliku konfiguracyjnym (np. Localhost lub 127.0.0.1). Zamiast tego spróbuj wpisać https: // whateveryousetasyourhostname ...

PuO2
źródło
Kolejna 403 przyczyna: ustaw ścieżkę svn na dowiązanie symboliczne. Jeśli twoja ścieżka svn jest dowiązaniem symbolicznym, musisz zezwolić na następujące dowiązania symboliczne.
copolii
-2

Wpisz jedno polecenie na terminalu.

Aby otworzyć terminal, naciśnij Ctrl+ Alt+ T, a następnie wpisz to polecenie:

$sudo apt-get install subversion
Ashish Saini
źródło
-2

Apache:

sudo apt-get -yq install apache2

W przypadku SSH:

sudo apt-get -yq install openssh-server

W przypadku Subversion:

sudo apt-get -yq install subversion subversion-tools

Jeśli chcesz, możesz połączyć je w jedno polecenie, takie jak:

sudo apt-get -yq install apache2 openssh-server subversion subversion-tools

Nie mogę pomóc z resztą ...

UnkwnTech
źródło