Express 서버를 클라우드에 배포하는 방법은 여러 가지가 있습니다. AWS, Heroku, Vercel, DigitalOcean 등 다양한 클라우드 플랫폼에서 Express 애플리케이션을 배포할 수 있습니다. 이 중 **AWS EC2**를 사용한 배포 과정을 단계별로 설명하겠습니다.
### AWS EC2를 사용하여 Express 서버 배포하기
1. **AWS 계정 생성**:
- 먼저, [AWS 공식 사이트](https://aws.amazon.com/)에 가서 계정을 생성합니다. 이미 계정이 있다면, 로그인합니다.
2. **EC2 인스턴스 생성**:
EC2(Elastic Compute Cloud)는 AWS에서 제공하는 가상 서버입니다.
1. **EC2 대시보드로 이동**:
- AWS 콘솔에서 `EC2`를 검색하여 이동합니다.
2. **인스턴스 시작**:
- `인스턴스 시작` 버튼을 클릭하여 새로운 EC2 인스턴스를 생성합니다.
3. **AMI(Amazon Machine Image) 선택**:
- Amazon Linux 2, Ubuntu, Debian 등 원하는 운영체제를 선택합니다. 일반적으로는 **Amazon Linux 2** 또는 **Ubuntu**를 선택하는 것이 좋습니다.
4. **인스턴스 유형 선택**:
- 프리 티어 사용자라면 `t2.micro`를 선택하여 무료로 사용할 수 있습니다.
5. **키 페어 생성**:
- 새로운 키 페어를 생성하고 다운로드합니다. 이 키 파일은 이후에 서버에 SSH로 접속할 때 사용됩니다. `.pem` 파일을 안전하게 저장하세요.
6. **네트워크 설정**:
- 기본 설정으로 진행하거나, 필요에 따라 보안 그룹에서 인바운드 규칙을 수정하여 **HTTP(포트 80)**와 **SSH(포트 22)** 트래픽을 허용하도록 합니다.
7. **스토리지 설정**:
- 기본 8GB를 사용할 수 있으며, 필요에 따라 조정합니다.
8. **인스턴스 시작**:
- 설정을 완료한 후 **인스턴스 시작**을 클릭하여 EC2 인스턴스를 실행합니다.
3. **EC2 인스턴스에 SSH로 접속**:
- 인스턴스가 실행되면, 해당 인스턴스의 **퍼블릭 IP 주소**를 확인합니다.
- 터미널에서 다음 명령어로 EC2에 SSH 접속을 합니다.
```bash
ssh -i /path/to/your-key.pem ec2-user@your-ec2-public-ip
```
> `/path/to/your-key.pem` 부분에는 생성한 `.pem` 파일의 경로를 넣고, `your-ec2-public-ip` 부분에는 EC2 인스턴스의 퍼블릭 IP 주소를 입력합니다.
4. **Node.js와 npm 설치**:
- SSH로 접속한 후, 서버에 Node.js와 npm을 설치합니다. Amazon Linux 2에서는 다음 명령어로 설치할 수 있습니다:
```bash
curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
sudo yum install -y nodejs
```
설치가 완료되면 다음 명령어로 Node.js와 npm이 제대로 설치되었는지 확인합니다.
```bash
node -v
npm -v
```
5. **Express 애플리케이션 코드 업로드**:
- 로컬에서 작성한 Express 애플리케이션을 EC2 서버로 업로드하는 방법에는 여러 가지가 있습니다. 가장 일반적인 방법 중 하나는 **Git**을 사용하는 것입니다.
1. **Git 설치** (EC2 서버에서):
```bash
sudo yum install git -y
```
2. **로컬 애플리케이션을 Git 저장소에 푸시**:
- Express 애플리케이션이 있는 디렉토리에서 Git을 초기화하고, 원격 저장소에 푸시합니다.
```bash
git init
git remote add origin <your-repository-url>
git add .
git commit -m "Initial commit"
git push origin master
```
3. **EC2 서버에서 애플리케이션 클론**:
- EC2 서버에서 Git 저장소를 클론합니다.
```bash
git clone <your-repository-url>
cd your-repository-directory
```
6. **npm 패키지 설치**:
- Express 서버 코드가 EC2 서버에 업로드되면, 필요한 패키지를 설치합니다.
```bash
npm install
```
7. **Express 서버 실행**:
- 기본적으로, Express 서버는 로컬 환경에서 `localhost:3000`과 같은 주소에서 실행되지만, 클라우드 환경에서는 EC2 인스턴스의 퍼블릭 IP를 사용해야 합니다. `server.js`나 `app.js` 파일에서 아래와 같이 `process.env.PORT`를 사용할 수 있도록 설정합니다.
```javascript
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
```
그런 다음 서버를 실행합니다.
```bash
node app.js
```
8. **서버를 외부에서 접근 가능하도록 설정**:
- Express 서버는 `localhost`에서 실행되므로 외부에서 접근하려면 인바운드 보안 그룹에서 포트를 열어야 합니다.
- EC2 인스턴스의 **보안 그룹** 설정에서 인바운드 규칙에 **HTTP(포트 80)** 규칙을 추가하여 웹 트래픽을 허용합니다.
9. **서버를 백그라운드에서 실행 (PM2 사용)**:
- 서버가 터미널을 닫을 때마다 종료되지 않도록, **PM2**를 사용하여 Express 서버를 백그라운드에서 실행할 수 있습니다.
```bash
sudo npm install -g pm2
pm2 start app.js
pm2 startup # 서버 재부팅 시 자동 실행 설정
pm2 save
```
10. **도메인 연결 및 HTTPS 설정 (선택 사항)**:
- 서버에 **도메인**을 연결하고, **HTTPS**(SSL 인증서)를 설정하려면 **Nginx**를 사용하거나 **Let’s Encrypt**로 SSL 인증서를 무료로 설치할 수 있습니다.
---
### 결론
이 과정은 **AWS EC2**를 사용하여 Express 서버를 배포하는 단계별 방법입니다. AWS 외에도 **Heroku**, **Vercel**, **DigitalOcean** 등 다양한 클라우드 플랫폼에서 배포할 수 있습니다. 각 플랫폼은 배포 프로세스가 약간 다르지만, 기본적인 원리는 비슷합니다.
**a.** Nginx를 사용한 EC2의 Express 서버 리버스 프록시 설정 방법
**b.** Heroku를 사용하여 Express 서버를 배포하는 방법
'백엔드 > Node.js' 카테고리의 다른 글
[Node.js] Sequlize 마이그레이션 방법 (1) | 2024.11.01 |
---|---|
[Node.js] Node.js + Express + Sequelize + MySQL 라우터 및 컨트롤러 설정 방법 (0) | 2024.10.30 |
[Node.js] Node.js + Express + Sequelize + MySQL 프로젝트 세팅 방법 (0) | 2024.10.30 |
[Node.js] Express에서 쿠키&세션 사용방법 (0) | 2024.08.24 |
[Node.js] 시퀄라이즈(Sequelize)를 활용한 Node.js & Express & MySQL 연동 (0) | 2024.08.23 |