Skip to content

EstSoftOrmi3FinalProject/SchoolTalks-Backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

425 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“–[School Talks] DRF๋ฅผ ํ™œ์šฉํ•œ ์ž…์‹œ์ •๋ณด ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค

logo

๐ŸŽฏ1. ๋ชฉํ‘œ์™€ ๊ธฐ๋Šฅ

1.1 ๋ชฉํ‘œ

  • ๊ณ ๋“ฑํ•™์ƒ๋“ค์˜ ์ž…์‹œ์ •๋ณด ๋ฐ ์ƒํ™œ์ •๋ณด ๊ณต์œ  ์„œ๋น„์Šค
  • ๋Œ€์ž…์— ๋Œ€ํ•œ ์ž…์‹œ์ •๋ณด๋ฅผ ์ฐพ๊ณ , ์ผ์ƒ์ƒํ™œ์„ ๊ณต์œ ํ•˜๋ฉฐ ๊ณต๊ฐ๋Œ€๋ฅผ ํ˜•์„ฑํ•˜๋Š” ์„œ๋น„์Šค
  • ๊ณต๋ถ€ํ•˜๋‹ค ์ง€์นœ ํ•™์ƒ๋“ค์ด ํŽธํžˆ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ

1.2 ๊ธฐ๋Šฅ

  • ๊ธฐ๋ณธ ๊ธฐ๋Šฅ

    • ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ํ”„๋กœํ•„ ๊ธฐ๋Šฅ
    • ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ(์ž…์‹œ๊ฒŒ์‹œํŒ, ์ž์œ ๊ฒŒ์‹œํŒ 2๊ฐœ)
    • AI ํ‹ฐ์นญ ๊ธฐ๋Šฅ
  • ์„ ํƒ ๊ธฐ๋Šฅ

    • ์‹ค์‹œ๊ฐ„ ์ต๋ช… ์ฑ„ํŒ… ๊ธฐ๋Šฅ
    • ๋ฌธ์˜ ๊ธฐ๋Šฅ

1.3 ํŒ€ ๊ตฌ์„ฑ

๊น€์ •์› ๊น€๋™ํ›„ ๊น€์ฐฌ์–‘ ํ™ฉ์ง„๊ฒฝ ๊น€์ฐฝ์ˆ˜
- Study, Qna, Chat BE & FE
- Accounts FE ์—ฐ๊ฒฐ
- ์ „์ฒด ํ”„๋ก ํŠธ ํšจ์œจ ๊ฐœ์„ 
- ๋ฐฐํฌ ๋ฐ CI/CD ์ง„ํ–‰
- ๋ฌธ์„œ์ž‘์—…
- AIchat ๋ฉ”์ธ ๋‹ด๋‹น BE & FE
- ๋ฌธ์„œ์ž‘์—…
- Post ๋ฉ”์ธ ๋‹ด๋‹น BE & FE
- ์ „์ฒด ํ”„๋ก ํŠธ ์ฝ”๋“œ ํšจ์œจ ๊ฐœ์„ 
- ๋ฌธ์„œ์ž‘์—…
- Chat, AIChat ์„œ๋ธŒ: ๊ตฌํ˜„๋ฐฉ๋ฒ•์กฐ์‚ฌ ๋ฐ FE์ˆ˜์ •
- ๋ฌธ์„œ์ž‘์—…
- Accounts ๋ฉ”์ธ ๋‹ด๋‹น BE
- ๋ฌธ์„œ์ž‘์—…

1.4 ํ”Œ๋กœ์šฐ์ฐจํŠธ

ํ”Œ๋กœ์šฐ์ฐจํŠธ

โœจ2. ์š”๊ตฌ์‚ฌํ•ญ ๋ช…์„ธ์™€ ๊ธฐ๋Šฅ ๋ช…์„ธ

001

  • ๊ธฐ๋ณธ ์š”๊ตฌ์‚ฌํ•ญ

    • ํšŒ์› ๊ด€๋ จ ๊ธฐ๋Šฅ
    • ๊ธฐ๋Šฅ ์ตœ์†Œ 3๊ฐ€์ง€ ์ด์ƒ ๊ตฌํ˜„ (ํšŒ์› ๊ธฐ๋Šฅ ํฌํ•จ)
  • ์„ ํƒ ์‚ฌํ•ญ

    • UI ์ถ”๊ฐ€
  • ํ•„์ˆ˜ ๊ฒฐ๊ณผ๋ฌผ

    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ(ERD)
    • API ๋ช…์„ธ์„œ(๋งˆํฌ์—…, ๋…ธ์…˜, swaggerโ€ฆ ๋“ฑ)
    • ๋ฐœํ‘œ ์ž๋ฃŒ
  • ํ‰๊ฐ€ ์ง€ํ‘œ

    • ๊ธฐ์ˆ ์„ฑ: ๋งˆ์ดํฌ๋กœ์‹๊ณผ CBV์˜ ์ ์ ˆํ•œ ์‚ฌ์šฉ, Django ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ์ ์ ˆํ•œ ์‚ฌ์šฉ
    • DB์„ค๊ณ„: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„, DB ๋ณต์žก๋„, ์ ์ ˆ์„ฑ์— ๋”ฐ๋ผ ๊ตฌํ˜„
    • ๋ฐฐํฌ: nginx, gunicorn, django ๋“ฑ ์—ฐ๊ณ„ํ•˜์—ฌ ๋ฐฐํฌ
    • ์„ค๊ณ„์™€ ๊ตฌํ˜„: ์„ค๊ณ„์™€ ๊ตฌํ˜„ ๋ณต์žก๋„(์š”๊ตฌ์‚ฌํ•ญ ์ž‘์„ฑ, ์™€์ด์–ดํ”„๋ ˆ์ž„ ๋“ฑ ๊ธฐ๊ฐ„ ๋‚ด ์„ค๊ณ„ํ•œ ์š”์†Œ๋“ค์ด ๋ชจ๋‘ ๊ตฌํ˜„์ด ๋˜์–ด ์žˆ๋Š”์ง€ ๋“ฑ)

๐Ÿ–ฅ3. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋ฐ ๋ฐฐํฌ URL

3.1 ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • FE:

    HTML5 CSS3 JavaScript

  • BE:

    Python Django

  • Deployment:

    GitHub AWS Lightsail Ubuntu Gunicorn Nginx DB SQLite Netlify

3.2 ๋ฐฐํฌ URL

  • aws๊ณผ๊ธˆ์œผ๋กœ ํ˜„์žฌ ์„œ๋ฒ„ ์ค‘๋‹จ ์ƒํƒœ

3.3 CI/CD ๊ตฌ์ถ• ๋ฐฐํฌ

  • BE Github Action ์ž๋™ ๋ฐฐํฌ แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-12-25 แ„‹แ…ฉแ„’แ…ฎ 6 23 26
  • FE Netlify ์ž๋™ ๋ฐฐํฌ แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-12-22 แ„‹แ…ฉแ„’แ…ฎ 11 18 21

๐Ÿงถ4. URL ์„ค๊ณ„ & API ๋ช…์„ธ ๋ฐ ์‚ฌ์šฉ ์™ธ๋ถ€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

4.1 URL ์„ค๊ณ„ & API ๋ช…์„ธ

  • ์Šค์›จ๊ฑฐ ๋ฌธ์„œ(API ๋ช…์„ธ) : API ๊ธฐ๋Šฅ๊ณผ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ๋ช…ํ™•ํžˆ ์ „๋‹ฌ ํ•˜๊ธฐ ์œ„ํ•œ Swegger drf-yasg ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์„œํ™”

๐Ÿ–Œ https://schooltalks.maxworld7070.net/schema/swagger-ui/

