반응형
  • 쉘에서 다음과 같이 치면 현재 열린 포트 목록을 확인할 수 있다.
    sudo lsof -PiTCP -sTCP:LISTEN
  • 특정 포트를 찾아 포트를 닫고 싶으면 다음과 같이 쳐서 PID를 알아낸다.
    sudo lsof -i :3000
    여기서 3000이 포트번호이다.
  • 위에서 나온 PID를 다음 명령어에 넣으면 포트가 닫힌다.
    sudo kill -9 PID

'Server' 카테고리의 다른 글

Mac 단축키 변경  (0) 2021.08.24
patch.sh 스크립트 작성  (0) 2021.02.19
Apache AJP 통신 문제에 따른 조치방안  (0) 2020.11.11
cat , tail 명령어 정리  (0) 2019.09.16
리눅스 Tar 압축, 풀기  (0) 2016.08.09
반응형

기계식 키보드를 FC750 로 변경진행하였다.

하지만 여전히 단축키는 익숙하지않다...

해당 키보드 설정을 켜본다... 그후 -> 보조키 클릭

해당 위 키보드 리스트를 선택하고

 

변경을 진행해준다.

 

 

'Server' 카테고리의 다른 글

mac 포트 확인, kill  (0) 2022.06.29
patch.sh 스크립트 작성  (0) 2021.02.19
Apache AJP 통신 문제에 따른 조치방안  (0) 2020.11.11
cat , tail 명령어 정리  (0) 2019.09.16
리눅스 Tar 압축, 풀기  (0) 2016.08.09
반응형

#!/bin/sh

SERVICE_HOME=/home1/irteam/service/tube-web
SERVICE_JAR=tube-web_real.jar
DATE2=`date +%Y%m%d`

cd $SERVICE_HOME/patch

if [ -f "$SERVICE_JAR" ];then
echo '[SERVICE] SERVICE Stop...'
cd $SERVICE_HOME/bin
./stop.sh

##프로세스 상태를 체크한다...
checkCount=1
while [ "$checkCount" != "0" ]
do
checkCount=$(ps -ef | grep $SERVICE_JAR | grep -v grep | wc -l)
echo "프로세스 종료 진행 중"
sleep 2;
done


echo '[SERVICE] '$SERVICE_JAR' backUp..'
cd $SERVICE_HOME/jar

SERVICE_JAR_BACK=$SERVICE_JAR'.'$DATE2
if [ -f "$SERVICE_JAR_BACK" ];then
COUNT=$(ls | grep $SERVICE_JAR_BACK | wc -l)
cp $SERVICE_JAR $SERVICE_JAR_BACK'_'$COUNT
echo '[SERVICE] backUp File : '$SERVICE_JAR_BACK'_'$COUNT
else
cp $SERVICE_JAR $SERVICE_JAR_BACK
echo '[SERVICE] backUp File : '$SERVICE_JAR_BACK
fi

echo '[SERVICE] '$SERVICE_JAR' patch!!'
mv $SERVICE_HOME/patch/$SERVICE_JAR $SERVICE_HOME/jar/$SERVICE_JAR
sleep 1;
echo '[SERVICE] SERVICE Start !!'
cd $SERVICE_HOME/bin
./start.sh
else
echo "patch File not exist"
echo $SERVICE_HOME"/patch 파일이 없습니다. 패치가 진행될 JAR파일이 필요합니다."

fi

 

해당 스크립트는

SERVICE_HOME의 patch 디렉토리에 해당 SERVICE_JAR를 넣으면 패치를 진행해줍니다.

해당 프로세스는

1) SERVICE_HOME의 서비스 종료

2) 해당 프로세스가 종료되었는지 체크(2초간격)

3) SERVICE_HOME의 SERVICE_JAR파일 백업
: 만약 tube-web_alpha-internal.jar.20200407 과 tube-web_alpha-internal.jar.20200407_1 이 있을 경우 tube-web_alpha-internal.jar.20200407_2 로 백업을 진행해줍니다.

4) 해당 Patch 디렉토리의 JAR파일 변경

5) 서비스 시작

 

해당 스크립트를 사용하기위해서는 

SERVICE_HOME, SERVICE_JAR의 값을 변경후 진행하시면됩니다.

patch 디렉토리 생성이 필요합니다.

 

 

'Server' 카테고리의 다른 글

