Як налаштувати сервер Subversion (SVN) на GNU / Linux - Ubuntu [закрито]


95

У мене є ноутбук під управлінням Ubuntu, який я хотів би виступати в ролі сервера Subversion. Як для себе, з якими я зобов’язуюсь виконувати функції на місцевому рівні, так і для інших віддалено. Які кроки потрібно зробити, щоб це працювало? Включіть кроки, щоб:

  • Отримайте та налаштуйте Apache та необхідні модулі (я знаю, що існують інші способи створення SVN-сервера, але я хотів би, щоб це стосувалося Apache)
  • Налаштування безпечного способу доступу до сервера (SSH / HTTPS)
  • Налаштуйте набір авторизованих користувачів (як, наприклад, вони повинні мати дозвіл на фіксацію, але можуть вільно переглядати)
  • Перевірте налаштування за допомогою початкового коміту (свого роду "Привіт світ")

Ці кроки можуть включати будь-яку суміш командних рядків або інструкцій із застосування графічного інтерфейсу. Якщо можете, зауважте, де інструкції стосуються конкретного дистрибутиву чи версії, і де замість цього можна використовувати вибір користувачем певного інструменту (скажімо, nano замість vi ).


Чи можу я використовувати сервер Subversion на Ubuntu та клієнтів на будь-якій платформі? як клієнт Tortoise SVN у Windows?
Raheel Hasan

Відповіді:


146

Кроки, які я зробив, щоб зробити свій ноутбук сервером Subversion. Кредит повинен надійти AlephZarro за його вказівками тут . Зараз у мене працює робочий SVN-сервер (який наразі протестовано лише локально).

Конкретне налаштування: Kubuntu 8.04 Hardy Heron

Вимоги дотримуватися цього посібника:

  • програма менеджера пакетів apt-get
  • текстовий редактор (я використовую kate)
  • права доступу sudo -

1: Встановіть сервер Apache HTTP та необхідні модулі:

sudo apt-get install libapache2-svn apache2

Будуть встановлені наступні додаткові пакети:

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

2: Увімкнути SSL

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

Додайте або перевірте, чи є у файлі таке:

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

3: Створіть сертифікат 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: Створіть віртуальний хост

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

Зміна (у ports.conf):

"NameVirtualHost *" to "NameVirtualHost *:443"

та (у svnserver)

<VirtualHost *> to <VirtualHost *:443>

Додайте в розділі ServerAdmin (також у файлі svnserver):

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

5: Увімкнути сайт:

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

Щоб подолати попередження:

sudo kate /etc/apache2/apache2.conf

Додати:

"ServerName $your_server_name"

6: Додавання сховищ (ів): Наступне налаштування передбачає, що ми хочемо розмістити кілька сховищ. Запустіть це для створення першого сховища:

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.а. Щоб отримати більше сховищ: повторіть крок 6 (змінивши значення REPOS), пропустивши крокmkdir /var/svn

7: Додайте автентифікованого користувача

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

8: Увімкнення та налаштування WebDAV та SVN:

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

Додати або розкоментувати:

<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: Перезапустіть сервер apache:

sudo /etc/init.d/apache2 restart

10: Перевірка:

Запустив браузер:

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

Обидва вимагали ім’я користувача та пароль. Думаю, коментуючи:

<LimitExcept GET PROPFIND OPTIONS REPORT>

</LimitExcept>

в /etc/apache2/mods-available/dav_svn.conf, дозволить анонімний перегляд.

У браузері відображається "Версія 0: /"

Здійснити щось:

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

Прийміть сертифікат і введіть пароль. Перевірте, що ви щойно зробили:

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

Слідуючи цим крокам (припускаючи, що я не зробив жодної помилки при копіюванні / вставці), у мене на ноутбуці працював сховище SVN.


Інструкції прекрасно працювали і на Дженті. Дякую!
Michael Moussa,

6
Здається, це працює бездоганно, але я отримую 403 заборонених при спробі отримати до нього доступ, і немає запиту на введення пароля. Будь-які натяки на те, що може бути неправильним?
korona

@korona: Яким чином отримати до нього доступ: запускати команди SVN або переглядати їх?
Grundlefleck

1
"NameVirtualHost *" to "NameVirtualHost *:443"знаходиться в ports.conf, а <VirtualHost *> to <VirtualHost *:443>знаходиться у налаштуваннях svnserver. про це слід згадати. я досить заплутався, бо шукав у налаштуваннях svnserver NameVirtualHost і не міг його знайти.
Ванданг

1
У Debian Stretch здається, вам потрібно встановити libapache2-mod-svnзамість libapache2-svn(оскільки остання вже недоступна).
TheStoryCoder

2

Згодом мені потрібно було виконати (в контексті наведеного вище прикладу)

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

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

В іншому випадку я продовжував отримувати помилку 409 під час здійснення локальних модифікацій (хоча зобов’язання діяли на стороні сервера, мені потрібно було стежити за локальними оновленнями)


1

Здається, ця стаття дає досить хороший підсумок усього процесу. Я рекомендую слідувати інструкціям, а потім опублікувати деякі більш конкретні запитання щодо будь-яких проблем, з якими ви стикаєтесь, які не розглядаються в статтях, на які я та інші люди посилалися у цих відповідях.


1

Якщо під час потрапляння на веб-сервер ви отримуєте заборонені 403, можливо, це пов’язано з тим, що ви використовували ім’я хосту, яке не відповідає вашому конфігураційному файлу (тобто localhost або 127.0.0.1). Спробуйте натомість натиснути https: // whateveryousetasyourhostname ...


Ще одна причина 403: встановити шлях svn до символьного посилання. Якщо ваш шлях svn є символічним посиланням, вам доведеться дозволити наступні символічні посилання.
copolii

-2

Будь ласка, напишіть одну команду на терміналі.

Щоб відкрити термінал, натисніть Ctrl+ Alt+ T, а потім введіть цю команду:

$sudo apt-get install subversion

-2

Для апачів:

sudo apt-get -yq install apache2

Для SSH:

sudo apt-get -yq install openssh-server

Для Subversion:

sudo apt-get -yq install subversion subversion-tools

Якщо ви хочете, ви можете об'єднати їх в одну команду, наприклад:

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

Я не можу допомогти з рештою ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.