Files
jongryangje/docs/server.md
javamon1174 f6a64e07b8 서버 인프라 문서 정리 (docs/server.md) + README 운영 환경 추가
- docs/SERVER_DEPLOY.md → docs/server.md 통합 재작성
- 접속 정보 (웹/Gitea/SSH), 서비스 구조, 자동 배포, SSL, 트러블슈팅
- 테스트 계정 4개 정보 포함
- README에 운영 환경 URL 요약 + 서버 가이드 링크

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

6.1 KiB

서버 인프라 / 배포 가이드

접속 정보 요약

서비스 URL 계정
웹 서비스 https://trash.wxn.co.kr (아래 테스트 계정 참조)
Gitea https://gitea.wxn.co.kr wixon / wixon1234!
SSH ssh wixon@116.122.157.166 wixon / 1111

웹 테스트 계정 (비밀번호: test1234!)

ID 역할 Level 소속
tester_admin Super Admin 4 전체 (지자체 선택 필요)
tester_local 지자체관리자 3 중구청
tester_shop 지정판매소 2 -
tester_user 일반 사용자 1 -

1. 서버 환경

항목
IP 116.122.157.166
OS Ubuntu 22.04.5 LTS
호스팅 카페24 (qm391-0435.cafe24.com)
PHP 8.2.30 (PHP-FPM)
nginx 호스트 설치 (80/443/8045)
Docker 28.5.1
DB MySQL (원격 3.36.27.239)

2. 서비스 구조

                          ┌─── https://trash.wxn.co.kr
[클라이언트] ─── nginx ───┤
                (80/443)  └─── https://gitea.wxn.co.kr
                   │                    │
                   ▼                    ▼
            nginx (8045)          Gitea Docker (3001)
                   │
            PHP-FPM 8.2
                   │
            CodeIgniter 4
                   │
            MySQL 3.36.27.239

포트 구성

포트 서비스 설명
80 nginx HTTP → HTTPS 리다이렉트
443 nginx HTTPS (Let's Encrypt)
8045 nginx PHP-FPM vhost (내부)
3001 Gitea Git 서버 (Docker, 내부)
9000 webhook 배포 트리거 수신 (내부)
3306 MySQL 원격 DB (3.36.27.239)

3. Gitea (Git 서버)

항목
외부 URL https://gitea.wxn.co.kr
관리자 wixon / wixon1234! (admin@wxn.co.kr)
레포 https://gitea.wxn.co.kr/wixon/jongryangje
컨테이너 gitea (Docker)
DB SQLite (/srv/gitea/data/gitea/gitea.db)
docker-compose /srv/gitea/docker-compose.yml
데이터 /srv/gitea/data

관리 명령

# 상태 확인
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

4. 자동 배포 (CI/CD)

플로우

로컬 git push → Gitea → Webhook (9000) → deploy.sh → 서버 반영

git push gitea main 한 번이면 서버에 자동 반영됩니다.

배포 스크립트 (/srv/jongryangje/deploy.sh)

#!/bin/bash
cd /srv/jongryangje
git fetch origin main && git reset --hard origin/main
composer install --no-dev --no-interaction | tail -3
chmod -R 777 writable/
echo "Deployed at $(date)"

관련 파일

파일 용도
/srv/jongryangje/deploy.sh 배포 실행 (git fetch + reset + composer)
/srv/jongryangje/webhook-server.sh Webhook 수신 (nc 기반)
/etc/systemd/system/jongryangje-webhook.service Webhook systemd 서비스
/srv/jongryangje/writable/logs/deploy.log 배포 로그

수동 배포

ssh wixon@116.122.157.166 "/srv/jongryangje/deploy.sh"

배포 로그 확인

ssh wixon@116.122.157.166 "tail -20 /srv/jongryangje/writable/logs/deploy.log"

5. 로컬 Git 설정

Remote

Remote URL 용도
origin github.com/wixon-associates/jongryangje GitHub (소스 관리)
gitea gitea.wxn.co.kr/wixon/jongryangje 서버 배포 (auto-deploy)

Push 방법

# GitHub + 서버 동시 배포
git push origin main && git push gitea main

6. 서버 파일 구조

/srv/
├── jongryangje/               # 프로젝트 (git clone)
│   ├── public/                # nginx document root
│   ├── .env                   # 환경 설정 (gitignore)
│   ├── deploy.sh              # 배포 스크립트
│   └── webhook-server.sh      # Webhook 수신
└── gitea/                     # Gitea Docker
    ├── docker-compose.yml
    └── data/                  # Gitea 데이터

/etc/nginx/sites-available/
├── jongryangje                # PHP-FPM vhost (:8045)
├── jongryangje-ssl            # trash.wxn.co.kr (80→443, SSL)
└── gitea                      # gitea.wxn.co.kr (80→443, SSL → :3001)

/etc/letsencrypt/live/
├── trash.wxn.co.kr/           # 웹 SSL 인증서
└── gitea.wxn.co.kr/           # Gitea SSL 인증서

7. SSL 인증서 (Let's Encrypt)

도메인 인증서 경로 만료
trash.wxn.co.kr /etc/letsencrypt/live/trash.wxn.co.kr/ 자동 갱신 (certbot)
gitea.wxn.co.kr /etc/letsencrypt/live/gitea.wxn.co.kr/ 자동 갱신 (certbot)
# 인증서 상태 확인
sudo certbot certificates

# 수동 갱신
sudo certbot renew

8. 서비스 관리

# nginx
sudo systemctl restart nginx
sudo nginx -t   # 설정 테스트

# PHP-FPM
sudo systemctl restart php8.2-fpm

# Gitea
cd /srv/gitea && sudo docker compose restart

# Webhook
sudo systemctl restart jongryangje-webhook

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

9. DNS 설정

도메인 타입
trash.wxn.co.kr A 116.122.157.166
gitea.wxn.co.kr A 116.122.157.166

10. 트러블슈팅

사이트 접속 안 됨

# nginx 상태 확인
sudo systemctl status nginx
sudo tail -20 /var/log/nginx/error.log

# PHP-FPM 확인
sudo systemctl status php8.2-fpm

배포 안 됨

# webhook 서비스 확인
sudo systemctl status jongryangje-webhook

# 수동 배포로 테스트
/srv/jongryangje/deploy.sh

# 배포 로그
tail -30 /srv/jongryangje/writable/logs/deploy.log

Gitea 접속 안 됨

sudo docker ps | grep gitea
sudo docker logs gitea --tail 30