mac 포트 확인, kill  (0) 2022.06.29
Mac 단축키 변경  (0) 2021.08.24
Apache AJP 통신 문제에 따른 조치방안  (0) 2020.11.11
cat , tail 명령어 정리  (0) 2019.09.16
리눅스 Tar 압축, 풀기  (0) 2016.08.09
반응형

1. 문제 발생

위와 같은 해당 문제는 1번 서버에는 발생되지않았지만 real서버에서 발생되었습니다.

Spring Boot 2.0.4 → 2.3.4 버전 고도화를 하면서 AJP 생성시 LISTEN 생성시 ::ffff:127.0.0.1:8003 로컬에서만 연결될수있도록 형식으로 변경됩니다.

이전) :::8003 : 모든 IP에 포트를 열어주는 형식입니다.

Apache ajp 통신시 설정은 이상없지만 통신이 안되는 현상이 발견됨.

해당 부분 apache 설정에는 문제가 없었습니다.

 

2.조치방안

해당 apache 설정파일인 httpd.conf, httpd-ssl.conf 파일의 <VirtualHost>의 순서를 아래로 변경해줬을 경우 정상적으로 AJP 통신을 하는것을 확인하였습니다.

  • 순서변경으로 다른 service가 통신이 안되는 현상은 없었습니다.

원인에 대해선 1번 서버의 apache와 특정 서버의 apache가 version(2.4.27) 은 동일하였으며

Alpha서버에서는 정상적으로 되었지만 특정서버에서 이러한 현상이 이루어지면 순서를 변경해주시면 될것 같습니다.

'Server' 카테고리의 다른 글

Mac 단축키 변경  (0) 2021.08.24
patch.sh 스크립트 작성  (0) 2021.02.19
cat , tail 명령어 정리  (0) 2019.09.16
리눅스 Tar 압축, 풀기  (0) 2016.08.09
쉘 스크립트 FOR 사용법  (0) 2015.12.07
반응형

(1) cat 명령어
: cat (Concatenate) 명령은 파일의 내용을 화면에 출력해 준다. 

○ 명령 형식 : $ cat [option] [file_name]
○ 옵션
  -n : 라인 번호를 붙여서 파일을 출력
  -b : -n 옵션과 달리, 공백 라인은 제외하고 라인 번호를 출력

(Example)
1. $ cat /etc/passwd
: /etc/passwd 파일을 화면에 출력

2. $ cat -n /main.c
: /main.c 파일을 라인 번호와 함께 출력

○ 이 명령은 출력 재지정 명령과 함께 사용하여 파일 생성 및 확장 그리고 분리된 파일들을 임의의 파일로 병합할 때 사용한다.
- 출력 재지정 기능인 '>' 나 '>>' 를 이용해 파일을 생성하거나 기존 파일 뒤에 덧붙이는 것이 가능하다.

(Example)
1. cat > tcp.c
: 입력 텍스트를 tcp.c 파일로 저장

2. cat tcp.c udp.c > socket.c
: tcp.c, udp.c 파일을 순차적으로 출력하여 socket.c 파일에 저장한다.

3. cat tcp.c udp.c >> main.c
: tcp.c, udp.c 파일을 순차적으로 출력하여 main.c 파일에 덧붙인다.


(2) tail 명령어
: tail 명령은 파일의 끝으로부터 10번째 줄까지를 디폴트로 보여준다.

 ○ 명령 형식 : tail [option] [file_name]
 ○ 옵션
  -number : 파일의 끝으로부터 지정한 숫자만큼의 라인을 화면에 출력한다.
  +number : 파일의 처음부터 지정한 숫자만큼 띈 라인부터 파일의 끝까지 화면에 출력한다.
  -f : 파일에 추가되는 내용을 실시간으로 확인하는 것이 가능하다.

(Example)
1. tail /etc/passwd : /etc/passwd 파일의 끝부터 10번째 줄까지 화면에 출력
2. tail -20 /etc/passwd : /etc/passwd 파일의 끝부터 20번째 줄까지 화면에 출력
3. tail -f /var/log.txt : /var/log.txt 파일의 바뀌는 내용을 실시간으로 화면에 출력

=> tail 명령은 -f 옵션과 함께 사용하여, 불규칙적으로 기록되는 로그 파일을 실시간으로 살펴보기위해 자주 사용한다.

