Express 개발 강좌, 도메인 연결 및 SSL 인증서 설정

본 강좌에서는 Express.js를 사용하여 백엔드 서버를 개발하는 방법과 함께 도메인을 연결하고 SSL 인증서를 설정하는 과정을 단계별로 설명합니다.
이러한 과정은 안전하고 신뢰할 수 있는 웹 애플리케이션을 만들기 위해 매우 중요합니다.
자바스크립트를 기반으로 한 Express.js는 빠르고 유연한 웹 애플리케이션 프레임워크로, Node.js에서 동작하는 서버 사이드 애플리케이션을 개발할 때 널리 사용됩니다.

1. Express.js 개요

Express.js는 Node.js에서 실행되는 웹 애플리케이션 프레임워크로, RESTful API를 쉽게 만들 수 있도록 돕습니다.
미들웨어 구조를 기반으로 하며, 요청과 응답을 처리하는 다양한 기능을 제공합니다.
Express는 다음과 같은 장점을 가지고 있습니다:

  • 경량과 빠른 속도
  • 풍부한 미들웨어 지원
  • 간단한 라우팅
  • RESTful API 개발에 용이

2. 프로젝트 설정

Express.js를 사용한 프로젝트를 설정하기 위해서는 Node.js가 설치되어 있어야 합니다.
다음 단계에 따라 Express 프로젝트를 설정합니다:

  1. Node.js와 npm 설치가 되어 있는지 확인합니다.
    아래 명령어로 설치 여부를 확인할 수 있습니다:

                node -v
                npm -v
            
  2. 새 디렉토리를 만들고 해당 디렉토리로 이동한 후 npm을 사용하여 새 프로젝트를 초기화합니다:

                mkdir my-express-app
                cd my-express-app
                npm init -y
            
  3. 필요한 Express 모듈을 설치합니다:

                npm install express
            

3. Express 서버 만들기

기본적인 Express 서버를 만들기 위해 아래의 코드를 사용합니다.
이 코드를 `server.js`라는 파일에 저장합니다:

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

app.get('/', (req, res) => {
    res.send('안녕하세요, Express 서버입니다!');
});

app.listen(PORT, () => {
    console.log(\`서버가 http://localhost:\${PORT} 에서 실행 중입니다.\`);
});

서버를 실행하려면 아래 명령어를 사용합니다:

node server.js

4. 도메인 연결

Express 서버를 만든 후에는 도메인을 연결하는 과정을 설명합니다. 도메인을 연결하려면 도메인 판매 업체에서 도메인을 구입하고 DNS 설정을 수정해야 합니다.

도메인 연결을 위해 다음 단계를 따르세요:

  1. 도메인 판매업체에서 도메인을 구매합니다. 예: Namecheap, GoDaddy 등의 업체.
  2. 서버가 호스팅되는 IP 주소를 확인하고 DNS 관리페이지로 이동합니다.
  3. A 레코드를 추가하고, 도메인 이름을 서버의 IP 주소로 매핑합니다.
    예를 들어, ‘mydomain.com’의 A 레코드를 아래와 같이 설정합니다:

            mydomain.com      A    123.456.789.0
            www.mydomain.com  CNAME  mydomain.com
            
  4. DNS 변경 사항이 반영되기까지 몇 분에서 몇 시간까지 걸릴 수 있으니 기다립니다.

5. SSL 인증서 설정

HTTPS를 통해 보안 연결을 위해 SSL 인증서를 설치하는 과정은 다음과 같습니다.
무료 SSL 인증서 제공 서비스인 Let’s Encrypt를 사용할 것입니다.

5.1 Certbot 설치

Certbot은 Let’s Encrypt SSL 인증서를 설치하고 관리하는 데 가장 많이 사용되는 툴입니다.
운영 체제에 따라 Certbot을 설치하는 방법은 다음과 같습니다:

# Ubuntu/Debian
sudo apt update
sudo apt install certbot

5.2 SSL 인증서 발급

SSL 인증서를 발급받기 위해 아래의 명령어를 실행합니다:

sudo certbot certonly --standalone -d mydomain.com -d www.mydomain.com

도메인에 대한 SSL 인증서를 발급받으면, 인증서는 일반적으로
/etc/letsencrypt/live/mydomain.com/에 위치하게 됩니다.

5.3 Express 서버에 SSL 적용하기

발급받은 SSL 인증서를 Express 서버에 적용하는 방법은 다음과 같습니다.
아래의 코드로 `server.js`를 수정합니다:

const https = require('https');
const fs = require('fs');

const app = express();
const PORT = process.env.PORT || 3000;

const options = {
    key: fs.readFileSync('/etc/letsencrypt/live/mydomain.com/privkey.pem'),
    cert: fs.readFileSync('/etc/letsencrypt/live/mydomain.com/fullchain.pem')
};

https.createServer(options, app).listen(PORT, () => {
    console.log(\`SSL이 적용된 서버가 https://mydomain.com:\${PORT} 에서 실행 중입니다.\`);
});

6. 애플리케이션 테스트

서버를 재시작하여 애플리케이션을 테스트합니다:

node server.js

웹 브라우저에서 https://mydomain.com으로 접속하여 SSL 인증서가 정상적으로 작동하는지 확인합니다.

7. 결론

이번 강좌에서는 Express.js로 백앤드 서버를 개발할 때 도메인 연결과 SSL 인증서 설정에 대해 살펴보았습니다.
이를 통해 안전하고 신뢰할 수 있는 웹 애플리케이션을 운영할 수 있습니다.
같은 과정을 통해 여러분의 Express 애플리케이션도 편리하게 배포하고 사용자에게 서비스를 제공할 수 있습니다.

8. 참고 자료