搭建svn服务器并自动更新到web服务器
安装搭建svn和版本库
- 使用yum安装svn
yum install -y subversion
-y的作用就是默认在后续弹出的提示中选择yes 可使用yum -h查看具体参数的作用
-y, --assumeyes answer yes for all questions
2. 查看版本信息
svnserve --version
如果没有显示正确的版本信息 可以根据错误提示搜一下解决办法
svn: error while loading shared libraries: libaprutil-1.so.0: cannot
open shared object file: No such file or directory
这个是我出现的错误信息
可参考[https://blog.csdn.net/hipihi_0/article/details/8108132]
因为的我/usr/local目录下并没有apr-util这个目录所以只加入apr这个目录
然后使用 ldconfig -v后在输入svnserve --version就能正确显示版本号也能正常使用了
3. 创建版本仓
mkdir /home/svn
cd /home/svn
.
4. 创建项目目录并进入
svnadmin create project
cd project
在svn目录中创建项目目录并进入 可以看到里面自动生成很多目录和文件
5. 设置用户组 账号密码 权限
修改权限配置文件 conf/authz
vim conf/authz
添加一个用户组 user1 里面有两个账号 admin1 admin2
这个用户组的权限为 rw (可读可写)
设置登录的账号密码 conf/passwd
vim conf/passwd
注意:这里的账号前面不能有空格 不然会导致登录失败
配置svn配置文件 conf/svnserve.conf
vim conf/svnserve.conf
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
将上面这几个前面的#号去掉即可
realm = /home/svn/project 版本仓所在位置
这个可改可不改 我没改也是可以成功checkout的
6. 启动svn服务器
svnserve -d -r /home/svn
如果提示svn服务已在运行中 先退出进程在启动
killall svnserve
svnserve -d -r /home/svn
然后我们在web目录 检出
svn checkout svn://localhost/project --username admin1
svnserve各参数详解
成功导出后 我们可以添加一个文件
cd project
vim index.php
保存退出
提交文件并更新到svn
svn add index.php
svn commit index.php -m 'update '
显示提交成功后 我们可以在本地检出 就可以看到index.php这个文件
导入原项目到版本库中
svn import /www/project/ file:///home/svn/projectName/ -m "initial improt"
这个指令是可将原项目(/www/project/)导入到版本库中
这样在检出(chekcout)时 便包含了原项目
使用钩子对本地提交的文件自动更新到web服务器
vim /home/svn/project/hooks/post-commit
添加下面的内容
#!/bin/sh
SVN_PATH=/usr/bin/svn
WEB_PATH=/yjdata/www/www/project LOG_PATH=/home/svn/log/project_log
echo `date "+%Y-%m-%d %H:%M:%S"` >>$LOG_PATH
$SVN_PATH update $WEB_PATH --username admin1 --password admin1 >> $LOG_PATH
WEB_PATH 自己实际的项目路径
LOG_PATH SVN更新日志路径
添加完给这个文件一个权限 不然会导致更新失败
chmod 775 /home/svn/project/hooks/post-commit
同时需要在home目录创建一个目录log
mkdir /home/log
然后将本地的index.php修改或者新建文件 就能看到web目录跟着更新了.