澳门新萄京:怎样使用雷克斯管理你的服务器,
分类:服务器

Rex是一款服务器协调和配置管理工具。有了Rex,你可以通过配置管理和软件部署的完整流程,由集中点来管理所有服务器。

使用 (R)?ex 你可以从一个中心点通过完整的配置管理和软件发布流程来管理所有的机器

ubuntu配置svn服务器并且同步更新web目录

Ubuntu下Subversion服务器的安装配置

简而言之,Rex就好比Make命令。有一个集中式Rexfile,你可以在其中定义任务。这些任务通过SSH在远程机器上执行。任务采用普通perl编写而成。

(R)?ex 使用 SSH 作为默认的传输层,无需在服务器端安装任何软件,只需要一个可使用 ssh 的帐号。

 

 

你可以从网站

为什么使用 Rex?

需求:

公司的 Subversion 服务器由于电脑硬件原因,经常自动关机,因此计划重新安装一台服务器。原来的 Subversion 服务器是在 Windows XP 上通过 VisualSVN Server 架设的,现在考虑借此机会将其迁移至 Linux 系统。Linux 发行版我选择了 Ubuntu 12.04 LTS Server,安装系统的过程中可选择将 LAMP 一起装上,这样在系统安装完成之后 Apache 就可以直接使用了。

前言

如果你要做一个任务,运行两次以上, 请自动化它吧 !

 

本文记录如何在 Ubuntu 12.04 LTS 上设置 Subversion Server,关于 Subversion 仓库数据迁移的内容再另行介绍。

在本文中,我将使用Subversion来管理所有任务。你也可以使用其他任何软件配置管理(SCM)系统,只要它支持类似Subversion的外部命令的命令。我使用Ubuntu 12.04,但你也可以使用其他发行版。

不要忘记每一个安装的步骤,创建为自动化. 因为自动化可以减少失败的风险,让你真正的轻松工作.

      把代码放到共同的服务器中去,然后可以通过软件自由的增加和修改代码,以方便共同协作,而不是像某一些小企业那样,把代码用qq传来传去进行覆盖更新。

  www.2cto.com  

我不会在每一个命令后面加上后缀“sudo”;必要的话,请使用“sudo”。

Rex 据有的优势

 

本文涉及的范围

在本文中,我将建立两个示例项目。一个项目名为“website”,另一个项目名为“database”,因为在大公司中,系统管理员和数据库管理员常常是分开设立的。这两个项目都将使用可以由中央操作团队来管理的“常见任务”(common tasks)。

基于 SSH,无需额外部署客户端

解决办法:

要通过 HTTP 协议访问 Subversion 文件仓库,需要安装并配置好 Web 服务器。Apache2 被证实可以很好的与 Subversion 一起工作。关于 Apache2 的安装超出了本文的范围(假设已经安装好Apache2) ,尽管如此,本文还是会涉及如何配置 Apache2 使用 Subversion。 类似的,要通过 HTTPS 协议访问 Subversion 文件仓库,您需要在您的 Apache2 中安装并配置好数字证书,这也不在本文的讨论范围之中。

我将使用多个服务器:

无缝集成,没有冲突

 

 

•Subversion服务器,svn01

易用易扩展

    搭建一台公共的服务器并且配置svn服务器。svn可以很好存放代码,实现上面的需求。

安装 Subversion

•数据库服务器,db01

入门快,十分钟 Perl 基础就够

 

幸运的,Subversion 已经包含在 main 仓库中。所以,要安装 Subversion,您只需要简单的运行:

•Web服务器,web01

开放源代码

下面教大家在unbuntu中一步一步地去配置svn服务器,至于unbunto的基本使用可以去unbunto官方看一下文档。

 

•工作站,wks01

我们相信开源coder 的想法.所以Rex 全部代码都是给予Apache 2.0 的许可协议开源

 

$ sudo apt-get install subversion

简而言之,Re...

你可以加入我们社区让Rex 更加的完美.

下面对svn进行一个简单的介绍

$ sudo apt-get install libapache2-svn

认识了 (R)?ex 这个好工具。Rex 允许你通过 SSH 在远端服务器执行命令,不仅可用于快速部署各种服务,而且能够进行配置管理。Rex 的自动化处理的确给人一种方便省时的感觉。

 

