qminlee723 / Trippy

Trippy - A social media for travelers (mobile web project)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

image-20220819115508105

[TOC]

๐Ÿคธ Trippy

์—ฌํ–‰์— ํŠนํ™”๋œ ์—ฌํ–‰ ์ฝ”์Šค ๊ณต์œ  SNS, Trippy! ๋‚˜์˜ ์—ฌํ–‰์„ ๋‚ด ์—ฌํ–‰ ์ฝ”์Šค ์ˆœ์„œ๋Œ€๋กœ ์‚ฌ์ง„๊ณผ ํ•จ๊ป˜ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋Š” SNS ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ก๊ณผ ๊ณต์œ ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ, ๋‹ค์–‘ํ•œ ์‚ฌ๋žŒ๋“ค๊ณผ ํ•จ๊ป˜ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ๋™ํ–‰ ์ฐพ๊ธฐ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : ๋ชจ๋ฐ”์ผ ์ „์šฉ ์›น์ด๋ฏ€๋กœ ๋ชจ๋ฐ”์ผ์—์„œ ๊ฐ€์žฅ ์ตœ์ ํ™”๋œ ์ƒํƒœ๋กœ ์ด์šฉ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค

๐Ÿ”ธTrippy ๋ฐ”๋กœ๊ฐ€๊ธฐ: https://i7a506.p.ssafy.io/

๐Ÿ”ธUCC ์˜์ƒ ๋ฐ”๋กœ๊ฐ€๊ธฐ: https://youtu.be/udKdfa8RtG4

๐Ÿงก ์ œ์ž‘ ๋ฐฐ๊ฒฝ & ์ฃผ์š” ๊ธฐ๋Šฅ ์†Œ๊ฐœ

๐Ÿ”ธ์ œ์ž‘ ๋ฐฐ๊ฒฝ

COVID 19๋กœ ์–ต๋ˆŒ๋ ธ๋˜ ์—ฌํ–‰์š•๊ตฌ, ์ด์ œ๋Š” ๋ถ„์ถœํ•  ๋•Œ! ์˜ค๋žœ ๊ธฐ๊ฐ„ ์—ฌํ–‰์„ ์‰ฌ์—ˆ๋”๋‹ˆ ์—ฌํ–‰, ์–ด๋””๋กœ ๊ฐ€์•ผํ• ์ง€ ์–ด๋–ป๊ฒŒ ์ค€๋น„ํ•ด์•ผํ• ์ง€ ๋ง‰๋ง‰ํ•˜์‹œ์ฃ ?

Trippy๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์–ด๋–ค ๊ณณ์„ ์–ด๋–ป๊ฒŒ ๋‹ค๋…€์™”๋Š”์ง€ ์•Œ์•„๋ณด์„ธ์š”!

Trippy๋Š” ํƒ€ SNS์™€๋Š” ๋‹ฌ๋ฆฌ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ผ์ • ์ง€์—ญ์„ ์—ฌํ–‰๋‹ค๋‹Œ ์ฝ”์Šค๋ฅผ ํ•œ ๋ˆˆ์— ์ง€๋„์—์„œ ๋ณผ ์ˆ˜ ์žˆ์–ด ์ผ์ • ํŒŒ์•…์ด ์šฉ์ดํ•˜๊ณ , ๋ˆ„๊ตฌ์™€ ์–ด๋–ค ์ด๋™์ˆ˜๋‹จ์„ ๊ฐ€์ง€๊ณ  ์–ธ์ œ ๊ฐ”๋Š”์ง€๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ”ธ์ฃผ์š” ๊ธฐ๋Šฅ

