1. 程式人生 > >linux下構建svn伺服器並實現專案自動部署

linux下構建svn伺服器並實現專案自動部署

在Linux系統中搭建svn服務所需要用到的軟體叫做subversion,可以通過yum來進行安裝.
svn服務是為了實現協同工作,即一個團隊公眾開發一個專案而不導致程式碼混亂,不會出現今天我修改的程式碼在不通知同事的情況下又被他修改了.
自動部署是為了讓修改後的程式碼自動的部署到專案資料夾裡,這個要通過svn的鉤子功能實現.
因此對svn的搭建要進行兩步操作:一、安裝svn伺服器,二、配置svn鉤子檔案
1. svn伺服器建立(安裝):
1.1 安裝:

[[email protected] ~]# yum install -y subversion

Loaded plugins: rhnplugin, security

This system is not registered with RHN.

RHN support will be disabled.

Setting up Install Process

Resolving Dependencies

--> Running
transaction check
---> Package subversion.i386 0:1.4.2-4.el5_3.1 set to be updated --> Finished Dependency Resolution Dependencies Resolved ==================================================================================================== Package Arch Version Repository Size ====================================================================================================
Installing: subversion i386 1.4.2-4.el5_3.1 rhel-base 2.3 M Transaction Summary ==================================================================================================== Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 2.3 M Downloading Packages: subversion-1.4.2-4.el5_3.1.i386.rpm | 2.3 MB 00:00 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : subversion 1/1 Installed: subversion.i386 0:1.4.2-4.el5_3.1 Complete!

1.2 驗證安裝版本:

[[email protected] ~]# svnserve --version

svnserve, version 1.4.2 (r22196)

compiled Aug  5 2009, 19:03:56

Copyright (C) 2000-2006 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.

1.3 建立SVN 版本庫

[root@singledb ~]# mkdir /u02/svn --新建資料夾

[root@singledb ~]# svnadmin create /u02/svn/davesvn  --davesvn為版本庫名稱

1.4 SVN 配置
建立版本庫後,在這個目錄下會生成3個配置檔案:

[root@singledb conf]# pwd

/u02/svn/davesvn/conf

[root@singledb conf]# ls

authz  passwd  svnserve.conf

(1)svnserve.conf: svn服務配置檔案下。

(2)passwd: 使用者名稱口令檔案。

(3)authz: 許可權配置檔案。

三個檔案的配置內容

svnserve.conf(主要是開啟以下配置,注意每行前面不能有空格):

anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = /data/svnhome

passwd檔案:

[users]
zhang =zhang123 --賬號 =密碼

authz檔案:

[aliases]
[groups]
[/]
zhang=rw

1.5 啟動SVN服務:

[[email protected] conf]# svnserve -d -r /u02/svn

   -d表示後臺執行

   -r 指定根目錄是 /u02/svn

1.6停止SVN服務:

[root@singledb conf]# ps -ef | grep svn
root      4592     1  0 18:04 ?        00:00:00 svnserve -d -r /u02/svn
root      4594  3709  0 18:04 pts/1    00:00:00 grep svn
ps -aux |grep svn
kill -9 程序殺掉

2.自動部署專案
使用post-commit實現自動部署

搭建svn都不是僅僅為了把程式碼存到倉庫,而是同步部署到對應的專案。

在 svn 目錄的 /hooks裡面有一堆tmpl,這些tmpl可以做很多事情,不過今天我們就說一下自動部署post-commit.tmpl。

tmpl檔案是模版檔案,我們要用post-commit需要手動複製對應tmpl裡面的內容到新的post-commit裡面

cp post-commit.tmpl post-commit

step.1:

然後開啟檔案清空內容,修改為以下程式碼:

!/bin/sh
export LANG=zh_CN.UTF-8
/usr/bin/svn update --username **** --password **** /var/www/test

其中第一行意思是:用sh來解析這個指令碼,因為各種shell的語法有細微的差別

第二行是編碼格式:這裡我使用的是UTF-8