服务器配置

Rex 纯由 Perl 所打造,不必担心的是,你只需了解一点 Perl 便可快速上手。Rex 除了能够从命令行执行操作外,还支持将相关任务放入 Rexfile 文件。

svn是Subversion的简称,它 是一款开放源代码的版本控制系统。使用 Subversion,您可以重新加载源代码和文档的历史版本。Subversion 管理了源代码在各个时期的版本。一个文件树被集中放置在文件仓库中。这个文件仓库很像是一个传统的文件服务器,只不过它能够记住文件和目录的每一次变化。

通过上面的命令已经安装了所需的软件包。接下来将阐述如何创建 Subversion 仓库以及如何设置项目的访问权限。

Rex 可通过如下单行进行安装:

 

 

$ curl -L get.rexify.org | perl - --sudo -n Rex

在配置svn之前你所需要掌握哪些知识

创建 Subversion 仓库(Respository)

同时也针对 Debian、Ubuntu、Gentoo、CentOS、openSUSE、Mageia、Fedora 等发行版提供有安装包。

 

许多位置都可以放置 Subversion 仓库,其中两个最常用的是:/usr/local/svn 以及 /home/svn。我们选择把 Subversion 仓库放在 /home/svn/repos,并且假设我们需要建立两个仓库 project1 和 project2。

澳门新萄京 1

linux的基本权限管理,用户管理,文件管理,进程管理。如果您对这些知识不熟悉就进行该操作你会非常痛苦

 

Uptime?
这个命令行例子 将执行 "uptime" 在所有的主机上 如 (frontend01, frontend02, ...).

 

通常的情况下,首先创建一个名为 “Subversion” 的用户组,该组是 Subversion 仓库所在的目录的拥有者。  www.2cto.com  

$ rex -H "frontend[01..15] middleware[01..05] db[01..04]" -e "say run 'uptime'"
还有一些,基于 Rexfile

在ubunto中安装

 

desc "Get Disk Free";
task "disk_free", sub {
  my $output = run "df -h";
  say $output;
};
现在你可以用这个命令运行你的任务

 

使用如下命令增加组,并且把用户加到组里:

$ rex -H "frontend[01..15] middleware[01..05] db[01..04]" disk_free
保持你的配置文件同步
这个例子将安装Apache webserver 在 5 个服务器上 并且保持配置文件同步.如果配置文件改变了 他会自动reload 你的apache 服务.

幸运的,Subversion 已经包含在 main 仓库中。所以,要安装 Subversion,您只需要简单的运行:

 

如果这个任务将执行首先安装好apahce服务在做再做配置文件同步.

 

$ sudo addgroup subversion

user "root";
group "frontend" => "frontend[01..05]";

1

$ sudo usermod -G subversion -a www-data

desc "Prepare Frontend Server";
task "prepare", group => "frontend", sub {
  install "apache2";
};

$ sudo apt-get install subversion

www-data 是专门为 web server 运行而创建的用户,系统中已经预先创建好了。

desc "Keep Configuration in sync";
task "configure", group => "frontend", sub {
  prepare();

许多位置都可以放置 Subversion 文件仓库,其中两个最常用的是:/usr/local/svn 以及 /home/svn。为了在下面的描述中简单明了,我们假设您的 Subversion 文件仓库放在 /home/svn,并且你的项目名称是简单的“myproject”。

 

  file "/etc/apache2/apache2.conf",
        source    => "files/etc/apache2/apache2.conf",
        on_change => sub { service apache2 => "reload"; };
};
在 sudo 下执行 ?
你也可以在sudo 下 运行任何的任务. 只需要激活sudo 和定义sudo 的密码

 

查看上面两个命令的执行结果:

user "ubuntu";
澳门新萄京:怎样使用雷克斯管理你的服务器,Ubuntu下Subversion服务器的装置配备。group "frontend" => "frontend[01..05]";
sudo TRUE;  #激活sudo
sudo_password 'sudopass';

