關於linux搭建svn服務器並實現php代碼自動部署到線上服務器
寫在前面
該文章中很大部分引用了一個前輩的博客,其中加入了我在部署中遇到的一些問題,對一些地方做出了修改,但因爲當時寫這篇有道雲的時間太久了,已經找不到原文地址,如原作者有異議請與我聯繫我將按您的意見進行處理.
個人建議
個人建議最好使用gitlab作爲代碼管理工具,目前我已將我們公司從svn全部搬遷到gitlab,至於原因
1.追求逼格 大家都在用git
2.gitlab的分支比svn高端的不是一丁半點
3.gitlab就自動部署php的代碼來說更加方便,如果代碼管理工具服務器爲a,服務器爲b,個人電腦爲c
gitlab可以將c提交的代碼直接同步到b
而svn則必須a與b爲同一臺電腦(好像是有可以不同的方案但有點麻煩)
今天太晚了暫且休息,下次將會把部署gitlab以及gitlab的自動部署到服務器整理出來分享一下
步驟:
1、檢查是否已經有svn
2、安裝subversion
3、檢查是否安裝成功
4、創建svn資源倉庫
5、新增用戶及密碼,配置權限,配置資源庫權限
6、開放防火牆
7、啓動或者重啓服務
8、從機安裝subversion
9、設置代碼同步
一、檢查是否已經有svn
如果沒有安裝就會是下面的樣子,提示找不到命令。
[root@localhost ~]# svnserve --version
-bash: svnserve: command not found
如果已經安裝,會顯示版本信息:
[root@localhost ~]# svnserve --version
svnserve, version 1.6.11 (r934486)
compiled Aug 17 2015, 08:37:43
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
The following repository back-end (FS) modules are available:
* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.
Cyrus SASL authentication is available.
以上爲版本信息
二、安裝
在Linux下安裝的是subversion,直接用yum 安裝即可。
[root@localhost ~]#
[root@localhost ~]# yum install -y subversion
三、檢查安裝是否成功
同樣用的是 svnserve –version成功安裝會顯示版本信息
[root@localhost ~]# svnserve --version
四、創建svn資源倉庫
配置文件就是在這一步生成。我將倉庫建立在home目錄下
[root@iZ5bbc7dzs11kiZ home]# mkdir svnDB
[root@iZ5bbc7dzs11kiZ home]# cd svnDB
[root@iZ5bbc7dzs11kiZ home]# mkdir dsc //建立具體項目文件夾
[root@iZ5bbc7dzs11kiZ home]# # svnadmin /home/svnDB/dsc 建立倉庫
這時進入文件夾即可看到文件夾中出現多個文件 這些就是項目文件了
五、新增用戶及密碼,配置權限 配置文件在conf文件夾中
authz #權限配置文件
passwd #用戶名密碼文件
svnserve.conf #資源庫配置文件
新增用戶
[root@localhost conf]# cd conf
[root@localhost conf]# vim passwd
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
[users]
# harry = harryssecret
# sally = sallyssecret
biji = 123456 //添加賬號與密碼
~
配置權限
[root@localhost conf]# vim authz
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
[/]
* = r
# @admin = rw
# dangerman =
# [svndir:/]
# @admin = rw
[/] //對那個文件夾有操作權限
biji = rw //擁有什麼權限 rw讀寫權限
資源庫配置 找到幾行做一下注釋 分別爲10 11 18 25 30行
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository
六、配置防火牆端口(如果需要):
不一定每個人都需要設置,可以先測試後再看是否需要打開端口
# vi /etc/sysconfig/iptables
添加一下內容:添加到最後一句的上面
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT
保存後重啓防火牆
/etc/init.d/iptables save
service iptables restart
七、啓動svn
# svnserve -d -r /home/svnDB
查看SVN進程
ps -ef|grep svn|grep -v grep
檢測SVN端口
netstat -apn | grep 3690
停止重啓SVN:
# killall svnserve //停止
# svnserve -d -r /home/svnDB // 啓動
八、連接地址爲svn://xx.xx.xx.xx:3690/dsc 服務器端安裝客戶端
九、設置服務器同步
進入項目目錄複製copost-commit (複製這份模板文件,因爲svn將要執行的是post-commit文件)
cp post-commit.tmpl post-commit
vim post-commit
#!/bin/sh
REPOS="$1"
REV="$2"
export LANG="zh_CN.UTF-8"
svn update /mnt/test --username 用戶名 --password 密碼 --no-auth-cache
增加可執行權限
chmod 777 post-commit
重啓服務
先在服務器檢出
svn co svn://xxx.xxx.xxx.xxx/dsc /mnt/test --username 用戶名 --password 密碼
然後客戶端提交即可