์—”๋“œํฌ์ธํŠธ HTTP ๋ฉ”์„œ๋“œ ๊ธฐ๋Šฅ ์•ฑ ๋น„๊ณ 
/accounts/signup/ POST ์ƒˆ๋กœ์šด User๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์—ญํ•  (ํšŒ์›๊ฐ€์ž…) Accounts
/accounts/token/ POST ์ธ์ฆ ํ† ํฐ ์ƒ์„ฑ (๋กœ๊ทธ์ธ) Authentication ๐Ÿ”‘
/accounts/token/refresh/ POST ํ† ํฐ ๊ฐฑ์‹  Authentication ๐Ÿ”‘
/accounts/token/verify/ POST ํ† ํฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ Authentication ๐Ÿ”‘
/accounts/user/ GET ํŠน์ • ์‚ฌ์šฉ์ž์˜ ํ”„๋กœํ•„ ์กฐํšŒ (ํ”„๋กœํ•„ ๋ณด๊ธฐ) User Profile ๐Ÿ”‘ ๐Ÿง‘
/aichat/ GET, POST, DELETE AI์™€ ์ฑ„ํŒ… (์ฑ„ํŒ… ๋ณด๊ธฐ, ์ฑ„ํŒ… ๋ณด๋‚ด๊ธฐ, ์ „์ฒด ์ฑ„ํŒ… ์‚ญ์ œ) AI Chat ๐Ÿ”‘ ๐Ÿง‘
/chat/api/chat-messages/ GET, POST ์ฑ„ํŒ… ๋ฉ”์‹œ์ง€ ์กฐํšŒ ๋ฐ ์ƒ์„ฑ Chat
/post/ GET, POST ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ ๋ฐ ๊ธ€ ์ž‘์„ฑ Posts
/post/{id}/ GET, PUT, PATCH, DELETE ํŠน์ • ๊ธ€ ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ Posts ๐Ÿ”‘ ๐Ÿง‘
/post/{post_id}/comment/{id}/ DELETE, PUT, PATCH ํŠน์ • ๋Œ“๊ธ€ ์‚ญ์ œ, ์ˆ˜์ • Comments ๐Ÿ”‘ ๐Ÿง‘
/qna/inquiry/ GET, POST ๋ฌธ์˜ ์‚ฌํ•ญ ์กฐํšŒ ๋ฐ ์ƒ์„ฑ QnA
/qna/inquiry/{id}/ GET, PUT, PATCH, DELETE ํŠน์ • ๋ฌธ์˜ ์‚ฌํ•ญ ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ QnA
/study/{id}/ GET, DELETE, PUT ํŠน์ • ๊ฒŒ์‹œ๋ฌผ ์กฐํšŒ, ์‚ญ์ œ, ์ˆ˜์ • Study ๐Ÿ”‘ ๐Ÿง‘
  • ๐Ÿ”‘ : ๋กœ๊ทธ์ธ ๊ถŒํ•œ
  • ๐Ÿง‘ : ์ž‘์„ฑ์ž ๊ถŒํ•œ

4.2 ์‚ฌ์šฉ ์™ธ๋ถ€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ ์„ค๋ช…
djangorestframework 3.14.0 RESTful API ๊ตฌ์ถ•์„ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ํˆดํ‚ท์„ Django์— ์ œ๊ณต
djangorestframework-simplejwt 5.3.1 JWT ์ธ์ฆ์„ Django Rest Framework์— ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ™•์žฅ
drf-spectacular 0.26.5 DRF ์Šคํ‚ค๋งˆ ์ƒ์„ฑ ๋ฐ ๋ฌธ์„œํ™”๋ฅผ ์œ„ํ•œ ํ™•์žฅ์œผ๋กœ, API ๋ฌธ์„œํ™” ์ž‘์—…์„ ๊ฐ„์†Œํ™”
channels[daphne] ~4.0.0 ๋น„๋™๊ธฐ ์›น์†Œ์ผ“ ์ฒ˜๋ฆฌ ๋ฐ ์‹ค์‹œ๊ฐ„ ๊ธฐ๋Šฅ ๊ตฌํ˜„์˜ ์ง€์›์„ ์œ„ํ•œ Django ํ™•์žฅ์œผ๋กœ, Daphne ์„œ๋ฒ„๋ฅผ ํฌํ•จ
redis !=4.4.0 Redis ์„œ๋ฒ„์™€์˜ ํ†ต์‹ ์„ ์œ„ํ•œ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, Channels์˜ ๋ฐฑ์—”๋“œ๋กœ๋„ ์‚ฌ์šฉ
faker 21.0.0 ๋ชฉ์—… ๋ฐ์ดํ„ฐ ์ƒ์„ฑ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋“ฑ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ ๋จ
python-dotenv 1.0.0 .env ํŒŒ์ผ์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋กœ๋“œํ•˜์—ฌ Django ์„ค์ •์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ
openai 1.5.0 OpenAI API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ณต์‹ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, GPT-3 ๋“ฑ์˜ AI ๋ชจ๋ธ์„ ํ™œ์šฉํ•  ๋•Œ ์‚ฌ์šฉ

๐Ÿ“…5. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์™€ ๊ฐœ๋ฐœ ์ผ์ •

5.1 ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

# SCHOOLTALKS-BACKEND
โ”œโ”€โ”€ ๐Ÿ“ .github
โ”œโ”€โ”€ ๐Ÿ“ accounts
โ”œโ”€โ”€ ๐Ÿ“ aichat
โ”œโ”€โ”€ ๐Ÿ“ chat
โ”œโ”€โ”€ ๐Ÿ“ media
โ”œโ”€โ”€ ๐Ÿ“ post
โ”œโ”€โ”€ ๐Ÿ“ project
โ”œโ”€โ”€ ๐Ÿ“ qna
โ”œโ”€โ”€ ๐Ÿ“ study
โ”œโ”€โ”€ ๐Ÿ“ venv
โ”œโ”€โ”€ ๐Ÿ“„ .env
โ”œโ”€โ”€ ๐Ÿ“„ .gitignore
โ”œโ”€โ”€ ๐Ÿ“„ db.sqlite3
โ”œโ”€โ”€ ๐Ÿ“„ manage.py
โ”œโ”€โ”€ ๐Ÿ“˜ README.md
โ””โ”€โ”€ ๐Ÿ“„ requirements.txt

# SCHOOLTALKS-FRONTEND
โ”œโ”€โ”€ ๐Ÿ“ .vscode
โ”œโ”€โ”€ ๐Ÿ“ assets
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ css
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ fonts
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ images
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ js
โ”‚   โ””โ”€โ”€ ๐Ÿ“ mail
โ”œโ”€โ”€ ๐Ÿ“ chat
โ”œโ”€โ”€ ๐Ÿ“ gpt
โ”œโ”€โ”€ ๐Ÿ“ post
โ”œโ”€โ”€ ๐Ÿ“ study
โ”œโ”€โ”€ ๐Ÿ“„ header.html
โ”œโ”€โ”€ ๐Ÿ“„ index.html
โ”œโ”€โ”€ ๐Ÿ“„ license.txt
โ”œโ”€โ”€ ๐Ÿ“„ login.html
โ”œโ”€โ”€ ๐Ÿ“„ profile.html
โ”œโ”€โ”€ ๐Ÿ“„ qna.html
โ”œโ”€โ”€ ๐Ÿ“˜ README.md
โ””โ”€โ”€ ๐Ÿ“„ register.html

  • 7๊ฐœ์˜ ์•ฑ๊ณผ 1๊ฐœ์˜ ํ”„๋กœ์ ํŠธ๋กœ ๊ตฌ์„ฑ
  • assets์™€ html ํด๋”๋กœ ๊ตฌ์„ฑ

5.2 ๊ฐœ๋ฐœ ์ผ์ •(WBS)

