일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- spread 연산자
- css framework
- Google Refund
- SDK upgrade
- server
- springboot
- Spring Boot
- draganddrop
- rpg server
- mongoDB
- linux
- Packet Network
- Git
- unity
- MySQL
- Digital Ocean
- OverTheWire
- Camera Zoom
- Unity IAP
- docker
- Google Developer API
- react
- Camera Movement
- nodejs
- express
- java
- critical rendering path
- --watch
- Unity Editor
- screencapture
- Today
- Total
우당탕탕 개발일지
[방치RPG 서버 제작기] 8. 서버배포 및 SSL 인증서발급하기 본문
서버대여하기.IP 주소 얻었으면 ssh 를 이용해 접속하기 ssh root@~.~.~.~
sudo apt update -y
sudo apt install docker.io -y
sudo apt install docker-compose -y
docker --version
docker-compose --version
sudo reboot
sudo systemctl enable docker
sudo systemctl start docker
프로젝트 바로 아래에 docker-compose.yml, Dockerfile 2개 생성하기
Dockerfile
FROM openjdk:21-jdk-slim
WORKDIR /danteRPG
COPY dante-server.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
docker-compose.yml
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: my-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: pw
MYSQL_DATABASE: db
MYSQL_USER: sa
MYSQL_PASSWORD: pw
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
app:
build: .
container_name: danteRPG-app
restart: always
ports:
- "8080:8080"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/danteRPG
SPRING_DATASOURCE_USERNAME: sa
SPRING_DATASOURCE_PASSWORD: pw
depends_on:
- mysql
volumes:
mysql_data:
.jar, Dockerfile, docker-compose.yml 세개를 서버로 이동하기 위한 쉘스크립트 제작
#!/bin/bash
# =========================
# 서버 정보
SERVER_IP="ip address"
SERVER_USER="root"
SERVER_PATH="/root/danteRPG"
# =========================
# 파일 경로
JAR_FILE=$(ls build/libs/*.jar | sort | tail -n 1)
DOCKERFILE="Dockerfile"
COMPOSE_FILE="docker-compose.yml"
echo "🔵 찾은 JAR 파일 경로: $JAR_FILE"
echo "🛠️ 프로젝트 빌드 중..."
./gradlew build
# =========================
# 복사 시작
echo "📁 서버에 디렉토리 생성 중..."
ssh $SERVER_USER@$SERVER_IP "mkdir -p $SERVER_PATH"
echo "🔵 빌드된 JAR 파일 복사 중..."
scp $JAR_FILE $SERVER_USER@$SERVER_IP:$SERVER_PATH/
echo "🔵 Dockerfile 복사 중..."
scp $DOCKERFILE $SERVER_USER@$SERVER_IP:$SERVER_PATH/
echo "🔵 docker-compose.yml 복사 중..."
scp $COMPOSE_FILE $SERVER_USER@$SERVER_IP:$SERVER_PATH/
echo "✅ 파일 복사 완료!"
클라이언트에서 빌드 후 3개 파일 서버로 복사하기 (쉘스크립트 실행)
chmode +x deploy.sh
./deploy.sh
서버에 접속해서 해당폴더로 이동, 서버띄우기(도커)
cd /root/danteRPG
sudo docker-compose up --build -d
sudo docker ps
[도커파일 에러] COPY failed
docker-compose 빌드 시 에러발생
COPY dante-server.jar app.jar
COPY failed: file not found in build context or excluded by .dockerignore: stat dante-server.jar: file does not exist
ERROR: Service 'app' failed to build : Build failed
원인 : jar 파일 이름은 dante-server-0.0.1-SNAPSHOT.jar 인데, 도커파일에서 아래처럼 잘못된 이름을 참조하고있음.
COPY dante-server.jar app.jar //dante-server.jar파일은 없음.
이를 해결하기 위해, deploy.sh 에서 파일이름을 dante-server.jar로 수정해서 복사하도록 변경하였음.
echo "🔵 빌드된 JAR 파일 복사 중 (서버에서 dante-server.jar로 저장)..."
scp "$JAR_FILE" "$SERVER_USER@$SERVER_IP:$SERVER_PATH/dante-server.jar"
서버는 정상적으로 활성화 됨. 유니티에서 통신 시 이런 에러 발생. > HTTP 통신은 보안상 위험하기 때문에 막아놓았다는 의미. 우리는 Https 를 사용해야 할 거 같다.
Non-secure network connections disabled in Player Settings
UnityEngine.Networking.UnityWebRequest:SendWebRequest ()
BackendUserHandler/<SendGuestLogin>d__3:MoveNext () (at
nginx + https 구현하기
우선 도메인이 있어야하므로.. 도메인을 사자.. 흑
나의 경우 namecheap 사이트에서 구매했다 (흑흑..내돈..)
그리고 Advanced DNS 탭에서 Host Records를 추가했다. 총 2개 넣어준다..! 이 두개 외에 다른것들은 모두 삭제한다.
설정 항목 값
Type | A Record |
Host | @ |
Value (IP주소) | 내 ip주소 |
TTL | Automatic |
설정 항목 값
Type | A Record |
Host | www |
Value (IP주소) | 내 ip주소 |
TTL | Automatic |
sudo apt install nginx -y
sudo ufw allow 'Nginx Full' #방화벽 열기
sudo vim /etc/nginx/sites-available/danteRPG #nginx 설정파일 생성
#아래 내묭 입력하기
새로 만든 파일에 다음 내용을 넣는다
server {
listen 80;
server_name <ip address> <www.domain.org> <domain.org>;
location / {
proxy_pass <http://localhost:8080>;
proxy_set_header Host $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;
}
}
#심볼릭 링크걸기
sudo ln -s /etc/nginx/sites-available/danteRPG /etc/nginx/sites-enabled/
##nginx 설정 테스트 및 리로드
sudo nginx -t
sudo systemctl rload nginx
HTTPS 인증서 발급받기
#인증서 발급받기 https
sudo apt install certbot python3-certbot-nginx -y
#ssl 인증서 발급
sudo certbot --nginx -d <domain address>
++) 한시간동안 5번 실패하면 일정시간 락걸리니까 한번의 트라이를 소중히하자... 나 이것때매 20분기다림 ㅠ
'Server > 방치RPG 서버' 카테고리의 다른 글
[방치RPG 서버 제작기] 9. 유니티 파일 서버로 전송하기 (0) | 2025.05.18 |
---|---|
Docker 내의 db에 접속하기 ( DBeaver ) (0) | 2025.05.06 |
[방치RPG 서버 제작기] 7. backup API 구현하기 (0) | 2025.04.26 |
[방치RPG 서버 제작기] 6. 전송 암호화, DB테이블 구조 분리하기 (0) | 2025.04.25 |
[방치RPG 서버 제작기] 5. 액세스 토큰 + 리프레시 토큰 관리 및 갱신 (0) | 2025.04.23 |