2์ฃผ์ฐจ์— ํ•œ์ผ!

์™„๋ฃŒ๋œ ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž… API๋ฅผ ๋ฐฐํฌํ•˜์—ฌ ํ”„๋ก ํŠธ์™€ ์—ฐ๊ฒฐํ•˜๋Š” ์ž‘์—…์„ ํ–ˆ๋‹ค. 

์—ฌ์œ ๊ฐ€ ์ƒ๊ฒจ ํšŒ์›๊ฐ€์ž… ์ธ์ฆ์ฝ”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(nodemailer)๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. 

ํšŒ์›๊ฐ€์ž…์„ ํ•˜๋ ค๋ฉด ์ธ์ฆ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ ๋˜์„œ ๋ฒˆ๊ฑฐ๋กญ๊ฒŒ ๋ฌ๋‹ค.

 

๊ธฐํš๋‹จ๊ณ„์—์„œ socket๊ด€๋ จ ์ง€์‹์ด ์—†์œผ๋‹ˆ API๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค๊ฑฐ๋‚˜ ์ด๋ฒคํŠธ ์ด๋ฆ„์„ ์„ค์ •ํ•˜์ง€ ์•Š์•˜์—ˆ๋‹ค.

๋˜ํ•œ, mysql ์— ์ฑ„ํŒ…๊ด€๋ จํ•œ ํ…Œ์ด๋ธ”์„ ์ถ”๊ฐ€ํ–ˆ๊ณ , ์†Œ์ผ“์„ ๋ฐฐํฌ๋œ ํ™˜๊ฒฝ๊ณผ ์—ฐ๊ฒฐ์„ ์‹œ์ผฐ๋‹ค. 

 

๋ฉ”์ธํŽ˜์ด์ง€๊ฐ™์€ ๊ฒฝ์šฐ, ํ”„๋ก ํŠธ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์†์ ์œผ๋กœ ์ถ”๊ฐ€๋˜์–ด

์ง€์†์ ์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค. ๊ทธ๋งŒํผ Mysql์„ ์ฟผ๋ฆฌ๋ฌธ์˜ Inner Join, ์ƒˆ๋กœ์šด group ์ƒ์„ฑํ•˜์—ฌ ๋‹ค์‹œ ์ ์šฉํ–ˆ๋‹ค.

 

Mysql ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ํ†ตํ•ด์„œ 1๋ถ„๋งˆ๋‹ค ๊ฒŒ์‹œํŒ ์ข…๋ฃŒ์‹œ์ ์„ ์ง€๋‚œ ๊ฒฝ์šฐ, ์™„๋ฃŒ๋œ ์ƒํƒœ๋กœ ์ž๋™ํ™” ์‹œ์ผฐ๋‹ค.

๋˜ํ•œ, ์ด๋ฉ”์ผ๋กœ ๋ณด๋‚ด์ง€๋Š” ์ธ์ฆ์ฝ”๋“œ๋Š” DB์— ์ €์žฅ๋˜๊ณ  ์žˆ์–ด 5๋ถ„๋งˆ๋‹ค ์‚ญ์ œ๋˜์–ด DB์˜ ์šฉ๋Ÿ‰์ด ๊ณผ๋ถ€ํ™” ๋˜์ง€ ์•Š๊ฒŒ ํ•˜์˜€๋‹ค.

 

 

 

2์ฃผ์ฐจ: ๊ธฐ์ˆ ์ ์ธ ์ด์Šˆ์™€ ํ•ด๊ฒฐ

์ด์Šˆ1. Mysql ์—๋Ÿฌ, Error Code: 1071. Specified key was too long; 

Mysql์—์„œ Primary Key(PK)๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์„ค์ • ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ง์—,

์œ ์ € ๊ณ ์œ ๋ฒˆํ˜ธ, ์ด๋ฉ”์ผ, ๋‹‰๋„ค์ž„, ์‹ฌ์ง€์–ด ์ด๋ฏธ์ง€๊นŒ์ง€ ์„ค์ •์„ ํ–ˆ๋‹ค. 

 

ํ•˜์ง€๋งŒ, ์ด๋ฏธ์ง€๊ฐ™์€ ๊ฒฝ์šฐ Varchar(5000)์œผ๋กœ ์„ค์ •ํ•ด๋‘” ์ƒํƒœ์˜€๋‹ค. 

์ด PK์˜ ๋ฌธ์ž๊ธธ์ด๊ฐ€ ์ œํ•œ์ด ๋˜์–ด์žˆ๋Š”๋ฐ, ๊ทธ ๊ธธ์ด๋ณด๋‹ค ๋” ๊ธธ์–ด์ ธ์„œ ์ƒ๊ธด ๋ฌธ์ œ์˜€๋‹ค. 

