โ† Articles

๐ŸŒž ๊ฐœ๋–ก๊ฐ™์€ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ํ•œ ํ•˜๋ฃจ ๋ฆฌ๋‰ด์–ผ ์ด์•ผ๊ธฐ

๊ฑฐ๋Œ€ํ•œ ๋ ˆ๊ฑฐ์‹œ๋ฅผ ์ˆ˜์Šตํ•œ ๊ฒฝํ—˜

Table of Contents

2๊ฐœ์›”์ด๋‚˜ ์ง€๋‚ฌ์ง€๋งŒ, ๋” ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์žŠ์–ด๋ฒ„๋ฆด ๊ฒƒ ๊ฐ™์•„์„œ ํ•˜๋ฃจ ๋ฆฌ๋‰ด์–ผ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๋ ค ํ•œ๋‹ค. ์›Œ๋‚™ ์ถฉ๊ฒฉ์ ์ด๊ณ  ํž˜๋“  ๊ฒฝํ—˜์ด์–ด์„œ ์•„์ง๋„ ์–ด๋• ๋Š”์ง€ ๊ธฐ์–ต์ด ๋‚œ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋”๋Ÿฌ์šด(โ€ฆ) ๊ฒฝํ—˜์ด์—ˆ๋‹ค. ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜, ์Ÿ์•„์ ธ ๋‚˜์˜ค๋Š” ๋ฒ„๊ทธ, ๊ฐœ๋–ก๊ฐ™์€ ์ฝ”๋“œ, ์™„์ „ ๋’ค์ฃฝ๋ฐ•์ฃฝ์ด์—ˆ๋‹ค. ์ดํ•˜ ๋‚ด์šฉ์€ ์•ฝ 10๊ฐœ์›”๊ฐ„ ๋‚ด๊ฐ€ ๋ฌด์Šจ ์‚ฝ์งˆ์„ ํ–ˆ๋Š”์ง€์— ๊ด€ํ•œ ํšŒ๊ณ ๋‹ค.

๐Ÿ”ฅ ๋ฐœ๋‹จ

'ํ•˜๋ฃจโ€™๋Š” ๋‚ด๊ฐ€ ์ค‘ํ•™๊ต 3ํ•™๋…„ ๋•Œ(2013๋…„) ์นœ๊ตฌ์™€ ์กธ์—…์ž‘ํ’ˆ์œผ๋กœ ๋งŒ๋“  SNS๋‹ค. ๊ฒŒ์‹œ๊ธ€์€ ํ•˜๋ฃจ๋งŒ ์œ ์ง€๋˜๋ฉฐ, ํŽ˜์ด์Šค๋ถ์˜ ์ข‹์•„์š” ๊ฐ™์€ '์˜คํ˜ธ๋ผโ€™๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ธ€์˜ ์œ ์ง€ ์‹œ๊ฐ„์„ 1์‹œ๊ฐ„ ๋” ๋Š˜๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค. ์šด์ข‹๊ฒŒ ์–ธ๋ก ์‚ฌ์—์„œ ์ธํ„ด์„ ํ•˜๋˜ ํ•™๊ต ์„ ๋ฐฐ๊ฐ€ ๊ธฐ์‚ฌ๋ฅผ ์จ์คฌ๊ณ , ์—ฌ๊ธฐ์ €๊ธฐ์— ์•Œ๋ ค์กŒ๋‹ค.

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

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๋Œ€ํ•™๊นŒ์ง€ ์ž…ํ•™ํ•˜๊ณ , ๋‚˜๋Š” 18ํ•™์  ๋ฐ–์— ๋˜์ง€ ์•Š๋Š” ํ……ํ…… ๋นˆ ์‹œ๊ฐ„ํ‘œ ๋•๋ถ„์— ์‹œ๊ฐ„์ด ๋‚จ์•„ ๋„๋Š” ์ƒํƒœ๊ฐ€ ๋˜์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  2017๋…„ 5์›”, ๋‚˜๋Š” ๋ฌด๋ฃŒ๋กœ ํ’€๋ฆฐ ์Šคํƒ€ํฌ๋ž˜ํ”„ํŠธ ๋ธŒ๋ฃจ๋“œ์›Œ์— ๋งค์ง„ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. (์ดํ›„ 187ํŒจ 8์Šน์„ ์ฐ๊ณ  ๊ทธ๋งŒ๋’€๋‹ค.) ๊ทธ๋•Œ ์Šคํƒ€ํฌ๋ž˜ํ”„ํŠธ ๋ฆฌ๋งˆ์Šคํ„ฐ๊ฐ€ ์ถœ์‹œ๋๋Š”๋ฐ, ์•„๋งˆ ๊ฑฐ๊ธฐ์— ๊ณ ๋ฌด๋˜์—ˆ๋Š”์ง€ ํ•˜๋ฃจ๋„ ๋ฆฌ๋‰ด์–ผํ•  ๋•Œ๊ฐ€ ๋๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