最後一行/usr/bin/svn 是svn的路徑,不是專案路徑,應該都是一樣的,後半句分別是使用者名稱、密碼、和專案路徑。–username這個比較坑了,網上搜出來的很多都搞錯了,前面其實是兩個減號,英文輸入法下的。

step.2:

修改post-commit的可執行許可權

chmod 755 post-commit

step.3:

在伺服器進入專案目錄/var/www/test checkout 整個專案。

注意此處不要checkout資料夾,正確程式碼應該是這樣:

svn checkout svn://{您的伺服器地址}:{埠號}/test . //注意目錄後面還有一個點
注意:此處的/test 可不需要新增:( 新增的目的是為了實現多個專案。 )

svn checkout svn://{您的伺服器地址}:3690 . //注意目錄後面還有一個點
至此,如果按照此步驟搞下來,應該已經沒有問題了,你可以本地commit程式碼,自動同步到專案了。

3.常見錯誤:

255錯誤:post-commit沒有給執行許可權 或者 頭部沒有執行用sh執行,就是沒有#!/bin/sh
提示跳過目錄:伺服器目錄沒有checkout程式碼,記得一定要先checkout一次,才能同步(!,每次新建專案都需要)
什麼提示也沒有:這種情況出現在用工具commit的時候,成功了,但是就是沒有同步,建議你到linux下,使用./post-commit手動執行看報什麼錯誤。如果亂碼,請將檔案內編碼格式修改為GBK
提示** is a direcitory:/usr/bin/svn你把這個搞錯了,他不是一個目錄,是svn的路徑

相關推薦

linux構建svn伺服器實現專案自動部署

在Linux系統中搭建svn服務所需要用到的軟體叫做subversion,可以通過yum來進行安裝. svn服務是為了實現協同工作,即一個團隊公眾開發一個專案而不導致程式碼混亂,不會出現今天我修改的程式碼在不通知同事的情況下又被他修改了.

LinuxSVN伺服器搭建

鑑於在搭建時,參考網上很多資料,網上資料在有用的同時,也坑了很多人 本文的目的,也就是想讓後繼之人在搭建svn伺服器時不再犯錯,不再被網上漫天的坑爹作品所坑害,故此總結 /******開始*********/ 系統環境:Centos 6.5 第一步:通過yum命令安裝

Linux 安裝svn伺服器及錯誤集錦

        由於公司新買了一臺伺服器,然後要從新搭建svn伺服器,這個任務落到了我的身上,都要過年了。好吧,抱怨是窮人的專利。不能這樣,打起精神開幹。前後用了一個多小時,不過還是安裝好了,期間遇到

Maven專案配置tomcat8外掛實現專案自動部署到遠端linux伺服器

1.tomcat配置在tomcat目錄中的conf目錄下找到tomcat-users.xml配置檔案,然後搜尋tomcat-users,進行tomcat使用者的角色和許可權配置,如下:<tomcat-users> <role rolename="ma

Centos搭建SVN伺服器同步倉庫內容到WEB目錄

第一步:安裝svnversion Centos下可以使用yum安裝,自動配置環境變數 yum install subversion 安裝完成後可以用 svn help來檢查是否安裝成功 第二步:配置svnversion mkdir -p /home/svn/r

在Centos7上搭建SVN伺服器實現自動同步至web目錄