์ด๋ฏธ์ง€๋ฅผ PK์—์„œ ์ œ์™ธํ•˜๋‹ˆ, ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค. 

 

 

 

 

Clone Project: Slack

 

 

ํ”„๋กœ์ ํŠธ: Slack (ํด๋ก  ํ”„๋กœ์ ํŠธ)

์„ค๋ช…: Socket ๊ธฐ๋Šฅ๊ตฌํ˜„์„ ์œ„ํ•ด Slack์„ ํด๋ก ์ฝ”๋”ฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

์ œ์ž‘: 2022.04.15~2022.04.21

 

์‹œ์—ฐ์˜์ƒ: https://www.youtube.com/watch?v=nZWXoWw93bg&t=1s 

๊นƒํ—ˆ๋ธŒ: Frontend Github / Backen Github

๋…ธ์…˜: https://zircon-dolphin-2d9.notion.site/7cf89428eab0438abb8e85dab3e734b0

 

 

 


์‚ฌ์šฉ๊ธฐ์ˆ 
  • Server: AWS EC2 (Ubuntu 18.04 LTS)
  • Framework: Express (Node.js)
  • Database: MongoDB (Mongoose)
  • JWT (Json Web Token)
  • Joi
  • Bcrypt
  • CORS
  • Multer
  • Front-end: React

 


ํ•ต์‹ฌ๊ธฐ๋Šฅ
  • ๋กœ๊ทธ์ธํŽ˜์ด์ง€
    • ์•„์ด๋””, ํŒจ์Šค์›Œ๋“œ ์ž…๋ ฅ ๊ฐ€๋Šฅ
    • ๋กœ๊ทธ์ธ ์‹œ, ํ† ํฐ์ „๋‹ฌ (๋ชจ๋“ ํŽ˜์ด์ง€์—์„œ ํ•ด๋‹น ํ† ํฐํ™•์ธ)
    • ์ด๋ฉ”์ผ ํ˜•์‹ ํ™•์ธ ๊ฐ€๋Šฅ
    • ์•„์ด๋””/๋‹‰๋„ค์ž„ ์ค‘๋ณต๊ฒ€์‚ฌ ๊ฐ€๋Šฅ
    • ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌํ™•์ธ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ
  • ์ฑ„๋„ํŽ˜์ด์ง€
    • ์ฑ„๋„ ์กฐํšŒ, ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ ๊ฐ€๋Šฅ
    • ์ฑ„๋„ ๋‚ด ๋‚ด์šฉ ์กฐํšŒ, ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ ๊ฐ€๋Šฅ (์ˆ˜์ •์‹œ, ํŽธ์ง‘๋จ ํ‘œ์‹œ)
    • ๋‚ด์šฉ ๋‚ด ์ฝ”๋ฉ˜ํŠธ ์กฐํšŒ, ์ƒ์„ฑ, ์‚ญ์ œ ๊ฐ€๋Šฅ
  • ๋‹ค์ด๋ ‰ํŠธ๋ฉ”์‹œ์ง€ ํŽ˜์ด์ง€
    • ์นœ๊ตฌ๋“ค๊ณผ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๊ฐ€๋Šฅ

Trouble Shooting

 

โ–ถ๋ชฝ๊ตฌ์Šค์˜ contentId ์ƒ์„œ์‹œ,  Math.random()์„ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜ ๋ชฝ๊ตฌ์Šค์— ์ˆซ์ž‘๊ฐ€ ์˜จ์ „ํžˆ ์ €์žฅ๋˜์ง€ ์•Š์•„ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. 

Math.random()์— ๋‚˜ํƒ€๋‚œ ๋‚œ์ˆ˜๋ฅผ ๊ธ€์ž๋กœ ๋ฐ”๊พธ์–ด ์งง์€ id๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

Math.random().toString(36).substr(3)

 

โ–ถ์ฑ„๋„ ๋‚ด ContentList์—์„œ ์„ ํƒ๋œ content๋งŒ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ Delete ์‚ฌ์šฉ์‹œ ๋‚ด์šฉ ์ „์ฒด๊ฐ€ ์—†์–ด์กŒ๋‹ค. 

→ ์‚ญ์ œ๊ฐ€ ์•„๋‹Œ ์„ ํƒํ•œ ๋‚ด์šฉ์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋‚ด์šฉ์œผ๋กœ๋งŒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ˆ˜์ •๋˜์—ˆ๋‹ค.

 

 

 

 

 

4์›” 22์ผ ๊ธˆ์š”์ผ๋ถ€ํ„ฐ

