SVN 저장소를 생성하는 쉘 스크립트 입니다.

  • SVN 버전

    • 1.9.7 (r1800392)
  • 해당 스크립트 위치

    • /home/svn
  • 스크립트
#!/bin/bash 

# @Author gentian0185 
# @Date   19.06.03 



### 상수
SVNHOST="svn://$HOST_IP" 
SVNBOT_ID="svnbot" 
SVNBOT_PASS="svnbot" 
SVN_PATH="/home/svn" 

if [ -k $1 ]; 
then 
    echo "등록할 레파지토리 명을 입력해주세요 (폴더 포함 가능)" 
    echo "ex)  svn/BOK,  SimpleProject" 
    exit 1 
fi 

SVN_MKPATH="$SVN_PATH/$1" 

while true; do 
    read -p "$SVN_MKPATH 에 레파지토리를 생성하시겠습니까? (y or n)" yn 
    case $yn in 
        [Yy]* ) break;; 
        [Nn]* ) exit;; 
        * ) echo "y or n.";; 
    esac 
done 

currPath=$(pwd) 
cd $SVN_PATH 

echo "$SVN_MKPATH 저장소 생성중..." 
echo "svnadmin create --fs-type fsfs $SVN_MKPATH" 
svnadmin create --fs-type fsfs $SVN_MKPATH 
echo "$SVN_MKPATH 저장소 생성완료" 

cd $SVN_MKPATH/conf 
echo "$(pwd) 수정 중..."



# $SVN_PATH/passwd 에 svnbot 있는지 체크하는 if 문 있으면 더욱 좋음
echo "svnbot=svnbot" >> $SVN_PATH/passwd


rm passwd

ln -s $SVN_PATH/passwd passwd 
sed -i "s/# auth-access = write/auth-access = write/g" svnserve.conf 
sed -i "s/# auth-access = read/auth-access = write/g" svnserve.conf 
sed -i "s/# password-db = passwd/password-db = passwd/g" svnserve.conf 
echo "$(pwd) 수정 완료..." 

cd $SVN_MKPATH 
echo "trunk 폴더 생성중" 
svn mkdir -m "trunk creat" --username=$SVNBOT_ID --password=$SVNBOT_PASS --non-interactive --force-log  $SVNHOST/$1/trunk 
echo "branches 폴더 생성중" 
svn mkdir -m "branches creat" --username=$SVNBOT_ID --password=$SVNBOT_PASS --non-interactive --force-log  $SVNHOST/$1/branches 
echo "tags 폴더 생성중" 
svn mkdir -m "tags creat" --username=$SVNBOT_ID --password=$SVNBOT_PASS --non-interactive --force-log  $SVNHOST/$1/tags 

echo "전체 폴더 생성완료" 
echo "저장소 생성이 완료되었습니다." 

cd $currPath 

Jolokia 는 ?

  • Jolokia 는 JMX 에 대해 JSON 타입의 데이터를 받을 수 있는 HTTP Bridge 입니다.

  • 공식 홈페이지에서는 아래와 같이 설명하고 있습니다.

    > https://jolokia.org/
    Jolokia is remote JMX with JSON over HTTP.
    It is fast, simple, polyglot and has unique features. It's JMX on Capsaicin.

사용 방법 (war, Tomcat)

  • 해당 방법은 war 로 패키징된 웹어플리케이션을 tomcat 에 deploy 시키는 방법입니다.
  1. conf/tomcat-users.xml 에 아래 내용을 추가합니다. username, password 는 임의로 지정합니다.

    <role rolename="jolokia"/>
    <user username="tomcat" password="tomcat" roles="jolokia"/>
  2. tomcat 의 webapps 에 war 파일을 받습니다.

    cd webapps/
    wget http://search.maven.org/remotecontent?filepath=org/jolokia/jolokia-war/1.6.0/jolokia-war-1.6.0.war -O jolokia.war
    
    # auto deploy 가 아닌 경우 톰캣 재기동 진행
  3. Tomcat 구동 결과