๋‹ค์ด์–ด๋ฆฌ

  • Trippy์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์ด์–ด๋ฆฌ์ž…๋‹ˆ๋‹ค.

  • ๋‹ค์ด์–ด๋ฆฌ์—๋Š” trippy ์ด์šฉ์ž๋“ค์ด ๋‹ค๋…€์˜จ ์—ฌํ–‰์ง€์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๋Š”๋ฐ, ํ•ด๋‹น ์ •๋ณด๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    image-20220819023131170

    • ์—ฌํ–‰ ์ผ์ •
    • ๋ˆ„๊ตฌ์™€ ๋‹ค๋…€์™”๋Š”์ง€, ๋ช‡ ๋ช…๊ณผ ํ•จ๊ป˜ ๊ฐ”๋Š”์ง€
    • ์ด๋™์ˆ˜๋‹จ์ด ๋ฌด์—‡์ธ์ง€
  • ์—ฌํ–‰์ง€์—์„œ์˜ ๊ฒฝ๋กœ๋ฅผ ํ•œ ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ง€๋„(ํ•ด์™ธ๋„ ๊ฐ€๋Šฅ๐ŸŒ!)

    image-20220819023226182

  • ๊ทธ๋ฆฌ๊ณ  ์—ฌํ–‰ ๊ฒฝ๋กœ๋งˆ๋‹ค ์ž์‹ ๋งŒ์˜ ์‚ฌ์ง„๊ณผ ๊ธ€์„ ๊ธฐ๋กํ•˜์—ฌ ์ž์‹ ๋งŒ์˜ ์—ฌํ–‰ ์ฝ”์Šค๋ฅผ ์†์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๋™ํ–‰์ฐพ๊ธฐ

  • ์—ฌํ–‰์„ ๋‹ค๋‹ˆ๋‹ค๋ณด๋ฉด ํ˜ผ์ž์„œ๋Š”, ํ˜น์€ ๋‘˜์ด์„œ๋Š” ํ•  ์ˆ˜ ์—†๋Š” ์ผ๋“ค์ด ๋งŽ์€ ๊ฒƒ์„ ๋Š๋ผ์…จ์„๊ฑฐ์˜ˆ์š”

  • Trippy์˜ ๋™ํ–‰์ฐพ๊ธฐ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•œ๋‹ค๋ฉด, ๋น„์Šทํ•œ ์žฅ์†Œ์— ์œ„์น˜ํ•œ ์‚ฌ๋žŒ๋“ค๋ผ๋ฆฌ์˜ ๋ชจ์ž„์ด ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค!

๊ฒŒ์ด๋ฏธํ”ผ์ผ€์ด์…˜

  • Trippy ์•ˆ์—์„œ์˜ ํ™œ๋ฐœํ•˜๊ฒŒ ํ™œ๋™ํ•œ๋‹ค๋ฉด, ๊ท€์—ฌ์šด ๋ฑƒ์ง€๋„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์š”!

image-20220819032040568

๐Ÿงก ์‚ฐ์ถœ๋ฌผ

๐Ÿงก ํ˜‘์—…

๐Ÿ”ธ๋ฌด์†กํ•ฉ๋‹ˆ๋‹ค ํŒ€์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค!

image-20220820231014938

๐Ÿ”ธํ˜‘์—… ํˆด

  • Gitlab
  • Jira
  • Notion
  • Mattermost
  • Webex

๐Ÿ› ๏ธ Tech Stack

๐Ÿ”ธbackend

  • IntelliJ IDE
  • Springboot 2.7.2
  • Spring Data JPA
  • Spring Security
  • MySQL
  • Redis
  • QueryDSL
  • Swagger 3.0.0

๐Ÿ”ธfrontend

  • Visual Studio Code IDE
  • Vue 3.2.37
  • Vuex 4.0.2
  • Element Plus (UI Framework)

๐Ÿ”ธCI/CD

  • Docker
  • AWS EC2
  • Jenkins
  • NGINX
  • SSL

โš™๏ธ Installation & Deployment

๐Ÿ”ธUbuntu ๊ธฐ๋ณธ ์„ค์น˜

sudo apt-get install nodejs
sudo apt-get install npm

