흐름
- 로컬컴퓨터 -> 운영컴퓨터 옮기기
1. 스프링부트 프로젝트
2. 깃허브 업로드
3. 환경세팅
4. 실행
EC2서버 생성 및 고정IP 설정(엘라스틱 ip)
탄력적 ip - ec2연결 하나 무료제공
탄력적 ip 생성 후 사용 안하면 비용발생
배포
자바설치(jdk,jre)
github 다운
gradlew 실행권한주기
gradlew로 프로젝트 jar파일로 변경
java로 jar 실행(x) / nohup으로 실행(o)
시간변경
저장소 동기화
sudo apt update
저장소 보기
sudo apt-cache search jdk | grep openjdk-11
자바설치(jdk)
sudo apt install openjdk-11-jdk
깃 확인
git --version
github 다운
git clone https://github.com/프로젝트
이동
cd ~/프로젝트명
gradlew 실행권한주기
chmod u+x gradlew
현재폴더 gradlew build
./gradlew build
자바확인
java --version
cd build
ls
cd libs
ls
실행파일 만들어져있음 v1-0.0.1-SNAPSHOT.jar
실행
java -jar v1-0.0.1-SNAPSHOT.jar
java -jar \*.jar(이것도 가능)
nohup으로 백그라운드 실행
build.gradle에
jar{
enabled=false
}
plain.jar 생기지 않게 해줌
nohup: 리눅스에서 프로세스 실행한 터미널의 세션연결 끊겨도 지속적으로 동작하게 해줌/ 자동으로 로그남김
실행 백그라운드로
nohup java -jar *.jar &
net-tools설치
sudo apt install net-tools
8080확인
netstat -nlpt
cd libs폴더에 생성된 nohup파일 로그 보기
cat nohup.out
모니터링
tail -f nohup.out
로그파일 변경
프로세스 아이디 찾기
ps -ef
강제 종료
kill -9 18624
표준 출력 변경
nohup java -jar *.jar > mylog.out &
확인
tail -f mylog.out
표준출력, 에러 로그 파일 분리
파일 삭제
rm mylog.out
잘못적었을 경우
nohup java -jar v1-0.0.1-SNAPSHOT~1.jar &
파일 보기
cat nohup.out
에러출력 2 - nohup.out
표준출력 1 - nohup.out
정상실행
nohup java -jar v1-0.0.1-SNAPSHOT.jar &
출력 변경: 모든 명령어 스크립트작성 자동화 출력 분리해서 볼것임
nohup java -jar 파일명 1>log.out 2>err.out
잘못적었을 경우
nohup java -jar v1-0.0.1-SNAPSHOT~1.jar 1>log.out 2>err.out
에러로그 확인
cat err.out
정상실행
nohup java -jar v1-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out &
타임존 변경
시간 확인
timedatectl
시간 리스트
timedatectl list-timezones
서울찾아
timedatectl list-timezones | grep Seoul
변경
sudo timedatectl set-timezone Asia/Seoul
결과
Time zone: Asia/Seoul (KST, +0900)
종료 스크립트
이동
cd ~/aws-v1/build/libs
echo "안녕"
jar 찾아라 grep명령어 제외 2번째 인자
ps -ef | grep *.jar | grep -v grep | awk '{print $2}'
바로 찾기
pgrep -f *.jar
설명
pgrep --help
종료 스크립트 파일 만들기
vi spring-stop.sh
내용{
echo "Springboot Stop.."
SPRING_PID=$(pgrep -f *.jar) $(명령어): 명령어 결과 리턴
echo $SPRING_PID $변수:변수의 값 출력/실행
kill -9 $SPRING_PID
}
실행권한주기
chmod u+x spring-stop.sh
현재폴더 spring-stop.sh 실행
./spring-stop.sh
cron 주기적 실행
crontab -e
매분 실행
* * * * * ls -l 1>>cron.log
*의미: 분,시간,일,월,요일
1은 기본이라 생략가능 ">>"덮어쓰지말고 계속 추가
보기
cat cron.log
*표현 방법
1(분) / 1,2(분) / 1-3(분)
스크립트 만들기
vi myScript.sh
내용{
#기존 crontab내용을 crontab_new에 옮겨라
crontab -l 1>crontab_new
#crontab_new파일에 echo내용 추가 job.sh매분 실행해라
echo "* * * * * /home/ubuntu/job.sh" 1>>crontab_new
#crontab에 crontab_new작성 내용 반영
crontab crontab_new (파일만들어서 실행가능)
#crontab_new삭제
rm crontab_new
}
권한 추가
chmod u+x myScript.sh
실행
./myScript.sh
스크립트 만들기
vi job.sh
내용
ls -l > /home/ubuntu/cron.log
권한
chmod u+x job.sh
확인 cat cron.log
cron 으로 스프링 서버 재시작하기
mkdir cron-restart
cd cron-restart
stop스크립트
vi spring-stop.sh
내용
echo "SPRINGBOOT STOP..."
SPRING_PID=$(pgrep -f v1-0.0.1-SNAPSHOT.jar)
kill -9 $SPRING_PID
실행파일
chmod u+x spring-stop.sh
실행
./spring-stop.sh
재시작 스크립트
vi spring-restart.sh
내용{
SPRING_PID=$(pgrep -f v1-0.0.1-SNAPSHOT.jar)
SPRING_PATH="/home/ubuntu/aws-v1/build/libs/v1-0.0.1-SNAPSHOT.jar"
echo $SPRING_PID
echo $SPRING_PATH
if [ -z "$SPRING_PID" ]; then
echo "스프링 종료된 상태"
echo "스프링 재시작 - $(date)" 1>>/home/ubuntu/cron-restart/spring-restart.log
nohup java -jar $SPRING_PATH 1>log.out 2>err.out &
else
echo "스프링 시작된 상태"
fi
}
실행파일
chmod u+x spring-restart.sh
실행파일실행
./spring-restart.sh
스프링 시작
nohup java -jar /home/ubuntu/aws-v1/build/libs/v1-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out &
로그확인
cat spring-restart.log
파일생성
vi deploy.sh
내용{
# 1. 배포 프로세스
echo "deploy start..기존서버 시작되어 있다면 종료하고 배포 시작"
echo "1. jdk install (재배포때x)"
echo "2. github project download (재배포때o)"
echo "3. gradlew 실행권한 주기 (재배포때o)"
echo "4. project build 하기 (재배포때o)"
echo "5. ubuntu timezone setting 하기(재배포때x)"
echo "6. nohup으로 spring boot 실행(재배포때o)"
# 2. 스프링 서버 종료시 재시작
echo "crontab 등록 - spring restart.."
crontab -l > crontab_new
echo "* * * * * /home/ubuntu/cron-restart/spring-restart.sh" 1>>crontab_new
crontab crontab_new
rm crontab_new
}
권한
chmod u+x deploy.sh
실행
./deploy.sh
재배포 프로세스
- deploy.sh(최초 배포)
- redepoly.sh(재배포)
재배포 스크립트 작성{
1. 기존서버 중지
2. aws-v1 폴더 통째로 삭제
rm -r /home/ubuntu/aws-v1
3. git clone 다운
git clone https://github.com/플젝
4. gradlew 실행권한
cd /home/ubuntu/aws-v1
chmod u+x gradlew
5. 빌드
./gradlew build
6. jar 실행
nohup jva -jar /home/ubuntu/aws-v1/build/libs/v1-0.0.1-SNAPSHOT.jar 1>log.out 2>err.out &
7. cron으로 자동 재시작
depoly.sh
}
문제점
자동화스크립트 없음
재배포시 서버가 멈춤
테스트 못하고 바로 배포
사용자 폭증 못버팀
github push 자동 재배포
EC2서버 프로그램 설치
https://www.youtube.com/playlist?list=PL93mKxaRDidFjQjPAzi9UxCdo2gtR-fue
'AWS' 카테고리의 다른 글
리눅스 명령어 (chmod, chown, find, 표준입출력) (0) | 2022.05.16 |
---|---|
vi에디터 사용 (0) | 2022.03.14 |
AWS 리눅스 명령어 프로세스 (0) | 2022.03.14 |
AWS ppa 저장소 사용 (0) | 2022.03.14 |
AWS apt (0) | 2022.03.14 |