|
|
|
|
@ -14,31 +14,35 @@
|
|
|
|
|
|
|
|
|
|
### 1.1 그룹 생성
|
|
|
|
|
```bash
|
|
|
|
|
# 애플리케이션용 그룹 생성 (예: appgroup)
|
|
|
|
|
groupadd appgroup
|
|
|
|
|
# 애플리케이션용 그룹 생성 (예: xit)
|
|
|
|
|
groupadd xit
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 1.2 사용자 계정 생성
|
|
|
|
|
```bash
|
|
|
|
|
# 사용자 생성 (예: appuser)
|
|
|
|
|
# 사용자 생성 (예: xit)
|
|
|
|
|
# -m: 홈 디렉토리 자동 생성
|
|
|
|
|
# -g: 기본 그룹 지정
|
|
|
|
|
# -s: 기본 쉘 지정
|
|
|
|
|
useradd -m -g appgroup -s /bin/bash appuser
|
|
|
|
|
useradd -m -g xit -s /bin/bash xit
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 1.3 사용자 비밀번호 설정
|
|
|
|
|
```bash
|
|
|
|
|
# 비밀번호 설정
|
|
|
|
|
passwd appuser
|
|
|
|
|
# 프롬프트가 나오면 비밀번호를 두 번 입력
|
|
|
|
|
# xit 사용자 비밀번호 설정
|
|
|
|
|
passwd xit
|
|
|
|
|
# 프롬프트가 나오면 "xit5811807"을 입력합니다.
|
|
|
|
|
|
|
|
|
|
# root 사용자 비밀번호 설정 (필요시)
|
|
|
|
|
passwd root
|
|
|
|
|
# 프롬프트가 나오면 "xit5811807"을 입력합니다.
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 1.4 사용자 생성 확인
|
|
|
|
|
```bash
|
|
|
|
|
# 사용자 정보 확인
|
|
|
|
|
id appuser
|
|
|
|
|
# 출력 예시: uid=1001(appuser) gid=1001(appgroup) groups=1001(appgroup)
|
|
|
|
|
id xit
|
|
|
|
|
# 출력 예시: uid=1001(xit) gid=1001(xit) groups=1001(xit)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
@ -124,8 +128,8 @@ ls -la /usr/lib/jvm/
|
|
|
|
|
|
|
|
|
|
### 3.1 사용자 profile 설정 파일 편집
|
|
|
|
|
```bash
|
|
|
|
|
# appuser의 .bash_profile 편집
|
|
|
|
|
vi /home/appuser/.bash_profile
|
|
|
|
|
# xit의 .bash_profile 편집
|
|
|
|
|
vi /home/xit/.bash_profile
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 3.2 .bash_profile 내용 추가
|
|
|
|
|
@ -169,8 +173,8 @@ umask 002
|
|
|
|
|
|
|
|
|
|
### 3.3 .bashrc 파일도 설정 (선택사항)
|
|
|
|
|
```bash
|
|
|
|
|
# appuser의 .bashrc 편집
|
|
|
|
|
vi /home/appuser/.bashrc
|
|
|
|
|
# xit의 .bashrc 편집
|
|
|
|
|
vi /home/xit/.bashrc
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
파일 끝에 추가:
|
|
|
|
|
@ -179,24 +183,24 @@ vi /home/appuser/.bashrc
|
|
|
|
|
umask 002
|
|
|
|
|
|
|
|
|
|
# alias 설정 (편의용)
|
|
|
|
|
alias ll='ls -la'
|
|
|
|
|
alias app='cd /app'
|
|
|
|
|
alias ll=\'ls -la\'
|
|
|
|
|
alias app=\'cd /app\'
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 3.4 설정 적용
|
|
|
|
|
```bash
|
|
|
|
|
# 설정 즉시 적용 (root에서 실행 시)
|
|
|
|
|
su - appuser -c "source ~/.bash_profile"
|
|
|
|
|
su - xit -c "source ~/.bash_profile"
|
|
|
|
|
|
|
|
|
|
# 또는 appuser로 전환 후 실행
|
|
|
|
|
su - appuser
|
|
|
|
|
# 또는 xit로 전환 후 실행
|
|
|
|
|
su - xit
|
|
|
|
|
source ~/.bash_profile
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 3.5 환경 변수 확인
|
|
|
|
|
```bash
|
|
|
|
|
# appuser로 전환
|
|
|
|
|
su - appuser
|
|
|
|
|
# xit로 전환
|
|
|
|
|
su - xit
|
|
|
|
|
|
|
|
|
|
# 환경 변수 확인
|
|
|
|
|
echo $JAVA_HOME
|
|
|
|
|
@ -224,8 +228,8 @@ mkdir -p /app/backup
|
|
|
|
|
|
|
|
|
|
### 4.2 디렉토리 소유권 변경
|
|
|
|
|
```bash
|
|
|
|
|
# appuser:appgroup 소유권으로 변경
|
|
|
|
|
chown -R appuser:appgroup /app
|
|
|
|
|
# xit:xit 소유권으로 변경
|
|
|
|
|
chown -R xit:xit /app
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 4.3 디렉토리 권한 설정
|
|
|
|
|
@ -239,10 +243,10 @@ chmod -R 775 /app
|
|
|
|
|
# 디렉토리 권한 및 소유권 확인
|
|
|
|
|
ls -la /app
|
|
|
|
|
# 출력 예시:
|
|
|
|
|
# drwxrwxr-x. 4 appuser appgroup 4096 Nov 19 10:00 .
|
|
|
|
|
# drwxrwxr-x. 2 appuser appgroup 4096 Nov 19 10:00 logs
|
|
|
|
|
# drwxrwxr-x. 2 appuser appgroup 4096 Nov 19 10:00 config
|
|
|
|
|
# drwxrwxr-x. 2 appuser appgroup 4096 Nov 19 10:00 backup
|
|
|
|
|
# drwxrwxr-x. 4 xit xit 4096 Nov 19 10:00 .
|
|
|
|
|
# drwxrwxr-x. 2 xit xit 4096 Nov 19 10:00 logs
|
|
|
|
|
# drwxrwxr-x. 2 xit xit 4096 Nov 19 10:00 config
|
|
|
|
|
# drwxrwxr-x. 2 xit xit 4096 Nov 19 10:00 backup
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
@ -254,35 +258,35 @@ ls -la /app
|
|
|
|
|
**방법 1: SCP 사용 (로컬 PC에서 실행)**
|
|
|
|
|
```bash
|
|
|
|
|
# Windows PowerShell 또는 CMD에서 실행
|
|
|
|
|
scp C:\path\to\your-app.jar appuser@서버IP:/app/
|
|
|
|
|
scp C:\path\to\VIPS-BOOT.war xit@서버IP:/app/
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**방법 2: SFTP 사용**
|
|
|
|
|
```bash
|
|
|
|
|
# SFTP 접속
|
|
|
|
|
sftp appuser@서버IP
|
|
|
|
|
sftp xit@서버IP
|
|
|
|
|
|
|
|
|
|
# 파일 전송
|
|
|
|
|
put your-app.jar /app/
|
|
|
|
|
put VIPS-BOOT.war /app/
|
|
|
|
|
exit
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**방법 3: 서버에서 직접 다운로드 (URL이 있는 경우)**
|
|
|
|
|
```bash
|
|
|
|
|
# appuser로 전환
|
|
|
|
|
su - appuser
|
|
|
|
|
# xit로 전환
|
|
|
|
|
su - xit
|
|
|
|
|
|
|
|
|
|
# 파일 다운로드
|
|
|
|
|
cd /app
|
|
|
|
|
curl -O http://your-server/your-app.jar
|
|
|
|
|
curl -O http://your-server/VIPS-BOOT.war
|
|
|
|
|
# 또는
|
|
|
|
|
wget http://your-server/your-app.jar
|
|
|
|
|
wget http://your-server/VIPS-BOOT.war
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 5.2 배포된 파일 확인
|
|
|
|
|
```bash
|
|
|
|
|
# appuser로 전환
|
|
|
|
|
su - appuser
|
|
|
|
|
# xit로 전환
|
|
|
|
|
su - xit
|
|
|
|
|
|
|
|
|
|
# 파일 확인
|
|
|
|
|
ls -la /app/
|
|
|
|
|
@ -290,7 +294,7 @@ ls -la /app/
|
|
|
|
|
|
|
|
|
|
### 5.3 실행 권한 부여 (필요시)
|
|
|
|
|
```bash
|
|
|
|
|
chmod 775 /app/your-app.jar
|
|
|
|
|
chmod 775 /app/VIPS-BOOT.war
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
@ -299,21 +303,24 @@ chmod 775 /app/your-app.jar
|
|
|
|
|
|
|
|
|
|
### 6.1 기본 실행
|
|
|
|
|
```bash
|
|
|
|
|
# appuser로 전환
|
|
|
|
|
su - appuser
|
|
|
|
|
# xit로 전환
|
|
|
|
|
su - xit
|
|
|
|
|
|
|
|
|
|
# 애플리케이션 실행
|
|
|
|
|
cd /app
|
|
|
|
|
java -jar your-app.jar
|
|
|
|
|
java -jar VIPS-BOOT.war
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 6.2 백그라운드 실행 (터미널 종료 후에도 계속 실행)
|
|
|
|
|
```bash
|
|
|
|
|
# nohup으로 백그라운드 실행
|
|
|
|
|
nohup java -jar /app/your-app.jar > /app/logs/app.log 2>&1 &
|
|
|
|
|
nohup java -jar /app/VIPS-BOOT.war > /app/logs/app.log 2>&1 &
|
|
|
|
|
# 실행로그도 안남김.. 서버 부팅 로그 확인 이후
|
|
|
|
|
nohup java -jar /app/VIPS-BOOT.war > /dev/null 2>&1 &
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 또는 출력 분리
|
|
|
|
|
nohup java -jar /app/your-app.jar \
|
|
|
|
|
nohup java -jar /app/VIPS-BOOT.war \
|
|
|
|
|
1>/app/logs/stdout.log \
|
|
|
|
|
2>/app/logs/stderr.log &
|
|
|
|
|
```
|
|
|
|
|
@ -324,7 +331,7 @@ nohup java -jar /app/your-app.jar \
|
|
|
|
|
nohup java \
|
|
|
|
|
-Xms512m \
|
|
|
|
|
-Xmx1024m \
|
|
|
|
|
-jar /app/your-app.jar \
|
|
|
|
|
-jar /app/VIPS-BOOT.war \
|
|
|
|
|
--spring.profiles.active=prod \
|
|
|
|
|
> /app/logs/app.log 2>&1 &
|
|
|
|
|
```
|
|
|
|
|
@ -336,7 +343,7 @@ echo $! > /app/app.pid
|
|
|
|
|
|
|
|
|
|
# 또는 프로세스 검색
|
|
|
|
|
ps -ef | grep java
|
|
|
|
|
ps -ef | grep your-app.jar
|
|
|
|
|
ps -ef | grep VIPS-BOOT.war
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
@ -398,7 +405,7 @@ firewall-cmd --list-all
|
|
|
|
|
kill $(cat /app/app.pid)
|
|
|
|
|
|
|
|
|
|
# 또는 프로세스 검색 후 중지
|
|
|
|
|
ps -ef | grep your-app.jar
|
|
|
|
|
ps -ef | grep VIPS-BOOT.war
|
|
|
|
|
kill [PID번호]
|
|
|
|
|
|
|
|
|
|
# 강제 종료 (응답 없을 때)
|
|
|
|
|
@ -410,7 +417,7 @@ kill -9 [PID번호]
|
|
|
|
|
# 중지 후 시작
|
|
|
|
|
kill $(cat /app/app.pid)
|
|
|
|
|
sleep 3
|
|
|
|
|
nohup java -jar /app/your-app.jar > /app/logs/app.log 2>&1 &
|
|
|
|
|
nohup java -jar /app/VIPS-BOOT.war > /app/logs/app.log 2>&1 &
|
|
|
|
|
echo $! > /app/app.pid
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
@ -422,7 +429,7 @@ vi /app/start.sh
|
|
|
|
|
스크립트 내용:
|
|
|
|
|
```bash
|
|
|
|
|
#!/bin/bash
|
|
|
|
|
APP_NAME="your-app.jar"
|
|
|
|
|
APP_NAME="VIPS-BOOT.war"
|
|
|
|
|
APP_HOME="/app"
|
|
|
|
|
LOG_DIR="$APP_HOME/logs"
|
|
|
|
|
PID_FILE="$APP_HOME/app.pid"
|
|
|
|
|
@ -502,10 +509,10 @@ After=network.target
|
|
|
|
|
|
|
|
|
|
[Service]
|
|
|
|
|
Type=simple
|
|
|
|
|
User=appuser
|
|
|
|
|
Group=appgroup
|
|
|
|
|
User=xit
|
|
|
|
|
Group=xit
|
|
|
|
|
WorkingDirectory=/app
|
|
|
|
|
ExecStart=/usr/lib/jvm/java-17-openjdk/bin/java -Xms512m -Xmx1024m -jar /app/your-app.jar
|
|
|
|
|
ExecStart=/usr/lib/jvm/java-17-openjdk/bin/java -Xms512m -Xmx1024m -jar /app/VIPS-BOOT.war
|
|
|
|
|
ExecStop=/bin/kill -15 $MAINPID
|
|
|
|
|
Restart=on-failure
|
|
|
|
|
RestartSec=10
|
|
|
|
|
@ -554,29 +561,29 @@ journalctl -u myapp -f
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 1. root로 로그인 후 그룹/사용자 생성
|
|
|
|
|
groupadd appgroup
|
|
|
|
|
useradd -m -g appgroup -s /bin/bash appuser
|
|
|
|
|
passwd appuser
|
|
|
|
|
groupadd xit
|
|
|
|
|
useradd -m -g xit -s /bin/bash xit
|
|
|
|
|
passwd xit
|
|
|
|
|
|
|
|
|
|
# 2. Java 설치
|
|
|
|
|
dnf install -y java-17-openjdk java-17-openjdk-devel
|
|
|
|
|
|
|
|
|
|
# 3. 환경 변수 설정
|
|
|
|
|
vi /home/appuser/.bash_profile
|
|
|
|
|
vi /home/xit/.bash_profile
|
|
|
|
|
# (JAVA_HOME, PATH, umask 설정 추가)
|
|
|
|
|
|
|
|
|
|
# 4. 디렉토리 생성 및 권한 설정
|
|
|
|
|
mkdir -p /app/logs /app/config /app/backup
|
|
|
|
|
chown -R appuser:appgroup /app
|
|
|
|
|
chown -R xit:xit /app
|
|
|
|
|
chmod -R 775 /app
|
|
|
|
|
|
|
|
|
|
# 5. 소스 배포 (외부에서 파일 전송)
|
|
|
|
|
# scp your-app.jar appuser@서버IP:/app/
|
|
|
|
|
# scp VIPS-BOOT.war xit@서버IP:/app/
|
|
|
|
|
|
|
|
|
|
# 6. appuser로 전환 후 실행
|
|
|
|
|
su - appuser
|
|
|
|
|
# 6. xit로 전환 후 실행
|
|
|
|
|
su - xit
|
|
|
|
|
cd /app
|
|
|
|
|
nohup java -jar your-app.jar > /app/logs/app.log 2>&1 &
|
|
|
|
|
nohup java -jar VIPS-BOOT.war > /app/logs/app.log 2>&1 &
|
|
|
|
|
|
|
|
|
|
# 7. 실행 확인
|
|
|
|
|
ps -ef | grep java
|
|
|
|
|
@ -615,7 +622,7 @@ kill [PID]
|
|
|
|
|
ls -la /app/
|
|
|
|
|
|
|
|
|
|
# 권한 재설정
|
|
|
|
|
chown -R appuser:appgroup /app
|
|
|
|
|
chown -R xit:xit /app
|
|
|
|
|
chmod -R 775 /app
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
@ -626,12 +633,12 @@ ls -la /app/logs
|
|
|
|
|
|
|
|
|
|
# 디렉토리가 없으면 생성
|
|
|
|
|
mkdir -p /app/logs
|
|
|
|
|
chown appuser:appgroup /app/logs
|
|
|
|
|
chown xit:xit /app/logs
|
|
|
|
|
chmod 775 /app/logs
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 메모리 부족 오류 (OutOfMemoryError)
|
|
|
|
|
```bash
|
|
|
|
|
# JVM 메모리 옵션 조정
|
|
|
|
|
java -Xms1g -Xmx2g -jar your-app.jar
|
|
|
|
|
```
|
|
|
|
|
java -Xms1g -Xmx2g -jar VIPS-BOOT.war
|
|
|
|
|
```
|