๐Ÿ”ธdocker ์„ค์น˜

# ํ•„์ˆ˜ ํŒจํ‚ค์ง€ ์„ค์น˜
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# GPG Key ์ธ์ฆ
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# docker repository ๋“ฑ๋ก
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# ๋„์ปค ์„ค์น˜
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io
# ์‹œ์Šคํ…œ ๋ถ€ํŒ…์‹œ ๋„์ปค ์‹œ์ž‘
sudo systemctl enable docker && service docker start
# ๋„์ปค ํ™•์ธ
sudo service docker status

๐Ÿ”ธcertbot ์„ค์น˜

Ubuntu 16.04 (LTS), Ubuntu 18.04 (LTS) ์ €์žฅ์†Œ ์„ธํŒ…

์ €์žฅ์†Œ ์„ค์ • ๋ฐ ์—…๋ฐ์ดํŠธ ์ง„ํ–‰

sudo apt-get update
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update

Ubuntu 20.04 (LTS) ์ €์žฅ์†Œ ์„ธํŒ…

์ €์žฅ์†Œ๋ฅผ ์„ค์ • ๋ฐ ์—…๋ฐ์ดํŠธ ์ง„ํ–‰

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo apt-get update

๊ณตํ†ต

๊ธฐ์กด์— ์„ค์น˜๋œ Certbot ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋‹ค๋ฉด ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

$ sudo apt remove certbot

certbot ์„ค์น˜

sudo apt-get install certbot python3-certbot-nginx

๐Ÿ”ธNginx ์„ธํŒ…

Certbot์ด ์ž๋™์œผ๋กœ SSL์„ ์„ธํŒ…ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— server block๊ณผ server_name์„ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

sudo vim /etc/nginx/sites-available/[your server block]

์•„๋ž˜๋Š” ์ œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. undang_backend_nginx.conf์— ๋ธ”๋ก๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์ฒ˜๋Ÿผ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

$ sudo vim /etc/nginx/sites-available/undang_backend_nginx.conf

์ด์ œ ์„œ๋ฒ„ ๋ธ”๋ก ํŒŒ์ผ ์•ˆ์— server_name์„ ์„ค์ •ํ•˜๊ณ ์ž ํ•˜๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

...

# configuration of the server

server {

```
# Put your domain next to server_name
server_name undang.twpower.me;
charset     utf-8;

# max upload size
client_max_body_size 75M;   # adjust to taste
```

...

}

์„ค์ •์ด ์™„๋ฃŒ ๋˜์—ˆ๋‹ค๋ฉด ์ €์žฅํ•˜๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ ์žฌ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

$ sudo nginx -t
$ sudo service nginx reload

๐Ÿ”ธSSL ์ธ์ฆ ํš๋“ํ•˜๊ธฐ

๋‹ค์Œ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด nginx plugin์„ ํ†ตํ•ด์„œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ์„ ์ถ”๊ฐ€์ ์œผ๋กœ ๋” ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด(์œ„์— server_name์—๋„ ๋ฌผ๋ก  ์„ค์ •์ด ๋˜์–ด์žˆ์–ด์•ผ๊ฒ ์ฃ ?) -d ์˜ต์…˜์„ ์ฃผ๊ณ  ๋” ์ฃผ๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

sudo certbot --nginx -d example.com -d www.example.com

์ œ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

sudo certbot --nginx -d i7a506.p.ssafy.io

๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด 1๊ณผ 2๋ฅผ ์„ ํƒํ•˜๋Š” ํ™”๋ฉด์ด ๋‚˜์˜ค๋Š”๋ฐ ์ €์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ https๋กœ ํ•˜๊ณ  ์‹ถ์–ด์„œ redirect๋ฅผ ํ—ˆ์šฉํ•˜๋Š” 2๋ฒˆ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

## Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
## 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

๋ฒˆํ˜ธ๋ฅผ ์„ ํƒํ•ด์ฃผ๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์ง„ํ–‰๋˜๋ฉฐ key๋“ค๋„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