์ผ๋‹จ ํŽ˜์ด์ง€์— ๊ธ€์„ ์˜ฌ๋ฆฌ๊ณ  ์žค๋‹ค. ๋นก์„ผ ์ปค๋ฆฌํ˜๋Ÿผ์— ๊ณ ํ†ต์„ ํ˜ธ์†Œํ•˜๋˜ ์นœ๊ตฌ๋ฅผ ๋’ค๋กœํ•˜๊ณ  ๋‚˜ ํ˜ผ์ž ๊ฐœ๋ฐœํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์— ์กฐ๊ธˆ ๋ง‰๋ง‰ํ•ด์กŒ๋‹ค.

๊ทธ๋•Œ๋Š” ์ƒˆ๋ฒฝ 3์‹œ์˜€๊ณ , ๋‹ค์Œ๋‚  10์‹œ๋ฐ˜ ์ˆ˜์—…์ด ์žˆ์—ˆ์ง€๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฐ์ด๋ผ๋„ ์žก์•„๋ณด๋ ค ํ–ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ธํŒ…ํ•œ ๋’ค SSL ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•„ ์‹ค์„œ๋น„์Šค ์„œ๋ฒ„์˜ ํŒŒ์ผ๋“ค์„ ๊ทธ๋Œ€๋กœ ์˜ฎ๊ฒจ์™€๋ดค๋‹ค. ๋ฌด๋ฃŒ ๋„๋ฉ”์ธ์ธ haroootest.tk๋„ ์ ์šฉ์‹œ์ผฐ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜๋‹ค.

ํ•˜์ง€๋งŒ ์ˆœํƒ„์น˜ ์•Š์•˜๋‹ค. 6์›”๋ถ€ํ„ฐ 10์›”๊นŒ์ง€ ์ž‘์—…ํ•˜๊ณ , ์ดํ›„ ๋ฏธ๋ค„์ง€๋‹ค๊ฐ€ 2ํ•™๊ธฐ๋ฅผ ๋งˆ์น˜๊ณ  2018๋…„์ด ๋˜์–ด์„œ์•ผ ๋‹ค์‹œ ๋ฆฌ๋‰ด์–ผ ์ž‘์—…์— ๋“ค์–ด๊ฐ”๋‹ค. ์ฒ˜์Œ์—๋Š” ๋ฆฌ๋‰ด์–ผ์„ '์—ฌ๋ฆ„ ์—…๋ฐ์ดํŠธโ€™๋ผ๊ณ  ๋ถˆ๋ €์ง€๋งŒ ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” '18์—…๋ฐ์ดํŠธโ€™๊ฐ€ ๋˜์—ˆ๋‹ค. (๊ธ€์— "์˜ฌํ•ด ์•ˆ์—๋Š” ๋๋‚ผ ์ˆ˜ ์žˆ๊ฒ ์ฃ ?"๋ผ๊ณ  ์จ๋†”์„œ ๋” ์ฐ”๋ฆฐ๋‹ค.)

