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

IT&ํ”„๋กœ๊ทธ๋žจ

PHP ๋ผ๋ผ๋ฒจ Laravel ํ”„๋ ˆ์ž„์›Œํฌ ์„ค์น˜ ๋ฐ ์ดˆ๊ธฐ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๊ฐ€์ด๋“œ: ์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ ์‹ค๋ฌด ์ „๋žต

๐Ÿ“‹ PHP ๋ผ๋ผ๋ฒจ Laravel ํ”„๋ ˆ์ž„์›Œํฌ ์„ค์น˜ ๋ฐ ์ดˆ๊ธฐ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๊ฐ€์ด๋“œ: ์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ ์‹ค๋ฌด ์ „๋žต

# PHP ๋ผ๋ผ๋ฒจ(Laravel) ํ”„๋ ˆ์ž„์›Œํฌ ์„ค์น˜ ๋ฐ ์ดˆ๊ธฐ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๊ฐ€์ด๋“œ: ์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ ์‹ค๋ฌด ์ „๋žต

์›น ๊ฐœ๋ฐœ ์‹œ์žฅ์—์„œ PHP๋Š” ์—ฌ์ „ํžˆ ๊ฐ•๋ ฅํ•œ ์ ์œ ์œจ์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ ์ค‘์‹ฌ์—๋Š” '๋ผ๋ผ๋ฒจ(Laravel)'์ด๋ผ๋Š” ๋…๋ณด์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ž๋ฆฌ ์žก๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์˜ ํŒŒํŽธํ™”๋œ PHP ๊ฐœ๋ฐœ ๋ฐฉ์‹์—์„œ ๋ฒ—์–ด๋‚˜ MVC ํŒจํ„ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์šฐ์•„ํ•œ ๋ฌธ๋ฒ•๊ณผ ๊ฐ•๋ ฅํ•œ ์ƒํƒœ๊ณ„๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ผ๋ผ๋ฒจ์€ ํ˜„๋Œ€์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ๋„๊ตฌ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋‚˜ ์‹ค๋ฌด ๊ด€๋ฆฌ์ž์—๊ฒŒ ์žˆ์–ด ์ฒซ ๋ฒˆ์งธ ๊ด€๋ฌธ์ธ '์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ์„ค์ •'์€ ๋‹จ์ˆœํžˆ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ ์ด์ƒ์˜ ์ „๋žต์  ํŒ๋‹จ์ด ์š”๊ตฌ๋˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

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

๐Ÿ“‘ ๋ชฉ์ฐจ

  1. ๋ผ๋ผ๋ฒจ ๋„์ž… ์ „ ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ ๋ฒ„์ „ ์„ ํƒ ๊ธฐ์ค€
  2. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ: OS๋ณ„ ์ตœ์ ์˜ ๋„๊ตฌ์™€ ํŒ๋‹จ ๊ธฐ์ค€
  3. ๋‹จ๊ณ„๋ณ„ ์„ค์น˜ ๊ฐ€์ด๋“œ: Composer์™€ Laravel Installer ํ™œ์šฉ
  4. ์ดˆ๊ธฐ ํ”„๋กœ์ ํŠธ ์„ค์ •๊ณผ ๋ณด์•ˆ์„ ์œ„ํ•œ ํ•„์ˆ˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ
  5. ์šด์˜ ํ™˜๊ฒฝ(Server) ๊ตฌ์„ฑ ์‹œ ๊ณ ๋ คํ•  ๋น„์šฉ๊ณผ ๊ด€๋ฆฌ ์ „๋žต
  6. ํ”ํžˆ ๊ฒช๋Š” ์„ค์น˜ ์˜ค๋ฅ˜ ์œ ํ˜• ๋ฐ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

1. ๋ผ๋ผ๋ฒจ ๋„์ž… ์ „ ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ ๋ฒ„์ „ ์„ ํƒ ๊ธฐ์ค€

