设置Subversion W / WebDav,提交后挂钩和多个网站上Jaunty Jackalope(Ubuntu 9.04)

在Jaunty Jackalope(Ubuntu 9.04)上设置Subversion W / WebDav,提交后挂钩和多个站点

1关于本教程。

本教程专为某人设置他们的第一个Jaunty Jackalope(Ubuntu 9.04) - Subversion服务器而设计。 当我第一次开始使用Subversion时,对于我正在安装的关键部分的许多教程变得非常沮丧... Subversion! 我包括一些“易用性”包为我们的Linux新星:)。

本教程中包含:

  • 安装Webmin
  • WebDav设置
  • 如何准备Jaunty Jackalope(Ubuntu 9.04)作为web / svn服务器
  • SSL设置
  • 如何创建SLL证书
  • 如何设置SVN SSL VHOST
  • 如何设置分阶段VHOST
  • 如何设置Live VHOST
  • Subversion设置
  • 如何创建一个后提交钩子来自动更新您的登台服务器

不在本教程中:

  • 如何设置Ubuntu(有很多教程)

因为我对Linux很新,我喜欢从我的Windows框中工作,请参阅本教程的先决条件的以下信息...

Jaunty Jackalope(Ubuntu 9.04):

  • 安装LAMP
  • 安装SSH

Windows Box

如果您尝试安装SVN并且失败,建议您在启动Ubuntu并安装新的副本之前, 本教程需要遵循“信”工作。 我的Ubuntu安装是一个标准的服务器,只有LAMP和SSH。 如果您尝试并失败,您可能有不同于本教程中使用的目录结构

我在本教程中使用example.com,您将需要用.com替换示例 ,并且还有您的stg。 和svn。 子域设置并指向您的ip。 由于我的工作VPN问题,我总是让我们的用户设置家庭网络为192.168.2.0在本教程中,我用那个IP

赞扬杰里米·斯派尔(Geremy Speer)多年的Google Talk帮助! 谢谢你!

2安装Ubuntu的网络和主机。

sudo su

编辑/ etc / network / interfaces

sudo nano /etc/network/interfaces

这样看起来像这样:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.2.2
        netmask 255.255.255.0
        network 192.168.2.0
        broadcast 192.168.2.255
        gateway 192.168.2.1

重新启动网络。 (如果你在PuTTY,你将需要重新连接)

sudo /etc/init.d/networking restart

编辑/ etc / hosts以使用您的新IP。

sudo su
sudo nano /etc/hosts

编辑它看起来像这样...

127.0.0.1       localhost
192.168.2.2     EXP-01.example.com       EXP-01
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

安装/ etc / hostname来反映你的主机。

echo EXP-01.example.com > /etc/hostname

开始吧

sudo /etc/init.d/hostname.sh start

运行以下命令时,都应该回复EXP-01.example.com

hostname
hostname -f

3更新Ubuntu并安装所需的软件包。

更新和升级Ubuntu。

sudo apt-get update
sudo apt-get upgrade

安装所需的软件包。

sudo apt-get install subversion libapache2-svn ssl-cert

安装webmin。

我喜欢webmin从https://www.example.com:10000来管理我的服务器,你可以跳过这个。

编辑/etc/apt/sources.list并将以下内容添加到底部...

sudo nano /etc/apt/sources.list
deb http://download.webmin.com/download/repository sarge contrib

再次更新。

sudo apt-get update

安装Webmin。

sudo apt-get install webmin

4创建SSL证书和您的站点

当它煽动你,使用svn.example.com作为主机。

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

启用S​​SL

sudo a2enmod ssl
/etc/init.d/apache2 restart

我觉得更安全,不要离开默认网站,所以我把它们放在这里。

sudo a2dissite default
sudo a2dissite default-ssl

我们现在将为本教程的所有三个站点创建VHOST。

#START#SSL SVN site

sudo nano /etc/apache2/sites-available/svn.example.com

复制将以下内容粘贴到新文件中。

