Java 설치 (11 or 17 , JRE JDK)
- Java 11
- Java 17
- https://sunshower99.tistory.com/22 참고 자료 , yum 을 안쓰는 방법
Cloud Computing 설치
- AWS
- Azure
- Naverclova
- GCP
- Alibaba Cloud
- Oracle Cloud
- 위 목록 중 하나를 선택하여 설치
Cloud Computing 에서 사용할 DB 설치
- AWS RDS
- Azure DB
- Naverclova DB
- GCP DB
- Alibaba Cloud DB
- Oracle Cloud DB
- 또는 Instant DB 설치 (Cloud Instance 내부 DB)
- Instant DB 설치는 추천하지 않지만 small project 이기 때문에 사용!
Mysql 설치
보안 그룹 포트 해제
- 외부 접속 허용 3306
- ssh 접속 허용 22
- http 접속 허용 80
- https 접속 허용 443
git 설치
git clone
- 배포할 프로젝트 clone , 해당 프로젝트 폴더를 하나 만드는게 좋습니다.
폴더 구조
- 해당 프로젝트 폴더 안에서 git clone 을 하게 되면 프로젝트 폴더 안에 프로젝트 폴더가 생성됩니다.
- 이렇게 하는 이유는 .git 이 관리 하는 프로젝트 내부에서 sh , jar file , nohup 등등 결과물들을 untracked 하게 관리하기 위함입니다.
sh 파일 생성
- 매번 git pull 하고 jar 파일 만들고 그걸 실행 하고 거기에 옵션 주고 하는 것은 상당히 귀찮은 일입니다.
- 그래서 sh 파일을 만들어서 한번에 실행 할 수 있게 만들어 줍니다.
#!/bin/bash
# 프로젝트 폴더로 이동 절대경로로 적어줘야함
REPOSITORY=/home/ubuntu/codestates
# 프로젝트 폴더 내부에 있는 실제 프로젝트 코드 폴더로 이동
cd $REPOSITORY/seb41_pre_025
# git 에서 관리하는 폴더로 이동해야 git 명령어 사용 가능
echo "> Git Pull"
git pull
echo "> 프로젝트 Build 시작"
# client 와 server 폴더를 나누었기 때문에 다시 server 폴더로 이동
cd $REPOSITORY/seb41_pre_025/server
# 권한 부여를 해야 build 가 가능
echo "> 프로젝트 Build 권한 부여"
chmod 755 ./gradlew
./gradlew build
echo "> Build 파일 복사"
# build 된 파일을 복사
cp ./build/libs/*.jar $REPOSITORY/
echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(pgrep -f server)
echo "$CURRENT_PID"
if [ -z $CURRENT_PID ]; then
echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다."
else
echo "> kill -2 $CURRENT_PID"
kill -9 $CURRENT_PID
sleep 5
fi
echo "> 새 어플리케이션 배포"
JAR_NAME=$(ls $REPOSITORY/ |grep 'server' | tail -n 1)
echo "> JAR Name: $JAR_NAME"
cd $REPOSITORY
nohup java -jar \
-Dspring.profiles.active=prod\
-Dserver.port=8081 \
-Dspring.datasource.url=jdbc:mysql://게시용마이에스큐엘주소:3306/clone?useSSL=false\
-Dspring.datasource.username=hc\
-Dspring.datasource.password=dkdlfltm\
-Dadmin.email=게시용이메일1@gmail.com,게시용이메일2@gmail.com\
-Djwt.secret=이건게시용시크릿키야\
-Djwt.expiration=1800000\
-Djwt.refresh.expiration=604800000\
$JAR_NAME > $REPOSITORY/nohup.out 2>&1 &
sudo apt-get update # 패키지 업데이트
sudo apt-get install nginx # nginx 설치
sudo service nginx start # nginx 시작
sudo service nginx status # nginx 상태 확인
sudo service nginx stop # nginx 중지
sudo nginx -t # nginx 설정 파일 테스트 -> 자주 테스트 해볼 겁니다.~
아래는 client.conf 입니다.
server {
server_name 도메인!!;
root /home/ubuntu/codestates/seb41_pre_025/client/build;
index index.html index.htm;
try_files $uri $uri/ /index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
아래는 server.conf 입니다.
upstream preServer {
ip_hash;
server 127.0.0.1:8081;
}
server {
server_name 도메인!!!!;
location / {
proxy_pass http://preServer; # 위 upstream 에서 설정한 이름
proxy_set_header HOST $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
charset utf-8;
}
}
sudo service nginx restart
잘 되고 있는지 확인하기 위해서는 아래 명령어를 입력해줍니다.
sudo service nginx status
active (running) 이라고 뜨면 잘 되고 있습니다.
할당한 도메인으로 접속 해서 잘 되는지 확인해봅니다.
위를 참고 했다면 nginx 설정 파일이 달라져 있습니다. 뭐시기 managed by certbot 이런식으로 되어 있습니다.
sudo service nginx status
그리고 난 뒤 해당 도메인으로 가면 접속!!