๐Ÿง‘‍๐Ÿ’ป ์งง์€ํ˜ธํก/~ 2021

๊ตฐ๋Œ€๋ฅผ ๋ง‰ ์ „์—ญํ•˜๊ณ  ๋‚˜์„œ ์ด๊ฒƒ์ €๊ฒƒ ์—ด์‹ฌํžˆ ํ•ด๋ณด์•˜์–ด์š”
๐Ÿšจ ์•ผ๋งค์ฃผ์˜ Kakao Developers ์นด์นด์˜ค API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•ด๋ณด์„ธ์š”. ์นด์นด์˜ค ๋กœ๊ทธ์ธ, ๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ, ์นœ๊ตฌ API, ์ธ๊ณต์ง€๋Šฅ API ๋“ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. developers.kakao.com ์„ธ์ข…๋Œ€์™•๋‹˜ ๋งŒ์„ธ. ํ•œ๊ธ€๋กœ ๋œ ๋ฌธ์„œ๊ฐ€ ์ƒˆ์‚ผ ๋ฐ˜๊ฐ‘๋‹ค. ๋ฌธ์„œ์—์„  ์นด์นด์˜ค ๋กœ๊ทธ์ธ์ด ์ง„ํ–‰๋˜๋Š” ๊ณผ์ •์„ ์ด๋ ‡๊ฒŒ ํ‘œํ˜„ํ•˜๊ณ  ์žˆ๋‹ค. ํ”„๋ก ํŠธ์—์„œ ์นด์นด์˜ค ์„œ๋ฒ„๋กœ ๋กœ๊ทธ์ธ์„ ์š”์ฒญํ•˜๋ฉด ์ธ๊ฐ€ ์ฝ”๋“œ๊ฐ€ ๋ฐœ๊ธ‰๋œ๋‹ค. ๊ทธ ์ธ๊ฐ€ ์ฝ”๋“œ๋กœ ์นด์นด์˜ค ์„œ๋ฒ„์— ๋‹ค์‹œ ์š”์ฒญํ•ด์„œ ํ† ํฐ์„ ๋ฐ›์•„์™€ ์‚ฌ์šฉํ•œ๋‹ค. ๋จผ์ € Kakao Developers ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•œ๋‹ค. ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๋™์˜ ํ•ญ๋ชฉ, ๋„๋ฉ”์ธ, ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ URI ๋“ฑ์„ ์„ค์ •ํ•˜๊ณ  ์•ฑ ํ‚ค๋ฅผ ํ™•์ธํ•œ๋‹ค. 1ํŠธ ๋…ธ๋“œ ์„œ๋ฒ„์—์„œ๋Š” REST API๋ฅผ, ๋ฆฌ์•กํŠธ ํ”„๋ก ํŠธ์—์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ SDK๋ฅผ ์‚ฌ์šฉ..
[211011] 10์›”์— ์ฒ˜์Œ์œผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋ฉด์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ์ ์—ˆ๋˜ ๊ธฐ๋ก๋“ค์ด๋‹ค. ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ๋ฅผ ๊ฐœ์„คํ•˜๋ฉด์„œ ๊ทธ๋Œ€๋กœ ์˜ฎ๊ธด ๊ธ€. ์ด๋•Œ๋„ ์—ด์‹ฌํžˆ ์ข€ ์“ธ๊ฑธ ๊ทธ๋žฌ๋‹ค. ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ SNS ํ”ผ๋“œ์ฒ˜๋Ÿผ ์—…๋กœ๋“œํ•œ ์ด๋ฏธ์ง€๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ์„œ๋ฒ„์ชฝ์— ์ €์žฅํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์–ด๋””๋‹ค ์ €์žฅํ• ์ง€๊ฐ€ ๊ณ ๋ฏผ. ๊ฐœ์ธ์ ์ธ ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ผ, ์•„๋งˆ์กดs3 ๊ฐ™์€ ์Šคํ† ๋ฆฌ์ง€ ์„œ๋น„์Šค๋ฅผ ์“ฐ๊ธฐ์—” ๊ตณ์ด ๋ผ๋Š” ๋Š๋‚Œ์ด ๋“ค์—ˆ๋‹ค. ์„œ๋ฒ„์˜ ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. @app.route('/api/upload', methods=['POST']) def post_topster(): now = datetime.now() now2 = now.strftime("%D_%H%M_%S") date = now2.replace('/', '-..
[211011] 10์›”์— ์ฒ˜์Œ์œผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋ฉด์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ์ ์—ˆ๋˜ ๊ธฐ๋ก๋“ค์ด๋‹ค. ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ๋ฅผ ๊ฐœ์„คํ•˜๋ฉด์„œ ๊ทธ๋Œ€๋กœ ์˜ฎ๊ธด ๊ธ€. ์ด๋•Œ๋„ ์—ด์‹ฌํžˆ ์ข€ ์“ธ๊ฑธ ๊ทธ๋žฌ๋‹ค. ์ฝ”๋“œ๋ฅผ ๋””์ž์ธํ•œ ๋ฐฉ๋ฒ•์ด ์ •์„์ ์ธ ๋ฐฉ๋ฒ•์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์–ด์ฐŒ ๋๋“  ๋Œ์•„๊ฐ€๊ธฐ๋Š” ํ•œ๋‹ค. ๋งŒ๋“ค์–ด์ง„ ํƒ‘์Šคํ„ฐ๋ฅผ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•ด์„œ ํŒŒ์ผ๋กœ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ์„œ๋ฒ„์— ์—…๋กœ๋“œํ•ด์„œ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. sns ํ”ผ๋“œ์ฒ˜๋Ÿผ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด์„œ ํšŒ์›๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ๋„ ๊ฐ„๋‹จํžˆ ๊ตฌํ˜„ํ–ˆ๋‹ค. ํšŒ์›๊ฐ€์ž… ์ž…๋ ฅํ•œ ์ •๋ณด๋ฅผ ๊ทธ๋ƒฅ json ํ˜•์‹์œผ๋กœ ๋ณด๋ƒˆ๋‹ค. ์ด๋ฏธ ์žˆ๋Š” id๋ฉด ๊ทธ๋ƒฅ ๋ฆฌํ„ดํ•˜๊ณ  ์ƒˆ id์ธ ๊ฒฝ์šฐ์— ํšŒ์›๊ฐ€์ž…์„ ์ง„ํ–‰ํ•œ๋‹ค. bcrypt ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ์•”ํ˜ธํ™”๋ฅผ ํ•ด์„œ db์— ์ €์žฅํ•œ๋‹ค. ์ž๊พธ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š”๋ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜•์‹์œผ๋กœ ๋‚˜์˜ค๋‚˜ํ•ด์„œ str์œผ๋กœ ๋””์ฝ”๋”ฉํ•ด์„œ ๋ณด๋‚ด๋‹ˆ๊นŒ ์˜ค๋ฅ˜๋Š” ์•ˆ๋‚œ๋‹ค. @app.rout..
[211011] 10์›”์— ์ฒ˜์Œ์œผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋ฉด์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ์ ์—ˆ๋˜ ๊ธฐ๋ก๋“ค์ด๋‹ค. ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ๋ฅผ ๊ฐœ์„คํ•˜๋ฉด์„œ ๊ทธ๋Œ€๋กœ ์˜ฎ๊ธด ๊ธ€. ์ด๋•Œ๋„ ์—ด์‹ฌํžˆ ์ข€ ์“ธ๊ฑธ ๊ทธ๋žฌ๋‹ค. ๋ฐฐ๊ฒฝ ์ƒ‰์ƒ / ํ–‰๊ณผ ์—ด์˜ ์ˆ˜ / ์•จ๋ฒ” ๊ฐ„ ๊ฐ„๊ฒฉ๊ณผ ํ…Œ๋‘๋ฆฌ์˜ ๋‘๊ป˜ ๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. context api๋ฅผ ์ด์šฉํ•ด ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค. ์Œ์•… API ์•จ๋ฒ”์•„ํŠธ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ๋Š” last.fm์˜ api๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ์œ ํŠœ๋ธŒ์—์„œ ํฌ๋กค๋งํ•ด์™€์„œ ๋งŒ๋“  ๋ฐ์ดํ„ฐ๋“ค์ด๋ผ๊ณ  ํ•œ๋‹ค. ๊ฒ€์ƒ‰ํ•œ ๊ฒฐ๊ณผ๋“ค์ด ๋‘ ์ค„๋กœ ๊ฐ€๋กœ๋กœ ๋ณด์—ฌ์ง„๋‹ค. ๋“œ๋ž˜๊ทธ์•ค ๋“œ๋ž์œผ๋กœ ํƒ‘์Šคํ„ฐ์— ์˜ฎ๊ฒจ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. last.fm api์—์„œ ๋ถˆ๋Ÿฌ์˜จ ์•จ๋ฒ”์•„ํŠธ ์ด๋ฏธ์ง€๋“ค์ด ์‹ค์ œ์™€ ๋‹ค๋ฅด๊ฑฐ๋‚˜ ์—†๋Š” ๊ฒƒ๋“ค์ด ๊ฝค ์žˆ์—ˆ๋‹ค. ํ˜„์žฌ๋Š” Spotify api๋กœ ๋ฐ”๊พธ์—ˆ๋‹ค. Spotipy ๋ผ๋Š” ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐฑ์—”๋“œ์—์„œ..
์ฐธ๊ณ 1 ์ฐธ๊ณ 2 RDS๋Š” EC2์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉฐ ์•„๋งˆ์กด์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํŽธํ•˜๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” DB์ „์šฉ ์„œ๋ฒ„์ด๋‹ค. 1. RDS ์ƒ์„ฑ 1) RDS ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  MySQL, ํ”„๋ฆฌ ํ‹ฐ์–ด๋ฅผ ์„ ํƒํ•œ๋‹ค. 2) ๋งˆ์Šคํ„ฐ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ์ƒˆ VPC ๋ณด์•ˆ ๊ทธ๋ฃน, ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„ ๋“ฑ์„ ์ง€์ •ํ•ด์ค€๋‹ค. 3) ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค๋ฅผ '์˜ˆ'๋กœ ์„ค์ •ํ•œ๋‹ค. ์„ค์ •์„ ๋ชจ๋‘ ์™„๋ฃŒํ•˜๊ณ  '์ƒ์„ฑ ์ค‘' ์ƒํƒœ๋กœ ๋ช‡๋ถ„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด RDS ์ƒ์„ฑ์ด ์™„๋ฃŒ๋œ๋‹ค. 2. EC2์—์„œ RDS ์ ‘๊ทผ 1) ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์„ ์ˆ˜์ •ํ•œ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” EC2 ๋ณด์•ˆ๊ทธ๋ฃน์˜ ๊ทธ๋ฃนID๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋„ฃ๋Š”๋‹ค. ์ฒ˜์Œ์—” ํ˜„์žฌ ์ ‘์†ํ•œ IP๋งŒ ์—ด๋ ค์žˆ๋‹ค. 2) EC2์—์„œ ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ RDS ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผํ•œ๋‹ค. sudo mysql -u [์‚ฌ์šฉ์ž ์ด๋ฆ„] -p -h [RDS์ธ์Šคํ„ด์Šค..
์ฐธ๊ณ 1 ์ฐธ๊ณ 2 'dev.9yujin.shop' ๊ทธ๋ฆฌ๊ณ  'prod.9yujin.shop' ์ด๋ ‡๊ฒŒ ๋‘ ๊ฐœ์˜ ์„œ๋ธŒ ๋„๋ฉ”์ธ์„ ๋งŒ๋“ค์–ด๋ณด์ž. 1. ๊ฐ€๋น„์•„ DNS ๋ ˆ์ฝ”๋“œ ์ˆ˜์ • ๊ฐ€๋น„์•„์—์„œ ๋จผ์ € CNAME์œผ๋กœ ์„œ๋ฒ„ ๋„๋ฉ”์ธ์„ ๋“ฑ๋กํ•ด์ค€๋‹ค. dev์™€ prod ๋‘๊ฐœ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 2. ์„œ๋ธŒ๋„๋ฉ”์ธ ํŽ˜์ด์ง€ ์ •์  ํŒŒ์ผ ์ƒ์„ฑ 1) ์„œ๋ธŒ๋„๋ฉ”์ธ์œผ๋กœ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ๋ณด์—ฌ์ค„ ํŒŒ์ผ๋“ค์„ ๋„ฃ์–ด๋‘˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ธฐ์กด /var/www/html ์— ์ถ”๊ฐ€๋กœ /var/www/dev ๊ณผ /var/www/prod ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. 2) /var/www/dev์— html ํŒŒ์ผ์„ ์ž„์‹œ๋กœ ์ž‘์„ฑํ•ด์ค€๋‹ค. hello dev-subdomain 3. Nginx ์„ค์ • 1 1) /etc/nginx/sites-available ๋””๋ ‰ํ† ๋ฆฌ์— ์„œ๋ธŒ๋„๋ฉ”์ธ์„ ์œ„ํ•œ ์„ค์ • ํŒŒ์ผ์„ ๋งŒ..
์ฐธ๊ณ 1 1. ๋„๋ฉ”์ธ ์—ฐ๊ฒฐ ์ด์ „์— ๊ฐ€๋น„์•„์—์„œ ๊ตฌ๋งค๋ฅผ ํ•ด๋†“๊ณ  ์•ˆ์“ฐ๋Š” ๋„๋ฉ”์ธ์ด ์žˆ์–ด์„œ, ๊ทธ ๋„๋ฉ”์ธ์— ๋‚ด IP๋ฅผ ์—ฐ๊ฒฐํ–ˆ๋‹ค. 10๋ถ„ ์ •๋„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ๋‚ด ๋„๋ฉ”์ธ๊ณผ IP๊ฐ€ ๋งค์นญ์ด ๋œ๋‹ค. 2. Certbot ์„ค์น˜ (Let's Encrypt) Let's Encrypt๋Š” SSL ์ธ์ฆ์„œ๋ฅผ ๋ฌด๋ฃŒ๋กœ ๋ฐœ๊ธ‰ํ•ด HTTPS๋ฅผ ๋„๋ฆฌ ๋ณด๊ธ‰ํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์ž‘๋œ ๋น„์˜๋ฆฌ๊ธฐ๊ด€์ด๋‹ค. ์ง์ ‘ PEM key๋“ค์„ ๋ฐœ๊ธ‰๋ฐ›์•„์„œ ์„ค์ •ํ•ด์ฃผ์–ด๋„ ๋˜์ง€๋งŒ ๋งŽ์ด ๋ฒˆ๊ฑฐ๋กญ๊ธฐ ๋•Œ๋ฌธ์—, ์›น์„œ๋ฒ„์— ์‰ฝ๊ฒŒ ์„ธํŒ…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ๋“ค์ด ์žˆ๋‹ค. wget์œผ๋กœ Certbot-auto๋ฅผ ๋‹ค์šด๋ฐ›์•„ ์„ค์น˜ํ•˜๋Š” ๋ธ”๋กœ๊ทธ๋“ค์„ ๋ณด๊ณ  ๋”ฐ๋ผํ–ˆ๋Š”๋ฐ ํ•ด๋‹น ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋Œ€์‹  snap์œผ๋กœ Certbot์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. apt์™€ ๋น„์Šทํ•œ(?) ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค. snap์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด sn..
์ฐธ๊ณ 1 ์ฐธ๊ณ 2 1. Nginx ์„ค์น˜ sudo apt install nginx sudo service nginx start ๋กœ nginx๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. sudo service nginx status ๋กœ ์‹คํ–‰์ด ์ž˜ ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 2. Nginx ์„ค์ • nginx์˜ ์„ค์ •๋“ค์€ ๋ชจ๋‘ nginx.conf ์— ์žˆ๋‹ค. nginx.conf ์˜ http ๋ธ”๋ก์— include ๋˜์–ด ์žˆ๋Š” ํŒŒ์ผ๋“ค์ด๋‹ค. include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; /conf.d : conf ์ €์žฅ ํด๋”. ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์„ค์ •์€ conf.d ํด๋” ํ•˜์œ„์˜ ์„ค์ •์œผ๋กœ ๋นผ์„œ include ํ•ด์˜ค๋Š” ๋ฐฉ์‹์œผ๋กœ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค. /sites-enabled : ํ™œ์„ฑํ™”..
ํ•œ๊ทœ์ง„
'๐Ÿง‘‍๐Ÿ’ป ์งง์€ํ˜ธํก/~ 2021' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)