4545443

  • ๊ฐœ๋ฐœ์ผ์ •์€ GitHub Projects Tool๋กœ ์ž‘์„ฑ
  • ๋ฐฐํฌ์ผ์ •์€ ์•ž๋‹น๊ฒจ ์—ฌ์œ ์žˆ๊ฒŒ ๋ฌธ์„œ์ž‘์—…์„ ์ง„ํ–‰
  • ๋ฐœํ‘œ์ „๋‚ ์€ ์—ฌ์œ ์žˆ๊ฒŒ ํ”„๋กœ์ ํŠธ ๋ณต๊ธฐ์™€ ์ฝ”๋“œ ํŒ€์Šคํ„ฐ๋””๋ฅผ ์ง„ํ–‰

๐Ÿ—‚6. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ๋ง(ERD)

แ„†แ…ฉแ„ƒแ…ฆแ†ฏ

  • ํ•™์Šต ๊ฒŒ์‹œ๋ฌผ ํ…Œ์ด๋ธ”:

    • ๋‹ค๋Œ€์ผ ๊ด€๊ณ„: ํ•˜๋‚˜์˜ ๊ฒŒ์‹œ๋ฌผ์€ ์—ฌ๋Ÿฌ ๋Œ“๊ธ€(Study Comment)๊ณผ ์ข‹์•„์š”(Study Like)๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ.
  • ์ผ๋ฐ˜ ๊ฒŒ์‹œ๋ฌผ ํ…Œ์ด๋ธ”

    • ๋‹ค๋Œ€์ผ ๊ด€๊ณ„: ํ•˜๋‚˜์˜ ๊ฒŒ์‹œ๋ฌผ์€ ์—ฌ๋Ÿฌ ๋Œ“๊ธ€(Comment)๊ณผ ์ข‹์•„์š”(Like)๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ.
  • AI ๋Œ€ํ™” ํ…Œ์ด๋ธ”(Conversation): AI ์™€์˜ ๋Œ€ํ™” ๋‚ด์šฉ. ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ(Prompt)์™€ AI์˜ ๋‹ต๋ณ€(Response)๋ฅผ ์ €์žฅ.

  • ์ฑ„ํŒ… ํ…Œ์ด๋ธ”(Chat): ์ฑ„ํŒ…๋ฐฉ ์ •๋ณด ์ €์žฅ. ๊ฐ ์ฑ„ํŒ…๋ฐฉ์€ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Œ.

๐ŸŽฒ7. Architecture

SchooltalksSystem drawio (1)

  • ํ”„๋ก ํŠธ์—”๋“œ: HTML, CSS, JavaScript, Bootstrap์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, Netlify๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ
  • ๋ฐฑ์—”๋“œ: Python๊ณผ Django๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, Gunicorn WSGI, Nginx ์›น ์„œ๋ฒ„์™€ ํ•จ๊ป˜ Ubuntu ์‹œ์Šคํ…œ์— AWS Lightsail๋กœ ๋ฐฐํฌ

โŒจ8. ๊ธฐ์ˆ ์„ฑ

์Šฌ๋ผ์ด๋“œ29

  • ์šฉ์–ด ์ •๋ฆฌ

  • ๋งˆ์ดํฌ๋กœ์‹ :

    • ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์„ ์ž‘์€ ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๋กœ ๋ถ„ํ•ดํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹
    • ๋ถ„์‚ฐ ์•„ํ‚คํ…์ณ๋กœ ๊ตฌ์„ฑ
    • API ๋˜๋Š” ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ƒํ˜ธํ†ต์‹ 
  • ๋ชจ๋†€๋กœ๊ทธ์‹ :

    • ๋‹จ์ผ ๋ชจ๋“ˆ ๋ฐ ๋‹จ์ผ ์ฝ”๋“œ ๋ฒ ์ด์Šค๋กœ ๊ตฌ์ถ•ํ•˜๋Š” ์ ‘๊ทผ๋ฐฉ์‹
    • ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ํ•˜๋‚˜๋กœ ํ†ตํ•ฉ๋˜์–ด ๊ฐœ๋ฐœ

๐Ÿ’ถ9. ์™€์ด์–ดํ”„๋ ˆ์ž„ / UI

9.1 ์™€์ด์–ดํ”„๋ ˆ์ž„

์Šฌ๋ผ์ด๋“œ1

  • ์นด์นด์˜ค ์˜ค๋ธ์„ ํ†ตํ•œ ์™€์ด์–ดํ”„๋ ˆ์ž„ ์ œ์ž‘
  • ๊ฒŒ์‹œํŒ, ์ฑ—, ๋กœ๊ทธ์ธ ๋“ฑ ๋ฉ”์ธ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฐœ๋žต์  ํ”„๋ ˆ์ž„ ์ž‘์„ฑ
  • ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํ™œ์šฉ (์ถœ์ฒ˜ : GrayGrids)

9.2 ํ™”๋ฉด ์„ค๊ณ„

  • Accounts ์•ฑ
๋ฉ”์ธ ๋กœ๊ทธ์ธ
ํšŒ์›๊ฐ€์ž… ํ”„๋กœํ•„
  • Post ์•ฑ
์ž์œ ๊ฒŒ์‹œํŒ ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ฑ
๊ฒŒ์‹œ๊ธ€ ์ƒ์„ธํŽ˜์ด์ง€ ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •
  • AI Chat ์•ฑ
์‹œ์ž‘ ์งˆ๋ฌธ
  • Study ์•ฑ
์ž…์‹œ ์ •๋ณด ๊ฒŒ์‹œํŒ ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ฑ
๊ฒŒ์‹œ๊ธ€ ์ƒ์„ธํŽ˜์ด์ง€ ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ •
  • Chat ์•ฑ
์ต๋ช…์‹ค์‹œ๊ฐ„์ฑ—
  • QNA ์•ฑ
๋ฌธ์˜

๐Ÿ”10. ๋ฉ”์ธ ๊ธฐ๋Šฅ

๐Ÿ“Œ ๋ฉ”์ธ ํŽ˜์ด์ง€ Main

  • ์„œ๋น„์Šค๋กœ ์ด๋™ํ•˜๋Š” ์•„์ด์ฝ˜์ด ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ”๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ”์™€ ๋ฐฐ๋„ˆ๋ฅผ ์ƒ์„ฑ

ํšŒ์› ๊ด€๋ฆฌ ๊ธฐ๋Šฅ

๐Ÿ“Œ ํšŒ์›๊ฐ€์ž… ํšŒ์›๊ฐ€์ž…

  • ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต์‹œ ์„ฑ๊ณต ๋ฉ”์‹œ์ง€ ์ƒ์„ฑ
  • ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํด๋ฆญ ํ›„ ๋กœ๊ทธ์ธ ํ™”๋ฉด์œผ๋กœ ์ด๋™ ๊ฐ€๋Šฅ

๐Ÿ“Œ ๋กœ๊ทธ์ธ ํšŒ์›๊ฐ€์ž…

  • ๋กœ๊ทธ์ธ ์„ฑ๊ณต์‹œ ์ด์ „ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋จ
  • ์ƒ๋‹จ์— ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์ด ์‚ฌ๋ผ์ง€๊ณ  ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ์ด ์ƒ์„ฑ๋จ

๐Ÿ“Œ ๋กœ๊ทธ์•„์›ƒ ํšŒ์›๊ฐ€์ž…

  • ๋กœ๊ทธ์•„์›ƒ ์„ฑ๊ณต์‹œ ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ์ด ์‚ฌ๋ผ์ง€๊ณ  ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์ด ์ƒ์„ฑ๋จ
  • ๋‹ค์‹œ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ๋กœ๊ทธ์ธ ํ•˜๊ฑฐ๋‚˜ ํšŒ์›๊ฐ€์ž…์„ ํ•  ์ˆ˜ ์žˆ์Œ

