From 47b40726fc36ced6f08b3cc2c3dd9f5bad4cf7af Mon Sep 17 00:00:00 2001 From: happybell80 Date: Fri, 18 Jul 2025 00:33:16 +0900 Subject: [PATCH] docs: add frontend-customer static build deployment troubleshooting - Add detailed troubleshooting for CI/CD pipeline improvements - Add nginx static file serving configuration changes - Add permission issues resolution with www-data user - Rename file to reflect both auth server and static deployment topics --- ...„œ๋ฒ„๊ตฌ์ถ•๋ฐ์ •์ ๋นŒ๋“œ๋ฐฐํฌ์ „ํ™˜.md} | 56 +++++++++- ... ํŠธ์—”๋“œ๋ถ„๋ฆฌ๋ฐadminํŽ˜์ด์ง€์ˆ˜์ •.md | 105 ++++++++++++++++++ 2 files changed, 159 insertions(+), 2 deletions(-) rename docs/troubleshooting/{250717_happybell80_auth์„œ๋ฒ„๊ตฌ์ถ•.md => 250717_happybell80_auth์„œ๋ฒ„๊ตฌ์ถ•๋ฐ์ •์ ๋นŒ๋“œ๋ฐฐํฌ์ „ํ™˜.md} (65%) create mode 100644 docs/troubleshooting/250717_happybell80_ํ”„๋ก ํŠธ์—”๋“œ๋ถ„๋ฆฌ๋ฐadminํŽ˜์ด์ง€์ˆ˜์ •.md diff --git a/docs/troubleshooting/250717_happybell80_auth์„œ๋ฒ„๊ตฌ์ถ•.md b/docs/troubleshooting/250717_happybell80_auth์„œ๋ฒ„๊ตฌ์ถ•๋ฐ์ •์ ๋นŒ๋“œ๋ฐฐํฌ์ „ํ™˜.md similarity index 65% rename from docs/troubleshooting/250717_happybell80_auth์„œ๋ฒ„๊ตฌ์ถ•.md rename to docs/troubleshooting/250717_happybell80_auth์„œ๋ฒ„๊ตฌ์ถ•๋ฐ์ •์ ๋นŒ๋“œ๋ฐฐํฌ์ „ํ™˜.md index b0c88f2..ab0d4fe 100644 --- a/docs/troubleshooting/250717_happybell80_auth์„œ๋ฒ„๊ตฌ์ถ•.md +++ b/docs/troubleshooting/250717_happybell80_auth์„œ๋ฒ„๊ตฌ์ถ•๋ฐ์ •์ ๋นŒ๋“œ๋ฐฐํฌ์ „ํ™˜.md @@ -1,4 +1,4 @@ -# Auth Server ๊ตฌ์ถ• ๋ฐ Email Skill ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ๋ฆฌํŒฉํ† ๋ง +# Auth Server ๊ตฌ์ถ• ๋ฐ Email Skill ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ๋ฆฌํŒฉํ† ๋ง + Frontend-Customer ์ •์  ๋นŒ๋“œ ๋ฐฐํฌ ์ „ํ™˜ **๋‚ ์งœ**: 2025-07-17 **์ž‘์—…์ž**: happybell80 & Claude @@ -111,4 +111,56 @@ skill_email/ **๋‹ค์Œ ๊ณ„ํš**: - PostgreSQL ๊ธฐ๋ฐ˜ ํ† ํฐ ์ €์žฅ์†Œ ๊ตฌํ˜„ (`DbCredentialsProvider`) - ํ† ํฐ ์ž๋™ ๊ฐฑ์‹  ๋กœ์ง ์ถ”๊ฐ€ -- ๋กœ๋น™๊ณผ ์—ฐ๋™ (rb10508_test์—์„œ email skill ํ˜ธ์ถœ) \ No newline at end of file +- ๋กœ๋น™๊ณผ ์—ฐ๋™ (rb10508_test์—์„œ email skill ํ˜ธ์ถœ) + +## ์˜คํ›„ 11์‹œ 30๋ถ„ + +### Frontend-Customer ์ •์  ๋นŒ๋“œ ๋ฐฐํฌ ์ „ํ™˜ + +**๋ฐฐ๊ฒฝ**: +- frontend-customer๊ฐ€ Docker ์ปจํ…Œ์ด๋„ˆ 5173 ํฌํŠธ์—์„œ Vite ๊ฐœ๋ฐœ ์„œ๋ฒ„๋กœ ์‹คํ–‰ ์ค‘ +- ์ •์  ๋นŒ๋“œ(dist ํด๋”)๋Š” ์ƒ์„ฑ๋˜์—ˆ์œผ๋‚˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ +- ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” nginx ์ •์  ์„œ๋น™์ด ๋” ํšจ์œจ์  + +**๋ฌธ์ œ ์ƒํ™ฉ**: +1. **CI/CD ๋ฐฐํฌ ์‹คํŒจ**: frontend-base ๋ฐฐํฌ ์ค‘ 500 ์—๋Ÿฌ +2. **admin ํŽ˜์ด์ง€ ๊ฒฝ๋กœ ๋ฌธ์ œ**: Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ admin-ui ํด๋” ์ ‘๊ทผ ๋ถˆ๊ฐ€ +3. **Health check ์‹คํŒจ**: ๊ณ ์ • sleep๊ณผ admin ํŽ˜์ด์ง€ ์ฒดํฌ๋กœ ์ธํ•œ ํƒ€์ž„์•„์›ƒ + +**ํ•ด๊ฒฐ ๊ณผ์ •**: + +1. **CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ฐœ์„ ** + - ๊ณ ์ • `sleep 30` ๋Œ€์‹  retry ๋กœ์ง ๊ตฌํ˜„ (์ตœ๋Œ€ 10ํšŒ) + - ์ ์ง„์  ๋Œ€๊ธฐ ์‹œ๊ฐ„ (3์ดˆ, 6์ดˆ, 9์ดˆ...) + - 500 ์—๋Ÿฌ ๋ฐœ์ƒํ•˜๋˜ admin ํŽ˜์ด์ง€ ์ฒดํฌ ์ œ๊ฑฐ + +2. **Docker ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ์ˆ˜์ •** + - docker-compose.yml์— admin-ui ๋ณผ๋ฅจ ์ถ”๊ฐ€: `./admin-ui:/app/admin-ui` + - Dockerfile์˜ ์ž˜๋ชป๋œ COPY ๋ช…๋ น ์ œ๊ฑฐ + +3. **nginx ์„ค์ • ์ •์  ํŒŒ์ผ ์„œ๋น™์œผ๋กœ ์ „ํ™˜** + - HTTP (80ํฌํŠธ): `/home/admin/frontend-customer/dist` ์„ค์ • + - HTTPS (443ํฌํŠธ): proxy_pass ์ œ๊ฑฐ, ์ •์  ํŒŒ์ผ ์„œ๋น™์œผ๋กœ ๋ณ€๊ฒฝ + - try_files ์ค‘๋ณต ์ง€์‹œ์–ด ์ œ๊ฑฐ๋กœ syntax ์—๋Ÿฌ ํ•ด๊ฒฐ + +4. **๊ถŒํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ** + - nginx(www-data) ์‚ฌ์šฉ์ž๊ฐ€ `/home/admin/` ์ ‘๊ทผ ๋ถˆ๊ฐ€ ๋ฌธ์ œ + - ์ตœ์†Œ ๊ถŒํ•œ ๋ถ€์—ฌ: `sudo chmod o+x /home` + `sudo chmod o+x /home/admin` + - ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ๋Œ€์‹  ์ง์ ‘ ๊ฒฝ๋กœ ์‚ฌ์šฉ + +**์ตœ์ข… ๊ฒฐ๊ณผ**: +- **์„ฑ๋Šฅ**: HTTP/HTTPS ๋ชจ๋‘ 200 OK ์‘๋‹ต +- **ํšจ์œจ์„ฑ**: Docker ์ปจํ…Œ์ด๋„ˆ ์ œ๊ฑฐ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ์†Œ +- **๋ฐฐํฌ**: CI/CD ๋นŒ๋“œ ํ›„ nginx ์ž๋™ ๋ฐ˜์˜ +- **ํฌํŠธ**: 5173 ํฌํŠธ ํ•ด์ œ + +**๊ธฐ์ˆ ์  ์„ฑ๊ณผ**: +- ๊ฐœ๋ฐœ ์„œ๋ฒ„ โ†’ ์ •์  ํŒŒ์ผ ์„œ๋น™์œผ๋กœ ์ „ํ™˜ +- nginx ์ง์ ‘ ์„œ๋น™์œผ๋กœ ์‘๋‹ต ์†๋„ ํ–ฅ์ƒ +- CI/CD retry ๋กœ์ง์œผ๋กœ ๋ฐฐํฌ ์•ˆ์ •์„ฑ ํ™•๋ณด +- ์ตœ์†Œ ๊ถŒํ•œ ์›์น™ ์ ์šฉํ•œ ๋ณด์•ˆ ๊ฐœ์„  + +**์ตœ์ข… ๊ตฌ์กฐ**: +``` +nginx (www-data) โ†’ /home/admin/frontend-customer/dist/ (์ง์ ‘ ์—ฐ๊ฒฐ) +``` \ No newline at end of file diff --git a/docs/troubleshooting/250717_happybell80_ํ”„๋ก ํŠธ์—”๋“œ๋ถ„๋ฆฌ๋ฐadminํŽ˜์ด์ง€์ˆ˜์ •.md b/docs/troubleshooting/250717_happybell80_ํ”„๋ก ํŠธ์—”๋“œ๋ถ„๋ฆฌ๋ฐadminํŽ˜์ด์ง€์ˆ˜์ •.md new file mode 100644 index 0000000..466f763 --- /dev/null +++ b/docs/troubleshooting/250717_happybell80_ํ”„๋ก ํŠธ์—”๋“œ๋ถ„๋ฆฌ๋ฐadminํŽ˜์ด์ง€์ˆ˜์ •.md @@ -0,0 +1,105 @@ +# ํ”„๋ก ํŠธ์—”๋“œ ๋ถ„๋ฆฌ ๋ฐ Admin ํŽ˜์ด์ง€ ์ˆ˜์ • + +**๋‚ ์งœ**: 2025-07-17 +**์ž‘์—…์ž**: happybell80 & Claude +**์ €์žฅ์†Œ**: frontend-base, frontend-customer + +## ์˜คํ›„ 8์‹œ 30๋ถ„ + +### ํ”„๋ก ํŠธ์—”๋“œ ๋ถ„๋ฆฌ ์ž‘์—… + +**๋ฐฐ๊ฒฝ**: +- ๊ณ ๊ฐ์šฉ ํ”„๋ก ํŠธ์—”๋“œ์™€ ๊ด€๋ฆฌ์ž ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ์ €์žฅ์†Œ์— ํ˜ผ์žฌ +- ๋…๋ฆฝ์ ์ธ ๋ฐฐํฌ์™€ ๊ด€๋ฆฌ์˜ ํ•„์š”์„ฑ +- ์„ฑ๋Šฅ ์ตœ์ ํ™” (๋ฒˆ๋“ค ํฌ๊ธฐ ๊ฐ์†Œ) + +**์ฃผ์š” ์ž‘์—…**: + +1. **์ƒˆ ์ €์žฅ์†Œ ์ƒ์„ฑ** + - `frontend-customer` ์ €์žฅ์†Œ ์ƒ์„ฑ (๊ณ ๊ฐ์šฉ React ์•ฑ) + - Git URL: https://git.ro-being.com/ivada_Ro-being/frontend-customer.git + +2. **ํŒŒ์ผ ์ด๋™** + - `frontend/client/*` โ†’ `frontend-customer/` + - node_modules ๋ฐ ๋Œ€์šฉ๋Ÿ‰ ์ด๋ฏธ์ง€ ์ œ์™ธ + - .gitignore, README.md, CLAUDE.md ์ž‘์„ฑ + +3. **๊ตฌ์กฐ ์žฌํŽธ์„ฑ** + - `frontend/backend/admin_static` โ†’ `frontend/admin-ui` ์ด๋ฆ„ ๋ณ€๊ฒฝ + - docker-compose.yml์—์„œ frontend ์„œ๋น„์Šค ์ œ๊ฑฐ + - ๊ด€๋ฆฌ์ž ์ „์šฉ ๋ฐฑ์—”๋“œ๋กœ ๋ณ€๊ฒฝ + +4. **Docker ์„ค์ •** + - frontend-customer: ํฌํŠธ 5173, container_name ์ถ”๊ฐ€ + - frontend-base: ํฌํŠธ 8000, container_name ์ถ”๊ฐ€ + - ์–‘์ชฝ ๋ชจ๋‘ appnet ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ + +**๊ฒฐ๊ณผ**: +- frontend-customer: ๊ณ ๊ฐ์šฉ React ์•ฑ (๋ณ„๋„ ์ €์žฅ์†Œ) +- frontend-base: ๊ด€๋ฆฌ์ž ๋Œ€์‹œ๋ณด๋“œ ๋ฐฑ์—”๋“œ (๊ธฐ์กด ์ €์žฅ์†Œ) +- ๊ฐ๊ฐ ๋…๋ฆฝ์ ์ธ ๋ฐฐํฌ ๊ฐ€๋Šฅ + +## ์˜คํ›„ 9์‹œ 00๋ถ„ + +### Admin ํŽ˜์ด์ง€ ๋ฐฐํฌ ๋ฌธ์ œ ํ•ด๊ฒฐ + +**๋ฌธ์ œ ์ƒํ™ฉ**: +- https://ro-being.com/admin ์—์„œ ๊ตฌ์‹ ๋””์ž์ธ ํ‘œ์‹œ +- ๋‹คํฌ๋ชจ๋“œ ํ† ๊ธ€ ์—†์Œ, ๋ณด๋ผ์ƒ‰ ๊ทธ๋ผ๋ฐ์ด์…˜ ๋ฐฐ๊ฒฝ +- ๋กœ์ปฌ์—๋Š” ํ˜„๋Œ€์  ๋””์ž์ธ์ด ์ ์šฉ๋˜์–ด ์žˆ์Œ + +**์›์ธ ๋ถ„์„**: +1. `main.py`์—์„œ ์—ฌ์ „ํžˆ `admin_static/index.html` ๊ฒฝ๋กœ ์ฐธ์กฐ +2. ์‹ค์ œ ํŒŒ์ผ์€ `admin-ui/index.html`๋กœ ์ด๋™๋จ +3. FileResponse๊ฐ€ ํŒŒ์ผ์„ ์ฐพ์ง€ ๋ชปํ•ด ์˜ค๋ฅ˜ ๋ฐœ์ƒ + +**ํ•ด๊ฒฐ ๊ณผ์ •**: +1. main.py ์ˆ˜์ • + ```python + # ๋ณ€๊ฒฝ ์ „ + return FileResponse("admin_static/index.html") + + # ๋ณ€๊ฒฝ ํ›„ + return FileResponse("admin-ui/index.html") + ``` + +2. Git ์ปค๋ฐ‹ ๋ฐ ํ‘ธ์‹œ + - ์ปค๋ฐ‹: `3a8d62b` fix: admin ํŽ˜์ด์ง€ ๊ฒฝ๋กœ ์ˆ˜์ • + +## ์˜คํ›„ 10์‹œ 00๋ถ„ + +### ํด๋”๋ช… ๋ณ€๊ฒฝ ๋ฐ Actions ์›Œํฌํ”Œ๋กœ์šฐ ์ˆ˜์ • + +**์ถ”๊ฐ€ ์ž‘์—…**: +1. **ํด๋”๋ช… ํ†ต์ผ** + - ๋กœ์ปฌ๊ณผ ์„œ๋ฒ„ ๋ชจ๋‘ `frontend` โ†’ `frontend-base`๋กœ ๋ณ€๊ฒฝ + - ํ”„๋กœ์ ํŠธ ์ผ๊ด€์„ฑ ํ™•๋ณด + +2. **Actions ์›Œํฌํ”Œ๋กœ์šฐ ๊ฒฝ๋กœ ์ˆ˜์ •** + ```yaml + # ๋ณ€๊ฒฝ ์ „ + /home/admin/frontend/ + + # ๋ณ€๊ฒฝ ํ›„ + /home/admin/frontend-base/ + ``` + +3. **๋ฐฑ์—… ๊ฒฝ๋กœ ์ˆ˜์ •** + - `frontend.backup.*` โ†’ `frontend-base.backup.*` + - ๋กค๋ฐฑ ์Šคํฌ๋ฆฝํŠธ๋„ ๋™์ผํ•˜๊ฒŒ ์ˆ˜์ • + +**๊ธฐ์ˆ ์  ์„ฑ๊ณผ**: +- ํ”„๋ก ํŠธ์—”๋“œ ์™„์ „ ๋ถ„๋ฆฌ๋กœ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ +- ๋ฒˆ๋“ค ํฌ๊ธฐ ์ตœ์ ํ™” (๊ณ ๊ฐ์šฉ ์•ฑ ๊ฒฝ๋Ÿ‰ํ™”) +- ๋…๋ฆฝ์ ์ธ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• +- ๋ณด์•ˆ ๊ฐ•ํ™” (๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ ๊ฒฉ๋ฆฌ) + +**๋ฌธ์ œ์  ๋ฐ ๊ฐœ์„ ์‚ฌํ•ญ**: +- Actions ์‹คํ–‰ ์ค‘ ๊ฒฝ๋กœ ์˜ค๋ฅ˜ ๋ฐœ์ƒ +- rsync ์‹คํŒจ: `/home/admin/frontend` ๋””๋ ‰ํ† ๋ฆฌ ์—†์Œ +- ์›Œํฌํ”Œ๋กœ์šฐ ํŒŒ์ผ ์ˆ˜์ •์œผ๋กœ ํ•ด๊ฒฐ + +**๋‹ค์Œ ๋‹จ๊ณ„**: +- ์„œ๋ฒ„์—์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ pull ๋ฐ ์žฌ๋ฐฐํฌ +- admin ํŽ˜์ด์ง€ ๋‹คํฌ๋ชจ๋“œ ์ ์šฉ ํ™•์ธ +- ์–‘์ชฝ ์ €์žฅ์†Œ ๋…๋ฆฝ์  ์šด์˜ ์‹œ์ž‘ \ No newline at end of file