๐ŸŒœ ์„œ๋ฒ„ ๊ฑด๋“œ๋ฆฌ๋Š” ๋‚ ์€ ๋ฐค์ƒˆ๋Š” ๋‚ 

๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผ๋  ์ž‘์—…์€ ์„œ๋ฒ„ ์ด์ „์ด์—ˆ๋‹ค. ๊ธฐ์กด ์„œ๋ฒ„๋Š” ์„œ๋ฒ„์— ๋Œ€ํ•ด 1๋„ ๋ชจ๋ฅด๋˜ ์‹œ์ ˆ ์„ธํŒ…ํ•ด ๋†“์€ ๊ฒƒ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฐ์ฐํ•œ ๋งˆ์Œ์„ ์ง€์šธ ์ˆ˜ ์—†์—ˆ๋‹ค. ์˜ฎ๊ธฐ๋Š” ๊ฒธ ์„œ๋ฒ„ ์„ธํŒ…๋„ ์ œ๋Œ€๋กœ ํ•˜๊ณ  PHP ๋ฒ„์ „๋„ ์˜ฌ๋ฆด ์ƒ๊ฐ์ด์—ˆ๋‹ค. ๋จผ์ € ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ(AWS์™€ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ์„œ๋น„์Šค)์—๋Š” ๋‘ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์—ˆ๋‹ค. ํ•˜๋‚˜๋Š” SSL ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์€ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์˜€๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์‹ค์„œ๋น„์Šค ์„œ๋ฒ„์˜€๋‹ค. ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์‹ค์„œ๋น„์Šค ์„œ๋ฒ„๋กœ ์“ฐ๋Š” ๊ฒƒ์ด ๋‚ด ๋ชฉํ‘œ์˜€๋‹ค.

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

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

๐Ÿ” SSL ์ธ์ฆ์„œ๋กœ ์•ˆ์ „ํ•œ ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ

๊ธฐ์กด ์„œ๋ฒ„๋Š” http ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ https๋กœ ๋ฐ”๊ฟ”์•ผํ•œ๋‹ค๋Š” ๋งˆ์Œ์˜ ์ง์ด ์žˆ์—ˆ๋‹ค. ์ด๊ฑด ์„ ํƒ์ด ์•„๋‹ˆ๋ผ ์˜๋ฌด์˜€๋‹ค. ํŠนํžˆ ํฌ๋กฌ์—์„œ http ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด '์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์‚ฌ์ดํŠธโ€™๋ผ๋Š” ๊ฒฝ๊ณ ๊ฐ€ ๋– ์„œ ๋ฐ”๊พธ์ง€ ์•Š๊ณ ๋Š” ์•ˆ ๋˜๋Š” ์ƒํ™ฉ์ด์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒ๊ฐ๋ณด๋‹ค ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ์—ˆ๋‹ค. ์ผ๋‹จ SSL์ด ๋ญ”์ง€ ์ž˜ ๋ชฐ๋ž๋‹ค! ๋จผ์ € ๊ณต๋ถ€๋ถ€ํ„ฐ ํ–ˆ๋‹ค. ๋ฌผ๋ก  ๊ทธ๊ฒƒ์ด ๋ญ”์ง€ ์•ˆ๋‹ค๋Š” ๋ง์ด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ง์€ ์•„๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ปค๋งจ๋“œ๋ฅผ ์น˜๋ฉด์„œ ๋‚ด๊ฐ€ ๋ญ˜ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ •๋„๋Š” ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

