# VIPS 서버 관리 가이드 ## 목차 - [1. 서버 접속](#1-서버-접속) - [1.1 최초 터미널 접속](#11-최초-터미널-접속) - [1.2 root 계정 접속](#12-root-계정-접속) - [1.3 xit 계정 접속](#13-xit-계정-접속) - [2. MariaDB 접속](#2-mariadb-접속) - [3. WAR 파일 배포](#3-war-파일-배포) - [4. 애플리케이션 실행](#4-애플리케이션-실행) - [4.1 소스 위치 정보](#41-소스-위치-정보) - [4.2 직접 실행](#42-직접-실행) - [4.3 백그라운드 실행](#43-백그라운드-실행) - [4.4 백그라운드 프로세스 중지](#44-백그라운드-프로세스-중지) - [5. Systemd 서비스 설정](#5-systemd-서비스-설정) - [5.1 서비스 파일 설정](#51-서비스-파일-설정) - [5.2 Systemd 명령어](#52-systemd-명령어) - [6. MariaDB 데이터베이스 백업](#6-mariadb-데이터베이스-백업) - [6.1 백업 디렉토리 생성](#61-백업-디렉토리-생성) - [6.2 백업 스크립트 생성](#62-백업-스크립트-생성) - [6.3 Crontab 설정 (매일 밤 12시 자동 백업)](#63-crontab-설정-매일-밤-12시-자동-백업) - [6.4 백업 관련 명령어](#64-백업-관련-명령어) --- ## 1. 서버 접속 ### 1.1 최초 터미널 접속 PuTTY를 이용하여 자동차 검사 서버에 접속합니다. ```bash id: tune password: dyddls12# # 한글명: 용인12# ``` ### 1.2 root 계정 접속 ```bash su - password: dyddls12# # 한글명: 용인12# ``` ### 1.3 xit 계정 접속 ```bash su - xit password: xit5811807 ``` --- ## 2. MariaDB 접속 리눅스 root 계정에서 실행합니다. ```bash mysql -u vips -p -P 53306 password: xit5811807 # mariadb root 계정 비밀번호도 동일 ``` ```sql use vips; show tables; ``` --- ## 3. WAR 파일 배포 Windows에서 Linux로 SCP를 이용하여 소스를 업로드합니다. **Windows CMD에서 실행:** ```cmd scp -P1922 c:\VIPS\VIPS-BOOT.war xit@105.19.10.124:/app/VIPS/ password: xit5811807 ``` --- ## 4. 애플리케이션 실행 리눅스 xit 계정에서 실행합니다. ### 4.1 소스 위치 정보 ```bash cd /app/VIPS/ # 애플리케이션 디렉토리 cd /app/VIPS/logs/ # 로그 디렉토리 ``` ### 4.2 직접 실행 실시간 로그 확인 가능, `Ctrl+C`로 즉시 중지 ```bash java -Dspring.profiles.active=prd -jar /app/VIPS/VIPS-BOOT.war ``` ### 4.3 백그라운드 실행 ```bash nohup java -Dspring.profiles.active=prd -jar /app/VIPS/VIPS-BOOT.war > /dev/null 2>&1 & ``` ### 4.4 백그라운드 프로세스 중지 ```bash # 프로세스 확인 ps -ef | grep VIPS # PID 확인 후 종료 kill -9 [PID] ``` --- ## 5. Systemd 서비스 설정 자동 재기동을 위한 systemd 서비스 설정입니다. **root 계정**에서 실행합니다. ### 5.1 서비스 파일 설정 ```bash vi /etc/systemd/system/vips.service ``` **서비스 파일 내용:** ```ini [Unit] Description=VIPS Spring Boot Application After=network.target # 600초(10분) 동안의 재시작 횟수를 카운트, 최대 5번까지만 재시작 시도 StartLimitIntervalSec=600 StartLimitBurst=5 [Service] Type=simple User=xit Group=xit WorkingDirectory=/app/VIPS # ExecStart=/usr/lib/jvm/java-1.8.0-openjdk/bin/java -Xms512m -Xmx1024m -Dspring.profiles.active=prd -jar /app/VIPS/VIPS-BOOT.war ExecStart=/usr/lib/jvm/java-1.8.0-openjdk/bin/java -Dspring.profiles.active=prd -jar /app/VIPS/VIPS-BOOT.war # ExecStop=/bin/kill -15 $MAINPID Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target ``` ### 5.2 Systemd 명령어 ```bash # systemd 데몬 리로드 (서비스 파일 수정 후 실행) systemctl daemon-reload # 부팅 시 자동 시작 설정 systemctl enable vips # 상태 확인 systemctl status vips # 서비스 시작 systemctl start vips # 서비스 중지 systemctl stop vips # 서비스 재시작 systemctl restart vips # 실시간 로그 확인 journalctl -u vips -f ``` --- ## 6. MariaDB 데이터베이스 백업 **root 계정**에서 실행합니다. ### 6.1 백업 디렉토리 생성 ```bash mkdir -p /app/db/backup chmod 755 /app/db/backup ``` ### 6.2 백업 스크립트 생성 ```bash vi /app/db/backup/backup_vips.sh ``` **스크립트 내용:** ```bash #!/bin/bash # 백업 설정 BACKUP_DIR="/app/db/backup" DB_NAME="vips" DB_USER="vips" DB_PASSWORD="xit5811807" DB_PORT="53306" DATE=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql" # 백업 실행 mysqldump -u ${DB_USER} -p${DB_PASSWORD} -P ${DB_PORT} ${DB_NAME} > ${BACKUP_FILE} # 백업 파일 압축 gzip ${BACKUP_FILE} # 30일 이상 된 백업 파일 삭제 find ${BACKUP_DIR} -name "${DB_NAME}_*.sql.gz" -type f -mtime +30 -delete # 백업 결과 로그 if [ $? -eq 0 ]; then echo "$(date '+%Y-%m-%d %H:%M:%S') - 백업 성공: ${BACKUP_FILE}.gz" >> ${BACKUP_DIR}/backup.log else echo "$(date '+%Y-%m-%d %H:%M:%S') - 백업 실패" >> ${BACKUP_DIR}/backup.log fi ``` **실행 권한 부여:** ```bash chmod 700 /app/db/backup/backup_vips.sh ``` ### 6.3 Crontab 설정 (매일 밤 12시 자동 백업) ```bash # crontab 편집 crontab -e # 아래 내용 추가 0 0 * * * /app/db/backup/backup_vips.sh ``` ### 6.4 백업 관련 명령어 ```bash # 수동 백업 실행 /app/db/backup/backup_vips.sh # 백업 파일 목록 확인 ls -lh /app/db/backup/ # 백업 로그 확인 tail -f /app/db/backup/backup.log # crontab 설정 확인 crontab -l # 백업 복원 (필요시) gunzip /app/db/backup/vips_20240101_000000.sql.gz mysql -u vips -p -P 53306 vips < /app/db/backup/vips_20240101_000000.sql ```