關於linux搭建svn服務器並實現php代碼自動部署到線上服務器

關於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 密碼

然後客戶端提交即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章