인프라/AWS 2018. 9. 19. 22:48

MacOS 환경에서 진행하였습니다.



이전 글들에서 ubuntu 환경에서 svn을 설치하는 방법과 이클립스와의 연동을 설명하였습니다. 이제는 svn 사용 방법 혹은 전략 설명입니다.

진행하기 앞서 용어 설명을 하자면,


1)trunk : 기둥이 되는 저장소(폴더)입니다. 즉, 나무로 따지자면 기둥이 되는 것입니다. 이것을 형상관리로 얘기하자면 첫 소스를 svn에 import할때, trunk에 업로드합니다. 그 이후에 나무의 기둥이되는 trunk에서 가지를 뽑아 수정을 하게되는 것이 braches라는 개념(하나의 프로젝트에서 수정되는 부분만 뽑는 것이 branche)입니다. branches들을 수정하였다면 이 수정된 소스를 merge하는 저장소가 trunk입니다. 모든 수정이 commit되면 최종이 되는 녀석이 trunk라는 기둥(저장소)이 되는 것입니다.


2)branches : trunk에서 수정이 되는 부분을 뽑아 내는 것이 branches입니다. 나무로 비유하면 가지가 되는 녀석입니다. trunk에서 branches들을 뽑아내어 수정을 완료하면 다시 trunk에 merge를 하게됩니다. 즉, trunk는 저장소에서 하나이지만 branches는 여러개가 될수 있습니다.(여러사람이 각자의 맡은 부분을 가지로 떼어내어 수정을 하기에)


3)tags : 쉽게 제품과 비교하면 맥북이 15년도 제품을 릴리즈하고, 그 다음 16년 제품을 릴리즈, 17년, 18년 제품들을 꾸준히 릴리즈합니다. 이 릴리즈되는 버전들을 하위버전에서 완전히 벗어나는 녀석들이 아닌 수정 및 보완, 혹은 기능추가 정도이겠죠. 즉, tags들이란 버전별로 릴리즈 할때 마다 하나씩 생기는 겁니다. 각 tag들은 branches를 가지지 않습니다. 즉 수정되는 애가 아니라는 뜻입니다. 왜 릴리즈하는 애들을 저장하냐? 만약 17년 버전 이후에 18년 버전이 나왔는데, 18년 버전들이 전량 다 불량이라면? 우선은 아무런 사용에 문제가 없는 17년 버전을 다시 내놓겠죠?(조금 억지...) 이런 개념입니다. 새로운 소프트웨어를 릴리즈했지만 버그 및 오류가 너무 심할 경우 이전버전을 다시 배포하여 우선 운영할 수 있는 환경을 갖을 수 있게 되는 겁니다.





<trunk, branches, tags 생성 방법>

생성과정은 svn이 올라가 있는 서버에서 직접생성한다는 가정입니다.


root@ra:/# svn mkdir --parents svn://localhost/webProject1/branches —username=yeoseong_yoon

root@ra:/# svn mkdir --parents svn://localhost/webProject2/trunk —username=yeoseong_yoon

root@ra:/# svn mkdir --parents svn://localhost/webProject3/tags —username=yeoseong_yoon

만약 이 명령어가 먹지 않는다면 구글링을 해서 .bash_profile에 등록하는 방법을 참고하시면 됩니다.

저 명렁어를 치면 처음에 사용자 계정에 대한 비밀번호를 입력하라고 나올 것입니다. 그 패스워드는 passwd에 저장한 비밀번호를 쳐주시면 됩니다. 그러고 나면 갑자기 vi창이 열릴 것인데 당황하지 말고 controll+x(exit)를 누르고 창을 벗어난 이후 c 를 한번 눌러주면 connect...어쩌고 하면서 trunk가 생성됩니다. 참고로 webProject1 레포지토리에서 ls를 하여 폴더를 봐도 trunk 폴더는 보이지 않습니다. 하지만 이클립스 혹은 svn클라이언트에서 보시면 정상적으로 trunk,braches,tags가 생성되어 있을 것입니다.





저기에서 webProject라는 저장소가 나온 기준이 있습니다.