๋ผ๋ผ๋ฒจ์€ PHP์˜ ์ตœ์‹  ๊ธฐ๋Šฅ์„ ์ ๊ทน์ ์œผ๋กœ ์ˆ˜์šฉํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ค์น˜ ์ „ ์„œ๋ฒ„ ๋˜๋Š” ๋กœ์ปฌ PC์˜ ์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ์ด ์š”๊ตฌ ์‚ฌ์–‘์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ฐ€์žฅ ๋„๋ฆฌ ์“ฐ์ด๋Š” ๋ผ๋ผ๋ฒจ 10 ๋ฐ 11 ๋ฒ„์ „์„ ๊ธฐ์ค€์œผ๋กœ ํ•  ๋•Œ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ์ˆ ์  ์ค€๋น„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์šฐ์„  PHP ๋ฒ„์ „์€ ์ตœ์†Œ 8.2 ์ด์ƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์˜ PHP๋Š” ์ด์ „ ๋ฒ„์ „์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ๋Œ€ํญ ๊ฐœ์„ ๋˜์—ˆ์œผ๋ฉฐ, ํƒ€์ž… ํžŒํŒ…๊ณผ ๊ฐ™์€ ์ตœ์‹  ๋ฌธ๋ฒ•์„ ์ง€์›ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์—ฌ์ค๋‹ˆ๋‹ค. ๋˜ํ•œ BCMath, Ctype, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML ๋“ฑ ๋ผ๋ผ๋ฒจ ๊ตฌ๋™์— ํ•„์š”ํ•œ ํ•ต์‹ฌ ์ต์Šคํ…์…˜๋“ค์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋ˆ„๋ฝ๋  ๊ฒฝ์šฐ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์—์„œ ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ ์„ ํƒ ์‹œ์—๋Š” LTS(Long Term Support) ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์žฅ๊ธฐ์ ์ธ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ”„๋กœ์ ํŠธ๋ผ๋ฉด ์ง€์› ๊ธฐ๊ฐ„์ด ๊ธด ์•ˆ์ •๋œ ๋ฒ„์ „์„, ์ตœ์‹  ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ ์ตœ์ ํ™”๊ฐ€ ์šฐ์„ ์ธ ์Šคํƒ€ํŠธ์—… ํ”„๋กœ์ ํŠธ๋ผ๋ฉด ์ตœ์‹  ๋ฒ„์ „์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” ๋ผ๋ผ๋ฒจ 11์ด ๋”์šฑ ๊ฐ€๋ณ๊ณ  ์ง๊ด€์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ๋ผ๋ฉด ์ตœ์‹  ๋ฒ„์ „์„ ์šฐ์„ ์ ์œผ๋กœ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

2. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ: OS๋ณ„ ์ตœ์ ์˜ ๋„๊ตฌ์™€ ํŒ๋‹จ ๊ธฐ์ค€