๐Ÿ“Œ ํ”„๋กœํ•„ ํšŒ์›๊ฐ€์ž…

  • ํšŒ์› ๊ฐ€์ž…์‹œ ์ž…๋ ฅ ์ •๋ณด๋ฅผ ํ”„๋กœํ•„๋กœ ๋ถˆ๋Ÿฌ์˜ด
  • ํšŒ์› ๊ฐ€์ž…์‹œ ์ด๋ฏธ์ง€ ์ •๋ณด๋„ ๋ถˆ๋Ÿฌ ์˜ค๊ธฐ ๊ฐ€๋Šฅ

์ž์œ ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ

๐Ÿ“Œ ๊ธ€ ์ž‘์„ฑ แ„€แ…ณแ†ฏ แ„Œแ…กแ†จแ„‰แ…ฅแ†ผ

  • ์ž์œ ๊ฒŒ์‹œํŒ์— ์ƒˆ๋กœ์šด ๊ธ€์„ ์ž‘์„ฑ
  • ์ œ๋ชฉ๊ณผ ๋‚ด์šฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์œผ๋ฉฐ, ๋”ฐ๋กœ ์ œํ•œ์—†์ด ์ž์œ ๋กญ๊ฒŒ ๊ธ€์„ ์“ธ ์ˆ˜ ์žˆ์Œ
  • ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž๋งŒ ์ž‘์„ฑ ๊ฐ€๋Šฅ

๐Ÿ“Œ ๊ธ€ ๋ณด๊ธฐ แ„€แ…ณแ†ฏ แ„‡แ…ฉแ„€แ…ต

  • ๊ธ€ ๋ชฉ๋ก์ด ์žˆ์Œ
  • ๊ธ€ ์ œ๋ชฉ์„ ํด๋ฆญํ•˜๋ฉด ์ƒ์„ธ๋ณด๊ธฐ๋กœ ๋“ค์–ด๊ฐ€์ง

๐Ÿ“Œ ๊ธ€ ์ˆ˜์ • แ„€แ…ณแ†ฏ แ„‰แ…ฎแ„Œแ…ฅแ†ผ

  • ์ž์œ ๊ฒŒ์‹œํŒ ๊ธ€์„ ์ˆ˜์ •ํ•จ
  • ๊ธฐ์กด์— ์ž‘์„ฑํ–‡๋˜ ๋‚ด์šฉ์ด ๋ฏธ๋ฆฌ ๋“ค์–ด๊ฐ€์žˆ์Œ
  • ์ž‘์„ฑ์ž๋งŒ ์ˆ˜์ • ๊ฐ€๋Šฅ

๐Ÿ“Œ ๊ธ€ ์‚ญ์ œ แ„€แ…ณแ†ฏ แ„‰แ…กแ†จแ„Œแ…ฆ

  • ์ž์œ ๊ฒŒ์‹œํŒ ๊ธ€์„ ์‚ญ์ œํ•จ
  • ์ž‘์„ฑ์ž๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ

๐Ÿ“Œ ๊ธ€ ๊ฒ€์ƒ‰ แ„€แ…ณแ†ฏ แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ

  • ์ œ๋ชฉ, ๋‚ด์šฉ, ์ œ๋ชฉ+๋‚ด์šฉ, ๊ธ€์“ด์ด ์ •๋ณด๋กœ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•จ

๐Ÿ“Œ ์ข‹์•„์š” แ„€แ…ณแ†ฏ แ„Œแ…ฉแ‡‚แ„‹แ…กแ„‹แ…ญ

  • ํšŒ์ƒ‰์ผ๋–„ ์ข‹์•„์š”์„ ํด๋ฆญํ•˜๋ฉด ๋นจ๊ฐ›๊ฒŒ ํ™œ์„ฑํ™”๋˜๊ณ  ์นด์šดํŠธ๊ฐ€ 1 ์˜ค๋ฆ„
  • ๋นจ๊ฐ„์ƒ‰์ผ๋–„ ์ข‹์•„์š”๋ฅผ ํด๋ฆญํ•˜๋ฉด ํšŒ์ƒ‰์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜๊ณ  ์นด์šดํŠธ๊ฐ€ 1 ๋‚ด๋ ค๊ฐ
  • ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ข‹์•„์š” ์ •๋ณด๊ฐ€ ์žˆ์Œ

๐Ÿ“Œ ๋Œ“๊ธ€ ์ž‘์„ฑ แ„ƒแ…ขแ†บแ„€แ…ณแ†ฏ แ„Œแ…กแ†จแ„‰แ…ฅแ†ผ

  • ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž๋Š” ๊ธ€ ์ƒ์„ธ๋ณด๊ธฐ์—์„œ ์ตœํ•˜๋‹จ์— ๋Œ“๊ธ€ ์ž‘์„ฑ์ด ์žˆ์Œ
  • ๋Œ“๊ธ€๋‚ด์šฉ์„ ์ ๊ณ  ์ž‘์„ฑํ•˜๋ฉด ๋“ฑ๋ก๋จ

๐Ÿ“Œ ๋Œ“๊ธ€ ์ˆ˜์ • แ„ƒแ…ขแ†บแ„€แ…ณแ†ฏ แ„‰แ…ฎแ„Œแ…ฅแ†ผ

  • ๋Œ“๊ธ€ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•จ
  • ๊ธฐ์กด ๋Œ“๊ธ€ ๋‚ด์šฉ์ด ๋ฏธ๋ฆฌ ๋“ค์–ด๊ฐ€์žˆ์Œ
  • ์ž‘์„ฑ์ž๋งŒ ์ˆ˜์ • ๊ฐ€๋Šฅํ•จ.
  • ์ˆ˜์ •์‹œ ํ•œ๋ฒˆ ํ™•์ธ ์•Œ๋žŒ์ด ์žˆ์Œ.

๐Ÿ“Œ ๋Œ“๊ธ€ ์‚ญ์ œ แ„ƒแ…ขแ†บแ„€แ…ณแ†ฏ แ„‰แ…กแ†จแ„Œแ…ฆ

  • ๋Œ“๊ธ€์„ ์‚ญ์ œํ•จ
  • ๋Œ“๊ธ€ ์ž‘์„ฑ์ž๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅํ•จ.

AI ์ฑ„ํŒ… ๊ธฐ๋Šฅ

๐Ÿ“Œ ์ดˆ๊ธฐ ํ™”๋ฉด แ„Žแ…ฉแ„€แ…ต แ„’แ…ชแ„†แ…งแ†ซ

  • AI ์ฑ„ํŒ…์„ ์‹œ์ž‘ํ• ๋•Œ, ์ด์ „ ์ฑ„ํŒ… ๋‚ด์—ญ์ด ์—†๋‹ค๋ฉด ์ฑ„ํŒ… ์˜ˆ์‹œ๋ฅผ ๋ณด์—ฌ์คŒ

๐Ÿ“Œ ์ฑ„ํŒ… แ„Žแ…ขแ„แ…ตแ†ผ

  • ์งˆ๋ฌธ์„ ์ž…๋ ฅํ•˜๊ณ  ๋ณด๋‚ด๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด, AI์˜ ๋งํ’์„ ์ด ์ƒ๊ธฐ๊ณ  ์ž ์‹œํ›„ ๋‹ต๋ณ€์„ ๋ณด์—ฌ์คŒ

๐Ÿ“Œ ์ฑ„ํŒ… ์ €์žฅ แ„Žแ…ขแ„แ…ตแ†ผ แ„Œแ…ฅแ„Œแ…กแ†ผ

  • ์œ ์ €์˜ ์งˆ๋ฌธ๊ณผ AI์˜ ๋‹ต๋ณ€์€ DB์— ์ €์žฅ๋จ
  • ๋‹ค๋ฅธ ํ™”๋ฉด์—์„œ AI ์ฑ„ํŒ…๋ฐฉ์œผ๋กœ ๋‹ค์‹œ ์™”์„๋•Œ ์ด์ „ ์ฑ„ํŒ… ๋‚ด์—ญ์„ ๋ณด์—ฌ์คŒ

