- ec2 ๋ฐ๊ธ
- ufw ์ค์ ๋ฐ port ๊ตฌ์ฑ๋
- swap ๋ฉ๋ชจ๋ฆฌ ์ค์
- docker ์ค์น (+ Ubuntu ๊ธฐ๋ณธ ํ๊ฒฝ ์ธํ )
- docker-compose & jenkins ์ค์น
- jenkins gitlab ์ฐ๋(project-build) ๋ฐ ํ๋ฌ๊ทธ์ธ ์ค์น
- Nginx
- https ์ ์ฉ
- Jenkins Pipeline ์์ฑ
- S3 ์ค์น ๋ฐ ์ค์
- RDS ์ค์น ๋ฐ ์ค์
jenkins gitlab ์ฐ๋(project-build) ๋ฐ ํ๋ฌ๊ทธ์ธ ์ค์น
Backend Dockerfile(๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋ํํ๋๋ฐ ์ฌ์ฉ)
FROM openjdk:17-jdk-alpine
VOLUME /tmp
ADD ./build/libs/backend-0.0.1-SNAPSHOT.jar app.jar
ENV JAVA_OPTS=""
ENTRYPOINT ["java", "-jar", "/app.jar"]
- FROM openjdk:17-jdk-alpine
: openjdk:17-jdk-alpine ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ docker ์ด๋ฏธ์ง๋ฅผ ์์ฑ
- openjdk:17-jdk-alpine ๋ OpenJDK 17์ ํฌํจ + ๋ฆฌ๋ ์ค ๋ฐฐํฌํ ์ค ํ๋์ธ Alpine Linux ๊ธฐ๋ฐ์ ์ด๋ฏธ์ง
- Alpine Linux๋ ๊ฒฝ๋ํ๊ฐ ์ ๋์ด ์์ด ์ปจํ ์ด๋ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์๊ฒ ์ ์งํ ์ ์๋ค - VOLUME /tmp
: /tmp ๊ฒฝ๋ก์ ๋ณผ๋ฅจ์ ๋ง์ดํธ ํจ
- ์ผ๋ฐ์ ์ผ๋ก Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์์๋ /tmp๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ์ผ ๋ฑ์ ์ ์ฅํ๋๋ฐ ์ฌ์ฉ - ADD ./build/libs/backend-0.0.1-SNAPSHOT.jar app.jar
: ๋ก์ปฌ ํ์ผ ์์คํ ์ backend-0.0.1-SNAPSHOT.jar ํ์ผ์ ์ปจํ ์ด๋์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ app.jar๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ณต์ฌ
- ADD๋ COPY์ ์ ์ฌํ์ง๋ง ์๊ฒฉ URL์์ ํ์ผ์ ๋ค์ด๋ก๋ํ๊ฑฐ๋ ๋ก์ปฌ ํ์ผ์ ์๋์ผ๋ก ์์ถ ํด์ ํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐ๋ก ์ ๊ณต - ENV JAVA_OPTS=""
: ํ๊ฒฝ ๋ณ์ JAVA_OPTS๋ฅผ ์ค์
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋น ๋ฌธ์์ด๋ก ์ค์ ๋์ด ์์ - ENTRYPOINT ["java", "-jar", "/app.jar"]
: ์ปจํ ์ด๋๊ฐ ์์๋ ๋ ์คํ๋๋ ๋ช ๋ น์ด๋ฅผ ์ง์
- java ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋๋ฐ ์ฌ์ฉ๋๋ ๋ช ๋ น์ด
- -jar ์ต์ ๋ค์์ ์ ํ๋ฆฌ์ผ์ด์ JAR ํ์ผ์ ๊ฒฝ๋ก์ธ /app.jar๋ฅผ ์ง์ ํจ
Frontend Dockerfile
FROM node:20.12.0
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
EXPOSE 3000
RUN npm run docs-build
CMD ["npm","run", "docs"]
- 'FROM node:20.12.0'.
: 'node:20.12.0' ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ Docker ์ด๋ฏธ์ง๋ฅผ ์์ฑ - WORKDIR /app
: 'WORKDIR' ๋ช ๋ น์ด๋ Docker ์ด๋ฏธ์ง ๋ด์์ ์์ ๋๋ ํ ๋ฆฌ๋ฅผ '/app' ์ผ๋ก ์ค์
์ดํ์ ๋ช ๋ น์ด๋ค์ ์ด ๋๋ ํ ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ์คํ - COPY package.json /app
: ํธ์คํธ ๊ธฐ๊ธฐ์ 'package.json' ํ์ผ์ ์ด๋ฏธ์ง ๋ด์ '/app' ๋๋ ํ ๋ฆฌ๋ก ๋ณต์ฌ - RUN npm install
: npm install ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ package.json์ ์ ์๋ Node.js ํ๋ก์ ํธ์ ์์กด์ฑ์ ์ค์น - COPY . /app
: ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ํ์ผ๊ณผ ์๋ธ๋๋ ํ ๋ฆฌ๋ฅผ ์ด๋ฏธ์ง ๋ด์ '/app' ๋๋ ํ ๋ฆฌ์ ๋ณต์ฌ - EXPOSE 3000
: ์นธํ ์ธ์ ๊ฐ ๋ฆฌ์ค๋ํ ํฌํธ ๋ฒํธ 3000์ Docker์ ์๋ฆผ. ์ด ํฌํธ๋ฅผ ํตํด ์ธ๋ถ์ ํต์ ํ ์ ์๋ค - RUN npm run docs-build
: npm run docs-build ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ ๋ฌธ์๋ฅผ ๋น๋ํ๋ ์์ ์ ์ํ - CMD ["npm","run", "docs"]
: ์ปจํ ์ด๋๊ฐ ์คํ๋ ๋ 'npm run docs' ๋ช ๋ น์ ์คํ(์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์๋ฅผ ํธ์คํ ํ๊ฑฐ๋ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ)
Ngnix
Ngnix ????
: ๊ฒฝ๋ ์น์๋ฒ๋ก ์ ์ ํ์ผ์ serving ํ๋ web server ๋๋ ์์ฒญ์ ๋ค๋ฅธ ์๋ฒ๋ก ์ ๋ฌํ๋ reverse proxy server๋ก ํ์ฉ๋์ด was์ ๋ถํ๋ฅผ ์ค์ด๋ ๋ก๋ ๋ฐธ๋ฐ์๋ก ์ฌ์ฉํ ์ ์๋ค
=> ์น ์๋ฒ์ค apache์์ ํ์ด์ : ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์
apache ์น ์๋ฒ์ ๊ฒฝ์ฐ ์์ฒญ๋ง๋ค ์๋ก์ด ์ฐ๋ ๋๋ฅผ ์์ฑํ์ฌ ์์ฒญ์ ์ฒ๋ฆฌ๋๋ฏ๋ก ์์ฒญ์ด ๋ง์ผ๋ฉด ๋ง์์๋ก ์์์ด ๋ง์ด ์๋ชจ๋๋ค
๋ฐ๋ฉด์ nginx๋ event-driven ๊ตฌ์กฐ๋ก ๋์ํ๋๋ฐ, ์ด ๋๋ฌธ์ ํ๋ ๋๋ ๊ณ ์ ๋ ๊ฐ์์ ํ๋ก์ธ์ค๋ง ์์ฑ๋๊ณ ์์ฒญ๋ค์ ๋์์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ณด๋ค ์ ์ ์์์ผ๋ก๋ ํจ์จ์ ์ธ ์ด์ฉ์ด ๊ฐ๋ฅ
sudo apt update
sudo apt-get install nginx
- sudo apy update : ์์คํ ์ ํจํค์ง ๋ชฉ๋ก ์ ๋ฐ์ดํธ
- sudo apt-get install nginx : nginx ์น ์๋ฒ๋ฅผ ์ค์น
nginx ์น ์๋ฒ์์ ์๋ก์ด ์ฌ์ดํธ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ
sudo nano /etc/nginx/sites-available/๋ด๊ฐ ๋ง๋ค ๊ฒ
vi์ฝ๋๋ก ์ด๊ณ ๋ฐ์ ๋ช
๋ น์ด๋ฅผ ์์ฑํ๋ค.
server {
listen 80; // ์๋ฒ๊ฐ 80๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ์ฌ HTTP ์์ฒญ์ ์์ ํ๋๋ก ์ค์
server_name abc.com www.abc.com; // ํด๋น ๋๋ฉ์ธ์ผ๋ก ๋ค์ด์ค๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋๋ก ํจ
root /var/www/abc.com/html; // ์น ๋ฌธ์์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ฅผ ์ ์ฅ(์ค์ ์น ํ์ผ๋ค์ด ์ฌ๊ธฐ ์์น/ abc.com์ ๋ด ๋๋ฉ์ธ์ผ๋ก ๋ณ๊ฒฝํด์ผํจ)
index index.html index.htm index.nginx-debian.html; // ๊ธฐ๋ณธ ์ธ๋ฑ์ค ํ์ผ๋ค์ ์ ์ nginx๋ ์์ฒญ๋ ๋๋ ํ ๋ฆฌ์ ์ด ํ์ผ์ด ์์ผ๋ฉด ํด๋น ํ์ผ์ ์๋ต์ผ๋ก ๋ณด๋
location / { // ๋ฃจํธ url('/') ์ ๋ํ ์ค์ ์ ์ ์
try_files $uri $uri/ =404; // ์์ฒญ๋ ํ์ผ์ด ์์ผ๋ฉด ํด๋น ํ์ผ์ ์๋น, ์์ผ๋ฉด ๋๋ ํ ๋ฆฌ๋ฅผ ํ์ธ, ๋๋ค ์์ผ๋ฉด 404 ์ค๋ฅ๋ฅผ ๋ฐํ
}
}
ํด๋น ํ์ผ์ sites-enabled๋ก ์ฎ๊ฒจ์ค๋ค.
: sites-available ๋๋ ํ ๋ฆฌ๋ ๋ชจ๋ ์ฌ์ดํธ์ ์ค์ ํ์ผ์ ๋ณด๊ดํ๋ ๊ณณ / sites-enabled๋ ํ์ฌ ํ์ฑํ๋ ์ฌ์ดํธ์ ์ค์ ํ์ผ์ ๋ํ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ณด๊ดํจ์ผ๋ก์จ, ํน์ ์ฌ์ดํธ๋ฅผ ์ฝ๊ฒ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํ ์ ์๋ค
nginx ์ฌ์คํ
sudo nginx -t // nginx์ ์ค์ ํ์ผ์ ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธ
sudo systemctl restart nginx // nginx ์ฌ์์
sudo service nginx status // nginx๊ฐ ์ ์คํ์ค์ธ์ง ํ์ธ
๊ทธ ํ์ ec2 ํผ๋ธ๋ฆญ ip์ฃผ์๋ก ์ ์ํ๋ฉด
์ฐธ๊ณ
https://blog.naver.com/gi_balja/223028077537
https://velog.io/@dev_leewoooo/Forward-Proxy-Reverse-Proxy%EC%97%90-%EA%B4%80%ED%95%98%EC%97%AC
'Devops' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฐํฌ ์ ๋ฆฌํ๊ธฐ(4) https ์ ์ฉํ๊ธฐ (0) | 2024.05.17 |
---|---|
๋ฐฐํฌ ์ ๋ฆฌํ๊ธฐ (2) docker, docker-compose ์ค์น (0) | 2024.05.14 |
๋ฐฐํฌ ์ ๋ฆฌํ๊ธฐ (1) ec2 ๋ฐ๊ธ, ufw ์ค์ , swap ๋ฉ๋ชจ๋ฆฌ ์ค์ (0) | 2024.05.07 |