Cách thiết lập máy chủ Subversion (SVN) trên GNU / Linux - Ubuntu [đã đóng]


95

Tôi có một máy tính xách tay chạy Ubuntu mà tôi muốn hoạt động như một máy chủ Subversion. Cả cho bản thân tôi để cam kết cục bộ và cho những người khác từ xa. Các bước cần thiết để làm việc này là gì? Vui lòng bao gồm các bước để:

  • Nhận và cấu hình Apache và các mô-đun cần thiết (Tôi biết có nhiều cách khác để tạo máy chủ SVN, nhưng tôi muốn nó dành riêng cho Apache)
  • Định cấu hình cách truy cập máy chủ an toàn (SSH / HTTPS)
  • Định cấu hình một nhóm người dùng được ủy quyền (như trong, họ phải được ủy quyền để cam kết, nhưng được duyệt miễn phí)
  • Xác thực thiết lập với một cam kết ban đầu ("Hello world" của các loại)

Các bước này có thể liên quan đến bất kỳ hỗn hợp dòng lệnh hoặc hướng dẫn ứng dụng GUI nào. Nếu bạn có thể, hãy lưu ý nơi hướng dẫn dành riêng cho một bản phân phối hoặc phiên bản cụ thể và nơi người dùng lựa chọn một công cụ cụ thể có thể được sử dụng thay thế (ví dụ: nano thay vì vi ).


Tôi có thể sử dụng máy chủ Subversion trên Ubuntu và máy khách trên bất kỳ nền tảng nào không? như ứng dụng khách Tortoise SVN trên windows?
Raheel Hasan

Câu trả lời:


146

Các bước tôi đã thực hiện để biến máy tính xách tay của mình thành máy chủ Subversion. Credit phải đến AlephZarro để được chỉ đường ở đây . Bây giờ tôi có một máy chủ SVN đang hoạt động (hiện chỉ mới được thử nghiệm cục bộ).

Thiết lập cụ thể: Kubuntu 8.04 Hardy Heron

Yêu cầu để làm theo hướng dẫn này:

  • chương trình quản lý gói apt-get
  • trình soạn thảo văn bản (tôi sử dụng kate)
  • quyền truy cập sudo

1: Cài đặt máy chủ Apache HTTP và các mô-đun bắt buộc:

sudo apt-get install libapache2-svn apache2

Các gói bổ sung sau sẽ được cài đặt:

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

2: Bật SSL

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

Thêm hoặc kiểm tra xem phần sau có trong tệp không:

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

3: Tạo chứng chỉ 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: Tạo máy chủ ảo

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

Thay đổi (trong port.conf):

"NameVirtualHost *" to "NameVirtualHost *:443"

và (trong svnserver)

<VirtualHost *> to <VirtualHost *:443>

Thêm, trong ServerAdmin (cũng trong tệp svnserver):

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

5: Kích hoạt trang web:

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

Để vượt qua cảnh báo:

sudo kate /etc/apache2/apache2.conf

Thêm vào:

"ServerName $your_server_name"

6: Thêm (ies) kho lưu trữ: Thiết lập sau giả sử chúng ta muốn lưu trữ nhiều kho lưu trữ. Chạy điều này để tạo kho lưu trữ đầu tiên:

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. Để có thêm kho: thực hiện lại bước 6 (thay đổi giá trị của REPOS), bỏ qua bướcmkdir /var/svn

7: Thêm người dùng đã xác thực

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

8: Kích hoạt và cấu hình WebDAV và SVN:

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

Thêm hoặc bỏ ghi chú:

<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: Khởi động lại máy chủ apache:

sudo /etc/init.d/apache2 restart

10: Xác thực:

Kích hoạt một trình duyệt:

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

Cả hai đều yêu cầu tên người dùng và mật khẩu. Tôi nghĩ khó chịu:

<LimitExcept GET PROPFIND OPTIONS REPORT>

</LimitExcept>

trong /etc/apache2/mods-available/dav_svn.conf, sẽ cho phép duyệt ẩn danh.

Trình duyệt hiển thị "Bản sửa đổi 0: /"

Cam kết một cái gì đó:

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

Chấp nhận chứng chỉ và nhập mật khẩu. Kiểm tra những gì bạn vừa cam kết:

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

Làm theo các bước sau (giả sử tôi không thực hiện bất kỳ lỗi sao chép / dán nào), tôi đã có một kho lưu trữ SVN đang hoạt động trên máy tính xách tay của mình.


Hướng dẫn cũng hoạt động hoàn hảo trên Jaunty. Cảm ơn!
Michael Moussa

6
Có vẻ như hoạt động hoàn hảo, nhưng tôi nhận được lệnh cấm 403 khi cố gắng truy cập và không có lời nhắc nhập mật khẩu. Bất kỳ gợi ý về những gì có thể sai?
korona

@korona: Truy cập nó bằng cách nào: chạy lệnh SVN hay duyệt nó?
Grundlefleck

1
"NameVirtualHost *" to "NameVirtualHost *:443"là trong các port.conf trong khi <VirtualHost *> to <VirtualHost *:443>ở trong cài đặt svnserver. điều này cần được đề cập. Tôi khá bối rối vì tôi đã tìm kiếm trong cài đặt svnserver cho NameVirtualHost và không thể tìm thấy nó.
Wandang

1
Trong Debian Stretch, có vẻ như bạn cần cài đặt libapache2-mod-svnthay vì libapache2-svn(vì cái sau không còn nữa).
TheStoryCoder

2

Sau đó, tôi cần thực thi (trong ngữ cảnh của ví dụ được trích dẫn ở trên)

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

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

Nếu không, tôi tiếp tục nhận được lỗi 409 khi thực hiện các sửa đổi cục bộ (mặc dù các cam kết có hiệu lực từ phía máy chủ, tôi cần theo dõi các bản cập nhật cục bộ)


1

Bài viết này dường như cung cấp một bản tóm tắt khá tốt về toàn bộ quá trình. Tôi khuyên bạn nên làm theo các hướng dẫn và sau đó đăng một số câu hỏi cụ thể hơn về bất kỳ vấn đề nào bạn nêu ra mà chưa được giải quyết trong các bài viết mà tôi và những người khác đã liên kết trong các câu trả lời này.


1

Nếu bạn nhận được 403 bị cấm khi bạn truy cập máy chủ web thì có thể là do bạn đã sử dụng tên máy chủ không phải là tên bạn đã chỉ định trong tệp cấu hình của mình (tức là localhost hoặc 127.0.0.1). Thay vào đó, hãy thử nhấn vào https: // whateveryousetasyourhostname ...


Một nguyên nhân 403 khác: đặt đường dẫn svn thành một liên kết biểu tượng. Nếu đường dẫn svn của bạn là một liên kết tượng trưng, ​​bạn sẽ phải cho phép các liên kết biểu tượng sau.
copolii

-2

Vui lòng viết một lệnh duy nhất trên thiết bị đầu cuối.

Để mở thiết bị đầu cuối, vui lòng nhấn Ctrl+ Alt+ T, sau đó nhập lệnh này:

$sudo apt-get install subversion

-2

Đối với Apache:

sudo apt-get -yq install apache2

Đối với SSH:

sudo apt-get -yq install openssh-server

Đối với Subversion:

sudo apt-get -yq install subversion subversion-tools

Nếu bạn muốn, bạn có thể kết hợp chúng thành một lệnh như:

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

Tôi không thể giúp với phần còn lại ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.