<virtualhost *:443>
ServerName svn.example.com
ServerAdmin webmaster@localhost
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
<DirectoryMatch "^/.*/.svn/*">
    Order deny,allow
    Deny from all
</DirectoryMatch>
ErrorLog /var/log/apache2/ssl-error.log
CustomLog /var/log/apache2/ssl-access.log combined
ServerSignature On
</virtualhost>

启用S​​VN站点

sudo a2ensite svn.example.com

#END#SSL SVN site。

#START#分段网站

sudo nano /etc/apache2/sites-available/stg.example.com

复制将以下内容粘贴到新文件中。

<VirtualHost *:80>
        ServerName stg.example.com
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/stg/example.com/httpdocs/
	<Directory />
		Options FollowSymLinks
		AllowOverride All
	</Directory>
	<Directory /var/www/stg/example.com/httpdocs/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>
	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>
	ErrorLog /var/log/apache2/error.log
	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn
	CustomLog /var/log/apache2/stg-example-access.log combined
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>

启用分段站点

sudo a2ensite stg.example.com

#END#分段网站。

#START#Live site

sudo nano /etc/apache2/sites-available/live.example.com

复制将以下内容粘贴到新文件中。

<VirtualHost *:80>
        ServerName www.example.com
        ServerAlias example.com
	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/live/example.com/httpdocs/
	<Directory />
		Options FollowSymLinks
		AllowOverride All
	</Directory>
	<Directory /var/www/live/example.com/httpdocs/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>
	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>
	ErrorLog /var/log/apache2/error.log
	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn
	CustomLog /var/log/apache2/live-example-access.log combined
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>

启用实时站点

sudo a2ensite live.example.com

#END#实时网站。

为您的网站制作文档文件夹

sudo mkdir /var/www/stg
sudo mkdir /var/www/live

5安装Subversion w / WebDAV

备份现有的DAV配置

sudo mv /etc/apache2/mods-available/dav_svn.conf /etc/apache2/mods-available/dav_svn.bak

创建一个新的DAV配置:

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

复制将以下内容粘贴到新文件中。

<Location /svn>
DAV svn
SVNParentPath /var/lib/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
<LimitExcept GET PROPFIND OPTIONS REPORT>
</LimitExcept>
SSLRequireSSL
</Location>

创建您的第一个SVN用户。

sudo htpasswd -cm /etc/apache2/dav_svn.passwd usera

新密码

重新输入新密码

要创建更多用户,请删除-cm。

sudo htpasswd /etc/apache2/dav_svn.passwd userb

新密码

重新输入新密码

创建SVN存储库根目录。

sudo mkdir /var/lib/svn

创建您的第一个存储库。

sudo svnadmin create /var/lib/svn/example.com

创建存储库结构

sudo svn mkdir file:///var/lib/svn/example.com/trunk file:///var/lib/svn/example.com/tags file:///var/lib/svn/example.com/branches -m "example.com Initial SVN Structure"

承诺修订1。

将存储库结帐到您的临时文件夹。

sudo svn co file:///var/lib/svn/example.com/trunk /var/www/stg/example.com

退房修订1。

以下只是创建/var/www/stg/example.com/httpdocs ,以便apache在我们重新启动时对我们进行“吠叫”。

添加分段www-root文件夹。

sudo mkdir /var/www/stg/example.com/httpdocs

将新文件夹添加到版本控制。

cd /var/www/stg/example.com/
sudo svn add httpdocs/

Ahttpdocs

提交对存储库的更改。

sudo svn commit httpdocs/ -m "Adding intial Staging root folder -usera"

添加httpdocs

承诺修订2。

将存储库结帐到实际文件夹。

sudo svn co file:///var/lib/svn/example.com/trunk /var/www/live/example.com

因为你提交了对repo的分期更改,当你检查到活的文件夹的repo, httpdocs /已经在那里!

ls /var/www/live/example.com/