๐Ÿ“Œ ์ฑ„ํŒ… ์‚ญ์ œ แ„Žแ…ขแ„แ…ตแ†ผ แ„‰แ…กแ†จแ„Œแ…ฆ

  • ์‚ญ์ œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ด์ „ ์ฑ„ํŒ… ๋‚ด์—ญ์ด ๋ชจ๋‘ ์‚ญ์ œ๋˜๊ณ  ์ƒˆ๋กœ์šด ์ฑ„ํŒ…์„ ์‹œ์ž‘ํ•จ

์ž…์‹œ์ •๋ณด๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ

๐Ÿ“Œ ๊ฒŒ์‹œํŒ ๋ฆฌ์ŠคํŠธ ๊ฒ€์ƒ‰ ๋ฐ ํŽ˜์ด์ง€๋„ค์ด์…˜

1

  • ๋ฉ”๋ชจ์ง€ํ˜•์‹์˜ ๊ฒŒ์‹œํŒ ๊ตฌํ˜„
  • ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ด์ „ ๋‹ค์Œ ๋ฒ„ํŠผ์œผ๋กœ ๊ตฌํ˜„
  • ๋ฆฌ์ŠคํŠธ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ์ œ๋ชฉ, ์ž‘์„ฑ์ž, ๋‚ด์šฉ์— ๋”ฐ๋ผ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ
  • ํ•ต์‹ฌ ์ฃผ์š” ์ •๋ณด ๊ฒŒ์‹œํŒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ์ธ์„ ํ•ด์•ผ CRUD ๊ฐ€๋Šฅ
  • ๊ธฐ์กด์— ์ž‘์„ฑํ•œ ๋‚ด์šฉ์„ ๋ฏธ๋ฆฌ ๋ณผ ์ˆ˜ ์žˆ์Œ
  • ๋”๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ƒ์„ธ ๊ธ€๋กœ ๋“ค์–ด๊ฐ

๐Ÿ“Œ ๊ฒŒ์‹œ๊ธ€ CRUD

2

  • ๊ฒŒ์‹œ๊ธ€์—๋Š” ์ž‘์„ฑ์ž, ์ž‘์„ฑ์ผ, ์กฐํšŒ์ˆ˜, ์ข‹์•„์š”, ๋‚ด์šฉ, ์ด๋ฏธ์ง€, ์ฒจ๋ถ€ํŒŒ์ผ์ด ํฌํ•จ๋จ
  • ๊ฒŒ์‹œ๊ธ€์€ ์ž‘์„ฑ์ž๋งŒ ์ˆ˜์ •, ์‚ญ์ œ ๊ฐ€๋Šฅ
  • ํ•ด๋‹น ํŽ˜์ด์ง€์— ์ ‘์† ์‹œ +1๋กœ View๊ฐ€ ์˜ฌ๋ผ๊ฐ

๐Ÿ“Œ ์ข‹์•„์š” ๋ฐ ๋Œ“๊ธ€ CRUD 3

  • ์ข‹์•„์š” ๊ธฐ๋Šฅ ๊ตฌํ˜„

    • ํšŒ์ƒ‰์ผ๋•Œ ์ข‹์•„์š”์„ ํด๋ฆญํ•˜๋ฉด ๋นจ๊ฐ›๊ฒŒ ํ™œ์„ฑํ™”๋˜๊ณ  ์นด์šดํŠธ๊ฐ€ 1 ์˜ค๋ฆ„
    • ๋นจ๊ฐ„์ƒ‰์ผ๋•Œ ์ข‹์•„์š”๋ฅผ ํด๋ฆญํ•˜๋ฉด ํšŒ์ƒ‰์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜๊ณ  ์นด์šดํŠธ๊ฐ€ 1 ๋‚ด๋ ค๊ฐ
    • ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ข‹์•„์š” ์ •๋ณด๊ฐ€ ์žˆ์Œ
  • ๋Œ“๊ธ€ CRUD ๊ฐ€๋Šฅ

    • ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž๋Š” ๊ธ€ ์ƒ์„ธ๋ณด๊ธฐ์—์„œ ์ตœํ•˜๋‹จ์— ๋Œ“๊ธ€ ์ž‘์„ฑ์ด ์žˆ์Œ
    • ๋Œ“๊ธ€ ๋‚ด์šฉ์„ ์ž‘์„ฑ ์ˆ˜์ •, ์‚ญ์ œ ๊ฐ€๋Šฅ
    • ์ž‘์„ฑ์ž๋งŒ ์ˆ˜์ • ์‚ญ์ œ ๊ฐ€๋Šฅํ•จ.
  • ๋กœ๊ทธ์ธ ๋ฐ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ CRUD ๊ฐ€๋Šฅ

๐Ÿ”Ž11. ์ถ”๊ฐ€๊ธฐ๋Šฅ

๋ฌธ์˜ ๊ธฐ๋Šฅ

๐Ÿ“Œ Q&A QNA

  • ์ž์ฃผ ์ฐพ๋Š” ์งˆ๋ฌธ์€ ๋ฐฐ๋„ˆ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฒŒ์‹œํ•จ
  • ๋ฉ”์ผ, ์นดํ…Œ๊ณ ๋ฆฌ, ๋ฌธ์˜๋‚ด์šฉ์„ ํ†ตํ•ด ๋ฌธ์˜ํ•  ์ˆ˜ ์žˆ์Œ

์‹ค์‹œ๊ฐ„ ์ต๋ช… ์ฑ„ํŒ… ๊ธฐ๋Šฅ

๐Ÿ“Œ ์ต๋ช… ์ฑ„ํŒ…๋ฐฉ Chat

  • ์ต๋ช…์œผ๋กœ ์ฑ„ํŒ…์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Œ
  • ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์•„๋„ ์ฑ„ํŒ…์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์Œ
  • ํ•˜๋‹จ์—๋Š” ์ฟ ํŒกํŒŒํŠธ๋„ˆ์Šค ๊ด‘๊ณ ๋ฅผ ๋„ฃ์–ด ์‹ค์ œ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๋น„์Šทํ•˜๊ฒŒ ์ˆ˜์ต์„ฑ๋„ ๊ณ ๋ ค ํ•ด ๋ณด์•˜์Œ.

๐Ÿ› 12. ์—๋Ÿฌ์™€ ์—๋Ÿฌ ํ•ด๊ฒฐ

๊น€์ •์›

โš™ ์—๋Ÿฌ๋ช… : 403 Forbidden

  • ๋ฌธ์ œ์  : ์›น ์„œ๋ฒ„(Nginx)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ 403 Forbidden ์˜ค๋ฅ˜ ๋ฐœ์ƒ.

  • ๋ฌธ์ œ ์›์ธ : Nginx ์„œ๋ฒ„๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ www-data ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋˜์–ด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŒŒ์ผ์— ์ ‘๊ทผํ•  ๋•Œ ๊ถŒํ•œ ๋ถ€์กฑ์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜.

  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• :

Nginx์˜ ์‹คํ–‰ ์‚ฌ์šฉ์ž ๋ณ€๊ฒฝ

/etc/nginx/nginx.conf ํŒŒ์ผ์„ ์—ด์–ด์„œ Nginx์˜ ์‹คํ–‰ ์‚ฌ์šฉ์ž๋ฅผ ubuntu๋กœ ๋ณ€๊ฒฝ.
user ubuntu;

๊ถŒํ•œ ๋ณ€๊ฒฝ

/media ๋””๋ ‰ํ† ๋ฆฌ์˜ ์†Œ์œ ์ž์™€ ๊ทธ๋ฃน์„ ubuntu๋กœ ๋ณ€๊ฒฝ.
sudo chown -R ubuntu:ubuntu /media
cat /etc/nginx/nginx.conf | grep user

Nginx ๊ตฌ์„ฑ ํŒŒ์ผ ํ…Œ์ŠคํŠธ
๋ณ€๊ฒฝ๋œ ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌ.
sudo nginx -t

