2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > SVN服务器部署并实现双机同步及禁止普通用户删除文件

SVN服务器部署并实现双机同步及禁止普通用户删除文件

时间:2022-09-18 07:07:56

相关推荐

SVN服务器部署并实现双机同步及禁止普通用户删除文件

下面来布署svn服务器

所有文件下载地址:/d/-aMABDmt9uMqUQQA481

环境:CentOS5.8 x64 ,开发包组已安装,iptables,selinux已经关闭

一.安装配置apache

1.1 下载编译安装apache

tarxvfhttpd-2.2.22.tar.bz2

cdhttpd-2.2.22

./configure--prefix=/opt/apache\

--enable-so\

--enable-dav\

--enable-dav-fs\

--enable-maintainer-mode\

--with-included-apr\

--enable-rewrite\

--enable-ssl\

--enable-proxy\

--enable-proxy-http

make&&makeinstall

1.2 配置apache

添加apache 用户

useradd-rapache

以apache身份运行httpd

sed-i's@Userdaemon@Userapache@g'/opt/apache2/conf/httpd.conf

sed-i's@Groupdaemon@Groupapache@g'/opt/apache2/conf/httpd.conf

1.3 为了方便将apache命令加入PATH,并将apache库导出

echo'exportPATH=$PATH:/opt/apache2/bin'>/etc/profile.d/httpd.sh

./etc/profile.d/httpd.sh

echo'/opt/apache2/lib'>/etc/ld.so.conf.d/apache.conf

导出

ldconfig

rm-rfhttpd-2.2.22

二.安装MySQL

2.1安装cmake

tarxvfcmake-2.8.4.tar.gz

cdcmake-2.8.4

./configure

make&&makeinstall

cd..

rm-rfcmake-2.8.4

2.2 安装mysql

tarxfmysql-5.5.28.tar.gz

cdmysql-5.5.28

cmake-DCMAKE_INSTALL_PREFIX=/opt/mysql\

-DSYSCONFDIR=/opt/mysql/etc\

-DMYSQL_DATADIR=/opt/mysql/data\

-DMYSQL_TCP_PORT=3306\

-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock\

-DMYSQL_USER=mysql\

-DEXTRA_CHARSETS=all\

-DWITH_READLINE=1\

-DWITH_SSL=system\

-DWITH_EMBEDDED_SERVER=1\

-DENABLED_LOCAL_INFILE=1\

-DWITH_INNOBASE_STORAGE_ENGINE=1

make&&makeinstall

cd..

rm-Rfmysql-5.5.28

配置文件与启动脚本

cd/opt/mysql

cpsupport-files/my-f/etc/f

cpsupport-files/mysql.server/etc/init.d/mysqld

2.3 以mysql用户运行mysql,修改PATH并导出库

useradd-rmysql

chown-Rmysql:root.

./scripts/mysql_install_db--user=mysql--datadir=data/

echo'exportPATH=$PATH:/opt/mysql/bin'>/etc/profile.d/mysql.sh

./etc/profile.d/mysql.sh

echo'/opt/mysql/lib'>/etc/ld.so.conf.d/mysql.conf

ldconfig

启动mysql

servicemysqldstart

三.安装php

3.1 安装php,安装它是因为svnmanager需要

cd/root/svn

tarxvfphp-5.3.18.tar.gz

cdphp-5.3.18

./configure--prefix=/opt/php\

--with-apxs2=/opt/apache2/bin/apxs\

--with-mysql=/opt/mysql\

--enable-mbstring

make&&makeinstall

cpphp.ini-production/etc/php.ini

cd..

rm-Rfphp-5.3.18

添加apache的php支持

sed-i'/AddTypeapplication\/x-gzip.gz.tgz/a\

AddTypeapplication/x-httpd-php.php'/opt/apache2/conf/httpd.conf

sed-i's@DirectoryIndexindex.html@DirectoryIndexindex.phpindex.html@g'/opt/apache2/conf/httpd.conf