前言: 由於最近跟學長一起合作完成一個小專案,然後我倆比較熟悉的版本控制是SVN,就考慮著在伺服器上搭建一個SVN伺服器。現在在這裡給出簡單的搭建過程。 (其實吧,能用git就儘量用git吧,好處自己百度,有關搭建請參考我的另一篇部落格搭建伺服器上的GIT並

linux搭建SVN伺服器完全手冊

系統環境        RHEL5.4最小化安裝(關iptables,關selinux) + ssh + yum一,安裝必須的軟體包.        yum install subversion (SVN伺服器)                    mysql-serve

linux搭建SVN伺服器以及遇到的常見問題解決

                server_group = server_pw                client_group = client_pw                test_group = test_pw        5,修改使用者訪問策略                /hom

linux線上搭建svn環境實現上傳操作

搭建步驟: 1、檢查是否已經有svn 2、安裝subversion 3、檢查是否安裝成功 4、建立svn資源倉庫 5、新增使用者及密碼,配置許可權,配置資源庫許可權 6、啟動或者重啟服務 7、從機安裝subversion 8、測試首先檢視linux環境下是否安裝了svn如果沒

Windows-LinuxSVN伺服器搭建及SVN操作

一、Windows下的SVN伺服器搭建 開始安裝: 1、第一個安裝VisualSVN-Server-3.8.0-x64.msi 接下來我們要修改配置檔案: authz:負責賬號許可

ubuntu安裝svn伺服器建立分支

1、線上安裝svn伺服器 sudo apt-get install subversion2、建立svn倉庫 sudo mkdir /home/svn cd /home/svn/project sudo chmod -R 777 proje

Linux-7.2使用Tomcat-8.5實現專案部署(終極一般)

《 Linux-7.2下使用Tomcat-8.5實現專案熱部署 》 關於 Tomcat 的熱部署在 Tomcat 中部署 Java 專案,如果專案較大時,啟動 Tomcat 會非常慢,如此就

Linux搭建Git伺服器 Jenkins持續整合環境部署

1、安裝Git 見 Jenkins持續整合環境部署 第四節 2、建立Git使用者和使用者組 1 groupadd git 2 useradd git -g git 3、建立證書切換到git使用者建立證書 1 su git 2 cd /home/git 3 mkdir .ssh 4 c

使用 Webhooks 將 Linux 伺服器上的專案自動部署到 GitHub

我們的專案一般都會託管在類似 Github 和 Coding 之類的平臺上,當專案部署在伺服器上之後,如果發現需要更改一處地方,需要在本地更改之後提交到 Github,然後再登入伺服器拉取 Github 上的程式碼,可以說操作非常麻煩了,我們可以使用 Github 上的 Webhooks 實現本地提交之後伺服

jenkins實現專案自動部署

背景 之前給公司搭建過一套gitlab+gerrit+jenkins的持續整合環境,由於操作起來有點繁瑣,自己也沒太搞清楚該怎麼用,所以一直就只用了gitlab來做程式碼管理。最近要做一個專案自動部署的功能,使用過jenkins一定知道他的自動化功能

linux安裝svn服務端,配置自動更新專案到web目錄

①安裝svn服務端 [[email protected] ~]# yum install svn ②建立服務端倉庫,並設定許可權 [[email protected] ~]# mkdir -p /var/svn/test [[email protect

Linux(Red Hat6.5)安裝svn伺服器通過http訪問

一、安裝        1、安裝svn,一般情況下選擇yum方式安裝比較簡單。 [[email protected] svn]# yum -y install mod_dav_svn #會自動安裝mod_dav_svn及其依賴包:mod_dav_svn-1.6.1

centOs6.5 SVN 伺服器搭建實現提交自動同步到web伺服器

第一步,安裝SVN yum install subversion yum remove subversion(解除安裝) 第二步,建立SVN版本庫 mkdir -p /var/svn/svntest 第三步,建立版本庫 svnadmin create /var/svn/svntest執

linux操作svn實現根據時間段檢視某個指定使用者提交的記錄

svn log -v -r {2018-9-10}:{2018-9-25} | sed -n '/danni/,/--$/ p' 其中: -r {2018-9-10}:{2018-9-25}:通過-r來指定時間段 -v:表示顯示詳細資訊 sed -n '/danni/,/--$/

Linux 搭建 Git 伺服器後如何新建專案和新增使用者

關於如何在Linux 下搭建 Git 伺服器的問題,大家可以參考這篇文章(https://www.cnblogs.com/dee0912/p/5815267.html)。 我按照上面文章內容操作,確實搭建完成Git伺服器後,但是又出現了一個問題,如何新建專案,並且把參與開發人員加到該專案呢?下面