////---- linux搭建SVN服务器 并且实现项目自动同步 本教程使用的是 阿里云 centerOs 7.1 ----////
零.ssh登录linux服务器
ssh root@你的服务器ip(ps:接着会让你输入密码,密码不显示,直接输完 enter 就行了)一.安装svn服务器端
yum install subversion二.进入目录,准备创建svn目录
cd /usr/local/三.创建一个svn目录
mkdir svn四.修改目录权限为777
chmod -R 777 svn五.创建一个svn版本仓库first(first可以随便起名字)
svnadmin create /usr/local/svn/first六.进入first版本仓库下的配置文件目录
cd first/conf七.编辑svnserve.conf配置文件
vim svnserve.conf (基本常识:vim 编辑文件 进如按E编辑 编辑好后 按esc 后:W 保存 :q退出) //配置版本库信息和用户文件和用户密码文件的路径、版本库路径 anon-access = none //默认是只读read auth-access = write //认证后有写入权限 password-db = passwd //帐号密码配置文件 authz-db = authz //权限配置文件 realm = first //改成自己的版本库 生效范围八.编辑authz权限文件
vim authz //文件,创建svn组和组用户的权限 [group] first = ddl,shl //创建一个first的组,并制定两个用户ddl和shl [/] //制定根目录下的权限 @first = rw //first组用户权限为读写 * = r //其他用户只有读权限九.编辑passwd权限文件
vim passwd //创建或修改用户密码 [users] ddl = 123456 //用户名 = 密码 shl = 123456 //用户名 = 密码十.设置SVN服务开机自启动
1. 在root目录加入svn.sh
touch /root/svn.sh2. 让后在svn.sh写入内容
vim /root/svn.sh ////----写入的内容----//// #!/bin/bash /usr/bin/svnserve -d -r /usr/local/svn/cnmiaosu ////----写入的内容----////3. svn.sh该脚本添加可执行权限(非常重要)
chmod +x svn.sh4. 加入自动运行
1.vim /etc/rc.d/rc.local
在末尾添加脚本的路径:
/root/svn.sh //按esc 后:W 保存 :q退出2.最后 给 /etc/rc.d/rc.local 加入执行权限,因为在centos7中,/etc/rc.d/rc.local文件的权限被降低了,开机的时候执行在自己的脚本是不能起动一些服务的,执行下面的命令可以文件标记为可执行的文件
chmod +x /etc/rc.d/rc.local (非常重要)
十一.使用post-commit实现自动部署,实现本地提交svn后,自动同步服务器中项目
1.打开hooks文件夹
cd /usr/local/svn/hooks2.复制post-commit.tmpl 文件为 post-commit
cp post-commit.tmpl post-commit3.打开post-commit文件
vim post-commit4.文件内容清空内容,修改为以下代码:
#!/bin/sh export LANG=en_US.UTF-8 /usr/bin/svn update --username ddl --password 123456 /www/web/myweb 注意: /usr/bin/svn 是svn的路径,不是项目路径,应该都是一样的; --username ddl --password 123456 svn账户和密码 /www/web/myweb 项目路径(需要实时同步的项目)5.修改post-commit的可执行权限
chmod 755 post-commit6.在上面我见了一个svn版本库为first,但是这只是版本库,并没有项目,那么我们需要在版本库里面新建项目(也就是建立一个文件夹)
这里推荐使用 windows 下面的 TortoiseSVN 客户端,打开版本库后右键 建立一个 《myweb》 项目文件夹,然后把所有的项目文件 拖入到 该文件夹内 上传svn服务器;
注意:为什么不推荐用linux方式上传项目到svn服务器中,因为linux上传一个个文件上传很麻烦,所以推荐 TortoiseSVN 客户端 上传
7.在服务器进入项目目录/www/web/myweb checkout 整个项目。
注意此处不要checkout文件夹,正确代码应该是这样:
svn checkout svn://{您的服务器地址}:{端口号}/myweb . //注意目录后面还有一个点十二.常见错误,我遇到的
1.255错误:post-commit没有给执行权限 或者 头部没有执行用sh执行,就是没有#!/bin/sh
2.提示跳过目录:服务器目录没有checkout代码,记得一定要先checkout一次,才能同步(!,每次新建项目都需要)
3.什么提示也没有:这种情况出现在用工具commit的时候,成功了,但是就是没有同步,建议你到linux下,使用./post-commit手动执行看报什么错误。如果乱码,请将文件内编码格式修改为GBK
4.提示**** is a direcitory:/usr/bin/svn你把这个搞错了,他不是一个目录,是svn的路径
十三.需要注意的问题;
1.SVN版本库起动方式,现在svn下面有 first、test 两个版本库
1:单版本库起动 svnserve -d -r /usr/local/svnRepo/first
2:多版本库起动 svnserve -d -r /usr/local/svnRepo
2.如果使用的是阿里云服务器需要在《安全策略》中加入 3690 端口
3.如果使用的是wdcp面板,需要在防火墙中加入 3690 端口
////---- 常用:svn命令 ----////
lsof -i :3690 //查看svn是否启动 ps aux |grep 'svn' //查找所有svn启动的进程 kill -9 2505 //杀死2505这个查找到的svn进程 svnserve -d -r /usr/local/svn/first //启动svn netstat -anp|grep svnserve //查看一下SVN信息 svnserve --version //查看一下SVN版本 svn checkout svn://120.55.59.185/cmf_cnmiaosu_com . //检出数据
////----- Mac下使用iTerm2让SSH记录远程服务器账号和密码 ----////
第一步:打开Finder,在菜单栏找到『前往』→ 『前往文件夹...』,输入:~/.ssh/ 然后回车
第二步:新建一个文件,命名为example吧,里面写入内容:
set user BS服务器账号 set host 服务器IP set password 服务器密码 spawn ssh $user@$host expect "*assword:*" send "$password\r" interact expect eof
第三步:到官方http://www.iterm2.com/下载并打开iTerm2,菜单栏找到『Profiles』→『Open Profiles...』,打开面板上,点击右下角『Edit Profiles...』
第四步:在打开面板,左边BS应该是选中默认default,右边找到Command,默认应该是Login shell,选中Command,里面输入:expect ~/.ssh/example
第五步,下次打开iTerm2,是不是默认就登录上服务器了?极大提升效率。