Letโ€™s Encrypt๋Š” ๋ฌด๋ฃŒ๋กœ SSL ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•ด์ค€๋‹ค. (์˜ˆ์ „์—๋Š” StartCom SSL๋กœ ํ…Œ์ŠคํŠธํ–ˆ๋Š”๋ฐ, ๋ฌด์Šจ ์ด์Šˆ๊ฐ€ ํ„ฐ์ ธ์„œ ์—ฌ์ „ํžˆ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์‚ฌ์ดํŠธ๋ผ๋Š” ๊ฒฝ๊ณ ๊ฐ€ ๋–ด๋‹ค.) ์ผ๋‹จ ๋ฐœ๊ธ‰๋ฐ›๊ณ  ์ปค๋งจ๋“œ๋ฅผ ์ณ์„œ ์—ฌ์ฐจ์ €์ฐจ ์ ์šฉ์„ ์„ฑ๊ณตํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ https://harooo.com/์€ ์ ‘์†์ด ์ž˜ ๋์ง€๋งŒ http://harooo.com/์— ์ ‘์†ํ–ˆ์„ ๋•Œ๋Š” https://harooo.com/์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค.

์™œ์ผ๊นŒ? ์ด ๋ฌธ์ œ๋กœ ์ดํ‹€ ์ •๋„๋ฅผ ํ˜๋ ค ๋ณด๋ƒˆ๋Š”๋ฐ, ๋‹ต์€ ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ–ˆ๋‹ค. ์•„ํŒŒ์น˜ ์„œ๋ฒ„ ์„ค์ •์„ ์ž‘์„ฑํ•  ๋•Œ 80ํฌํŠธ(http) ์„ค์ •๊ณผ 443ํฌํŠธ(https) ์„ค์ •์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ ์•ˆ์—์„œ ๋‹ค๋ฃฌ ๊ฒƒ์ด ์‹ค์ˆ˜์˜€๋‹ค. ์•„๋ฌด๋ฆฌ๋ด๋„ ์ด์ƒํ•œ ๊ฒƒ ๊ฐ™์•„์„œ 80ํฌํŠธ์™€ 443ํฌํŠธ๋ฅผ ๋ถ„๋ฆฌํ•ด ๋‹ค์‹œ ์„ค์ •์„ ์ž‘์„ฑํ–ˆ๋‹ค.

/etc/apache2/sites-enabled/default-ssl.conf

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on

        SSLCertificateFile   /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile/etc/ssl/private/ssl-cert-snakeoil.key

        <FilesMatch "\\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
            SSLOptions +StdEnvVars
        </Directory>
    </VirtualHost>
</IfModule>

## vim: syntax=apache ts=4 sw=4 sts=4 sr noet

์ด๋ ‡๊ฒŒ ํ•˜๊ณ  ์„ค์ •์„ ํ™œ์„ฑํ™”ํ–ˆ๋”๋‹ˆ ์ž˜ ์ž‘๋™ํ–ˆ๋‹ค. ์ฃผ์†Œ์ฐฝ ์•ž์— ๋‚˜์˜ค๋Š” ๋…น์ƒ‰ ์ž๋ฌผ์‡ ๊ฐ€ ๋„ˆ๋ฌด ์‚ฌ๋ž‘์Šค๋Ÿฌ์›Œ ๋ณด์˜€๋‹ค. ๊ณ ์ƒํ•˜๋ฉฐ ์„œ๋ฒ„ ์„ธํŒ…๊ณผ SSL ์ ์šฉ์„ ๋งˆ์น˜๋‹ˆ ๋„ˆ๋ฌด ๋ฟŒ๋“ฏํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌด์—‡๋ณด๋‹ค vi๊ฐ€ ์ •๋ง ์ข‹์•˜๋‹ค.

๐Ÿœ ๋ฒ„๊ทธ ํญ๋ฐœ!

์˜ˆ์ƒํ–ˆ๋˜ ์ผ์ด์ง€๋งŒ ์šฐ๋ถ„ํˆฌ์™€ PHP, MySQL์„ ์ตœ์‹ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋‹ˆ ๋ฒ„๊ทธ๊ฐ€ ์Ÿ์•„์ ธ ๋‚˜์™”๋‹ค. ๊ฑฐ์˜ ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ ์—‰๋ง์ด ๋˜์—ˆ๋‹ค. ์žฅ๋‚œ ์•„๋‹ˆ์—ˆ๋‹ค. ์ •๋ง ์†๋Œˆ ์—„๋‘๊ฐ€ ๋‚˜์ง€ ์•Š์•˜๋‹ค.