๋“œ๋””์–ด ๋‚˜์˜ ์ฒซ ํ•ญํ•ด 99 ์‹ค์ „ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๋‹ค!

 

์ด์ „ ํ”„๋กœ์ ํŠธ์™€ ๋‹ค๋ฅด๊ฒŒ 6์ฃผ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋‹ˆ,

ํ”„๋กœ์ ํŠธ๋ฅผ ์‹ค์ œ ์‚ฌ์šฉ๋˜๋Š” ์‚ฌ์ดํŠธ์ฒ˜๋Ÿผ ์ข€๋” ๋””ํ…Œ์ผํ•˜๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผํ•  ๊ฒƒ๊ฐ™๋‹ค.

 

๋ฏธ๋ž˜์˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ์„œ,

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์œ ์ง€, ๊ด€๋ฆฌ์— ์šฉ์ดํ•œ ํ”„๋กœ์ ํŠธ๋กœ ๋งŒ๋“œ๋Š”๋ฐ 

์ข€๋” ์ง‘์ค‘ํ•ด์•ผํ•  ๊ฒƒ๊ฐ™๋‹ค

 


1์ฃผ์ฐจ์— ํ•œ์ผ!

 

์ฒ˜์Œ ๊ธฐํšํ•œ ์‚ฌ์ดํŠธ๋Š” ๊ธฐ๋ถ€๊ด€๋ จ ์›น์‚ฌ์ดํŠธ์˜€๋‹ค.

 

 ๊ฒฐ์ œ์‹œ์Šคํ…œ์„ ๋„์ „ํ•ด๋ณด๊ณ  ์‹ถ์–ด์„œ ๊ธฐํšํ•˜์˜€๋Š”๋ฐ,

"๊ฒฐ์ œ์‹œ์Šคํ…œ์ด ๋˜๋Š”์ง€ ์•ˆ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋ผ" ๋ผ๋Š” ๋ฉ˜ํ† ๋‹˜ ๋ฆฌ๋ทฐ์—

ํ•˜์ง€๋ง๋ผ๋Š” ๋ง์ธ์ง€ ์ดํ•ด๋ฅผ ๋ชปํ•˜๊ณ ... 3์ผ๋™์•ˆ ์ง„์งœ ์‹คํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒ ์ฐพ์•„๋ดค๋”๋žฌ๋‹ค..

 

๊ธฐํš๋ฉ˜ํ† ๋ง๋ฏธํŒ…์—์„œ ๋ฉ˜ํ† ๋‹˜๊ณผ ์ง์ ‘ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๊ณ ์„œ๋Š”,

์šฐ๋ฆฌ๊ฐ€ ๊ธฐํšํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฐœ๋ฐœ์ž๋กœ์„œ ๋ณด์—ฌ์ค„ ๊ธฐ๋Šฅ๋„ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉฐ, 

์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์„ ๋Ÿฐ์นญํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„๋•Œ, ์ถฉ๋ถ„ํžˆ ์ข‹์€ ์†Œ์žฌ๊ฐ€ ์•„๋‹˜์„ ๊นจ๋‹ญ์•˜๋‹ค..... 

 

๋ถ€๋žด๋ถ€๋žด ๋‘๋ฒˆ์งธ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐํšํ•˜๊ณ  ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ–ˆ๋‹ค. 

์ฒ˜์Œ ๊ธฐํšํ–ˆ๋˜ ์†Œ์žฌ๊ฐ€ ์™€์ด์–ดํ”„๋ ˆ์ž„, API๋ช…์„ธ์„œ ์ž‘์„ฑ์ด ๊ฝค ๋นจ๋ฆฌ ๋๋‚ฌ๊ธฐ์— 

Mysql DB์—ฐ๊ฒฐ๋„ ํ•˜๊ณ , ์ฟผ๋ฆฌ๋กœ ์ง์ ‘ ์ฝ”๋“œ๋„ ์ž‘์„ฑํ•˜๊ธฐ๋„ ํ–ˆ์—ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋‘๋ฒˆ์งธ ๊ธฐํš๋œ ์ฃผ์ œ๊ฐ€ ํ™•์ •๋˜๋ฉด์„œ

ํ•˜๋ฃจ๋งŒ์— ์™€์ด์–ดํ”„๋ ˆ์ž„, API๋ช…์„ธ์„œ, ๋””์ž์ธ๋ ˆ์ด์•„์›ƒ๊นŒ์ง€ ๋๋ƒˆ๋‹ค. 

