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 기반 애플리케이션을 독립적으로 실행할 수 있도록 설정됩니다. 추가적인 질문이 있으면 언제든 말씀해주세요! 😊
답글 남기기