'Server' 카테고리의 다른 글

patch.sh 스크립트 작성  (0) 2021.02.19
Apache AJP 통신 문제에 따른 조치방안  (0) 2020.11.11
리눅스 Tar 압축, 풀기  (0) 2016.08.09
쉘 스크립트 FOR 사용법  (0) 2015.12.07
쉘 스크립트 IF 사용법  (0) 2015.12.07
반응형

리눅스를 사용하다 보면, tar 혹은 tar.gz로 압축을 하거나 압축을 풀어야 할 경우가 자주 생긴다.


이를 처리하기 위해 리눅스에서는 tar 라는 명령어를 사용하게 되는데,


tar 명령어도 여러가지 옵션이 있지만 각 옵션에 대해서 알아보기 보단, 자주 사용하는 명령어 패턴만 정리한다.



1. tar로 압축하기

> tar -cvf [파일명.tar] [폴더명]


ex) abc라는 폴더를 aaa.tar로 압축하고자 한다면

     > tar -cvf aaa.tar abc



2. tar 압축 풀기

> tar -xvf [파일명.tar]


ex) aaa.tar라는 tar파일 압축을 풀고자 한다면

     > tar -xvf aaa.tar



3. tar.gz로 압축하기

> tar -zcvf [파일명.tar.gz] [폴더명]


ex) abc라는 폴더를 aaa.tar.gz로 압축하고자 한다면

     > tar -zcvf aaa.tar.gz abc



4. tar.gz 압축 풀기

> tar -zxvf [파일명.tar.gz]


ex) aaa.tar.gz라는 tar.gz파일 압축을 풀고자 한다면

     > tar -zxvf aaa.tar.gz




참고로, 위의 옵션들을 포함한 그나마 자주 사용되는 tar 명령어의 옵션들은 아래와 같다.



 옵션

 설명

 -c

 파일을 tar로 묶음

 -p

 파일 권한을 저장

 -v

 묶거나 파일을 풀 때 과정을 화면으로 출력

 -f

 파일 이름을 지정

 -C

 경로를 지정

 -x

 tar 압축을 풂

 -z

 gzip으로 압축하거나 해제함


'Server' 카테고리의 다른 글

Apache AJP 통신 문제에 따른 조치방안  (0) 2020.11.11
cat , tail 명령어 정리  (0) 2019.09.16
쉘 스크립트 FOR 사용법  (0) 2015.12.07
쉘 스크립트 IF 사용법  (0) 2015.12.07
drbd 설치  (0) 2015.11.12
반응형

1. for

♦ for 의 형식

 for 문은 in 다음에 오는 값을 끝까지 대입하여 반복적으로 실행하는 실행 문이다.

for 변수 in ; do

문장

done

for ((초기값;조건식;증감)); do

   문장

done

 

예제 for_ls.sh

#!/bin/bash

for i in $(ls); do

    echo FILE : $i

done

 

예제 for_inc.sh

#!/bin/bash

for ((i=0;i<10;i++)); do

    echo $i

done

 

'Server' 카테고리의 다른 글

cat , tail 명령어 정리  (0) 2019.09.16
리눅스 Tar 압축, 풀기  (0) 2016.08.09
쉘 스크립트 IF 사용법  (0) 2015.12.07
drbd 설치  (0) 2015.11.12
DRBD 설치  (0) 2015.11.12
반응형

IF  문의 기본 형식은 다음과 같다.

 

if [ conditons ]

then

   실행하고자 하는 문장

fi

 

#########

if [ conditons ]

then

   조건만족시 실행하고자 하는 문장

else

   조건 불만족시 실행하고자 하는 문장

fi

 

##########

if [ conditons ]

then

   조건만족시 실행하고자 하는 문장

elif [ conditons ]

   두번째 조건 만족시 실행 문장

else

   조건 불만족시 실행하고자 하는 문장

fi

 

여기서 연산자는 다음과 같이 이용이 가능하다.

 

1. 문자열

[ stringName ] - 문자열이 (NULL)인지 체크, Null 아니면 

[ -n stringName ] - 문자열의 사이즈가 0 이상인지 체크, 0 이상이면 

[ -z stringName ] - 문자열의 사이즈가 0 인지 체크, 0이면 

[ stringNameA = stringNameB ] - A문자열과 B문자열이 같은지 체크같으면 