(๋ฐฐ์šฐ์ง€ ์•Š์•˜๋˜ ๊ธฐ๋Šฅ์„ ์‹œ๋„ํ•œ ๊ธฐ๋Šฅ๋“ค์€ ์™€์ด์–ดํ”„๋ ˆ์ž„๊ณผ API๋ช…์„ธ์„œ๋Š” ์ œ์™ธ๋˜์—ˆ๋‹ค.)

 

 ๋‚˜๋จธ์ง€ 2์ผ์€ ๋กœ๊ทธ์ธ๊ณผ ํšŒ์›๊ธฐ๋Šฅ์„ REST API ๊ธฐ๋Šฅ๊ตฌํ˜„์„ ์™„๋ฃŒํ–ˆ๊ณ 

ํ•ด๋‹น ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” https๋กœ ๋ฐฐํฌ๋ฅผ ์™„๋ฃŒํ•˜์˜€๋‹ค. 

 

 

 

1์ฃผ์ฐจ: ๊ธฐ์ˆ ์ ์ธ ์ด์Šˆ๊ณผ ํ•ด๊ฒฐ!

 

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์›น์‚ฌ์ดํŠธ์˜ ๋ฐ์ดํ„ฐ ๋ณด์•ˆ์„ ์œ„ํ•ด HTTPS ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. 

HTTPS๋ž€?
HTTPS๋Š” ํ•˜์ดํผ ํ…์ŠคํŠธ ์ „์†ก ํ”„๋กœํ† ์ฝœ ๋ณด์•ˆ(Hypertest Transfer Protocol Secure)์˜ ์•ฝ์ž์ด๋‹ค. 
์ผ๋ฐ˜ HTTP ํ”„๋กœํ† ์ฝœ์€ ์„œ๋ฒ„์—์„œ๋ถ€ํ„ฐ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „์†ก๋˜๋Š” ์ •๋ณด๊ฐ€ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ„ฐ์ดํ„ฐ๊ฐ€ ์‰ฝ๊ฒŒ ๋„๋‚œ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค. HTTPS ๋Š” SSL(๋ณด์•ˆ ์†Œ์ผ“ ๊ณ„์ธต)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ–ˆ๋‹ค. 

SSL์€ ์„œ๋ฒ„์™€ ๋ธŒ๋Ÿฌ์šฐ์ € ์‚ฌ์ด์— ์•ˆ์ „ํ•˜๊ฒŒ ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๊ณ , ์„œ๋ฒ„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›์„๋•Œ ์ด๊ฒƒ์ด ๋„๋‚œ ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์•„์ค€๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ, ๋„๋‚œ์„ ๋‹นํ•˜๋”๋ผ๋„ ์•”ํ˜ธํ™”๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋…ํ•  ์ˆ˜ ์—†๋‹ค. 

 

HTTPS ์—ฐ๊ฒฐ์€ ์•„๋ž˜์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

https://velog.io/@xkskxhtm96

 

 

 


 

 

์ด์Šˆ 1. crbug/1173575, non-JS module files deprecated.

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

 

*์œˆ๋„์šฐ ํ„ฐ๋ฏธ๋„(cmd) ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ›„, ์ปดํ“จํ„ฐ ์ „์›์„ ๊ป๋‹ค๊ฐ€ ์ผ ๋‹ค.

ipconfig/release

ipconfig/renew

ipconfig/flush DNS

 

 


 

 

ํ•ด๊ฒฐ๋˜๋Š”๊ฐ€ ์‹ถ๋”๋‹ˆ, ๊นƒ๋ฐฐ์‰ฌ์—์„œ port ์˜ค๋ฅ˜๋กœ ๋ฐฐํฌ๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค.

์ด์Šˆ 2. http์—์„œ https๋กœ ํฌํŠธํฌ์›Œ๋”ฉ์ด ์•ˆ๋ ๋•Œ

 

 

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

 

*๊นƒ๋ฐฐ์‰ฌ์— ์ž‘์„ฑ, ๋ชจ๋“  ํฌํŠธ๋ฅผ ์‚ญ์ œํ•˜๋ฉด๋œ๋‹ค.

1. ํฌํŠธํฌ์›Œ๋”ฉ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด 

sudo iptables -t nat -L --line-numbers

2. ํฌํŠธํฌ์›Œ๋”ฉ ์‚ญ์ œ ๋ช…๋ น์–ด (๊ฐฏ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•œ๋‹ค)

sudo iptables -t nat -D PREROUTING 1

3.  ํฌํŠธํฌ์›Œ๋”ฉ ํ™•์ธํ•˜๋Š” ๋ช…๋ น์–ด (์‚ญ์ œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.)

sudo iptables -t nat -L --line-numbers

 

 

 

์•„๋ž˜์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

https://kelly-tech.tistory.com/32

 

+ Recent posts