启动apache测试

rm-f/opt/apache2/htdocs/index.html

echo'<?php

phpinfo()

?>'>/opt/apache2/htdocs/index.php

apachectlstart

访问http://$IP/测试apache,php,mysql是否部署下确

四.安装subversion

4.1 解压安装subversion

tarxfsubversion-1.6.13.tar.bz2

tarxfsubversion-deps-1.6.13.tar.bz2

cdsubversion-1.6.13

./configure--prefix=/opt/subversion\

--with-apxs=/opt/apache2/bin/apxs\

--with-apr=/opt/apache2/bin/apr-1-config\

--with-apr-util=/opt/apache2/bin/apu-1-config

make&&makeinstall

echo'exportPATH=$PATH:/opt/subversion/bin'>/etc/profile.d/svn.sh

./etc/profile.d/svn.sh

cd..

rm-rfsubversion-1.6.13

4.2 让apache与svn结合

sed-i'/httpd-default.conf/a\

Includeconf/extra/httpd-svn.conf'/opt/apache2/conf/httpd.conf

echo'

<Location/svn>

DAVsvn

SVNListParentPathOn

SVNParentPath/opt/svn_repos

AuthTypeBasic

AuthName"SubversionRepository"

AuthUserFile/opt/subversion/conf/passwdfile

AuthzSVNAccessFile/opt/subversion/conf/accessfile

Requirevalid-user

</Location>'>/opt/apache2/conf/extra/httpd-svn.conf

4.3 创建提到的文件

mkdir/opt/subversion/conf

touch/opt/subversion/conf/passwdfile

touch/opt/subversion/conf/accessfile

mkdir/opt/svn_repos

4.4 创建一个repo,添加一个测试账户,配置权限,测试

svnadmincreate/opt/svn_repos/test/ ##创建一个repo

chown-Rapache:apache/opt/subversion/ ##我们通过apache来管理svn的

chown-Rapache:apache/opt/svn_repos/

htpasswd-bm/opt/subversion/conf/passwdfiletest"admin"

echo'

[test:/]

*=r

test=rw'>/opt/subversion/conf/accessfile ##access文件是权限控制文件

4.5 重启apache测试

apachectlrestart

访问http://$IP/svn/test

输入账号,密码

如果看到test - Revision 0: / 证明没问题,继续

五.安装svnmanager,以图形化的方式管理svn

5.1 安装VersionControl_SVN,svnmanager需要它

/opt/php/bin/pearinstallVersionControl_SVN-0.3.4

出现ok,等代表成功

5.2 安装svnmanager

tarxfsvnmanager-1.08.tar.gz

mvsvnmanager-1.08/opt/apache2/htdocs/svnman

5.3 修改配置文件

cp/opt/apache2/htdocs/svnman/config.php.linux/opt/apache2/htdocs/svnman/config.php

vim/opt/apache2/htdocs/svnman/config.php

$htpassword_cmd="/opt/apache2/bin/htpasswd";##意思很明显

$svn_cmd="/opt/subversion/bin/svn";

$svnadmin_cmd="/opt/subversion/bin/svnadmin";

//Subversionlocations

$svn_config_dir="/opt/subversion/conf";

$svn_repos_loc="/opt/svn_repos";

$svn_passwd_file="/opt/subversion/conf/passwdfile";

$svn_access_file="/opt/subversion/conf/accessfile";

$dsn="mysql://svnmanager:admin@localhost/svnmanager"; ##mysql,去掉i

$admin_name="admin";##初始的账号密码

$admin_temp_password="admin";

5.4 创建数据库

mysql

mysql>createdatabasesvnmanager;

mysql>grantallonsvnmanager.*to'svnmanager'@'localhost'identifiedby'admin';

mysql>flushprivileges;

5.5 将VersionControl_SVN拷到svnmanager中

tarxvfVersionControl_SVN-0.3.4.tgz

mvVersionControl_SVN-0.3.4/opt/apache2/htdocs/svnman/VersionControl