[ stringNameA != stringNameB ] - A문자열과 B문자열이 다른지 체크다르면 

 

2. 대소관계

[ intA -ge 100 ] - 숫자 A 100보다 크거나 같은지 체크, 100 이상이면 

[ intA -gt 100 ] - 숫자 A 100보다 큰지 체크, 100 넘으면 

[ intA -le 100 ] - 숫자 A 100보다 작거나 같은지 체크, 100 이하이면 

[ intA -lt 100 ] - 숫자 A 100보자 작은지 체크, 100 미만이면 

 

3. 파일

[ -r filename ] - 해당 파일이 읽기 가능한지 체크

[ -w filename ] - 해당 파일이 쓰기 가능한지 체크

[ -x filename ] - 해당 파일이 실행 가능한지 체크

[ -s filename ] - 해당 파일의 사이즈가 제로 이상인지 체크

[ -d filename ] - 해당 파일이 디렉토리 파일인지 체크

[ -f filename ] - 해당 파일이 보통 파일인지 체크

[ -h filename ] - 해당 파일이 링크 파일인지 체크

 

4. 조건문 결합

 

조건문A -a 조건문B ] - 조건문 A B 모두 참인지 체크, -a AND

조건문A -o 조건문B ] - 조건문 A B 참이 하나라도 있는지 체크, -o OR

'Server' 카테고리의 다른 글

cat , tail 명령어 정리  (0) 2019.09.16
리눅스 Tar 압축, 풀기  (0) 2016.08.09
쉘 스크립트 FOR 사용법  (0) 2015.12.07
drbd 설치  (0) 2015.11.12
DRBD 설치  (0) 2015.11.12
반응형

DRBD 설치

 

설치 조건

서버 2대 필요

HostName

 

Address

Node1

Master

192.168.1.231

Node2

backup

192.168.1.232

 

설치 RPM

drbd83-utils-8.3.15-1.el6.elrepo.x86_64.rpm

elrepo-release-6-6.el6.elrepo.noarch.rpm

kmod-drbd83-8.3.15-1.el6_3.elrepo.x86_64.rpm


1) 디렉토리 설정 (두 서버 적용)

[root@localhost drbd]#  mkdir /usr/local/drbd -- > 이 경로에 rpm 파일을 넣는다.

[root@localhost drbd]#  cd /usr/local/drbd


 





2) RPM 설치 (두 서버 적용)

주의 : 순서대로 설치 요망

[root@localhost drbd]# rpm -Uvh drbd83-utils-8.3.15-1.el6.elrepo.x86_64.rpm

[root@localhost drbd]# rpm -Uvh kmod-drbd83-8.3.15-1.el6_3.elrepo.x86_64.rpm

[root@localhost drbd]# rpm -Uvh elrepo-release-6-6.el6.elrepo.noarch.rpm




3) 스토리지 확인 및 mount 하기 (두 서버 적용)

주의 : 양쪽 서버 스토리지 용량크기는 동일!!

[root@jun1 drbd.d]# fdisk –l스토리지 확인


























 




'Server' 카테고리의 다른 글

cat , tail 명령어 정리  (0) 2019.09.16
리눅스 Tar 압축, 풀기  (0) 2016.08.09
쉘 스크립트 FOR 사용법  (0) 2015.12.07
쉘 스크립트 IF 사용법  (0) 2015.12.07
DRBD 설치  (0) 2015.11.12
반응형

DRBD 설치

 

설치 조건

서버 2대 필요

HostName

 

Address

Node1

Master

192.168.1.231

Node2

backup

192.168.1.232

 

rpm 파일 필요

drbd83-utils-8.3.15-1.el6.elrepo.x86_64.rpm

elrepo-release-6-6.el6.elrepo.noarch.rpm

kmod-drbd83-8.3.15-1.el6_3.elrepo.x86_64.rpm

 

1) 디렉토리 설정 (두 서버 적용)

Mkdir /usr/local/drbd -- > 이 경로에 rpm 파일을 넣는다.

Cd /usr/local/drbd


 

2) RPM 설치 (두 서버 적용)

[root@localhost drbd]# rpm -Uvh drbd83-utils-8.3.15-1.el6.elrepo.x86_64.rpm




[root@localhost drbd]# rpm -Uvh kmod-drbd83-8.3.15-1.el6_3.elrepo.x86_64.rpm