โ€ฆ๊ทธ๋ž˜์„œ 2017๋…„ 10์›” ์ดํ›„๋กœ ๊ฑฐ์˜ ์†๋Œ€์ง€ ๋ชปํ–ˆ๋‹ค. ์ฝ”๋“œ๋Š” ์ถฉ๊ฒฉ์ ์ผ ์ •๋„๋กœ ๊ฐœํŒ์ด์—ˆ๋‹ค. mysql_query(...) ๊ฐ™์€ ๊ตฌ๋ฌธ์„ ๋ชจ๋‘ mysqli_query(...)๋กœ ๋ฐ”๊ฟ”์•ผ ํ–ˆ๊ณ , fetch_array(...)๋„ ์ƒˆ๋กœ์šด ๋ฐฉ์‹์„ ์จ์•ผ ํ–ˆ๋‹ค. ๊ฑฐ๊ธฐ๋‹ค๊ฐ€ html๊ณผ javascript, php๊ฐ€ ๋งˆ๊ตฌ ์„ž์—ฌ ์žˆ์–ด์„œ ์ •๋ง ์•„์ˆ˜๋ผ์žฅ์ด ๋”ฐ๋กœ ์—†์—ˆ๋‹ค. ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ๊ฐ€ ๊ฐ€๋“ํ–ˆ๊ณ , ์ด์ƒํ•œ ์‹œ์ ์— ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๊ธฐ๋„ ํ–ˆ๋‹ค. ์• ์ดˆ์— ์ž˜๋ชป๋œ ๋กœ์ง๋„ ์žˆ์–ด์„œ ๊ทธ ๋ถ€๋ถ„๋„ ์ƒˆ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ๋‹ค.

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

๐ŸŽจ ๋ฏธ์„ธํ•œ UI ๊ฐœ์„ 

์‚ฌ์‹ค ํ•˜๋ฃจ๋ฅผ ์ฒ˜์Œ ๋งŒ๋“ค ๋•Œ ๋‚˜๋Š” html๊ณผ css๋ฅผ ์ž˜ ๋ชฐ๋ž๋‹ค. ์ •๋ณด ์ˆ˜์—…์—์„œ ์งง๊ฒŒ ๋ฐฐ์šด ๋‚ด์šฉ๊ณผ W3Schools, ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋˜ ์›น ๋””์ž์ธ์„ ์œ„ํ•œ HTML5+CSS3 ์ž…๋ฌธ์œผ๋กœ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋งŒ๋“ค์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ๋””์ž์ธ๊ณผ ์‹ค์ œ ์›น์—์„œ์˜ ๊ฒฐ๊ณผ๋ฌผ์€ ๋งŽ์ด ๋‹ฌ๋ž๋‹ค. ๋ฆฌ๋‰ด์–ผ์—์„œ UI ๋ณ€ํ™”๋Š” ๋น ์งˆ ์ˆ˜ ์—†์„ ๊ฒƒ ๊ฐ™์•„์„œ ๋ฏธ์„ธํ•˜๊ฒŒ๋‚˜๋งˆ ๊ฐœ์„  ์ž‘์—…์„ ํ–ˆ๋‹ค.

๊ทธ๋‚˜๋งˆ index ํŽ˜์ด์ง€๋Š” ์ฐจ์ด๊ฐ€ ํฐ ๋ถ€๋ถ„์ด์ง€ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋“ค์€ ์‚ฌ์‹ค ํฐ ์ฐจ์ด๊ฐ€ ์—†๋‹ค. ๊ทธ๋Ÿฐ๋ฐ CSS ์ฝ”๋“œ๊ฐ€ ์›Œ๋‚™ ๊ฐœํŒ์ด๋ผ ์ด ๋ถ€๋ถ„๋„ ์™„์ „ํžˆ ์ƒˆ๋กœ ์งœ์•ผํ–ˆ๋‹ค. ๊ณผ๊ฑฐ์˜ ๋‚˜๋Š” ์™œ ๊ทธ๋ ‡๊ฒŒ absolute๋ฅผ ์ข‹์•„ํ–ˆ๋˜๊ฑธ๊นŒ.