chown-Rapache:apache/opt/apache2

5.6 访问测试

http://$IP/svnman

初始账号:admin

初始密码:admin

建立新的管理账号后旧的就停用了

svnmanager用法见/view/4d95d0303968011ca30091a2.html

建立库,与用户后测试。到此svn服务器构建完毕

六.配置svn双机同步

原来有svn服务器,现在做一个镜像服务器,当原来的服务器down掉后可以代替它

源服务器:192.168.17.140

镜像服务器:192.168.17.139

实例同步的为源服器为crm的项目到镜像服务器

6.1 在镜像服务器上建立一新库crm,与具有读写权限的用户

用svnmanager来建,svnadmin create 的话svnmanager中看不到

这个就不写了,假设源上是http://192.168.17.140/svn/crm,镜像的为http://192.168.17.139/svn/crm,用户为:laoguang,密码为:admin 对两个项目都可读可写

6.2 修改镜像服务下项目hook目录下的脚本并启用

cp/opt/svn_repos/crm/hooks/pre-revprop-change.tmpl/opt/svn_repos/crm/hooks/pre-revprop-change

vim/opt/svn_repos/crm/hooks/pre-revprop-change

把最后的exit1改为exit0即可

6.3 镜像服务器执行初始化

svnsyncinitfile:///opt/svn_repos/crm/http://192.168.17.140/svn/crm/

输入具有读写账号密码,root的好像写的不对也没事

比如,我在192.168.17.140的一个账号laoguang 密码 admin

出现Copied properties for revision 0. 代表正确

6.4 开始同步源服务器上的数据

svnsyncsyncfile:///opt/svn_repos/crm/

---------------------------

Storepasswordunencrypted(yes/no)?yes

Transmittingfiledata..............................

Committedrevision1.

Copiedpropertiesforrevision1.

Transmittingfiledata.

Committedrevision2.

Copiedpropertiesforrevision2.

Transmittingfiledata.

Committedrevision3.

Copiedpropertiesforrevision3.

-----------------------------

代表同步成功

6.5 配置当源版本改变时自动同步

下面开始在源服器上操作

cp/opt/svn_repos/qingdao/hooks/post-commit.tmpl/opt/svn_repos/qingdao/hooks/post-commit

chmod755/opt/svn_repos/qingdao/hooks/post-commit

删除未注释的内容

在最下面写上

/opt/subversion/bin/svnsyncsync--non-interactivehttp://192.168.17.139/svn/crm/--usernamelaoguang--passwordadmin

升级源svn版本,测试镜像上同步了没。

七.配置svn 禁止普能用记删除文件

7.1修改源上的钩子脚本

cp/opt/svn_repos/qingdao/hooks/pre-commit.tmpl/opt/svn_repos/qingdao/hooks/pre-commit

chmod+x/opt/svn_repos/qingdao/hooks/pre-commit

vim/opt/svn_repos/qingdao/hooks/pre-commit

REPOS="$1" ##库位置

TXN="$2" ##版本

SVNLOOK=/opt/subversion/bin/svnlook ##svnlook的位置

SCMLIST="admin" ##允许删除的用记

C_USER=`$SVNLOOKinfo-t$TXN$REPOS|sed-n"1p"` ##执行commit的用户

if[-z`echo$SCMLIST|grep$C_USER`];then ## 如果commit的用户没在允许的里面

echo`$SVNLOOKchanged-t$TXN$REPOS`>/opt/svn_repos/qingdao/commit_log ##将操作写入日志

ifcat/opt/svn_repos/qingdao/commit_log|cut-d""-f1|uniq-u|grep"^D";then##如果日志开头包含D(D代表删除)

echo"Youdonothavepermissontodeleteafile">/dev/stderr##提示错误

rm-rf/opt/svn_repos/qingdao/commit_log ##删除文件

exit1 ##错误退出

fi

fi

exit0

到此本文完毕 感谢300second

其它来自百度。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。