๋ผ๋ผ๋ฒจ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ ์‚ฌ์šฉํ•˜๋Š” OS์™€ ํŒ€์˜ ํ˜‘์—… ๋ฐฉ์‹์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ์„ ํƒ์ง€๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ฐฉ์‹์€ ํŽธ์˜์„ฑ๊ณผ ์ผ๊ด€์„ฑ ๋ฉด์—์„œ ์žฅ๋‹จ์ ์ด ๋šœ๋ ทํ•˜๋ฏ€๋กœ ์ƒํ™ฉ์— ๋งž๋Š” ์ตœ์ ์˜ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. Windows ํ™˜๊ฒฝ (Laravel Herd ๋˜๋Š” Docker): ์ตœ๊ทผ ์œˆ๋„์šฐ์—์„œ ๊ฐ€์žฅ ์ถ”์ฒœ๋˜๋Š” ๋ฐฉ์‹์€ Laravel Herd์ž…๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ์›น ์„œ๋ฒ„ ์„ค์ • ์—†์ด ์‹คํ–‰ ํŒŒ์ผ ํ•˜๋‚˜๋กœ PHP, Nginx, DNS ์„ค์ •์„ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์„ค์ • ์‹œ๊ฐ„์„ ํš๊ธฐ์ ์œผ๋กœ ์ค„์—ฌ์ค๋‹ˆ๋‹ค. ๋ณด๋‹ค ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด Docker ๊ธฐ๋ฐ˜์˜ Laravel Sail์„ ์‚ฌ์šฉํ•˜์—ฌ ์šด์˜ ํ™˜๊ฒฝ๊ณผ ๋™์ผํ•œ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. macOS ํ™˜๊ฒฝ (Laravel Herd): ๋งฅ ์‚ฌ์šฉ์ž์—๊ฒŒ๋„ Herd๋Š” ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ๊ตฌ๋™๋˜์–ด ๊ฐ€์ƒํ™” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†์œผ๋ฉฐ, ๋งค์šฐ ๋น ๋ฅธ ์‘๋‹ต ์†๋„๋ฅผ ์ž๋ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์ธ Valet ๋˜ํ•œ ๊ฐ€๋ณ๊ณ  ํ›Œ๋ฅญํ•œ ๋Œ€์•ˆ์ž…๋‹ˆ๋‹ค.
  3. ๊ณตํ†ต ๊ฐ€์ƒํ™” ๋ฐฉ์‹ (Docker Desktop): ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์ผํ•œ ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•ด์•ผ ํ•˜๋Š” ํŒ€ ํ”„๋กœ์ ํŠธ๋ผ๋ฉด Docker Desktop๊ณผ Laravel Sail ์กฐํ•ฉ์ด ๊ฐ€์žฅ ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค. docker-compose.yml ํŒŒ์ผ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ ˆ๋””์Šค(Redis), ๋ฉ”์ผ ์„œ๋ฒ„ ๋“ฑ์„ ์ฝ”๋“œ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ดˆ๊ธฐ ์„ค์ • ๋น„์šฉ ์ธก๋ฉด์—์„œ ๋ณด๋ฉด Herd๋‚˜ Valet์€ ์„ค์ • ์‹œ๊ฐ„์ด ๊ฑฐ์˜ ์ œ๋กœ์— ๊ฐ€๊น์ง€๋งŒ, ๋ณต์žกํ•œ ์ธํ”„๋ผ ๊ตฌ์กฐ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ธฐ์—๋Š” Docker ๋ฐฉ์‹์ด ๋” ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ์™€ ํŒ€์›์˜ ์ˆ™๋ จ๋„์— ๋”ฐ๋ผ ์ด๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

3. ๋‹จ๊ณ„๋ณ„ ์„ค์น˜ ๊ฐ€์ด๋“œ: Composer์™€ Laravel Installer ํ™œ์šฉ

PHP์˜ ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋„๊ตฌ์ธ Composer๊ฐ€ ์„ค์น˜๋˜์—ˆ๋‹ค๋ฉด, ๋ผ๋ผ๋ฒจ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

๋จผ์ € 'Laravel Installer'๋ฅผ ์ „์—ญ์œผ๋กœ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ composer global require laravel/installer ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด laravel new๋ผ๋Š” ์ง๊ด€์ ์ธ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์˜ ์žฅ์ ์€ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ ํƒ, ์Šคํƒ€ํ„ฐ ํ‚คํŠธ(Breeze, Jetstream) ์ ์šฉ ์—ฌ๋ถ€, ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ์„ค์ • ๋“ฑ์„ ๋Œ€ํ™”ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ๋Š” composer create-project ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ •์„์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. composer create-project laravel/laravel example-app ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ์ตœ์‹  ๋ฒ„์ „์˜ ๋ผ๋ผ๋ฒจ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ๋‹ค์šด๋กœ๋“œ๋˜๊ณ  ์˜์กด์„ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ž๋™์œผ๋กœ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ํŠน์ • ๋ฒ„์ „์„ ๋ช…์‹œํ•˜์—ฌ ์„ค์น˜ํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜, ์ธ์Šคํ†จ๋Ÿฌ๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ๋ฒˆ๊ฑฐ๋กœ์šด ์ผํšŒ์„ฑ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ๊ณผ์ •์—์„œ ์ฃผ์˜ํ•  ์ ์€ ํด๋” ๊ถŒํ•œ ์„ค์ •์ž…๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๋‚˜ ๋งฅ ํ™˜๊ฒฝ์—์„œ ์„ค์น˜ํ•  ๊ฒฝ์šฐ, storage ํด๋”์™€ bootstrap/cache ํด๋”์— ์›น ์„œ๋ฒ„๊ฐ€ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ ์„ค์ •์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์œผ๋ฉด ์ฒซ ํ™”๋ฉด๋ถ€ํ„ฐ HTTP 500 ์—๋Ÿฌ๋ฅผ ๋งˆ์ฃผํ•˜๊ฒŒ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

