AWS

빙그르·2023년 12월 27일

ETC

목록 보기
5/6

AWS

  1. 표준 출력 / 에러 로그 파일 분리해서 실행 시키는 방법
    nohup java -jar v1-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out &
    이것을 해주는 이유 : 배포를 위해서 작성했던 모든 명령어들의 스크립트를 작성을 자동화 시키기
    & : 백그라운드로 실행시키기
  2. 시간 변경해줄것
    미국 시간으로 되어 있어서 로그 시간이 잘못 찍힘
     # 서울을 검색해보고
        timedatectl list-timezones | grep Seoul
        sudo timedatectl set-timezone Asia/Seoul
        timedatectl
  1. stop kill sh 파일 생성하기
       vi spring-stop.sh
       i
       echo "Springboot Stop....."
       SPRING_PID=$(pgrep -f *.jar)
       echo $SPRING_PID
       kill -9 $SPRING_PID
       ESC + :wq
       ls -l
       chmod u+x spring-stop.sh
       ls -l
       ./srpin-stop.sh

잘못 적었다면 vim spring-stop.sh 후에 i 누르고 스크립트 재작성후 ESC + :wq
변수>변수의값을출력혹은실행변수 -> 변수의 값을 출력 혹은 실행(명령어) -> 명령어의 결과 리턴

  1. cron 실습 (자동 재시작)
    crontab -e

    의 의미들 순서대로 분 (0-59) - 시간 (0-23) - 일 (1-31) - 월 (1-12) - 요일 (0-7) 을 뜻한다.

    sudo vi /etc/crontab
    crontab -e 를 하면
    나는 이미 nano로 선택되어져 나옴

nano 에디터 사용법을 검색해야했다
원래라면 에디터 선택이 가능한데? 나는 왜 선택되서 나온거지?

아무튼 검색해서 방법을 찾은 후 등록 완료
그 후 1분이 지난 후에 ls를 하면

cron.log가 생성되어 있는 것을 볼 수 있다.

vi myScript.sh 생성 후

# 크론탭 내용을 crontab_new 파일로 옮김
crontab -l 1>crontab_new

# crontab_new 파일의 echo의 내용을 추가
echo "* * * * * /home/ubuntu/job.sh" 1>>crontab_new

# crontab에 crontab_new 에 작성한 내용을 반영한다.
crontab crontab_new

# crontab_new의 내용을 삭제한다
rm crontab_new

crontab -l 은 crontab -e 입력시 나오는 결과물을 출력해줌
crontab에 나온 결과를 crontab_new로 다 옮겨라 라는 뜻

./myScript.sh 하니

Permission denied 에러가 떨어짐

chmod +x myScript.sh 로 권한을 준 다음 다시 실행 (./myScript.sh) 시키기
cat crontab_new 를 실행

crontab_new(== crontab -e와 같음) 하단에 또다른 명령어 추가해주는 방법 (job.sh 생성)

vi job.sh

ls -l >> /home/ubuntu/cron.log

chmod u+x job.sh

rm cron.log

자, 다시 정리를 해보도록 하자

crontab -e 를 했을때
내가 하단에 추가한 명령어를 보이게끔 하려면?

 vim job.sh
 ls -l  >> /home/ubuntu/cron.log
 vim myScript.sh
 
# 크론탭 내용을 crontab_new 파일로 옮김
crontab -l 1>crontab_new

# crontab_new 파일의 echo의 내용을 추가
echo "* * * * * /home/ubuntu/job.sh" 1>>crontab_new

# crontab에 crontab_new 에 작성한 내용을 반영한다.
crontab crontab_new

# crontab_new의 내용을 삭제한다
rm crontab_new


파일은 저렇게만 남겨두고 rm을 이용해 필요없는 파일들은 삭제해준다

crontab -e 로 들어가서 내가 만든 명령어들은 삭제해주도록한다 (기본으로 설정)

./myScript.sh
ls
crontab -e

를 해보면 명령어가 자동으로 추가되어 들어가 있는걸 확인할 수 있다.

ls

cat cron.log

를 쳐보면 확인이 가능하다.

  1. 스프링 서버 재시작하기
ls
mkdir cron-restart
cd cron-restart
vi spring-stop.sh

# i 눌러서 insert 모드 실행
echo "SPRINGBOOT STOP....."
SPRING_PID=$(pgrep -f v1-0.0.1-SNAPSHOP.jar)
kill -9 $SPRING_PID
# ESC 누르고 :wq 누른 뒤 종료

# 8080 포트 실행중인거 확인하기
netstat -nlpt 
./spring-stop.sh
# 8080 포트 종료된거 확인하기
netstat -nlpt

 vi spring-restart.sh
 
SPRING_PID=$(pgrep -f v1-0.0.1-SNAPSHOP.jar)
SRPING_PATH="/home/ubuntu/aws-v1/build/libs/v1-0.0.1-SNAPSHOP.jar"

echo $SPRING_PID
echo $SPRING_PATH

# 프로세스가 꺼졌다면
if [ -z "$SPRING_PID" ]; then
 echo "spring stop...."
else
 echo "spring start..."
fi

chmod u+x spring-restart.sh
./spring-restart.sh
nohup java -jar v1-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out &

재배포 프로세스 이해하기 총정리

<재배포 스크립트 작성>
하나의 배포 스크립트를 만들어 보도록 하자 (최초 : 최초 배포프로세스 , 그다음 : 재배포 프로세스)

deploy.sh (배포)
redeploy.sh (재배포)

  1. 기존 서버 중지
    spring-stop.sh , 실행권한 주기
       echo "SPRINGBOOT STOP....."
       SPRING_PID=$(pgrep -f v1-0.0.1-SNAPSHOP.jar)
       kill -9 $SPRING_PID
  1. aws-v1 폴더 삭제
       rm -rf /home/ubuntu/aws-v1

rm -r 아니고 rm -rf로 강제로 지워주도록 한다.
3. git clone 다운

git clone https://github.com/codingspecialist/aws-v1.git
  1. gradlew 실행 권한 주기
       cd /home/ubuntu/aws-v1
       chmod u+x gradlew
  1. 빌드하기
    ./gradlew build
  2. jar 실행하기
nohup java -jar /home/ubuntu/aws-v1/build/libs/v1-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out &

0개의 댓글