这很重要,确保www数据拥有所有这些。 这将允许后提交远程工作。

sudo chown -R www-data:www-data /var/lib/svn/
sudo chown -R www-data:www-data /var/www/

重新加载Apache2。

sudo /etc/init.d/apache2 reload

以下网站现在工作!

https://svn.example.com/svn/example.com/ (这一个需要您使用webdav用户登录并传递您创建的)

http://stg.example.com/

http://www.example.com/

警告:只有当您的服务器不向公众开放时,才应该执行以下操作:我每次都将日志记录保存到服务器中,以更新我的分段副本,这是在防火墙后面...我们的实际服务器完全不同机。 还有其他方法可以让后提交工作。

6创建提交后的Hook

后提交钩子将让SVN自动更新您的登台服务器上的httpdocs /,当您从本地开发框使用ToirtoiseSVN时,这非常方便。 它阻止您不必登录SVN服务器来更新您的登台工作副本。

添加www数据作为sudoer。

sudo nano /etc/sudoers

复制粘贴文件末尾的以下内容。

www-data ALL=(ALL) NOPASSWD:ALL

创建后提交文件

sudo cp /var/lib/svn/example.com/hooks/post-commit.tmpl /var/lib/svn/example.com/hooks/post-commit

使后提交文件可执行。

sudo chmod +x /var/lib/svn/example.com/hooks/post-commit

编辑提交后文件。

sudo nano /var/lib/svn/example.com/hooks/post-commit

改变文件看起来像这样。

#!/bin/sh
# POST-COMMIT HOOK
#
# The post-commit hook is invoked after a commit.  Subversion runs
# this hook by invoking a program (script, executable, binary, etc.)
# named 'post-commit' (for which this file is a template) with the
# following ordered arguments:
#
#   [1] REPOS-PATH   (the path to this repository)
#   [2] REV          (the number of the revision just committed)
#
# The default working directory for the invocation is undefined, so
# the program should set one explicitly if it cares.
#
# Because the commit has already completed and cannot be undone,
# the exit code of the hook program is ignored.  The hook program
# can use the 'svnlook' utility to help it examine the
# newly-committed tree.
#
# On a Unix system, the normal procedure is to have 'post-commit'
# invoke other programs to do the real work, though it may do the
# work itself too.
#
# Note that 'post-commit' must be executable by the user(s) who will
# invoke it (typically the user httpd runs as), and that user must
# have filesystem-level permission to access the repository.
#
# On a Windows system, you should name the hook program
# 'post-commit.bat' or 'post-commit.exe',
# but the basic idea is the same.
#
# The hook program typically does not inherit the environment of
# its parent process.  For example, a common problem is for the
# PATH environment variable to not be set to its usual value, so
# that subprograms fail to launch unless invoked via absolute path.
# If you're having unexpected problems with a hook program, the
# culprit may be unusual (or missing) environment variables.
#
# Here is an example hook script, for a Unix /bin/sh interpreter.
# For more examples and pre-written hooks, see those in
# the Subversion repository at
# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and
# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/

REPOS="$1"
REV="$2"

#/usr/share/subversion/hook-scripts/commit-email.pl \
#  "$REPOS" "$REV" commit-watchers@example.org
sudo svn update /var/www/stg/example.com >> /var/lib/svn/logs/exampleup.log

创建SVN日志目录。

sudo mkdir /var/lib/svn/logs

创建日志文件以进行更新跟踪。

sudo touch /var/lib/svn/logs/exampleup.log

提供www数据所有权。

sudo chown -R www-data:www-data /var/lib/svn/logs/exampleup.log

现在当您从本地机器上的ToroiseSVN提交文件时,您不必在登台服务器上运行,该提交将为您提供。

要更新您的实时站点,您仍然必须登录到服务器并在实际文件夹上运行更新。 我这样做,所以我不会意外拧我的实时服务器,

sudo svn up /var/www/live/example.com

而已!

我希望本教程可以帮助您节省一切挫折!

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