同样的,也有许多常用的方式设置文件仓库的访问权限。然而,这也是安装过程中最经常出现错误的地方,因此我们会对此进行一个详细说明。通常的情况下,您应该创建一个名为“Subversion”的用户组,该组是SVN仓库所在的目录的拥有者。下面是一个快速的操作说明

 

desc "Prepare Frontend Server";
task

 

$ cat /etc/group | grep subversion

澳门新萄京 2

1

subversion:x:1001:www-data

sudo addgroup subversion

执行如下命令创建仓库目录:

2

 

sudo usermod -G subversion -a username

$ sudo mkdir -p /home/svn/repos/project1

现在执行下面的命令

$ sudo mkdir -p /home/svn/repos/project2

 

下面命令用于创建 Subversion 仓库:

1

 

$ sudo mkdir /home/svn

$ sudo svnadmin create /home/svn/repos/project1

2

$ sudo svnadmin create /home/svn/repos/project2

$ cd /home/svn

设置仓库的用户和组:

3

 

$ sudo mkdir myproject

$ sudo chown -R www-data:subversion /home/svn/repos/project1

4

$ sudo chown -R www-data:subversion /home/svn/repos/project2

$ sudo chown -R username:subversion myproject

访问方式

下面的命令用于创建 SVN 文件仓库:

Subversion 仓库可以通过多种不同的方式进行访问——通过本地硬盘,或者通过各种网络协议。无论如何,文件仓库的位置总是使用 URL 来表示。

 

 

1

下面是几种不同的 URL 模式及其对应的访问方法:

$ sudo svnadmin create /home/svn/myproject

  www.2cto.com  

赋予组成员对所有新加入文件仓库的文件拥有相应的权限:

file:/// —— 直接访问本地硬盘上文件仓库

 

http:// —— 通过 WebDAV 协议访问支持 Subversion 的 Apache2 Web 服务器

1

https:// —— 类似 SSL 加密

$ sudo chmod -R g rws myproject

svn:// —— 通过自带协议访问 svnserve 服务器

目前已经安装并且创建了一个仓库,那么我们怎么把代码提交到这个仓库,或者把代码提交到这个仓库中去呢?

svn ssh:// —— 类似 svn://,支持通过 SSH 通道

 

