- 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>
6.1 KiB
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