[root@localhost drbd]# rpm -Uvh elrepo-release-6-6.el6.elrepo.noarch.rpm

 

3) 스토리지 mount

[root@jun1 drbd.d]# fdisk –l – 스토리지 확인

) /dev/sdb1 가 있으므로 스토리지 사용

 

생성해야 할 경우

[root@jun1 drbd.d]# fdisk /dev/sdb

Command (m for help) : n

P 입력후

Artition number(1-4) : 1 <- 1입력하는 이유는 첫 스토리지 생성

Irst cylinder (263-391, default 263) : 263 <- default 입력

Ast cylinder, + cylinders or + size[K, M,G] (263-391, default 391) :

사용할 데이터 크기 입력

Command (m for help) : w <- 저장

 

[root@jun1 drbd.d]# fdisk –l – 스토리지 확인

/dev/sdb1 나올것 입니다.


 

3) DRBD 설정 파일 만들기 (두 서버 적용)

리눅스 설치시 /dev/mapper/vg_node1_lv_drbd 경로를 설치 해둠

[root@jun1 drbd.d]# vi /etc/drbd.d/s3i.res

resource s3i

{

        startup {

        wfc-timeout 30;

        outdated-wfc-timeout 20;

        degr-wfc-timeout 30;

        }

        net {

                cram-hmac-alg sha1;

                shared-secret sync_disk;

        }

        syncer {

                rate 10M;

                al-extents 257;

                on-no-data-accessible io-error;

        }

        on node1 {

                device /dev/drbd0;

                disk /dev/mapper/vg_node1-lv_drbd; #스토리지 경로

                address 192.168.1.231:7788;

                flexible-meta-disk internal;

        }

        on node2 {

                device /dev/drbd0;

                disk /dev/mapper/vg_node1-lv_drbd; #스토리지 경로

                address 192.168.1.232:7788;

                meta-disk internal;

        }

}


 

4) Server Host 정보 입력 (두 서버 적용)

[root@jun1 drbd.d]# vi /etc/hosts

192.168.1.97 jun1

192.168.1.98 jun2

 

 

5) 메타 디바이스 설정

- service drbd start 실행

* 주의 : Metadata 생성전 DRBD 볼륨으로 사용할 공간은 파일시스템이 생성되어 있지 않아야한다.

미리 파일시스템이 생성된 상태라면 아래와 같은 에러가 발생할 경우

Command 'drbdmeta 1 v08 /dev/xxx internalcreate-md' terminated with exit code 40

dd를 이용하여 MBR 영역을 없애주어야한다.

dd if=/dev/zero of=/dev/mapper/vg_node1-lv_drbd bs=1M count=128

#Metadata 생성 명령

 - drbdadm create-md all

 

위 명령을 수행하면 device 에 지정했던(/dev/drbd0) 디바이스가 생성된다.


 

6) DRBD primary 만들기(primary 에서 명령)

DRBD 가 처음실행되면 secondary/secondary로 동작한다. 이를 primary/secondary로 만들어 mirroring이 진행될 수 있게 해야한다.

primary 로 사용할 drbd-1 호스트에서 아래의 명령을 호출한다.

drbdadm -- --overwrite-data-of-peer primary all

모니터링 명령으로는

$ cat /proc/drbd

확인할 수 있다.

 

7)  drbd mount 하기

Primary 가 된 서버만 mount 가 가능하며

현재 /dev/drbd0 으로 sync가 맞춰 있다.

mkfs -t ext4 -j /dev/drbd0 <- 파일 시스템 변경

 

 

mount /dev/drbd0 /data

master 서버에서 마운트한 디렉토리에 적절한 크기의 데이터를 삽입후

primary / secondary를 변경

 

(master 서버)

#umount /data

 

#drbdsetup /dev/drbd0 secondary

 

(slave 서버)

#drbdsetup /dev/drbd0 primary

 

#mount /dev/drbd0 /data

 

동일하게 데이터가 입력된 것이 확인 가능합니다.

 

 

'Server' 카테고리의 다른 글

cat , tail 명령어 정리  (0) 2019.09.16
리눅스 Tar 압축, 풀기  (0) 2016.08.09
쉘 스크립트 FOR 사용법  (0) 2015.12.07
쉘 스크립트 IF 사용법  (0) 2015.12.07
drbd 설치  (0) 2015.11.12

+ Recent posts