티스토리 뷰

PORT=3000
SESSION_SECRET=your_very_secret_key_here
NODE_ENV=development

이 설정은 서버를 구성하고 필요한 미들웨어를 설정하는 기본적인 내용을 포함한다.

 

먼저, 필요한 패키지들을 설치해 준다.

 

npm init -y

npm install express express-session cors helmet morgan dotenv mariadb bcrypt ejs

 

 

아래는 기본적인 소스코드다.

require('dotenv').config(); // .env 파일에서 환경 변수 로드
const express = require('express');
const session = require('express-session');
const cors = require('cors');
const helmet = require('helmet');
const morgan = require('morgan');

const app = express();

// 미들웨어 설정
app.use(helmet()); // 기본적인 보안 헤더 설정
app.use(cors()); // CORS 설정
app.use(morgan('dev')); // 로깅
app.use(express.json()); // JSON 파싱
app.use(express.urlencoded({ extended: true })); // URL-encoded 데이터 파싱

// 세션 설정
app.use(session({
    secret: process.env.SESSION_SECRET || 'your_session_secret',
    resave: false,
    saveUninitialized: false,
    cookie: { secure: process.env.NODE_ENV === 'production' } // HTTPS에서만 쿠키 전송 (프로덕션 환경)
}));

// 데이터베이스 연결 (이전에 설정한 MariaDB 연결 사용)
const { executeQuery } = require('./db');

// 라우트 설정 (예시)
app.get('/', (req, res) => {
    res.send('Welcome to the admin page');
});

// 에러 핸들링 미들웨어
app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).send('Something broke!');
});

// 서버 시작
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

module.exports = app; // 테스트를 위해 app 객체 내보내기

 

 

 

  • 환경 변수: dotenv를 사용하여 .env 파일에서 환경 변수를 로드합니다.
  • 보안:
    • helmet을 사용하여 기본적인 보안 헤더를 설정합니다.
    • HTTPS 환경에서만 쿠키를 전송하도록 설정합니다 (프로덕션 환경).
  • 미들웨어:
    • cors를 사용하여 Cross-Origin Resource Sharing을 설정합니다.
    • morgan을 사용하여 HTTP 요청 로깅을 설정합니다.
    • express.json()과 express.urlencoded()를 사용하여 요청 본문 파싱을 설정합니다.
  • 세션: express-session을 사용하여 세션 관리를 설정합니다.
  • 데이터베이스: 이전에 설정한 MariaDB 연결을 가져옵니다.
  • 라우트: 기본 라우트 예시를 포함했습니다.
  • 에러 핸들링: 기본적인 에러 핸들링 미들웨어를 설정했습니다.
  • 서버 시작: 환경 변수에서 포트를 가져오거나 기본값 3000을 사용합니다.

 

 

이 설정을 사용하려면 프로젝트 루트에 .env 파일을 만들고 다음과 같은 내용을 추가해 준다.

 

PORT=3000
SESSION_SECRET=your_very_secret_key_here
NODE_ENV=development

 

 

 

댓글