만약 이렇게 형상관리하는 프로젝트가 3개라면?
svn을 실행시킬때 svnserve -d -r /home/yeoseong_yoon/svn 까지의 경로로 실행을 시켜줄겁니다. 왜냐? .../svn 밑으로 프로젝트들이 각각 형상관리를 위한 폴더를 가지기 때문에 ...svn/ 까지의 경로로 실행을 시켜주어야 3개의 형상관리 레포지토리가 모두 실행될것이기 때문입니다. 그리고 위의 trunk,branches,tags를 실행시키는 명령어의 url이 이해가 될것입니다. 경로의 기준은 svn을 실행시킨 경로 이하의 webProject1,webProject2,webProject3부터 적어주면 됩니다. 만약 그러면 webProject1 밑의 project폴더가 하나 더있고, project폴더에 형상관리되는 소스파일이 저장된다면 svn://localhost/webProject1/project/trunk라는 url로 실행하게 될것입니다.

/home/yeoseong_yoon/svn/webProject1
/home/yeoseong_yoon/svn/webProject2
/home/yeoseong_yoon/svn/webProject3

추후에 trunk에 braches를 merge하는 전략 및 전반적인 svn 사용법을 업로드하겠습니다!


'인프라 > AWS' 카테고리의 다른 글

이클립스 svn 연동  (0) 2018.09.07
aws(아마존) ec2-ubuntu svn 설치  (0) 2018.09.06
맥에서 아마존 ec2(ubuntu) ssh 접속방법  (0) 2018.09.05
posted by 여성게
:
인프라/AWS 2018. 9. 7. 00:19

mac os x 에서 진행하였습니다.


*이클립스에서 help>Eclipse Marketplace 에서 svn을 검색하여 "subversive"를 install 해줍니다.


*설치가 끝난 후에 restart된 후에 Marketplace 같은 창이 떠서 svn kit을 설치하라는 창이 뜬다면 kit을 받아주고

만약 그러한 창이 뜨지 않는다면 preference>Team>SVN 에서 SVN Connector tab을 눌러줘서 설치를 해줍니다(select 창 밑에 Get ..어쩌고 떴던 기억이)


설치가 된후에 Open perspective(우측상단) 에서 svn 창을 하나 열어줍니다.

그리고 SVN Repository view 에서 새로운 connection을 생성해줍니다.


*url-> svn://server_ip를 입력한 후에 등록한 사용자 아이디와 패스워드를 입력한 후에 엔터를 탁 쳐줍니다.


이경우는 웹서버에 따로 올리지 않았을 경우. (svn protocol을 사용)



*그런데 만약 커넥션이 되지 않는다면 몇가지 경우가 있는데, 

*1) kit이 제대로 받아지지 않은 경우(필자는 여기서 애먹음) 

*2) url이 틀려서 location 에러가 뜬경우(여기서도 많이 애먹음 다른 블로그에서는 svn://server_id/projectName(사용자지정)이었는데 필자는 /projectName을 빼고 넣으니 됬음. 아마 필자가 놓치고 있는 부분이 있는듯함) 

*3)사용자 계정정보가 틀린경우



*1)번 같은 경우는 수동으로 설치하는 방법이 있습니다.


*help>new install software 에 work with tab에 밑의 url을 넣고 plug-in을 수동으로 받아줍니다.


*http://community.polarion.com/projects/subversive/download/eclipse/6.0/update-site/




기타 사용법은 추후에 업로드하도록 하겠습니다...:)

posted by 여성게
:
인프라/AWS 2018. 9. 6. 21:38

aws ec2(ubuntu) 기준으로 진행하였습니다.


~$ svn

The program 'svn' is currently not installed. You can install it by typing: sudo apt-get install subversion


->설치가 되지 않은 것입니다. 설치를 해줍니다.


~$ sudo apt-get install subversion


->설치 후 잘 설치가 되었는지 버전을 확인해봅니다.


~$svn --version


->만약 문제 없이 버전이 잘나온다면 설치가 잘된 것이겠죠.


~$mkdir svn


->폴더를 하나 만들어줍니다.(원하는 위치에 하시면 되지만 저는 일단 $HOME에 생성했습니다.)


~$cd svn

~svn$svnadmin create --fs-type fsfs repos