4. ์ดˆ๊ธฐ ํ”„๋กœ์ ํŠธ ์„ค์ •๊ณผ ๋ณด์•ˆ์„ ์œ„ํ•œ ํ•„์ˆ˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๊ณ  ํ•ด์„œ ๋ฐ”๋กœ ์ฝ”๋”ฉ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ์šด์˜์˜ ์•ˆ์ •์„ฑ๊ณผ ๋ณด์•ˆ์„ ์œ„ํ•ด ์ดˆ๊ธฐ ์„ค์ • ๋‹จ๊ณ„์—์„œ ๋ฐ˜๋“œ์‹œ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•  ํ•ญ๋ชฉ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ‚ค(APP_KEY) ์ƒ์„ฑ: ๋ผ๋ผ๋ฒจ์€ ์‚ฌ์šฉ์ž ์„ธ์…˜๊ณผ ์•”ํ˜ธํ™” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด 32๊ธ€์ž์˜ ๋žœ๋ค ๋ฌธ์ž์—ด์ธ APP_KEY๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. php artisan key:generate ๋ช…๋ น์œผ๋กœ ๊ณ ์œ  ํ‚ค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋ฉฐ, ์ด ํ‚ค๊ฐ€ ๋…ธ์ถœ๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋˜๋ฉด ๊ธฐ์กด ์•”ํ˜ธํ™” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค.
  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜(.env) ๊ด€๋ฆฌ: DB ์ ‘์† ์ •๋ณด, API ํ‚ค ๋“ฑ ๋ฏผ๊ฐ ์ •๋ณด๋Š” .env ํŒŒ์ผ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ์ ˆ๋Œ€ Git๊ณผ ๊ฐ™์€ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ํฌํ•จ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ .gitignore์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ํŒ€์›๊ณผ๋Š” .env.example ํŒŒ์ผ์„ ๊ณต์œ ํ•˜์—ฌ ๊ตฌ์กฐ๋ฅผ ๋งž์ถ”์‹ญ์‹œ์˜ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜: ๋ผ๋ผ๋ฒจ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด DB ์Šคํ‚ค๋งˆ๋ฅผ ์ฝ”๋“œ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ์„ค์น˜ ํ›„ php artisan migrate๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ์‚ฌ์šฉ์ž ๋ฐ ์ž‘์—… ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ํƒ€์ž„์กด ๋ฐ ์–ธ์–ด ์„ค์ •: config/app.php ํŒŒ์ผ์—์„œ ํƒ€์ž„์กด์„ Asia/Seoul๋กœ, ์–ธ์–ด๋ฅผ ko๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ํ•œ๊ตญ ์„œ๋น„์Šค ํ™˜๊ฒฝ์— ์ตœ์ ํ™”ํ•˜๋Š” ๊ณผ์ •์„ ๋ˆ„๋ฝํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

5. ์šด์˜ ํ™˜๊ฒฝ(Server) ๊ตฌ์„ฑ ์‹œ ๊ณ ๋ คํ•  ๋น„์šฉ๊ณผ ๊ด€๋ฆฌ ์ „๋žต

