Tuesday, 28. July 2009, 01:06:29
Apache, Subversion
用 subversion (以下简称 svn) 做版本管理,可以免去 ftp 上传代码的过程,具体方法是通过 svn 的 commit hook 自动更新代码。
以下是设置的步骤:
切换到 root 用户。
# su -导出项目。
# cd /home
# svn checkout --username USER_NAME --password USER_PASS http://localhost/svn/PROJECT_NAME/trunk/ PROJECT_NAME
# chown -R USER_NAME PROJECT_NAME编写 shell 脚本。
# vi /home/USER_NAME/bin/svn_auto_update.sh输入
#!/bin/sh
date >> /tmp/svn_auto_update
cd /home/PROJECT_NAME
echo "$1 --- $2" >> /tmp/svn_auto_update 2>&1
svn status | awk '/^?/ {print $2}' | xargs rm -Rvf >> /tmp/svn_auto_update 2>&1
svn update --username USER_NAME --password USER_PASS >> /tmp/svn_auto_update 2>&1
更改脚本的所有者。
# chown -R USER_NAME PROJECT_NAME /home/USER_NAME/bin/svn_auto_update.sh设置 svn 的 hook。
# cd /home/svnrepo/PROJECT_NAME/hooks
# cp post-commit.tmpl post-commit
# chmod a+x post-commit
# vi post-commit追加
date >> /tmp/svn_log
/usr/bin/sudo -H -u USER_NAME /home/USER_NAME/bin/svn_auto_update.sh $REPOS $REV >> /tmp/svn_log &
把 apache 用户加入 sudoer。
# usermod -G apache USER_NAME
# visudo追加
apache ALL=(USER_NAME) NOPASSWD: /home/USER_NAME/bin/svn_auto_update.sh
说明:1.以上命令和代码中的 USER_NAME 是用户名,USER_PASS 使用户密码,PROJECT_NAME 是项目名,不同环境会有不同的名字。
2.以上设置,前提是 apache 和 subversion 在同一台机器上,svn 项目已经建立,apache 的 svn 设置也已经做好。
Wednesday, 8. July 2009, 07:13:49
Subversion
CentOS 下安装配置 Subversion (简明实用)
用 yum 安装 apache 模块。
# yum install mod_dav_svn
创建库。
# cd /home
# mkdir svnrepo
# cd svnrepo
# svnadmin create project1
# svn mkdir file:///home/svnrepo/project1/trunk file:///home/svnrepo/project1/tags file:///home/svnrepo/project1/branches -m "initial repository layout"
更改目录的所有者为 apache 用户。
# chown -R apache.apache project1
创建用户认证文件(采用Digest)。
# htdigest -c .htdigest 'Subversion Area' admin
Adding password for admin in realm Subversion Area.
New password: (输入密码)
Re-type new password: (输入密码)
追加用户。
# htdigest .htdigest 'Subversion Area' user1
# htdigest .htdigest 'Subversion Area' user2
设置 Apache。
# cd /etc/httpd/conf.d/
# cp -p subversion.conf subversion.conf.orig
# vi subversion.conf
输入以下内容:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
Alias /svn "/home/svnrepo"
<Location /svn>
DAV svn
SVNParentPath /home/svnrepo
AuthType Digest
AuthName "Subversion Area"
AuthUserFile /home/svnrepo/.htdigest
Require valid-user
</Location>
重启 Apache。
# /etc/init.d/httpd configtest
# /etc/init.d/httpd restart
Wednesday, 24. December 2008, 08:40:22
Subversion, Linux
1. 下载wget
http://subversion.tigris.org/downloads/subversion-1.5.5.tar.bz2wget
http://subversion.tigris.org/downloads/subversion-deps-1.5.5.tar.bz22. 编译安装tar -zxvf subversion-1.5.5.tar.bz2
tar -zxvf subversion-deps-1.5.5.tar.bz2
cd subversion-1.5.5
./configure
make
报警:没有 Berkley DB出错:
/usr/include/openssl/kssl.h:72:18: krb5.h: No such file or directory
... ...3. 安装 OpenSSL 最新版wget
http://www.openssl.org/source/openssl-0.9.8i.tar.gztar -zxvf openssl-0.9.8i.tar.gz
cd openssl-0.9.8i
make
make install
4. 安装 Berkley DB下载 db-4.7.25.tar.gz (不能直接 wget,具体怎么做不再赘述)
tar -zxvf db-4.7.25.tar.gz
cd db-4.7.25
../dist/configure --prefix=/usr/local/berkeley-db --enable-compat185
make
make install
5. 排错经查证,文件 krb5.h 在 /usr/kerberos/include/ 下面,网上有介绍说在 Makefile 里面加上这个路径就可以,于是在 Makefile 中追加:
-I//usr/kerberos/include
再次编译,仍然出错。
最后只有用文件链接的土办法来解决:
ln -s /usr/kerberos/include/krb5.h /usr/include/krb5.h
ln -s /usr/kerberos/include/profile.h /usr/include/profile.h
ln -s /usr/kerberos/include/com_err.h /usr/include/com_err.h
重新配置和编译
./configure --with-ssl --with-berkeley-db=/usr/local/berkeley-db
make
还是出错,说是找不到 libdb-4.1.la 和 libexpat.la。
上网找解决办法,说是加 --disable-shared 即可解决。
6. 再次编译安装cd subversion-1.5.5
./configure --with-ssl --with-berkeley-db=/usr/local/berkeley-db --disable-shared
make
make install
忙活半天,终于装上。
为了给后人省时间,记录一下安装过程。
Sunday, 15. July 2007, 08:48:00
Linux, Subversion, Ubuntu
以下是我在Ubuntu下Subversion的安装记录。
软件安装若系统尚未安装Apache,建议先安装Apache,最好是Apache2
$ apt-get install apache2之后安装Subversion以及Apache2模块
$ apt-get install subversion libapache2-svn创建用户组$ groupadd subversion
$ usermod -G subversion myuser新建版本库$ mkdir /home/svn
$ chown -R www-data:subversion /home/svn
$ chmod -R g+rs /home/svn
$ svnadmin create /home/svn/myproject
$ chmod -R g+rw myproject项目文件准备建立将要导入到版本库的文件与目录,包括三个顶级子目录,分别是branches、tags和trunk:
/tmp/myproject/branches/
/tmp/myproject/tags/
/tmp/myproject/trunk/项目文件放在 /tmp/myproject/trunk/ 以下。
项目文件导入$ svn import /tmp/myproject file:///home/svn/myproject -m "initial import"项目文件导出测试(file方式)$ cd /home/myuser
$ svn checkout file:///home/svn/myproject/trunk myproject1版本更新测试$ cd /home/myuser/myproject1追加文件
$ echo '这是一个新文件' > newfile
$ svn add newfile
$ svn commit删除文件
$ svn delete newfile
$ svn commit以上步骤,若无问题,表明Subversion已经初步安装设置成功。
接下来是和Apache结合的Subversion配置步骤。
修改httpd.conf$ vi /etc/apache2/httpd.conf 追加以下内容:
# SVN Repository
<Location /svn>
DAV svn
SVNParentPath /home/svn
</Location>
重启动Apache$ /etc/init.d/apache2 restart通过Web访问svn测试用浏览器访问以下地址:
http://localhost/svn/myprojecthttp://localhost/svn/myproject/trunk/若能正常访问,即OK。
项目文件导出测试(http方式)$ cd /home/myuser
$ svn checkout http://localhost/svn/myproject/trunk/ myproject2版本更新测试$ cd /home/myuser/myproject2追加文件
$ echo '这是一个新文件' > newfile
$ svn add newfile
$ svn commit删除文件
$ svn delete newfile
$ svn commit以上步骤,若无问题,表明通过Web访问控制的Subversion已经设置成功。
以上安装设置尚未考虑用户权限,具体设置请参考
Subversion的官方文档。