https://twpower.github.io/images/20170517_44/success.png

๐Ÿ”ธ์ธ์ฆ์„œ ์ž๋™๊ฐฑ์‹  ์„ค์ • ํ™•์ธ

์„ค์ •ํ•œ certbot์€ 90์ผ ๋™์•ˆ๋งŒ ์œ ํšจํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐฑ์‹ ์„ ํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค. ๋งค๋ฒˆ ํ•ด์ฃผ๊ธฐ ๊ท€์ฐฎ์œผ๋‚˜ ์„ค์น˜ํ•œ certbot์€ ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ์„ ์ดํ‹€ ๋‹จ์œ„๋กœ ํ•ด์ค๋‹ˆ๋‹ค.

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

sudo certbot renew --dry-run

Ubuntu์˜ ๊ฒฝ์šฐ /etc/cron.d/์— ๋ณด๋ฉด certbot์ด ์ƒ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ธ SSL ์ ์šฉ ํ™•์ธ ๋ฐ ํ‰๊ฐ€

๋ณธ์ธ์˜ ์„œ๋ฒ„์— SSL์ด ์ ์šฉ์ด ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ๋Š”๋ฐ ๋“ค์–ด๊ฐ€์„œ ๋ณธ์ธ์˜ ์„œ๋ฒ„ ๋„๋ฉ”์ธ์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

https://www.ssllabs.com/ssltest/

https://twpower.github.io/images/20170517_44/ssl-test.png

๐Ÿ”ธDocker ์ดˆ๊ธฐํ™”

์‹คํ–‰ ์ค‘์ธ ๋„์ปค ์ค‘, ์ด๋ฆ„์ด๋‚˜ ํฌํŠธ๊ฐ€ ๊ฒน์น  ์œ„ํ—˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์ง€๋ฅผ ์‹œํ‚ต๋‹ˆ๋‹ค.

# ๋„์ปค ์‹œ์ž‘ ์ „, ๊ธฐ์กด์— ์‹คํ–‰์ค‘์ธ ๋„์ปค๋ฅผ ๋ฉˆ์ถ”๊ณ  ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—….
docker ps -f name=frontend -q | xargs --no-run-if-empty docker container stop
docker ps -f name=backend -q | xargs --no-run-if-empty docker container stop

# ์ปจํ…Œ์ด๋„ˆ ์ œ๊ฑฐ
docker container ls -a -f name=frontend -q | xargs -r docker container rm
docker container ls -a -f name=backend -q | xargs -r docker container rm'

# ๋„์ปค ์ด๋ฏธ์ง€ ์ œ๊ฑฐ
docker images -f dangling=true && docker rmi $(docker images -f dangling=true -q)

๐Ÿ”ธfrontend Dockerfile ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ฐ ๋นŒ๋“œ ์‹คํ–‰

docker build -t ygpark96/frontend .
docker run -d -p 8081:80 --name frontend ygpark96/frontend
  • ์—ฌ๊ธฐ์„œ /etc/letsencrypt/live/๋„๋ฉ”์ธ์ด๋ฆ„/ ๊ฒฝ๋กœ๋Š” SSL ์ธ์ฆ ํ‚ค๊ฐ€ ์žˆ๋Š” ์œ„์น˜์ž…๋‹ˆ๋‹ค. vue.js ๋นŒ๋“œ์™€ nginx๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”ธbackend Dockerfile ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ฐ ๋นŒ๋“œ ์‹คํ–‰

docker build -t ygpark96/backend .
docker run -d -p 8080:8080 --name backend ygpark96/backend
  • springboot Gradle Multi Module์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

About

Trippy - A social media for travelers (mobile web project)


Languages

Language:Java 45.9%Language:Vue 43.3%Language:JavaScript 10.5%Language:HTML 0.2%Language:Dockerfile 0.1%