๋กœ์ปฌ ์„ค์น˜ ์™„๋ฃŒ ํ›„ ์‹ค์ œ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•  ํ™˜๊ฒฝ์„ ์„ ํƒํ•˜๋Š” ๋‹จ๊ณ„์—์„œ๋Š” ๋น„์šฉ๊ณผ ๊ด€๋ฆฌ ๋ฆฌ์†Œ์Šค ์‚ฌ์ด์˜ ๊ท ํ˜•์„ ์žก์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ๊ณต์œ  ํ˜ธ์ŠคํŒ… (์›” 5,000์› ์ดํ•˜): ๋น„์šฉ์€ ์ €๋ ดํ•˜์ง€๋งŒ, SSH ์ ‘๊ทผ์ด ์ œํ•œ์ ์ด๊ฑฐ๋‚˜ PHP ๋ฒ„์ „ ๋ณ€๊ฒฝ์ด ์ž์œ ๋กญ์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋ผ๋ผ๋ฒจ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ 100% ํ™œ์šฉํ•˜๊ธฐ ์–ด๋ ค์šฐ๋ฏ€๋กœ ์ „๋ฌธ๊ฐ€๋“ค์€ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ๊ฐ€์ƒ ์‚ฌ์„ค ์„œ๋ฒ„ (VPS, ์›” 1~3๋งŒ ์› ๋‚ด์™ธ): DigitalOcean, Vultr, AWS LightSail ๋“ฑ์ด ๋Œ€ํ‘œ์ ์ž…๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ๋ถ€ํ„ฐ ์›น ์„œ๋ฒ„๊นŒ์ง€ ์ง์ ‘ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์„œ๋ฒ„ ์ง€์‹์ด ํ•„์š”ํ•˜์ง€๋งŒ, ๊ฐ€์„ฑ๋น„๊ฐ€ ๊ฐ€์žฅ ๋›ฐ์–ด๋‚œ ์„ ํƒ์ง€์ž…๋‹ˆ๋‹ค.
  3. ๊ด€๋ฆฌํ˜• ํ˜ธ์ŠคํŒ… (Laravel Forge, ์›” 2๋งŒ ์› + ์„œ๋ฒ„ ๋น„์šฉ): ๋ผ๋ผ๋ฒจ ๊ฐœ๋ฐœ์‚ฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„ ๊ด€๋ฆฌ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ํด๋ฆญ ๋ช‡ ๋ฒˆ์œผ๋กœ ์ตœ์ ํ™”๋œ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๋ฐฐํฌ ์ž๋™ํ™”๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ ์ธ๋ ฅ์ด ๋ถ€์กฑํ•œ ํŒ€์—๊ฒŒ๋Š” ์‹ค์ œ๋กœ๋Š” ๊ฐ€์žฅ ์ €๋ ดํ•œ ์„ ํƒ์ง€๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ SSL ์ธ์ฆ์„œ(Let's Encrypt ํ™œ์šฉ ์‹œ ๋ฌด๋ฃŒ), ๋„๋ฉ”์ธ ์œ ์ง€๋น„, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—… ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ ๋“ฑ๋„ ์˜ˆ์‚ฐ ์ˆ˜๋ฆฝ ์‹œ ๋Œ€๋žต์ ์œผ๋กœ ์‚ฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์†Œ๊ทœ๋ชจ ์„œ๋น„์Šค๋ผ๋ฉด ์›” 3๋งŒ ์› ์„ ์—์„œ ์•ˆ์ •์ ์ธ ์šด์˜์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

6. ํ”ํžˆ ๊ฒช๋Š” ์„ค์น˜ ์˜ค๋ฅ˜ ์œ ํ˜• ๋ฐ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

์ „๋ฌธ ๊ฐœ๋ฐœ์ž๋ผ๋„ ํ™˜๊ฒฝ ๋ณ€ํ™”์— ๋”ฐ๋ผ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•œ ์ด์Šˆ์™€ ํ•ด๊ฒฐ์ฑ…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฒซ์งธ, 'Class "ZipArchive" not found' ์—๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์ด๋Š” PHP์˜ zip ์ต์Šคํ…์…˜์ด ์„ค์น˜๋˜์ง€ ์•Š์•˜์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์ด๋ผ๋ฉด sudo apt-get install php-zip๊ณผ ๊ฐ™์€ ๋ช…๋ น์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘˜์งธ, '.env' ํŒŒ์ผ ์ธ์‹ ๋ถˆ๊ฐ€๋กœ ์ธํ•œ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ์œˆ๋„์šฐ ํƒ์ƒ‰๊ธฐ ๋“ฑ์—์„œ ํŒŒ์ผ ํ™•์žฅ์ž ์„ค์ • ๋ฌธ์ œ๋กœ .env.txt์ฒ˜๋Ÿผ ์ €์žฅ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ํŒŒ์ผ๋ช…์„ ์ •ํ™•ํžˆ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํŒŒ์ผ ๋‚ด์šฉ ์ˆ˜์ • ํ›„์—๋Š” php artisan config:cache ๋ช…๋ น์„ ํ†ตํ•ด ์บ์‹œ๋ฅผ ๊ฐฑ์‹ ํ•ด์ฃผ์–ด์•ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

์…‹์งธ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘์† ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ์ด๋Š” DB ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ด์ง€ ์•Š๊ฑฐ๋‚˜, ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Docker๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ๋ฅผ localhost ๋Œ€์‹  ์ปจํ…Œ์ด๋„ˆ ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋‹ˆ ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์›น ์„œ๋ฒ„์˜ 'Document Root' ์„ค์ •์ž…๋‹ˆ๋‹ค. ๋ผ๋ผ๋ฒจ์˜ ์ง„์ž…์ ์€ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ public ํด๋”์ž…๋‹ˆ๋‹ค. ์›น ์„œ๋ฒ„ ์„ค์ •์—์„œ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฐ˜๋“œ์‹œ public์œผ๋กœ ์ง€์ •ํ•ด์•ผ ๋ณด์•ˆ ์‚ฌ๊ณ ๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ณ  ์ •์ƒ์ ์ธ ๋ผ์šฐํŒ…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์š”์•ฝ ๋ฐ ์‹คํ–‰ ์ฒดํฌํฌ์ธํŠธ

PHP ๋ผ๋ผ๋ฒจ ์„ค์น˜๋Š” ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ์ƒ์‚ฐ์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๊ธฐ์ดˆ ๊ณต์‚ฌ์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ๋ณด์•ˆ ์ˆ˜์น™์„ ์ค€์ˆ˜ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๊ฐœ๋ฐœ ๊ณผ์ •์˜ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ๋Œ€ํญ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

  • PHP 8.2 ์ด์ƒ ๋ฒ„์ „ ๋ฐ ํ•„์ˆ˜ ์ต์Šคํ…์…˜ ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ๋จผ์ € ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
  • ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ ๊ฐ€๊ธ‰์  Laravel Herd์™€ ๊ฐ™์€ ์ตœ์‹  ๋„๊ตฌ๋ฅผ ์„ ํƒํ•ด ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด์‹ญ์‹œ์˜ค.
  • ์„ค์น˜ ์งํ›„ APP_KEY ์ƒ์„ฑ๊ณผ .env ํŒŒ์ผ์˜ ๋ณด์•ˆ ๋ฐ Git ์ œ์™ธ ์„ค์ •์„ ์™„๋ฃŒํ•˜์‹ญ์‹œ์˜ค.
  • ์„œ๋น„์Šค ๊ทœ๋ชจ์™€ ๊ด€๋ฆฌ ์—ญ๋Ÿ‰์— ๋”ฐ๋ผ VPS๋‚˜ Laravel Forge ๊ฐ™์€ ์ „๋ฌธ ์šด์˜ ์„œ๋น„์Šค๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.