svn服务器配置以及自动同步到web服务器
感觉再不用svn就真的老了。
安装
yum install subversion
新建repo
mkdir -p /opt/svn/myrepo svnadmin create /opt/svn/myrepo
修改repo的配置文件
vim /opt/svn/myrepo/conf/svnserve.conf
内容修改为:
### This file controls the configuration of the svnserve daemon, if you ### use it to allow access to this repository. (If you only allow ### access through http: and/or file: URLs, then this file is ### irrelevant.) ### Visit http://subversion.apache.org/ for more information. [general] ### The anon-access and auth-access options control access to the ### repository for unauthenticated (a.k.a. anonymous) users and ### authenticated users, respectively. ### Valid values are "write", "read", and "none". ### Setting the value to "none" prohibits both reading and writing; ### "read" allows read-only access, and "write" allows complete ### read/write access to the repository. ### The sample settings below are the defaults and specify that anonymous ### users have read-only access to the repository, while authenticated ### users have read and write access to the repository. anon-access = read auth-access = write ### The password-db option controls the location of the password ### database file. Unless you specify a path starting with a /, ### the file's location is relative to the directory containing ### this configuration file. ### If SASL is enabled (see below), this file will NOT be used. ### Uncomment the line below to use the default password file. password-db = passwd ### The authz-db option controls the location of the authorization ### rules for path-based access control. Unless you specify a path ### starting with a /, the file's location is relative to the the ### directory containing this file. If you don't specify an ### authz-db, no path-based access control is done. ### Uncomment the line below to use the default authorization file. authz-db = authz ### This option specifies the authentication realm of the repository. ### If two repositories have the same authentication realm, they should ### have the same password database, and vice versa. The default realm ### is repository's uuid. realm = myrepo ##!!要和你前面的repo名字一致 ### The force-username-case option causes svnserve to case-normalize ### usernames before comparing them against the authorization rules in the ### authz-db file configured above. Valid values are "upper" (to upper- ### case the usernames), "lower" (to lowercase the usernames), and ### "none" (to compare usernames as-is without case conversion, which ### is the default behavior). # force-username-case = none [sasl] ### This option specifies whether you want to use the Cyrus SASL ### library for authentication. Default is false. ### This section will be ignored if svnserve is not built with Cyrus ### SASL support; to check, run 'svnserve --version' and look for a line ### reading 'Cyrus SASL authentication is available.' # use-sasl = true ### These options specify the desired strength of the security layer ### that you want SASL to provide. 0 means no encryption, 1 means ### integrity-checking only, values larger than 1 are correlated ### to the effective key length for encryption (e.g. 128 means 128-bit ### encryption). The values below are the defaults. # min-encryption = 0 # max-encryption = 256
添加用户
vim /opt/svn/project/conf/passwd
[users] # harry = harryssecret # sally = sallyssecret chris = my_password
修改用户访问策略
vim /opt/svn/project/conf/authz [groups] repositories = chris [/] @repositories = rw chris = rw
启动和关闭svn服务
svnserve -d -r /opt/svn/repositories
killall svnserve
注意 如果开启了防火墙,记得放行相应端口
同步到web服务器
假设web服务器中,本项目myrepo对应/var/www/html/mall
目录.
要先到web服务器中项目目录下svn checkout
:
cd /var/www/html/mall svn check svn://218.244.143.208
然后配置/opt/svn/myrepo/hooks/post-commit
内容为:
#!/bin/sh #设定环境变量,如果没有设定可能会出现update报错 export LANG=zh_CN.UTF-8 REPOS="$1" REV="$2" SVN_PATH=/usr/bin/svn WEB_PATH=/var/www/html/mall LOG_PATH=/tmp/svn_update.log echo "nnn##########开始提交 " `date "+%Y-%m-%d %H:%M:%S"` '##################' >> $LOG_PATH echo `whoami`,$REPOS,$REV >> $LOG_PATH $SVN_PATH update --username chris --password pipe42 $WEB_PATH --no-auth-cache >> $LOG_PATH chown -R apache:apache $WEB_PATH
并注意修改post-commit
文件权限:
chmod +x post-commit chown apache:apache post-commit
好了,大功告成,现在在开发机上用svn客户端软件,把repo们checkout到本地,然后add和commit后,web服务器上会自动同步!
Greatness is never a given, it must be earned.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