node.js+express+redis+pm2 (windows/linux)

Windows와 Linux에서 모두 사용할 수 있는 최종 버전을 구성하려면, 운영 체제에 따라 실행 경로와 명령어를 동적으로 설정할 수 있도록 스크립트를 작성해야 합니다. 아래는 Windows와 Linux 모두에서 동작하도록 확장된 구성입니다.

최종 디렉토리 구조

project-directory/

├── node/                # Node.js 바이너리

│   ├── bin/             # node 및 npm 실행 파일

│   └── lib/             # Node.js 기본 라이브러리

├── redis/               # Redis 실행 파일 및 데이터

│   ├── redis-server.exe # Windows용 Redis 실행 파일

│   ├── redis-server     # Linux용 Redis 실행 파일

│   ├── redis-cli.exe    # Windows용 Redis CLI

│   ├── redis-cli        # Linux용 Redis CLI

│   ├── redis.conf       # Redis 설정 파일

│   └── data/            # Redis 데이터 저장소

├── pm2/                 # PM2 실행 파일 및 설정

│   └── node_modules/.bin/pm2 # PM2 실행 파일

├── node_modules/        # 설치된 npm 모듈

├── app.js               # Express 서버 코드

├── ecosystem.config.js  # PM2 설정 파일

├── package.json         # Node.js 프로젝트 설정

├── .env                 # 환경 변수 파일

├── start.bat            # Windows 실행 스크립트

├── start.sh             # Linux 실행 스크립트

1. 플랫폼별 실행 스크립트

운영 체제에 따라 사용할 수 있도록 start.sh와 start.bat 스크립트를 작성합니다.

(a) Linux 실행 스크립트 (start.sh)

#!/bin/bash

# 환경 변수 설정

export PATH=$(pwd)/node/bin:$PATH

# Redis 서버 실행

echo “Starting Redis server (Linux)…”

./redis/redis-server ./redis/redis.conf &

# PM2로 Express 서버 실행

echo “Starting PM2 with ecosystem.config.js…”

node_modules/.bin/pm2 start ecosystem.config.js

# PM2 상태 확인

node_modules/.bin/pm2 status

# 종료 시 Redis 서버 종료

trap “echo ‘Stopping Redis server…’; pkill redis-server” EXIT

스크립트 실행 권한 추가:

chmod +x start.sh

(b) Windows 실행 스크립트 (start.bat)

@echo off

set PATH=%cd%\node\bin;%PATH%

echo Starting Redis server (Windows)…

start /B redis\redis-server.exe redis\redis.conf

echo Starting PM2 with ecosystem.config.js…

call node_modules\.bin\pm2 start ecosystem.config.js

echo PM2 status:

call node_modules\.bin\pm2 status

pause

2. Redis 바이너리 준비

Redis는 Linux와 Windows용 바이너리가 다르므로, 두 플랫폼 모두를 지원하도록 각각의 바이너리를 준비합니다.

(a) Linux용 Redis

1. Redis 설치 및 빌드:

curl -O http://download.redis.io/redis-stable.tar.gz

tar -xvzf redis-stable.tar.gz

cd redis-stable

make

mkdir ../redis

cp src/redis-server src/redis-cli ../redis/

(b) Windows용 Redis

1. Windows Redis 다운로드:

Memurai for Windows 또는 Redis 공식 GitHub에서 Windows 실행 파일을 다운로드.

2. 다운로드한 파일을 redis/ 디렉토리에 저장:

redis/

├── redis-server.exe

├── redis-cli.exe

3. PM2 설정 파일

PM2 설정 파일 ecosystem.config.js는 플랫폼에 관계없이 동일하게 작동합니다.

module.exports = {

  apps: [

    {

      name: ‘ExpressApp’,

      script: ‘./app.js’,

      env: {

        NODE_ENV: ‘production’,

        PORT: 3000,

        REDIS_HOST: ‘127.0.0.1’,

        REDIS_PORT: 6379,

      },

    },

    {

      name: ‘RedisServer’,

      script: process.platform === ‘win32’ ? ‘./redis/redis-server.exe’ : ‘./redis/redis-server’,

      args: ‘./redis/redis.conf’,

    },

  ],

};

4. Express 서버 코드 (app.js)

Express 서버 코드는 변경할 필요가 없습니다. Redis와 통신하며, 환경 변수를 사용하여 호스트와 포트를 설정합니다.

5. 실행 방법

Linux

1. 실행 권한 부여:

chmod +x start.sh

2. 실행:

./start.sh

Windows

1. 실행:

start.bat

6. 추가 고려 사항

(a) 운영 체제 자동 감지

start.sh와 start.bat를 하나로 통합하려면 Node.js 스크립트를 사용해 플랫폼을 자동 감지하고 Redis 및 PM2를 실행할 수 있습니다.

(b) 로그 관리

PM2는 기본적으로 로그를 관리합니다. 로그를 확인하려면:

node_modules/.bin/pm2 logs

(c) 크로스 플랫폼 패키지 사용

cross-env와 같은 패키지를 사용하여 플랫폼별 경로 문제를 간소화할 수 있습니다:

npm install cross-env –save-dev

이 구성은 Windows와 Linux 모두에서 Redis, Node.js, PM2 기반 애플리케이션을 독립적으로 실행할 수 있도록 설정됩니다. 추가적인 질문이 있으면 언제든 말씀해주세요! 😊


코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다