자바 설치(JDK)
sudo apt update
sudo apt-cache search jdk | grep openjdk-11
sudo apt install openjdk-11-jdk -y
java --version
EC2에서 github 다운로드
git clone https://github.com/wisdom08/aws-v1.git
gradle 실행 권한 주기
cd ~/aws-v1
chmod u+x gradlew
gradlew로 프로젝트를 jar 파일로 변경하기
./gradlew build
java로 jar를 실행
cd build/libs
java -jar *.jar
nohup 으로 백그라운드 실행(터미널이 꺼져도 종료 안되게)
sudo apt install nohup
nohup java -jar aws-v1-0.0.1-SNAPSHOT.jar &
오류 로그 남기기
pwd -> build/libs
tail -f nohup.out
nohup 으로 실행 중인 거 종료하기(프로세스 아이디를 알아야 함)
ps -ef
sudo kill -9 PID
오류 로그 파일 변경(표준 입출력 리다이렉션)
nohup java -jar *.jar > mylog.out &
tail -f mylog.out
서버가 종료되면 cron으로 자동 재시작(주기적 실행)
crontab -e
* * * * * ls -l 1>>cron.log
nohup java -jar aws-v1-0.0.1-SNAPSHOT.jar 1>log.out 2>error.out &
timedatectl
timedatectl list-timezones
timedatectl list-timezones | grep Seoul
sudo timedatectl set-timezone Asia/Seoul
1. ps -ef | grep *.jar | grep -v grep | awk '{print $2}'
2. pgrep -f *.jar
pwd -> build/libs
vi spring-stop.sh
spring-stop.sh"
echo "Springboot Stop..."
SPRING_PID = $(pgrep -f aws-v1-0.0.1-SNAPSHOT.jar)
echo $SPRING_PID
kill -9 $SPRING_PID
spring-stop.sh 실행 권한 주기
chmod u+x spring-stop.sh
spring-stop.sh 스크립트 실행
./spring-stop.sh
종료됐는지 확인
netstat -nlpt
vi myScript.sh
"myScript.sh"
crontab -l 1>crontab_new
echo "* * * * * /home/ubuntu/job.sh" 1>>crontab_new
crontab crontab_new
vi job.sh
"job.sh" (현재 폴더에 있는 파일이나 디렉토리를 cron.log로 옮겨라!, 주기적 실행)
ls -l>/home/ubuntu/cron.log
chmod u+x job.sh
chmod u+x myScript.sh
./myScript.sh
pwd -> /home/ubuntu
mkdir cron-restart
cd cron-restart
vi spring-stop.sh
"spring-stop.sh"
echo "SPRINGBOOT STOP..."
SPRING_PID=$(pgrep -f aws-v1-0.0.1-SNAPSHOT.jar)
kill -9 $SPRING_PID
chmod u+x spring-stop.sh
netstat -nltp
vi spring-restart.sh
"spring-restart.sh"
SPRING_PID=$(pgrep -f aws-v1-0.0.1-SNAPSHOT.jar)
SPRING_PATH="/home/ubuntu/aws-v1/build/libs/aws-v1-0.0.1-SNAPSHOT.jar"
echo $SPRING_PID
echo $SPRING_PATH
if [ -z "$SPRING_PID" ]; then // 스프링 서버가 꺼졌다면
echo "스프링 종료된 상태!"
else
echo "스프링 시작된 상태!"
fi
chmod u+x spring-restart.sh
./spring-restart.sh
nohup java -jar aws-v1-0.0.1-SNAPSHOT.jar 1>log.out 2>error.out &
netstat -nltp
./spring-restart.sh
"spring-restart.sh" 추가
SPRING_PID=$(pgrep -f aws-v1-0.0.1-SNAPSHOT.jar)
SPRING_PATH="/home/ubuntu/aws-v1/build/libs/aws-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
nuhup java -jar $SPRING_PATH 1>log.out 2>error.out &
else
echo "스프링 시작된 상태!"
fi
./spring-restart.sh
"deploy.sh"
# 1.배포 프로세스
echo "deploy start!"
echo "1. JDK install"
echo "2. github project download"
echo "3. gradlew 실행 권한 추가"
echo "4. project build 하기"
echo "5. ubuntu timezone setting"
echo "6. nohup 으로 springboot 실행"
# 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
./spring-stop.sh
1분 쯤 뒤 자동으로 서버가 재시작됨(-> 스크립트 덕분)
netstat -nltp
"build.gradle"
jar {
enabled = false
}
하나의 배포 스크립트가 필요함
첫 번째면 최초 배포 프로세스, 두 번째 이상이면 재배포 프로세스
redeploy.sh 재배포 스크립트를 작성하자!
서버 중단 스크립트
"spring-stop.sh"
echo "SPRINGBOOT STOP..."
SPRING_PID=$(pgrep -f aws-v1-0.0.1-SNAPSHOT.jar)
kill -9 $SPRING_PID
rm -rf /home/ubuntu/aws-v1
git clone https://github.com/wisdom08/aws-v1.git
cd /home/ubuntu/aws-v1
chmod u+x gradlew
./gradlew build
nohup java -jar aws-v1-0.0.1-SNAPSHOT.jar 1>log.out 2>error.out &
"deploy.sh"
crontab -l > crontab_new
echo "* * * * * /home/ubuntu/cron-restart/spring-restart.sh" 1>>crontab_new
crontab crontab_new
rm crontab_new
위 2번부터 7번까지의 과정에서 서버가 멈춰있다.
즉, 재배포를 하게 되면 서버는 멈춘다.
-> 해결해야 할 문제