关于如何在GNU / Linux上设置Subversion(SVN)服务器:如何在GNU / Linux上设置Subversion(SVN)服务器-Ubuntu

关于如何在GNU / Linux上设置Subversion(SVN)服务器:如何在GNU / Linux上设置Subversion(SVN)服务器-Ubuntu

How to set up a Subversion (SVN) server on GNU/Linux - Ubuntu

我有一台运行Ubuntu的笔记本电脑,希望用作Subversion服务器。 无论是我自己致力于在本地,还是远程地致力于其他人。 要执行此工作需要采取什么步骤? 请包括以下步骤:

  • 获取并配置Apache和必要的模块(我知道还有其他方法可以创建SVN服务器,但是我希望它特定于Apache)
  • 配置访问服务器的安全方式(SSH / HTTPS)
  • 配置一组授权用户(例如,他们必须有权提交,但可以自由浏览)
  • 通过初始提交(某种" Hello world")验证设置

这些步骤可能涉及命令行或GUI应用程序指令的任何混合。 如果可以的话,请注意特定于特定发行版或版本的说明,以及可以使用用户对特定工具的选择代替(例如,用nano代替vi)。


我已采取步骤使笔记本电脑成为Subversion服务器。必须在此向AlephZarro寻求指导。我现在有一个正常工作的SVN服务器(目前仅在本地进行了测试)。

具体设置:
库本图8.04哈代鹭

遵循本指南的要求:

  • apt-get软件包管理器程序
  • 文字编辑器(我使用kate)
  • sudo访问权限

1:安装Apache HTTP服务器和必需的模块:

1
sudo apt-get install libapache2-svn apache2

将安装以下额外的软件包:

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

2:启用SSL

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

添加或检查文件中是否包含以下内容:

1
2
3
<IfModule mod_ssl.c>
    Listen 443
</IfModule>

3:生成SSL证书:

1
2
3
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:创建虚拟主机

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

更改(在ports.conf中):

1
"NameVirtualHost *" to"NameVirtualHost *:443"

和(在svnserver中)

1
<VirtualHost *> to <VirtualHost *:443>

在ServerAdmin下添加(同样在文件svnserver中):

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

5:启用站点:

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

要克服警告:

1
sudo kate /etc/apache2/apache2.conf

加:

1
"ServerName $your_server_name"

6:添加存储库:
以下设置假定我们要托管多个存储库。
运行此命令以创建第一个存储库:

1
2
3
4
5
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.a.对于更多存储库:再次执行步骤6(更改REPOS的值),跳过步骤mkdir /var/svn

7:添加经过身份验证的用户

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

8:启用和配置WebDAV和SVN:

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

添加或取消注释:

1
2
3
4
5
6
7
8
9
10
11
12
<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服务器:

1
sudo /etc/init.d/apache2 restart

10:验证:

启动浏览器:

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

两者都需要用户名和密码。我认为不加评论:

1
2
3
<LimitExcept GET PROPFIND OPTIONS REPORT>

</LimitExcept>

/etc/apache2/mods-available/dav_svn.conf中,将允许匿名浏览。

浏览器显示"修订版0:/"

提交一些内容:

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

接受证书并输入密码。
查看您刚刚提交的内容:

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

按照这些步骤(假设我没有进行任何错误的复制/粘贴),我的笔记本电脑上有可以使用的SVN存储库。


之后,我需要执行(在上面引用的示例的上下文中)

$ 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错误
(尽管这些承诺在服务器端有效,但我需要跟进本地更新)


如果您在访问网络服务器时被禁止访问403,则可能是因为您使用的主机名不是您在配置文件中指定的主机名(即localhost或127.0.0.1)。尝试改为点击https:// whateveryousetasyourhostname ...


本文似乎为整个过程提供了很好的总结。我建议您按照说明进行操作,然后针对您遇到的任何问题发布一些更具体的问题,这些问题在我和其他人在这些答复中未涉及的文章中都没有解决。


请在终端上编写一个命令。

要打开终端,请按Ctrl + Alt + T,然后键入以下命令:

1
$sudo apt-get install subversion

对于Apache:

1
sudo apt-get -yq install apache2

对于SSH:

1
sudo apt-get -yq install openssh-server

对于Subversion:

1
sudo apt-get -yq install subversion subversion-tools

如果您愿意,可以将它们合并为一个命令,例如:

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

我无能为力...


推荐阅读

    linux服务器分区命令?

    linux服务器分区命令?,系统,管理,信息,设备,时间,命令,基础,首次,平均,情况,l

    linux设置壁纸的命令?

    linux设置壁纸的命令?,图片,系统,电脑,照片,位置,终端,颜色,字体,单击,壁纸,

    linux恢复命令行设置?

    linux恢复命令行设置?,系统,工作,密码,信息,工具,地址,电脑,命令,情况,地方,

    linux设置man命令?

    linux设置man命令?,信息,系统,工具,工作,地址,命令,基础,地方,基本知识,技术

    linux参数设置命令?

    linux参数设置命令?,网络,系统,地址,工作,信息,管理,服务,名称,状态,命令,在l

    vim运行linux命令?

    vim运行linux命令?,系统,工作,信息,地址,命令,标准,时间,情况,工具,基础,linu

    linux服务器上传命令?

    linux服务器上传命令?,服务,软件,平台,数据,工具,系统,手机,电脑,设备,官网,

    linux下并行运行命令?

    linux下并行运行命令?,系统,服务,工作,命令,环境,网络,暂停,文件,脚本,参数,l

    linux网络服务器命令?

    linux网络服务器命令?,地址,网络,系统,名称,信息,工具,状态,中心,灵活,基础,l

    linux设置路由器命令?

    linux设置路由器命令?,网络,信息,代码,地址,电脑,工作,环境,系统,密码,路由,l

    linux下并行运行命令?

    linux下并行运行命令?,系统,服务,工作,命令,环境,网络,暂停,文件,脚本,参数,l

    linux设置根命令过短?

    linux设置根命令过短?,系统,工作,软件,地址,命令,代码,情况,管理,基础,位置,3

    linux设置路由器命令?

    linux设置路由器命令?,网络,信息,代码,地址,电脑,工作,环境,系统,密码,路由,l

    linux服务器基本命令?

    linux服务器基本命令?,地址,系统,设备,网络,工作,标准,信息,电脑,命令,密码,l

    linux服务器下载命令?

    linux服务器下载命令?,服务,密码,系统,档案,工具,网络,公共,百度,地址,认证,l

    linux命令行后台运行?

    linux命令行后台运行?,服务,状态,标准,暂停,命令,后台,连续,地方,工作,方法,l

    脚本运行linux命令?

    脚本运行linux命令?,系统,环境,工具,工作,位置,底部,代码,发行,官网,终端,lin

    linux进程运行命令?

    linux进程运行命令?,系统,工作,状态,地址,信息,进程,基础,命令,管理,软件,lin

    linux命令行设置字体?

    linux命令行设置字体?,系统,工具,终端,软件,电脑,数字,位置,等级,字体,命令,L

    linux显示运行命令?

    linux显示运行命令?,系统,服务,状态,信息,工具,数据,电脑,标准,管理,时间,如