사용방법 (JVM Agent, Tomcat)

  • 해당 방법은 tomcat 을 실행할 때 jvm agent 를 추가로 띄우는 방법입니다. 해당 방법은 oracle java (jvm) 만 사용 가능합니다.

  • 설치 디렉터리 : /etc/beats/vendor

  1. 아래와 같은 명령어로 설치를 진행합니다.

    cd /etc/beats/vendor
    wget http://search.maven.org/remotecontent?filepath=org/jolokia/jolokia-jvm/1.6.0/jolokia-jvm-1.6.0-agent.jar -O jolokia-jvm-1.6.0-agent.jar
  2. tomcat 의 bin/setenv.sh 등의 시작 파일에 아래 내용을 추가해줍니다. 여기서 8888 포트는 tomcat 과 겹치지 않도록 합니다.

    export JMX_OPTS=" -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname='IP입력' -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port='JMX포트입력'"
    
    # http 로 출력할 포트 입력
    export JOLIKIA_OPTS=" -javaagent:/etc/beats/vendor/jolokia-jvm-1.6.0-agent.jar=port=8888,host=0.0.0.0 "
    export JAVA_OPTS="$JAVA_OPTS $JMX_OPTS"
  3. Tomcat 구동 결과

증상 발생

  • 우분투 업그레이드를 진행하였는데 업그레이드 진행한 이후 쉘 접속이 끊기는 문제가 발생하였습니다. 업그레이드는 다음과 같은 명령어를 사용하여 진행하였습니다.
# 배포 패키지 업그레이드 
sudo apt update 
sudo apt upgrade
sudo apt dist-upgrade

# 리눅스 릴리즈 업그레이드
sudo apt install update-manager-core
sudo do-release-upgrade
  • 서버에 직접 모니터를 물려서 확인해보니 물리 네트워크 인터페이스가 인식이 되지 않는 것이 문제였습니다. 해당 문제는 아래 명령어를 통해 확인하였습니다.

    ifconfig -a | grep eth0 
    # 결과값이 출력되나 IPv4 가 할당되지 않음. (평소였다면 할당되었어야 함)
    

결과값이 출력되지 않음.

  • 이후 구글링을 통해 원인을 찾았습니다.

apparmor.d 가 문제.

  • 업그레이드 직후 apparmor.d 가 문제였습니다. (그렇다고 기본 네트워크를 아예 못쓰게만드냐...)

  • 확인해보니 apparmor 는 SELinux 와 유사한 리눅스 보안 모듈이라 합니다.

해결

  • apparmor.d 정책 중 dhclient 에 대한 것을 비활성화하였습니다.

    # apparmor.d 를 비활성화
    sudo ln -s /etc/apparmor.d/sbin.dhclient /etc/apparmor.d/disable/  
    sudo /etc/init.d/apparmor reload
  • apparmor 에서 특정 정책 complain 모드로 변경하여 해결할 수도 있습니다. 여기서 complain 모드란 정책을 제한하진 않되, 로그로만 기록해 두는 모드입니다.

     sudo aa-complain /usr/sbin/dhclient
  • 아래는 비활성화 명령어 History 를 캡쳐한 부분입니다.

이으며..

  • 이 방법은 완전한 해결 방법이 아닌데다가, aa-status 명령어를 치면 나오는 모든 모듈들의 정책이 어긋나서 나온 문제로 보입니다. 해당 모듈들에 대해서 정상적인지 테스트를 해야할 듯합니다.
  • 임시로 문제가 발생하는 모듈에 대해서 aa-complain /usr/sbin/tcpdum 등의 명령어로 풀어갈 생각입니다.
  • 룰을 계속 추가하면서 사용하려니 너무 번거로워 지금은 apparmor.d 를 사용안하도록 변경하여 사용하고 있습니다. (내부망에서만 사용하는 서버니까..)



# 클라이언트에서 수정하는 방법

