일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 타입좁히기
- const 단언문
- javascript
- 리액트
- JS console
- 타입스크립트
- 성능최적화
- 레이아웃쪼개기
- react
- 개발콘텐츠
- 반복줄이기
- TSDoc
- 2022
- click and drag
- utilty type
- returnType
- 누구나 자료구조와 알고리즘
- 공통컴포넌트
- 폰트적용하기
- 커스텀
- reactjs
- Chart.js
- React Native
- 티스토리꾸미기
- NonNullable
- React.js
- typescript
- CSS
- vue.js
- 제네릭
- Today
- Total
몽땅뚝딱 개발자
서버 관련: ssh, nginx, Docker, GitHub Actions 본문
1. ssh란?
ssh란 Secure Shell의 줄임말이다. 아래 명령어는 원격서버에 보안 연결로 접속하는 명령어이다.
.pem은 Private Key 파일 확장자로 EC2 인스턴스를 만들 때 생성되는 비밀번호 대신 사용하는 인증키이다.
ssh -i my-key.pem ubuntu@your-ip
* 도서추천: 처음 배우는 AWS, 모두의 리눅스
2. nginx
가볍고 빠른 웹 서버 소프트웨어이다.
정적 파일(=프론트 빌드 파일)을 클라이언트에게 전달(=서빙)하거나 백엔드 API 서버로 프록시 연결도 해준다.
nginx는 EC2 혹은 Docker 컨테이너 내부에서 실행된다.
3. Docker란?
앱 실행 환경을 통째로 포장한 박스이다. 환경설정 + 배포 + 실행을 표준화하는 기술이다.
Node, Python, MySQL, Redis 등을 설치할 필요 없이 하나의 이미지로 어디서든 동일한 환경으로 실행가능하다.
Dockerfile을 작성하고 docker build 명령어로 이미지를 생성한다.
여기서 이미지란 컨테이너를 만들기 위한 설계도 + 재료들이 담긴 것이다.
(Dockerfile -> 이미지 -> 그 이미지를 컨테이너로 실행)
Step 1. Dockerfile 생성
# Node.js 앱을 위한 Dockerfile
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]
Step 2. 이미지 만들기
docker build -t my-app .
Step 3. 이미지로부터 컨테이너 만들고 실행하기
// -p 3000:3000: 내 컴퓨터의 3000번 포트를 컨테이너의 3000번 포트에 연결하겠다는 뜻
// my-app: 실행할 Docker 이미지 이름
docker run -p 3000:3000 my-app
3-1. Docker의 실행환경
내 PC에서 run (무료)
AWS EC2에서 run
AWS ECS / Fargate 사용
Docker Hub 저장
4. GitHub Actions
CI(빌드 & 테스트): 코드 푸시 시 자동 실행
CD(배포): EC2에 SSH 접속하여 최신 코드 배포
.github/workflows/deploy.yml
EC2에 SSH로 접속해서 배포하는 예시
name: Deploy to EC2
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Copy files to EC2 via SSH
uses: appleboy/scp-action@v0.1.1 // scp-action: 코드를 EC2로 복사
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_KEY }}
source: "."
target: "/home/ubuntu/app"
- name: Run remote deploy commands
uses: appleboy/ssh-action@v1.0.0 // ssh-action: EC2 접속 후 배포 명령어 실행
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_KEY }}
script: |
cd /home/ubuntu/app
docker-compose down
docker-compose up -d --build
'Development > 환경설정' 카테고리의 다른 글
배포의 종류 (0) | 2025.06.16 |
---|---|
[Node.js] Node 프로젝트 별 버전 관리하기 (0) | 2024.01.08 |
[AWS] S3 CORS와 캐시 무효화 처리했던 방법들 정리 (0) | 2023.12.29 |
[Allow CORS: Access-Control-Allow-Origin] cors 임시 우회 확장프로그램 (0) | 2023.12.20 |
[Mocha] 테스팅 라이브러리 with. 모카(Mocha), chai - (2) 문법 (0) | 2023.05.21 |