Nginx ์žฌ์‹œ์ž‘
๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋˜๋„๋ก Nginx ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘.
sudo systemctl restart nginx

๊ธฐํƒ€ ์ •๋ณด
sudo systemctl status nginx ๋ช…๋ น์œผ๋กœ Nginx ์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธ.

โš™ ์—๋Ÿฌ๋ช… : 404 ์—๋Ÿฌ Not Found

  • ๋ฌธ์ œ ์›์ธ : ๊ต์•ˆ์— ๋”ฐ๋ผ location / ์œ„์น˜ ์„ค์ •์„ ํ•˜์˜€์ง€๋งŒ, ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์™€ url ์ฃผ์†Œ๊ฐ€ ๋งž์ง€ ์•Š์•„์„œ ๊ทธ๋ƒฅ location ๋ถ€๋ถ„์„ '/'๋กœ ๋น„์›Œ๋‘  proxy๊ฐ€ url ์œ„์น˜๋ฅผ ์ฐพ์ง€ ๋ชปํ•ด์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ

  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• : nginx์˜ default ๊ฐ’์ด ์ž˜๋ชป ์„ค์ •๋˜์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•˜์—ฌ ํ•ด๊ฒฐ

        location / {
        include proxy_params;
        proxy_pass http://unix:/tmp/gunicorn.sock;
       }

โš™ ์—๋Ÿฌ๋ช… : 400์—๋Ÿฌ Bad Request

  • ๋ฌธ์ œ: ๋ฐฐํฌ ์ดํ›„ ํŽ˜์ด์ง€๋Š” ์ฐพ์ง€๋งŒ, ๋ณด์•ˆ ๊ด€๋ จ์„ค์ •์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์•„์„œ ๋œจ๋Š” ์˜ค๋ฅ˜

  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

  • ALLOWED_HOST๋ฅผ ์ž„์˜๋กœ ๋น„์›Œ๋‘ฌ์„œ ๋ฐœ์ƒํ–ˆ๋˜ ์˜ค๋ฅ˜

  • DEBUG = False๋กœ ๋ณด์•ˆ์ƒ ๋‘๊ธฐ

โš™ ์—๋Ÿฌ๋ช… : 500์—๋Ÿฌ Internal Server Error

  • ๋ฌธ์ œ: ๋ฐฐํฌ ์ดํ›„ ์•ฑ ๋ช‡ ๊ฐœ์—์„œ 500์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ

image

image

  • ๋ฌธ์ œ ์›์ธ

  • ls -a๋กœ ํด๋” ๊ถŒํ•œ์„ ํ™•์ธํ•˜๋˜ ์ค‘ ์ •์ƒ ์ž‘๋™๋˜๋˜ ์•ฑ์€ migration์ด ์žˆ๋Š”๋ฐ ์˜ค๋ฅ˜๊ฐ€ ๋œจ๋Š” ์•ฑ์€ migration์ด ์—†์—ˆ์Œ

  • migrations์ด ์•ˆ๋˜์—ˆ๋˜ ์ƒํ™ฉ gitignore์— migration์„ ์ถ”๊ฐ€ํ•ด์„œ ์ดํ›„์— ์ถ”๊ฐ€ ๋œ ์•ฑ๋“ค์ด migration์ด ์—†๋Š” ์ฒด๋กœ ๋ฐฐํฌ๊ฐ€๋จ

  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

image

  • mgirations ํด๋”๋ฅผ ๋‹ค์‹œ ์˜ฌ๋ฆฌ๊ณ  makemigrations ๋ฐ migrate
  • 500 ์—๋Ÿฌ๋Š” migrate๊ฐ€ ์•ˆ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ
  • ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด์„  git์— miration ํด๋” ๋ฐ init ๋„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•จ

โš™ ์—๋Ÿฌ๋ช… : NameError

  • ๋ฌธ์ œ:
NameError: name 'Post' is not defined SystemCheckError: System check identified some issues: ERRORS: post.Comment.author: (fields.E304) Reverse accessor 'User.comments' for 'post.Comment.author' clashes with reverse accessor for 'study.StudyComment.author'. HINT: Add or change a related_name argument to the definition for 'post.Comment.author' or 'study.StudyComment.author'. post.Comment.author: (fields.E305) Reverse query name for 'post.Comment.author' clashes with reverse query name for 'study.StudyComment.author'. HINT: Add or change a related_name argument to the definition for 'post.Comment.author' or 'study.StudyComment.author'. study.StudyComment.author: (fields.E304) Reverse accessor 'User.comments' for 'study.StudyComment.author' clashes with reverse accessor for 'post.Comment.author'. HINT: Add or change a related_name argument to the definition for 'study.StudyComment.author' or 'post.Comment.author'. study.StudyComment.author: (fields.E305) Reverse query name for 'study.StudyComment.author' clashes with reverse query name for 'post.Comment.author'. HINT: Add or change a related_name argument to the definition for 'study.StudyComment.author' or 'post.Comment.author'.
  • ๋ฌธ์ œ ์›์ธ:

    • Django ๋ชจ๋ธ์—์„œ ์—ญ ๊ด€๊ณ„(accessor)์™€ ์—ญ ์งˆ์˜(reverse query) ์ด๋ฆ„์ด ์ถฉ๋Œํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ
    • study ๊ฒŒ์‹œํŒ๊ณผ post ๊ฒŒ์‹œํŒ์ด ํ•ฉ์ณ์ง€๋ฉด์„œ ๋น„์Šทํ•œ ์ด๋ฆ„๋ผ๋ฆฌ ์ถฉ๋Œํ•˜์—ฌ ์ƒ๊ธด๋ฌธ์ œ
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

๊ฐ ๋ชจ๋ธ์˜ ์—ญ ๊ด€๊ณ„ ์ด๋ฆ„์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ์ถฉ๋Œ์„ ํ•ด๊ฒฐ๊ฐ€๋Šฅ. related_name ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๋ชจ๋ธ์˜ ๊ด€๊ณ„ ์ด๋ฆ„์„ ๊ณ ์œ ํ•˜๊ฒŒ ์ง€์ •

  • ์˜ˆ์ œ:
python Copy code class Comment(models.Model): author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='post_comments') # ๋‹ค๋ฅธ ํ•„๋“œ๋“ค...

class StudyComment(models.Model): author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='study_comments') # ๋‹ค๋ฅธ ํ•„๋“œ๋“ค... ๋ณ€๊ฒฝ ํ›„:

์œ„์™€ ๊ฐ™์ด related_name์„ ์„ค์ •ํ•œ ํ›„, makemigrations ๋ฐ migrate ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธ -> ์—ญ ๊ด€๊ณ„ ์ด๋ฆ„ ์ถฉ๋Œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ

๊น€์ฐฌ์–‘

โš™ ์—๋Ÿฌ๋ช… : NOT NULL constraint failed

  • ๋ฌธ์ œ:
django.db.utils.IntegrityError: NOT NULL constraint failed: accounts_user.grade
  • ๋ฌธ์ œ ์›์ธ:

    • accounts์˜ ์ปค์Šคํ…€ ์‚ฌ์šฉ์ž ์•ฑ์—์„œ ํ•™๋…„์— ์ž‘์€ ์–‘์ˆ˜๋งŒ ์ €์žฅ์‹œํ‚ค๊ธฐ ์œ„ํ•ด PositiveSmallIntegerField๋กœ ์ž‘์„ฑํ•œ๊ฒƒ์ด ๋ฌธ์ œ
    • ํ•ด๋‹น ํ•„๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ null๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๊ฒƒ์œผ๋กœ ๋ณด์ž„
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

    • ์ฒ˜์Œ์—” ๊ธฐ๋ณธ๊ฐ’์„ ์ฃผ๋ ค๊ณ  ํ–ˆ๋‹ค๊ฐ€, REQUIRED_FIELDS๋ฅผ ์‚ฌ์šฉํ•ด ์ž…๋ ฅ๋ฐ›๋„๋ก ํ•จ
    • ๊ธฐ๋ณธ๊ฐ’์„ ์ฃผ๊ธฐ or null์„ ํ—ˆ์šฉ or REQUIRED_FIELDS๋ฅผ ์‚ฌ์šฉํ•ด ์ง€์ •ํ•ด์•ผํ•จ
  • ์˜ˆ์ œ:

grade = models.PositiveSmallIntegerField(verbose_name="ํ•™๋…„", null=True)

or

grade = models.PositiveSmallIntegerField(verbose_name="ํ•™๋…„", default=1)

or

REQUIRED_FIELDS = [grade]

์œ„์™€ ๊ฐ™์ด null = True๋ฅผ ํ•ด๋„ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๊ธฐ์— ์ถ”๊ฐ€ํ•˜์—ฌ ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐ

๊น€๋™ํ›„

โš™ ์—๋Ÿฌ๋ช… : OPEN AI Version Issue

  • ๋ฌธ์ œ:
You can run 'openai migrate' to automatically upgrade your codebase to use the 1.0.0 interface.

Alternatively, you can pin your installation to the old version, e.g. `pip install openai==0.28`
  • ๋ฌธ์ œ ์›์ธ:

    • Openai Api๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ธ๊ณต์ง€๋Šฅ ๋‹ต๋ณ€์„ ๋ฐ›์•„์˜ค๊ธฐ์œ„ํ•œ views.py์˜ ์ฝ”๋“œ๊ฐ€ openai ๋ฒ„์ „์— ๋งž์ง€ ์•Š์Œ
    • Openai ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฒ„์ „์ด 1.~ ๋ฒ„์ „์œผ๋กœ ๋ณ€๊ฒฝ๋จ์— ๋”ฐ๋ผ์„œ ์ธ๊ณต์ง€๋Šฅ ๋ชจ๋ธ์„ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋จ
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

    • Openai ๋ฒ„์ „์„ ๊ฐ•์ œ๋กœ ๋‚ฎ์ถฐ์„œ ์“ฐ๊ฑฐ๋‚˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•ด์•ผ ํ•จ
  • ๋ฌธ์ œ ์›์ธ:

    • Openai ๋ฒ„์ „์„ 0.27๋กœ ๋‚ฎ์ถ”์–ด์„œ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜ pip ๋ฒ„์ „์— ๋”ฐ๋ผ์„œ 0.27์ด ์„ค์น˜๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์ถ”๊ฐ€๋กœ ๋ฐœ์ƒ
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

    • openai migrate๋ฅผ ํ†ตํ•ด์„œ ๋ชจ๋ธ์„ ์ƒ์„ฑ ํ›„, OPEN-AI-KEY ๊ฐ€์ ธ์˜ค๋Š” ์ฝ”๋“œ๋ฅผ ์ตœ๋Œ€ํ•œ ์ตœ์‹  ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋„๋ก ์ˆ˜์ •

๐Ÿ‘ฆ13. ๊ฐœ๋ฐœํ•˜๋ฉฐ ์•Œ๊ฒŒ ๋œ ์  ๋ฐ ๋А๋‚€์ 

๊น€์ •์›

  • ๊ฐ€์žฅ ์‹ค๋ฌด์™€ ๊ฐ€๊นŒ์šด ํ˜‘์—… ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋Š” ๊ฑด ์ฒ˜์Œ์ด๊ณ , ํŠนํžˆ ์ปจ๋ฒค์…˜ ๋งž์ถ”๋Š” ๋ถ€๋ถ„์ด ์–ด์ƒ‰ํ•˜๊ณ  ์–ด๋ ค์› ์ง€๋งŒ, ๊ฐ™์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์ด ์žฌ๋ฏธ๊ฐ€ ์žˆ์—ˆ์Œ.
  • ๋˜ํ•œ ํ˜‘์—…์„ ํ•  ๋•Œ ๊นƒ ํ™˜๊ฒฝ์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜๋Š”์ง€ ๋ฐฐ์šฐ๋ฉด์„œ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋„์›€์ด ๋˜์—ˆ๋˜ ํ”„๋กœ์ ํŠธ์ž„.
  • ์•„์ง ๋ถ€์กฑํ•œ ์ ์€ ๋งŽ์ง€๋งŒ ์ง€๋‚œ DRF ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์— ๋น„ํ•ด ํ”„๋ก ํŠธ์„œ๋ฒ„๋ž‘ ํ†ต์‹ ์—์„œ ์˜ค๋ฅ˜์žก๋Š” ์‹œ๊ฐ„์ด ๋‹จ์ถ•๋˜์—ˆ๊ณ , ๋˜ํ•œ CI/CD ๊ตฌ์ถ•๊ณผ ์„œ๋ฒ„ ๋ฐฐํฌ ํ›„ ์˜ค๋ฅ˜๋ฅผ ์žก๋Š” ๊ณผ์ •์—์„œ ๋”์šฑ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์—ˆ์Œ.

๊น€์ฐฝ์ˆ˜

  • ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํŒ€ ํ”„๋กœ์ ํŠธ๋Š” ์„œ๋กœ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ๋งŽ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฑธ ๋А๋‚„ ์ˆ˜ ์žˆ์—ˆ์Œ.
  • ๋ถ€์กฑํ•˜์—ฌ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๋ถ€๋ถ„๋“ค์„ ๊ณ„์† ์ž‘์—…์„ ํ•˜๋ฉด์„œ ์กฐ๊ธˆ ๋” ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ํ˜‘์—…ํ•˜๋Š”๋ฐ Git์ด ๋งŽ์€ ๋„์›€์ด ๋œ๋‹ค๋Š”๊ฑธ ๋А๊ปด ์•ž์œผ๋กœ ๋” ๋‹ค์–‘ํ•˜๊ฒŒ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณต๋ถ€ํ•  ์˜ˆ์ •.
  • ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํŒ€ ํ”„๋กœ์ ํŠธ์—ฌ์„œ ํŒ€์›๋“ค์—๊ฒŒ ๋งŽ์€ ๋„์›€์„ ๋ฐ›์•„ ํ˜ผ์ž ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๋ถ€๋ถ„๋“ค์„ ํ•ด๋‚ผ ์ˆ˜ ์žˆ์—ˆ๊ณ  ๋งŽ์€ ๊ณต๋ถ€๊ฐ€ ๋˜์—ˆ์Œ.

๊น€์ฐฌ์–‘

  • ์ฒซ chatGPT DRF ํ”„๋กœ์ ํŠธ์—์„œ ํ† ํฐ์— ๊ณผํ•˜๊ฒŒ ์‹œ๊ฐ„์„ ํˆฌ์žํ•ด์„œ ์•„์‰ฌ์› ๋˜ ์ ์ด ๋งŽ์•—๋Š”๋ฐ, ์ด๋ฒˆ์—๋Š” ์—ฌ๋Ÿฟ์ด์„œ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜์–ด ์‹œ๊ฐ„์ด ๋„‰๋„‰ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋ฆ„ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋˜์—ˆ์Œ.
  • ์žฅ๊ณ ์—์„œ ๊ฝค ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ดค๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๊ทธ๊ฒƒ๋ณด๋‹ค ๋” ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํŽธ์˜ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์— ๋งค์šฐ ๋†€๋ž์Œ.
  • ํ˜‘์—…์— ๋Œ€ํ•ด ํŒ€์›์— ๋Œ€ํ•œ ์ฐธ์—ฌ์œจ์ด๋‚˜ ์ปจ๋ฒค์…˜ ๋“ฑ ๊ฑฑ์ •์ด ๊ฝค ๋งŽ์•˜๋Š”๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ˜๋Ÿฌ๊ฐ€ ์ข‹์€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋‚ธ ๊ฒƒ ๊ฐ™์Œ
  • ์ฝ”๋“œ๋ฅผ ์งœ๋‹ค๋ณด๋‹ˆ ์š•์‹ฌ์ด ์ ์  ์ƒ๊ฒจ์„œ ์ฐจ๊ทผ์ฐจ๊ทผ ์ด๊ฒƒ์ €๊ฒƒ ํ…Œ์ŠคํŠธํ•ด ๋ณด๋ฉด์„œ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๊ธฐ๋Šฅ ๋“ฑ์„ ์ดํ›„์— ๋” ๊ฐœ๋ฐœํ•ด๋ณผ ์ƒ๊ฐ.

