Files
jongryangje/docs/SERVER_DEPLOY.md
javamon1174 7af4f082c9 서버 배포 가이드 문서 추가 (docs/SERVER_DEPLOY.md)
- Gitea 서버 (Docker, 116.122.157.166:3001, wixon/wixon1234!)
- nginx + PHP-FPM 8.2 → trash.wxn.co.kr 도메인 연동
- 자동 배포 (git push → webhook → deploy.sh)
- SSH 터널 설정, push 자동화, 서비스 관리 명령 문서화

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 15:44:52 +09:00

4.6 KiB

서버 배포 가이드

서버 정보

항목
서버 IP 116.122.157.166
OS Ubuntu 22.04.5 LTS
SSH 접속 ssh wixon@116.122.157.166 (비밀번호: 1111)
도메인 trash.wxn.co.kr
호스팅 카페24 (qm391-0435.cafe24.com)

Gitea (Git 서버)

항목
내부 URL http://localhost:3001
컨테이너 gitea (Docker)
관리자 계정 wixon / wixon1234!
관리자 이메일 admin@wxn.co.kr
레포 URL (내부) http://localhost:3001/wixon/jongryangje
SSH 포트 (내부) 2222
DB SQLite (/srv/gitea/data/gitea/gitea.db)
데이터 경로 /srv/gitea/data
docker-compose /srv/gitea/docker-compose.yml

Gitea 관리 명령

# 컨테이너 상태 확인
sudo docker ps | grep gitea

# 재시작
cd /srv/gitea && sudo docker compose restart

# 로그 확인
sudo docker logs gitea --tail 50

# 사용자 추가
sudo docker exec -u git gitea gitea admin user create \
  --username <name> --password <pass> --email <email> --admin

웹 서비스 구조

[클라이언트] → [NPM (80/443)] → [nginx (8045)] → [PHP-FPM 8.2] → [CodeIgniter 4]
                                                                      ↓
                                                              [MySQL 3.36.27.239]
컴포넌트 포트 설명
Nginx Proxy Manager 80/443 도메인 프록시 (Docker)
nginx 8045 PHP-FPM 연동 vhost
PHP-FPM 8.2 unix socket /run/php/php8.2-fpm.sock
Gitea 3001 Git 서버 (Docker)
MySQL 3306 (원격 3.36.27.239) 데이터베이스

프로젝트 배포 경로

/srv/jongryangje/          # 프로젝트 루트 (git clone)
/srv/jongryangje/public/   # nginx document root
/srv/jongryangje/.env      # 환경 설정 (gitignore)
/srv/gitea/                # Gitea Docker 설정

nginx 설정

/etc/nginx/sites-available/jongryangje   # vhost 설정
/etc/nginx/sites-enabled/jongryangje     # symlink

NPM 프록시 설정

NPM 컨테이너 내부에서 trash.wxn.co.kr → 116.122.157.166:8045 프록시:

/data/nginx/proxy_host/7.conf

자동 배포 (CI/CD)

플로우

[로컬 git push] → [Gitea] → [Webhook (port 9000)] → [deploy.sh] → [git pull + composer install]

관련 파일

파일 용도
/srv/jongryangje/deploy.sh 배포 스크립트 (git pull + composer)
/srv/jongryangje/webhook-server.sh Webhook 수신 서버
/etc/systemd/system/jongryangje-webhook.service Webhook systemd 서비스
/srv/jongryangje/writable/logs/deploy.log 배포 로그

배포 명령

# 수동 배포
ssh wixon@116.122.157.166 "/srv/jongryangje/deploy.sh"

# 자동 배포 (로컬에서 push만 하면 됨)
git push gitea main

# 배포 로그 확인
ssh wixon@116.122.157.166 "tail -20 /srv/jongryangje/writable/logs/deploy.log"

# webhook 서비스 상태
ssh wixon@116.122.157.166 "sudo systemctl status jongryangje-webhook"

로컬 Git 설정

Remote 목록

Remote URL 용도
origin github.com/wixon-associates/jongryangje GitHub (메인)
gitea localhost:13001/wixon/jongryangje (SSH 터널) 서버 배포용

SSH 터널 (Gitea push용)

외부에서 Gitea 3001 포트에 직접 접근할 수 없어 SSH 터널을 사용합니다.

# 터널 열기
sshpass -p '1111' ssh -f -N -L 13001:localhost:3001 wixon@116.122.157.166

# push (터널 열린 상태에서)
git push gitea main

# 또는 origin(GitHub)과 gitea 모두 push
git push origin main && git push gitea main

push 자동화 스크립트

#!/bin/bash
# push-all.sh — GitHub + Gitea 동시 push
git push origin main
# SSH 터널 확인/열기
if ! nc -z localhost 13001 2>/dev/null; then
  sshpass -p '1111' ssh -f -N -L 13001:localhost:3001 wixon@116.122.157.166
  sleep 2
fi
git push gitea main
echo "Push complete to GitHub + Gitea (auto-deploy triggered)"

DNS 설정

trash.wxn.co.kr A 레코드를 116.122.157.166으로 설정 필요.

trash.wxn.co.kr  →  A  →  116.122.157.166

DNS가 적용되면 http://trash.wxn.co.kr으로 접속 가능합니다.

서비스 관리

# nginx 재시작
sudo systemctl restart nginx

# PHP-FPM 재시작
sudo systemctl restart php8.2-fpm

# Gitea 재시작
cd /srv/gitea && sudo docker compose restart

# NPM 재시작
sudo docker restart nginx-proxy-manager

# Webhook 재시작
sudo systemctl restart jongryangje-webhook

# 전체 상태 확인
sudo systemctl status nginx php8.2-fpm jongryangje-webhook
sudo docker ps