1. 증상

로그인시 위와 같은 로그가 나타나며,

 접속은 되나 실제 내부망에 접속이 안되는 현상이 발생.


 

 

 

2. 원인


 위 로그 중  'do_ifconfig.tt->did_ifconfig_ip6_setup=0' 는 IPv6 을 활성화시킨 서버라는 뜻인데,

openVPN 구축시에 ip4로만 구축을 진행하였기 때문에 문제가 생김.


즉, VPN클라이언트에서 IPv6 에 대한 설정을 하지 않았음에도 IPv6 로 접속 시도하여 생기는 문제 

->openVPN PC 에서 설치시 설치되는 네트워크 어댑터의 IPv6 사용을 해제하여 해결가능하다.

 

3. 해결 방법 (설치 PC)

1.     TAP-Windows Adapter V9 어댑터 속성으로 이동

OpenVPN 설치시 TAP-Windows Adapter V9 가 기본으로 설치됩니다.

제어판 - 네트워크 연결 - 속성으로 이동합니다.

 


2.     증상재확인

 

인터넷 프로토콜 버전 6(TCP/IPv6) 를 체크해제 한 뒤 확인 버튼을 누릅니다.


 




# VPN 서버에서 수정하는 방법



클라이언트에서 IP6을 비활성화 시키는 방법이 있지만,

근본적으로는 서버에서 IP6을 사용하지 않도록 하면 된다.



vi /etc/sysctl.conf   입력하여 설정 변경


#아래 설정으로 변경

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

net.ipv6.conf.lo.disable_ipv6 = 1 



그리고 아래 명령어를 실행

sudo sysctl -p






출처 : https://askubuntu.com/questions/440649/how-to-disable-ipv6-in-ubuntu-14-04 


nohup "실행할 명령어" &

 

뒤에 & 의 의미는 백그라운드로 실행한다는 뜻이며

앞에 nohup 의 의미는 hang-up signal ​을 무시한다는 것을 뜻합니다. (터미널 접속종료, Ctrl+C 등 무시)

즉, 터미널이 끊겨도 그대로 실행됩니다.

그리고 nohup.out 파일에 output 이 로그 형태로 쌓이게 됩니다.


정지 방법은 해당 pid 를 찾아서 kill -9 하는 방법입니다.


 

 

출처 : http://antamis.egloos.com/678228 

2014-11-12


 Window 에서의 서비스는

사용자 관리자(service.msc)에 의해 실행되는 서비스이다.


 service.msc 는 제어판 - 관리도구 - 로컬서비스관리 메뉴, 혹은 실행창에 service.msc를 입력함으로써 관리가 가능하다.


 리눅스의 경우 명령어의 뒤에 & 를 붙임으로써 간단히 백그라운드 서비스를 만들 수 있지만 윈도우의 경우는 sc.exe 를 실행함으로써 만들 수 있다.


 아쉽게도 sc.exe 로 bat은 등록이 안되는 것으로 알고 있으며 (필자의 경험) 실행 가능한 프로그램(exe) 형태의 파일만 등록이 가능하다.


 sc.exe 란?

윈도우에서 자체 제공하는 서비스 생성 프로그램이다. service.msc 에 사용자가 직접 서비스를 등록, 제거 할 수 있도록 하는 기능이다.



 *SC.EXE 사용 방법.

http://support.microsoft.com/kb/251192 


 ※ 실제 등록 사례 (SVN 서버 운용시에 사용된 cmd 명령어)

sc.exe create svnserver binPath= "\"C:\Program Files (x86)\Subversion\bin\svnserve.exe\" --service -r C:\nanum\svnrepository" DisplayName= "WindowSVN" depend= Tcpip start= "auto"

 주의사항!! = 뒤에 스페이스바 꼭 붙여야한다. 안그럼 안되더라..



'서비스 운영' 카테고리의 다른 글

리눅스 쉘을 데몬형태로 돌리기  (0) 2016.02.12

+ Recent posts