{"id":76,"date":"2015-03-15T23:59:45","date_gmt":"2015-03-15T15:59:45","guid":{"rendered":"http:\/\/gnonstop.linkpc.net\/~gordon\/?p=76"},"modified":"2021-12-01T17:21:45","modified_gmt":"2021-12-01T09:21:45","slug":"how-to-install-and-configure-subversion-svn-server-on-ubuntu","status":"publish","type":"post","link":"https:\/\/guerilla.ddns.net\/wp\/?p=76","title":{"rendered":"How to Install and Configure Subversion (SVN) Server on Ubuntu"},"content":{"rendered":"<p>\u9996\u5148\uff0c\u78ba\u4fdd\u5df2\u5b89\u88dd\u7684 packages \u90fd\u662f\u6700\u65b0\u7248\u672c<\/p>\n<pre>sudo apt-get update<\/pre>\n<p>\u7136\u5f8c\uff0c\u5b89\u88dd 3 \u500b packages: subversion, subversion-tools \u548c libapache2<\/p>\n<pre>sudo apt-get install subversion subversion-tools libapache2-svn<\/pre>\n<p>\u9019\u4e9b\u5c31\u662f\u8981\u8b93\u96fb\u8166\u7576 subversion \u4f3a\u670d\u5668\u6240\u9700\u8981\u7684 packages\u3002<\/p>\n<h2>\u5efa\u7acb subversion \u6a94\u6848\u7d50\u69cb<\/h2>\n<h3>\u5efa\u7acb\u76ee\u9304<\/h3>\n<pre>sudo mkdir \/home\/svn<\/pre>\n<h3>\u5efa\u7acb\u4e00\u500b\u6e2c\u8a66\u7528\u7684\u6a94\u6848\u5eab (repository)<\/h3>\n<pre>sudo svnadmin create \/home\/svn\/test<\/pre>\n<h3>\u52a0\u9ede\u6750\u6599\u5230\u6a94\u6848\u5eab<\/h3>\n<pre>mkdir ~\/test\r\ncd ~\/test\u2028\r\nmkdir trunk tags branches<\/pre>\n<p>\u7136\u5f8c\uff0c\u532f\u5165\u9019\u4e9b\u65b0\u5efa\u7684\u76ee\u9304\u5230\u6e2c\u8a66\u7528\u7684\u6a94\u6848\u5eab<\/p>\n<pre>sudo svn import ~\/test file:\/\/\/home\/svn\/test -m 'Initial project directories'<\/pre>\n<p>\u90fd\u6c92\u554f\u984c\u7684\u8a71\uff0c\u8981\u958b\u59cb\u8a2d\u5b9a apache \u7684\u90e8\u5206\u4e86<\/p>\n<h2>\u8a2d\u5b9a apache<\/h2>\n<p>\u66f4\u6539 \/home\/svn \u76ee\u9304\u7684\u64c1\u6709\u8005<\/p>\n<pre>sudo chown -R www-data:www-data \/home\/svn<\/pre>\n<p>\u555f\u52d5 apache \u7684 dav_svn \u6a21\u7d44<\/p>\n<pre>sudo a2enmod dav_svn<\/pre>\n<p>\u4fee\u6539 dav_svn \u7684\u8a2d\u5b9a\u6a94<\/p>\n<pre>sudo nano <strong>\/etc\/apache2\/mods-avaible\/dav_svn.conf<\/strong><\/pre>\n<p>\u5230\u6a94\u6848\u7684\u6700\u5e95\u4e0b\uff0c\u586b\u4e0a\u9019\u5e7e\u884c<\/p>\n<pre>&lt;Location \"\/svn\"&gt;\r\n    DAV svn\r\n    SVNParentPath \/home\/svn\r\n&lt;\/Location&gt;<\/pre>\n<p>\u91cd\u65b0\u555f\u52d5 apache<\/p>\n<pre>sudo service apache2 restart<\/pre>\n<p>\u958b\u555f\u700f\u89bd\u5668\u9023\u5230\u9019\u53f0\u96fb\u8166\u770b\u770b\u80fd\u5426\u9032\u5165\u90a3\u500b\u6e2c\u8a66\u7528\u7684\u6a94\u6848\u5eab\uff08\u9019\u6642\u61c9\u8a72\u53ef\u4ee5\u770b\u5230\u4e09\u500b\u76ee\u9304\uff0c\u96d6\u7136\u5b83\u5011\u662f\u7a7a\u7684\uff09<br \/>\nhttp:\/\/127.0.0.1\/svn\/test<\/p>\n<h2>\u4fdd\u8b77 svn \u6a94\u6848\u5eab (\u4f7f\u7528 MySQL)<\/h2>\n<p>\u9032\u5165 mysql \u8f38\u5165\u6a21\u5f0f<\/p>\n<pre>mysql -u root -p<\/pre>\n<h3>\u5efa\u7acb\u8cc7\u6599\u5eab (\u53ca 3 \u500b tables)<\/h3>\n<pre><span style=\"color: gray;\">mysql&gt;<\/span> create database my_subversion;\r\n<span style=\"color: gray;\">mysql&gt;<\/span> use my_subversion;<\/pre>\n<p>\u5efa\u7acb user table, \u6709 3 \u500b\u6b04\u4f4d (username, password, \u548c email)<\/p>\n<pre><span style=\"color: gray;\">mysql&gt;<\/span> CREATE TABLE IF NOT EXISTS user (\r\nusername VARCHAR(60) NOT NULL PRIMARY KEY,\r\npassword VARCHAR(64) NOT NULL,\r\nemail VARCHAR(100)\r\n) ENGINE=MyISAM DEFAULT CHARSET=utf8;<\/pre>\n<p>\u5efa\u7acb svngroup table, \u6709 2 \u500b\u6b04\u4f4d (groupname \u548c note)<\/p>\n<pre><span style=\"color: gray;\">mysql&gt;<\/span> CREATE TABLE IF NOT EXISTS svngroup (\r\ngroupname VARCHAR(20) NOT NULL PRIMARY KEY,\r\nnote VARCHAR(256)\r\n) ENGINE=MyISAM DEFAULT CHARSET=utf8;<\/pre>\n<p>\u5efa\u7acb user_svngroup table, \u6709 2 \u500b\u6b04\u4f4d (username \u548c groupname)<\/p>\n<pre><span style=\"color: gray;\">mysql&gt;<\/span> CREATE TABLE IF NOT EXISTS user_svngroup (\r\nusername VARCHAR(60) NOT NULL,\r\ngroupname VARCHAR(20) NOT NULL\r\n) ENGINE=MyISAM DEFAULT CHARSET=utf8;<\/pre>\n<h3>\u65b0\u589e\u4e00\u500b\u8cc7\u6599<\/h3>\n<p>\u65b0\u589e\u4e00\u500b svn user<\/p>\n<pre><span style=\"color: gray;\">mysql&gt;<\/span> INSERT INTO user (username,password,email) VALUES ('<span style=\"color: green;\">username<\/span>',md5('<span style=\"color: green;\">password<\/span>'),'<span style=\"color: green;\">email@mail.com<\/span>');<\/pre>\n<p>\u65b0\u589e\u4e00\u500b svn group<\/p>\n<pre><span style=\"color: gray;\">mysql&gt;<\/span> INSERT INTO svngroup (groupname,note) VALUES ('<span style=\"color: green;\">groupname<\/span>','<span style=\"color: green;\">this is a brief note of the group<\/span>');<\/pre>\n<p>\u628a user \u653e\u9032 group \u88e1<\/p>\n<pre><span style=\"color: gray;\">mysql&gt;<\/span> INSERT INTO user_svngroup (username,groupname) VALUES ('<span style=\"color: green;\">username<\/span>','<span style=\"color: green;\">groupname<\/span>');<\/pre>\n<p>ref:<br \/>\n\u2022 <a href=\"https:\/\/meetawaiszafar.medium.com\/install-configure-svn-server-on-ubuntu-20-04-with-apache2-6dcd7d9a49e9\" rel=\"noopener\" target=\"_blank\"><em>Install &#038; Configure SVN Server on Ubuntu 20.04 with Apache2<\/em><\/a><br \/>\n\u2022 <a href=\"https:\/\/serverfault.com\/questions\/174454\/settings-up-svn-server-with-mysql-authentication\" target=\"_blank\" rel=\"noopener\"><em>Settings up SVN server with MySQL authentication<\/em><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148\uff0c\u78ba\u4fdd\u5df2\u5b89\u88dd\u7684 packages \u90fd\u662f\u6700\u65b0\u7248\u672c sudo apt-get update \u7136\u5f8c\uff0c\u5b89\u88dd 3 \u500b [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[179],"tags":[2,174,173,18],"class_list":["post-76","post","type-post","status-publish","format-standard","hentry","category-infotech","tag-apache","tag-mysql","tag-svn","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/guerilla.ddns.net\/wp\/index.php?rest_route=\/wp\/v2\/posts\/76","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/guerilla.ddns.net\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/guerilla.ddns.net\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/guerilla.ddns.net\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/guerilla.ddns.net\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=76"}],"version-history":[{"count":2,"href":"https:\/\/guerilla.ddns.net\/wp\/index.php?rest_route=\/wp\/v2\/posts\/76\/revisions"}],"predecessor-version":[{"id":1664,"href":"https:\/\/guerilla.ddns.net\/wp\/index.php?rest_route=\/wp\/v2\/posts\/76\/revisions\/1664"}],"wp:attachment":[{"href":"https:\/\/guerilla.ddns.net\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=76"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/guerilla.ddns.net\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=76"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/guerilla.ddns.net\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=76"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}