โœจ ๋ฏธ์„ธํ•œ ํ€„๋ฆฌํ‹ฐ ๊ฐœ์„ 

์ž˜ ๋ˆˆ์— ๋„์ง€ ์•Š์ง€๋งŒ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ, ์ด์šฉ์•ฝ๊ด€, ๊ฐœ์ธ์ •๋ณด์ทจ๊ธ‰๋ฐฉ์นจ, ์„ค์ • ํŽ˜์ด์ง€ ๋“ฑ ์ž์ž˜ํ•œ ํŽ˜์ด์ง€๋“ค์˜ ๋””์ž์ธ๊ณผ ๋‚ด์šฉ์„ ๊ฐœ์„ ํ–ˆ๋‹ค. ์กธ์—…์ž‘ํ’ˆ ๋ฐœํ‘œ ๋•Œ ์ž‘์€ ์ฐจ์ด๊ฐ€ ํฐ ์ฐจ์ด๋ฅผ ๋งŒ๋“ ๋‹ค ํ•ด๋†“๊ณ  ์ด๋Ÿฐ ๋ถ€๋ถ„์— ์ž˜ ์‹ ๊ฒฝ์„ ์•ˆ ์จ๋†จ๋”๋ผ.

๐Ÿคฏ ๋‹ค์‹œ๋Š” ๊ฐœ๋–ก๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์“ฐ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค

์—„์ฒญ๋‚˜๊ฒŒ ํž˜๋“ค์—ˆ์ง€๋งŒ ์•„๋ฌดํŠผ ๋๋‚ด๊ธด ํ–ˆ๋‹ค.

๋‹คํ–‰ํžˆ 10๊ฐœ์›” ๊ฐ„์˜ ์‚ฝ์งˆ์„ ํ†ตํ•ด ๋‚˜๋ฆ„ ๋Š๋‚€ ์ ์ด ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” html, css, javascript, php์˜ ์™„๋ฒฝํ•œ ๋ถ„๋ฆฌ์— ๋ชฉ์ˆจ์„ ๊ฑธ์–ด์•ผ๊ฒ ๋‹ค๋Š” ๊ฒƒ. ๋‘ ๋ฒˆ์งธ๋Š” ์“ธ๋ชจ์žˆ๋Š” ์ฃผ์„์„ ๋‹ฌ์•„์•ผ๊ฒ ๋‹ค๋Š” ๊ฒƒ. ์„ธ ๋ฒˆ์งธ๋Š” ํ•œ ๋ฒˆ ๋” ์ƒ๊ฐํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์งœ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ํ˜„์žฌ์˜ ํŽธ์•ˆํ•จ์ด ๋‚˜์ค‘์—” ์ง€์˜ฅ์œผ๋กœ ๋‹ค๊ฐ€์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ.

๋งŽ์€ ์ˆ˜์—…์—์„œ(ํŠนํžˆ ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ) ๊ต์ˆ˜๋‹˜๋“ค์€ "๋‹น์žฅ์€ ํ•„์š”์—†์„์ง€ ๋ชฐ๋ผ๋„ ๋‚˜์ค‘์— ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๊ต‰์žฅํžˆ ํŽธํ•ด์ง‘๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ•˜์ง€๋งŒ, ์ž˜ ์‹ค๊ฐ์ด ๋‚˜์ง€ ์•Š์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์—ญ์‹œ ๊ฒฝํ—˜์œผ๋กœ ๋ฐฐ์›Œ์•ผ ํ•œ๋‹คโ€ฆ

โ†

Race condition ๋ฐœ์ƒ์‹œํ‚ค๊ณ  Mutex lock์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ

โ†’

ES6 ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์˜ this์— ๊ด€ํ•˜์—ฌ

โ† Articles