通过 WebDAV 协议访问(http://)

好了,慢慢来,我们先测试一下。

WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。

 

 

直接访问:

Apache mod_dav_svn 配置

 

要通过 WebDAV 协议访问 SVN 文件仓库,首先必须配置 Apache 2 Web 服务器。加入下面的代码片段到 /etc/apache2/mods-available/dav_svn.conf 文件中:

1

 

$ svn co file:///home/svn/myproject

<Location /svn>

 

    DAV svn

如果访问成功,那么这个时候就证明已经配置好了。

    # Alternatively, use SVNParentPath if you have multiple repositories 

 

    # under a single directory

接下来,我们使用最常用的的方式访问,无论是在远程的windows还是在ubunto里面都可以的。

    SVNParentPath /home/svn/repos

 

    AuthType Basic

使用其自身的协议访问(svn://)

    AuthName "Subversion repository"

 

 

当您创建了 SVN 文件仓库,您可以修改 /home/svn/myproject/conf/svnserve.conf 来配置其访问控制。

    # 指定基本用户验证的密码文件路径

 

    AuthUserFile /etc/subversion/dav_svn.passwd

例如,您可以取消下面的注释符号来设置授权机制:

 

 

    # 指定文件仓库访问的授权配置文件路径

1

    <IfModule mod_authz_svn.c>

# [general]

        AuthzSVNAccessFile /etc/subversion/dav_svn.authz

2

    </IfModule>

# password-db = passwd

 

现在,您可以在“passwd”文件中维护用户清单。编辑同一目录下“passwd”文件,添加新用户。语法如下:

    #<LimitExcept GET PROPFIND OPTIONS REPORT>

 

        Require valid-user

 

    #</LimitExcept>

1

 </Location>

username = password

重启 Apache2 Web 服务器

2

 

#(注意行开始不要有多余空格)

$ sudo service apache2 restart

 

密码文件 dav_svn.passwd 的创建

现在,您可以在本地或者远程通过 svn://访问 SVN 了,您可以使用“svnserve”来运行 svnserver,语法如下:

$ sudo htpasswd -c /etc/subversion/dav_svn.passwd user_name

 

它会提示你输入密码,当您输入了密码,该用户就建立了。“-c” 选项表示创建新的 /etc/subversion/dav_svn.passwd 文件,所以 user_name 所指的用户将是文件中唯一的用户。如果要添加其他用户,则去掉“-c”选项即可:

1

 

$ sudo svnserve -d -T-r /home/svn

$ sudo htpasswd /etc/subversion/dav_svn.passwd other_user_name

如果已经启动端口占用了,你可以使用ps -e查看svnserve进程的id,并把其kill掉

授权配置文件dav_svn.authz

 

首先需要加载mod_authz_svn.so 在目录 /etc/apache2/mods-enabled 下创建软链接到 ../mods-available/authz_svn.load

当您执行了该命令,SVN 就开始监听默认的端口(3690)。

 

 

$ cd /etc/apache2/mods-enabled

这个时候您就可以在远程使用windows的乌龟svn或者其他客服端软件进行访问了。

$ sudo ln -s ../mods-available/authz_svn.load

 

../mods-available/authz_svn.load文件的内容为:

在这里您特别需要注意一下权限的问题

 

 

LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so

问题来了,现在代码文件可以提交和更新了,怎么去让他自动同步到服务器的某个目录呢?因为提交之后是放在svn服务器的数据库文件里面的,并没有看到任何文件。

这里我指定了三个组: design 组 和 test 组,design 组读写权限,test组只有读的权限。另外,设置一个管理员账号 admin,管理员对所有项目有读写权限。

 

  www.2cto.com  

其实这个不难解决,主要是通过svn服务器的钩子来实现的,原理如下

授权文件 /etc/subversion/dav_svn.authz 的内容如下:

 

 

我们在服务器的某个目录下把代码checkout下来,然后在代码提交的时候自动触发该项目的update命令。

[groups]

 

design=user1,user2,user3

1

test=user4,user5

cd /home/svn/myproject/hooks

 

2

[project1:/]

 

admin=rw

3

@design=rw

vim post-commit:

@test=r

4

 

#!/bin/sh

[project2:/]

5

admin=rw

REPOS="$1"

@design=rw

6

@tester=r

REV="$2"

如果在Check in的时候遇到如下错误:

7

 

export LANG=en_US.UTF-8

Can’t open ‘/home/svn/myproject/db/txn-current-lock’: Permission denied

8

这是因为文件所属的用户和组不对造成的问题,可以重新对整个项目目录设置用户和组:

#注意这里设置成自己想要更新的目录,已经用户名和密码

 

9

$ sudo chown -R www-data:subversion /home/svn/repos/project1

sudo svn update /wwwroot/myproject --username username--password password

如果你不想将项目目录的拥有者设置成 www-data 的话,比如你可能想设置为 root:

 

 

这样就可以自动更新了,每次本地提交的时候。 

$ sudo chown -R root:subversion /home/svn/repos/project1

这里需要注意一下

必须将 root 加入 subversion 组:

 

 

1

$ sudo usermod -G subversion -a root

export LANG=en_US.UTF-8

还要设置组的属性:

 

 

不要写错哦

$ sudo chmod -R g rws /home/svn/repos/project1

 

然后查看 txn-current-lock 文件的权限和用户以及组信息,应该类似于:

需求: 把代码放到共同的服务器中去,然后可以通过软件自由的增加和修改代码,以方便共同协作...

 

$ ls -l /home/svn/myproject/db/txn-current-lock

-rw-rwSr-- 1 root subversion  0  2009-06-18  15:33  txn-current-lock

至此,Subversion 服务器的配置已经完成了,借助 SVN 客户端软件就可以通过 http:// 的方式访问到上面配置的两个文件仓库了。

 

公司的 Subversion 服务器由于电脑硬件原因,经常自动关机,因此计划重新安装一台服务器。原来的 Subver...

本文由澳门新萄京发布于服务器,转载请注明出处:澳门新萄京:怎样使用雷克斯管理你的服务器,

上一篇:澳门新萄京:apache简要介绍_引力节点Java高校整理 下一篇:没有了
猜你喜欢
热门排行
精彩图文