->저장소를 생성해줍니다.


~$cd repos/conf

~$vi svnserve.conf


anon-access = none =>익명사용자 사용불가

auth-access = write =>인증사용자 읽기/쓰기

password-db = passwd =>아이디/패스워드가 담길 파일

authz-db = authz 


->요놈들을 바꿀것은 바꾸고 주석을 풀어줍니다.


~$vi passwd


[users]

yeoseong = 1234 =>아이디/패스워드를 저장해줍니다.


~$vi authz


[groups]


team = yeoseong

[/]

*=r

@team=rw

[repository:/]

@rnbchatbot=rw


->team이라는 그룹에 권한을 넣어주는 설정(나중에 사용자가 여러명이라면 "," 으로 사용자를 추가한다 ex. team=yeoseong,kiseok,wonhyeok)


~$cd /etc/init.d

~/etc/init.d/$vi svnserve


#! /bin/sh
### BEGIN INIT INFO
# Provides:          svnserve
# Required-Start:    $local_fs $syslog $remote_fs
# Required-Stop:     $local_fs $syslog $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start svnserve
### END INIT INFO

# Author: Michal Wojciechowski <odyniec@odyniec.net>

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="svnserve"
NAME=svnserve
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-d -r /home/svn/repos"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

[ -x "$DAEMON" ] || exit 0

[ -r /etc/default/$NAME ] && . /etc/default/$NAME

. /lib/init/vars.sh

. /lib/lsb/init-functions

do_start()
{
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
        || return 1
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
        $DAEMON_ARGS \
        || return 2
}

do_stop()
{
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
    RETVAL="$?"
    [ "$RETVAL" = 2 ] && return 2
    start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
    [ "$?" = 2 ] && return 2
    rm -f $PIDFILE
    return "$RETVAL"
}

case "$1" in
  start)
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
    do_start
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  stop)
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
    do_stop
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  restart|force-reload)
    log_daemon_msg "Restarting $DESC" "$NAME"
    do_stop
    case "$?" in
      0|1)
        do_start
        case "$?" in
            0) log_end_msg 0 ;;
            1) log_end_msg 1 ;; # Old process is still running
            *) log_end_msg 1 ;; # Failed to start
        esac
        ;;
      *)
        # Failed to stop
        log_end_msg 1
        ;;
    esac
    ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
    exit 3
    ;;
esac

exit 0

svnserve 를 서비스로 등록시켜주기 위해 이 파일을 작성해줍니다.(부팅시에 해당 서비스가 자동으로 시작됨. 관리자가 수동으로 실행시켜줄 필요없음)


위에서 

DAEMON_ARGS="-d -r /home/svn/repos"

이부분만 자신의 환경에 맞게 작성해주면 됩니다.


~$sudo chmod 755 /etc/init.d/svnserve


~$sudo update-rc.d svnserve defaults =>서비스로 등록해줍니다.


# service svnserve start
# service svnserve stop
# service svnserve restart


svn://server_ip/reposName 으로 접속해주면 됩니다.

svnserve -d -r /home/ubuntu/svn/repos/


posted by 여성게
:
인프라/AWS 2018. 9. 5. 15:53

mac os 기준입니다.



우선 아마존에 접속하여 회원가입을 한 후에 인스턴스 하나를 생성해줍니다.(이 과정에서 다운받은 key file을 원하는 위치에 저장해줍니다.)


우선 키 파일을 이용하여 ssh 접속을 하기위해서는 파일 권한을 400으로 설정해주어야 합니다.


$chmod 400 "key파일이 저장된 디렉토리"/key.pem


이렇게 권한을 변경해준 후에야 키파일을 사용할 수 있습니다. 만약 권한을 변경해주지 않고 사용하게 되면 어떠한 메시지가 콘솔에 떠서 접근할 수 없게 됩니다.


이렇게 권한을 설정해준 이후에 ssh 접속 명령을 쳐줍니다.


$ssh -i "keyfile저장디렉토리"/key.pem ubuntu@"ec2 접근 ip" 


작업을 모두 끝마친 후 접속을 종료하려면 "exit" 명령만 쳐주면 됩니다.


posted by 여성게
: