๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Django_Web

Django - PythonAnywhere ๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค ์‹œ์ž‘ํ•˜๊ธฐ

by ๋„์บ๋ฆฌ๐Ÿฑ 2021. 6. 2.
๋ฐ˜์‘ํ˜•

โŒ˜ ์ฐธ๊ณ  : Mac๊ธฐ์ค€์œผ๋กœ ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค.

 

โŒ˜ Django๋ž€?

์›น ํ”„๋ ˆ์ž„์›Œํฌ(์˜คํ”ˆ์†Œ์Šค)

 

โŒ˜ Django ์‹œ์ž‘ํ•˜๊ธฐ

(๊ธฐ๋ณธ์ ์œผ๋กœ) Python์— ๋Œ€ํ•ด ์–ด๋Š์ •๋„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

cli๋ฅผ ์ผ ๋‹ค. (๋งฅ์œผ๋กœ์ฌ ํ„ฐ๋ฏธ๋„, ์œˆ๋„์šฐ ํŒŒ์›Œ์‰˜)

 

ํŒŒ์ด์ฌ์œผ๋กœ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ๋งŒ๋“ ๋‹ค. (๊ฐ€์ƒํ™˜๊ฒฝ์—๋‹ค๊ฐ€ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•จ.)

๊ฐ€์ƒํ™˜๊ฒฝ์„ ์‹คํ–‰ ์‹œํ‚จ๋‹ค.

๊ฐ€์ƒํ™˜๊ฒฝ์˜ ํ™˜๊ฒฝ์„ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ๋‹ค.

๊ฐ€์ƒํ™˜๊ฒฝ์— Django๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

 

์„ค์น˜ ํ›„, django-admin์„ ํ†ตํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

~=1.11.0 ์—†์ด ํ•˜๋ฉด ์ตœ์‹  ๋ฒ„์ „์˜ ์žฅ๊ณ ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. (์ถ”์ฒœ)

CLI ํ™˜๊ฒฝ์—์„œ ์œ„์™€ ๊ฐ™์ด ๋๋‚˜๋ฉด, 

์ž์‹ ์ด ์“ฐ๋Š” ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ๋กœ ํ•ด๋‹น ํด๋”๋ฅผ ์—ฝ๋‹ˆ๋‹ค. (์ €๋Š” VSCode)

๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํด๋” ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ๊ณ  ๊ธฐ๋ณธ์ ์ธ ํด๋” ๊ตฌ์กฐ๋ผ๊ณ  ๋ณด๋ฉด๋œ๋‹ค.

 

โŒ˜ Django DB์ƒ์„ฑ/ App ์ƒ์„ฑ

์œ„์™€ ๊ฐ™์ด 'blog'๋ผ๋Š” ์•ฑ์„ ์ƒ์„ฑ ํ›„, settings.py ์—์„œ๋„ ์•ฑ์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

settings.py ์ˆ˜์ •ํ•œ ๋ถ€๋ถ„

[๐ŸŒŸ ์ค‘์š”] 

| ์žฅ๊ณ ์—์„œ๋Š” SQL์„ ํ†ตํ•˜์ง€ ์•Š๊ณ , ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋‹ค.

| ์ƒ์„ฑ๋œ manage.py ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,

| migrate ๋ผ๋Š” argument๋ฅผ ์ง‘์–ด ๋„ฃ์œผ๋ฉด ํ•ด๋‹น ๋˜๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ƒ์„ฑ์ด ๋œ๋‹ค.

| (์›น ์‚ฌ์ดํŠธ ๊ตฌ์ถ•์‹œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋Š” ๋Š˜ ํ™•์žฅ์ด ๋˜์–ด์ง€๋Š”๋ฐ, ๊ทธ ๋•Œ๋งˆ๋‹ค migrate๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.)

 

 

 

โŒ˜ Django ์„œ๋ฒ„ ์‹คํ–‰

python manage.py runserver ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ ์‹œํ‚จ๋‹ค.

๋ธŒ๋ผ์šฐ์ €, 127.0.0.1:8000

 

โŒ˜ ๊นƒํ—ˆ๋ธŒ ์—ฐ๋™

pythonanywhere ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊นƒํ—ˆ๋ธŒ์— ์˜ฌ๋ ค ๋‘์–ด์•ผ ํ•œ๋‹ค.

(pythonanywhere์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ. - 127.0.0.1:8000์€ ๋‚ด ์ปดํ“จํ„ฐ ์—์„œ๋งŒ.

๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค๋Š” ์–ด๋””์—์„œ๋„ ํ•ด๋‹น ์ฃผ์†Œ๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

 

๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ์˜ฌ๋ ค ๋‘๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊นƒ ํ—ˆ๋ธŒ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํ™•์ธ

โŒ˜ PythonAnywhere ์„œ๋น„์Šค ์‹œ์ž‘ํ•˜๊ธฐ (๐ŸŽ‰ ๋“œ๋””์–ด ๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค์˜ ์‹œ์ž‘!)

pythonanywhere : ๋„๋ฉ”์ธ ์„œ๋น„์Šค์™€, ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค(IDC)๋ฅผ ๋™์‹œ์— ํ•ด์ค€๋‹ค.

โ‡ฃ๋งํฌ

https://www.pythonanywhere.com/

[์ฐธ๊ณ ] ๊ฐ€์ž…์‹œ์—, ๋ฌด๋ฃŒ ๊ณ„์ •์„ ์„ ํƒํ•˜์„ธ์š” / ์ด๋ฉ”์ผ ์ปจํŽŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

Dashboard

์ฝ˜์†”: ๊ฐ€์ƒ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. (๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜์ด๋‹ค.)

์ด ๊ฐ€์ƒ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค์–ด์„œ ์„œ๋น„์Šค๋ฅผ ์ด ์‹œ์Šคํ…œ์— ํด๋ก  ๋ฐ›์•„์„œ ์‹คํ–‰ ํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

๊ฐ€์ƒ์˜ ์ปดํ“จํ„ฐ๋ผ๊ณ  ๋ณด๋ฉด ๋˜๋Š” ๊ฐœ๋…์œผ๋กœ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๊ฐ™๋‹ค. 

(์‹ค์ˆ˜์‹œ์— ์ฝ˜์†” ์ž์ฒด๋ฅผ ์ง€์šฐ๋ฉด ๋จ. ์˜ค์˜ˆ! ๐Ÿ˜Š)

 

Web

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„.( ํ™˜๊ฒฝ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค.)

Django๊ฐ€ ์•„๋‹ˆ๋ผ manual!!!! >> Python ์ž๊ธฐ ๋ฒ„์ „ >> ์ด๋ฆ„ ์„ค์ • ๋ฅผ ๋งˆ์น˜๊ณ  ๋‚˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋ณด์ธ๋‹ค.

๋„๋ฉ”์ธ๋„ ๋ณด์ธ๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์ด ํ™˜๊ฒฝ ์„ค์ •์„ ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ์œ„์น˜๋ฅผ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ทธ ์•„๋ž˜ "โŒ˜ ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ"๋ฅผ ๋ชจ๋‘ ๋๋‚ด์•ผํ•œ๋‹ค.

์œ„ ์™€ ๊ฐ™์€ ๋ถ€๋ถ„์„ ์ž์‹ ์— ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ˆ˜์ •. 

 

โŒ˜ ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ

๋ฐฐ์‰ฌ์—์„œ ์‹คํ–‰ ๋˜๋Š” ๊ฒƒ์„ ๋ณด๋ฉด, pythonanywhere์ด๋ผ๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋งŒ๋“ค๊ณ 

๊ทธ ์œ„์— ํŒŒ์ด์ฌ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

๋ช…๋ น์–ด ์‹œํ–‰ ์ฐฉ์˜ค / ๊ฐ€์ƒ ํ™˜๊ฒฝ
๊ฐ€์ƒํ™˜๊ฒฝ ์‹คํ–‰๋œ ํ‘œ์‹œ / ์ด ์œ„์— ์žฅ๊ณ ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค! (๋กœ์ปฌ ์„œ๋ฒ„์—์„œ๋ž‘ ๊ฐ™๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.)

์œ„์™€ ๊ฐ™์„ ๋•Œ, pip install django ๋ช…๋ น์–ด๋กœ ๋””์žฅ๊ณ ๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

 

์„ค์น˜์‹œ์— ์˜์กด์„ฑ์ด ์žˆ๋Š” ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ํ•จ๊ป˜ ์„ค์น˜ ๋œ๋‹ค.

 

์žฅ๊ณ ๊ฐ€ ๋ชจ๋‘ ์„ค์น˜๋˜๋ฉด, ์ด์ „์— ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๊นƒํ—ˆ๋ธŒ์— ์—ฐ๋™ ์‹œ์ผœ ๋†“์€ ๋ถ€๋ถ„์„ ํด๋ก ํ•œ๋‹ค.

git clone https:~~~/~.git

์ด ๋ถ€๋ถ„์„ ๋งˆ์น˜๊ณ  ๋‚˜๋ฉด ์ฒ˜์Œ์—๋Š” venv_web_practice ๋งŒ ์žˆ๋˜ ํด๋”์— DjangoPractice (๋‚ด๊ฐ€ ๋กœ์ปฌ์—์„œ ๋งŒ๋“ค ์—ˆ๋˜๊ฑฐ) ๊ฐ€ ์ž˜ ํด๋ก ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

(๋‹ค์‹œ ์–ธ๊ธ‰ํ•˜์ง€๋งŒ) ๋กœ์ปฌ์—์„œ์™€ ๊ฐ™์ด migrate๋ฅผ ํ†ตํ•ด์„œ DB๋ฅผ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

migrate / ์‹œํ–‰์ฐฉ์˜ค

 

 

โŒ˜ Global Url

 

โŒ˜ PythonAnywhere ์— ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์—ˆ๋˜ App ์„ค์ •ํ•˜๊ธฐ.

File ๋Œ€์‰ฌ๋ณด๋“œ ๋“ค์–ด๊ฐ€๊ธฐ โ‡ข ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ " ์ตœ์ƒ์œ„ /" ํด๋ฆญ  โ‡ข "var" ํด๋ฆญ  โ‡ข "www/" ํด๋ฆญ โ‡ข  "๋ธ”๋ผ ๋ธ”๋ผ_wsgi.py" ํด๋ฆญ

 

WSGI  ํŒŒ์ผ

: ์žฅ๊ณ ๋Š” WSGI ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘๋™ํ•˜๋Š”๋ฐ, ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ์€ ํŒŒ์ด์ฌ์„ ์ด์šฉํ•œ ์›น์‚ฌ์ดํŠธ๋ฅผ ์„œ๋น„์Šคํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€์ด๋‹ค. ํ•ด๋‹น ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋ฉด์„œ ์šฐ๋ฆฌ ์•ฑ์„ PythonAnywhere ์ด ์ธ์‹ํ•˜๊ฒŒ ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.  (ํŒŒ์ด์ฌ์• ๋‹ˆ์›จ์–ด์—์„œ ํด๋ฆญํ•˜๋ฉด ๋ฐ”๋กœ ํŽธ์ง‘๊ธฐ๋กœ ํŽธ์ง‘ ๊ฐ€๋Šฅํ•˜๋‹ค.)

 

"๋ธ”๋ผ ๋ธ”๋ผ_wsgi.py" ์ „์ฒด ๋‚ด์šฉ ์‚ญ์ œ โ‡ข ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑ

๋ธ”๋ผ ๋ธ”๋ผ _wsgi.py

 

 

์›น ๋Œ€์‰ฌ ๋ณด๋“œ์—์„œ, ์ดˆ๋ก์ƒ‰ ๋ฆฌ๋กœ๋“œ๋ฅผ ํ•˜๊ณ , ์ž์‹ ์˜ ๊ธ€๋กœ๋ฒŒ ๋„๋ฉ”์ธ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ๋œ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€