ํ™ฉ์ง„๊ฒฝ

  • 1:1 ์ฑ„ํŒ… ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด ์žˆ์–ด ํ”„๋กœ์ ํŠธ ์‹œ์ž‘๊ณผ ๋™์‹œ์— ์ฑ„ํŒ…์„ ๋งก์•„ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฒซ DRF ํ”„๋กœ์ ํŠธ์˜€๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋งŽ์•„ ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ ๋‚ด ์™„์ˆ˜ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํŒ๋‹จ๋˜์–ด ํฌ๊ธฐํ•œ ๊ฒƒ์ด ๋„ˆ๋ฌด ์•„์‰ฌ์› ์Œ. ๋ถ€์กฑํ•œ ์ ์ด ๋งŽ์œผ๋‹ˆ ๋…ธ๋ ฅํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•จ.
  • ๋งก์€ ์ž„๋ฌด๋ฅผ ์™„๋ฒฝํžˆ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•ด ๋Œ€๋ถ€๋ถ„ ์„œ๋ธŒ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰. ๊ทธ๋Ÿฌ๋‚˜ ์˜†์—์„œ ํŒ€์›๋“ค์ด ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์ด๋‚˜ ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •์„ ๋ณด๋ฉฐ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ์‹ค์ œ ์„œ๋น„์Šค๊ฐ€ ์šด์šฉ์ด ๋˜๋‹ˆ ์‹ ๊ธฐ ํ•จ.
  • ํ˜‘์—…์„ ์ง„ํ–‰ํ•˜์—ฌ Git์„ ๋” ์ˆ™๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด์—ˆ์Œ.

๊น€๋™ํ›„

  • Git์„ ์‹ค๋ฌด์™€ ๋น„์Šทํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•์„ ์ตํžˆ๊ณ  ์ด๋ฅผ ํ†ตํ•ด์„œ ๋ฐฐ์›€์ด ๋Š˜์–ด๊ฐ€๋Š” ๊ฒƒ์ด ๋ˆˆ์— ๋šœ๋ ทํ•˜๊ฒŒ ๋ณด์—ฌ์„œ ๋ฟŒ๋“ฏํ–ˆ๊ณ , ์ฒ˜์Œ ํ•˜๋Š” ํŒ€ ํ”„๋กœ์ ํŠธ์ด๋‹ค ๋ณด๋‹ˆ๊นŒ ๋งŽ์ด ๋ฏธ์ˆ™ํ•˜๊ณ  ๋ถ€์กฑํ•œ ๋ถ€๋ถ„๋„ ์žˆ์—ˆ์ง€๋งŒ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ณด๋‹ˆ ๋งŒ์กฑ์Šค๋Ÿฌ์›€
  • Django์— ์กฐ๊ธˆ ๋” ์ต์ˆ™ํ•ด์ง€๊ณ  ํŠนํžˆ ๋‹ด๋‹นํ•œ Open ai API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์ด๋‚˜ ์ฑ„ํŒ… ๊ด€๋ จ ๋ถ€๋ถ„์—์„œ ๋งŽ์€ ๊ณต๋ถ€๊ฐ€ ๋˜์–ด์„œ ๋‹จ์ˆœํžˆ ๊ฒฐ๊ณผ๋ฌผ์„ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ์„ฑ์žฅํ•˜๋Š” ๊ฒฝํ—˜์ด ๋œ๊ฑฐ๊ฐ™์•„ ์•„์ฃผ ์˜๋ฏธ ์žˆ๋Š” ์‹œ๊ฐ„์ด์—ˆ์Œ.

๐ŸŽž14. ๋งˆ๋ฌด๋ฆฌ ๋ฐ ์‹œ์—ฐ ์˜์ƒ

School.Talks.FINAL.mp4

๐Ÿงฑ15. ์ฐธ๊ณ  ์‚ฌํ•ญ(๋กœ์ปฌํ™˜๊ฒฝ ์‹ค์Šต)

  • ๊นƒํด๋”๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ›„ ์•„๋ž˜์™€ ๊ฐ™์ด ์‹คํ–‰
python -m venv venv

Window: venv/Scripts/activate
Mac, Linux: source venv/bin/activate

.env ํŒŒ์ผ ์ƒ์„ฑ

SECRET_KEY=YOUR_KEY
DEBUG=True
OPENAI_API_KEY=YOUR_KEY
REDIS_HOST=YOUR_HOST
REDIS_PORT=YOUR_PORT
REDIS_PASSWORD=YOUR_PWD
  • ํ…Œ์ŠคํŠธ์šฉ ๋”๋ฏธ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ถ”๊ฐ€
  • faker ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ, ๋žœ๋คํ•œ ๊ฐ€์ƒ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€์„œ ๋ณด๋‹ค ๋‹ค์–‘ํ•œ ๊ฒฝ์šฐ์˜์ˆ˜์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ์šฉ์ด
  • ํ˜„์žฌ ๊ฐ€์ƒ ์‚ฌ์šฉ์ž(๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ํ•ด์‹ฑ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ์ด๋ฏ€๋กœ ๋ณ€๊ฒฝ ํ•„์š”)์™€ ๊ฐ€์ƒ ์ž์œ ๊ฒŒ์‹œํŒ ๊ธ€์ด ๊ธฐ๋Šฅ์ค‘์— ์žˆ์Œ
  1. ๊ฐ€์ƒ ์œ ์ € ์ƒ์„ฑ๋ฐฉ๋ฒ•
    • ๊ธฐ๋ณธ๊ฐ’์€ 2๋ช… ์ƒ์„ฑ์ด๊ณ , ๋’ค์— --total (์ƒ์„ฑํ•  ๊ฐฏ์ˆ˜)๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๊ทธ๋งŒํผ ์ƒ์„ฑ
python manage.py seed-users
  1. ๊ฐ€์ƒ ์ž์œ ๊ฒŒ์‹œํŒ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ๋ฐฉ๋ฒ•
    • ์ด๊ฒƒ ์—ญ์‹œ ๊ธฐ๋ณธ๊ฐ’์€ 2๋ช… ์ƒ์„ฑ์ด๊ณ , ๋’ค์— --total (์ƒ์„ฑํ•  ๊ฐฏ์ˆ˜)๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๊ทธ๋งŒํผ ์ƒ์„ฑ
    • ์‚ฌ์šฉ์ž๋Š” ํ˜„์žฌ ๊ฐ€์ž…๋œ ์‚ฌ์šฉ์ž์ค‘ ํ•œ๋ช…์ด ๋žœ๋คํ•˜๊ฒŒ ์„ ํƒ๋˜์–ด ๋“ค์–ด ๊ฐ
python manage.py fake-post

๐Ÿ“16. ๊ธฐํƒ€

๐Ÿ– School Talks ๊นƒ์ด๋ชจ์ง€ ์ปจ๋ฒค์…˜

๐Ÿ–‹ School Talks ๊นƒ๋ธŒ๋žœ์น˜ ์ปจ๋ฒค์…˜

๐Ÿ–Š School Talks ํ”„๋ ˆ์  ํ…Œ์ด์…˜

๐Ÿ“Œ School Talks ์ฝ”๋“œ ์Šคํ„ฐ๋”” ๋งจ ์œ„๋กœ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages