- TECH_STACK.md: Complete technology stack overview - HOMEBREW_SETUP.md: macOS development environment setup guide - SYNOLOGY_SETUP.md: General Synology NAS installation guide - DS1525_OPTIMIZED_SETUP.md: DS1525+ 32GB RAM optimized configuration Features: ✅ Multi-platform deployment options (Mac/NAS) ✅ Performance optimization for different hardware specs ✅ Docker-based containerization ✅ Monitoring and logging setup ✅ Automated backup and maintenance scripts ✅ SSD optimization for longevity
593 lines
12 KiB
Markdown
593 lines
12 KiB
Markdown
# 🍺 Homebrew 기반 개발환경 설정 가이드
|
|
|
|
## 📋 개요
|
|
|
|
macOS에서 Homebrew를 사용하여 산업 전문 정보 수집 시스템의 개발환경을 설정하는 단계별 가이드입니다.
|
|
|
|
---
|
|
|
|
## 🔧 사전 요구사항
|
|
|
|
### 시스템 요구사항
|
|
- **macOS**: 12.0+ (Monterey 이상 권장)
|
|
- **메모리**: 8GB 이상 (16GB 권장)
|
|
- **저장공간**: 20GB 이상 여유 공간
|
|
- **네트워크**: 인터넷 연결 (패키지 다운로드용)
|
|
|
|
### 개발자 도구
|
|
```bash
|
|
# Xcode Command Line Tools 설치 (Homebrew 설치 전 필수)
|
|
xcode-select --install
|
|
```
|
|
|
|
---
|
|
|
|
## 🍺 1단계: Homebrew 설치
|
|
|
|
### Homebrew 설치
|
|
```bash
|
|
# Homebrew 설치 스크립트 실행
|
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
|
|
# 설치 확인
|
|
brew --version
|
|
|
|
# PATH 설정 (M1/M2 Mac의 경우)
|
|
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
|
|
source ~/.zshrc
|
|
```
|
|
|
|
### Homebrew 업데이트
|
|
```bash
|
|
# Homebrew 자체 업데이트
|
|
brew update
|
|
|
|
# 설치된 패키지 업그레이드
|
|
brew upgrade
|
|
```
|
|
|
|
---
|
|
|
|
## 🐍 2단계: Python 환경 설정
|
|
|
|
### Python 설치
|
|
```bash
|
|
# Python 3.11 설치 (최신 안정 버전)
|
|
brew install python@3.11
|
|
|
|
# 설치 확인
|
|
python3 --version
|
|
pip3 --version
|
|
|
|
# 심볼릭 링크 설정 (선택사항)
|
|
brew link python@3.11
|
|
```
|
|
|
|
### 가상환경 도구 설치
|
|
```bash
|
|
# virtualenv 설치
|
|
pip3 install virtualenv
|
|
|
|
# 또는 pyenv 사용 (Python 버전 관리)
|
|
brew install pyenv
|
|
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
|
|
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
|
|
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
|
|
source ~/.zshrc
|
|
```
|
|
|
|
### 프로젝트 가상환경 생성
|
|
```bash
|
|
# 프로젝트 디렉토리로 이동
|
|
cd /Users/hyungi/news-project
|
|
|
|
# 가상환경 생성
|
|
python3 -m venv venv
|
|
|
|
# 가상환경 활성화
|
|
source venv/bin/activate
|
|
|
|
# 가상환경 활성화 확인 (프롬프트에 (venv) 표시됨)
|
|
which python
|
|
```
|
|
|
|
---
|
|
|
|
## 🟢 3단계: Node.js 환경 설정
|
|
|
|
### Node.js 설치
|
|
```bash
|
|
# Node.js 18 LTS 설치
|
|
brew install node@18
|
|
|
|
# 설치 확인
|
|
node --version
|
|
npm --version
|
|
|
|
# 글로벌 패키지 업데이트
|
|
npm install -g npm@latest
|
|
```
|
|
|
|
### 선택적: Node 버전 관리자 설치
|
|
```bash
|
|
# nvm 설치 (Node Version Manager)
|
|
brew install nvm
|
|
|
|
# nvm 설정
|
|
mkdir ~/.nvm
|
|
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.zshrc
|
|
echo '[ -s "/opt/homebrew/share/nvm/nvm.sh" ] && \. "/opt/homebrew/share/nvm/nvm.sh"' >> ~/.zshrc
|
|
echo '[ -s "/opt/homebrew/share/nvm/bash_completion" ] && \. "/opt/homebrew/share/nvm/bash_completion"' >> ~/.zshrc
|
|
source ~/.zshrc
|
|
|
|
# Node.js 18 설치 및 사용
|
|
nvm install 18
|
|
nvm use 18
|
|
nvm alias default 18
|
|
```
|
|
|
|
---
|
|
|
|
## 🗄️ 4단계: 데이터베이스 설치
|
|
|
|
### PostgreSQL 설치
|
|
```bash
|
|
# PostgreSQL 설치
|
|
brew install postgresql@15
|
|
|
|
# 서비스 시작
|
|
brew services start postgresql@15
|
|
|
|
# 데이터베이스 생성
|
|
createdb industrial_info
|
|
|
|
# 연결 테스트
|
|
psql industrial_info
|
|
# \q 로 종료
|
|
```
|
|
|
|
### PostgreSQL 설정
|
|
```bash
|
|
# 사용자 생성 (선택사항)
|
|
createuser --interactive --pwprompt industrial_user
|
|
|
|
# 데이터베이스 권한 부여
|
|
psql -c "GRANT ALL PRIVILEGES ON DATABASE industrial_info TO industrial_user;"
|
|
```
|
|
|
|
### Redis 설치
|
|
```bash
|
|
# Redis 설치
|
|
brew install redis
|
|
|
|
# 서비스 시작
|
|
brew services start redis
|
|
|
|
# 연결 테스트
|
|
redis-cli ping
|
|
# PONG 응답 확인
|
|
```
|
|
|
|
---
|
|
|
|
## 🔍 5단계: Elasticsearch 설치
|
|
|
|
### Elasticsearch 설치
|
|
```bash
|
|
# Elasticsearch 설치
|
|
brew install elasticsearch
|
|
|
|
# 설정 파일 위치 확인
|
|
brew --prefix elasticsearch
|
|
|
|
# JVM 메모리 설정 (8GB Mac 기준)
|
|
echo 'export ELASTICSEARCH_JAVA_OPTS="-Xms512m -Xmx1g"' >> ~/.zshrc
|
|
source ~/.zshrc
|
|
|
|
# 서비스 시작
|
|
brew services start elasticsearch
|
|
|
|
# 연결 테스트 (약 30초 후)
|
|
curl http://localhost:9200
|
|
```
|
|
|
|
### Elasticsearch 한국어 분석기 설치
|
|
```bash
|
|
# nori 분석기 설치
|
|
/opt/homebrew/bin/elasticsearch-plugin install analysis-nori
|
|
|
|
# 서비스 재시작
|
|
brew services restart elasticsearch
|
|
```
|
|
|
|
---
|
|
|
|
## 🐳 6단계: Docker 설치
|
|
|
|
### Docker Desktop 설치
|
|
```bash
|
|
# Docker Desktop 설치
|
|
brew install --cask docker
|
|
|
|
# Docker 실행 확인 (GUI에서 Docker Desktop 실행 필요)
|
|
docker --version
|
|
docker-compose --version
|
|
```
|
|
|
|
### Docker 설정 최적화
|
|
```bash
|
|
# Docker Desktop 설정 권장사항:
|
|
# - Memory: 4GB (8GB Mac 기준)
|
|
# - Swap: 1GB
|
|
# - Disk image size: 64GB
|
|
```
|
|
|
|
---
|
|
|
|
## 🛠️ 7단계: 개발 도구 설치
|
|
|
|
### 필수 개발 도구
|
|
```bash
|
|
# Git (이미 설치되어 있을 수 있음)
|
|
brew install git
|
|
|
|
# 시스템 모니터링 도구
|
|
brew install htop
|
|
|
|
# 텍스트 처리 도구
|
|
brew install jq # JSON 처리
|
|
brew install ripgrep # 빠른 텍스트 검색
|
|
|
|
# 네트워크 도구
|
|
brew install curl
|
|
brew install wget
|
|
```
|
|
|
|
### IDE 및 에디터
|
|
```bash
|
|
# Visual Studio Code
|
|
brew install --cask visual-studio-code
|
|
|
|
# 또는 다른 에디터들
|
|
brew install --cask sublime-text
|
|
brew install --cask atom
|
|
brew install vim # 터미널 에디터
|
|
```
|
|
|
|
### 선택적 도구
|
|
```bash
|
|
# 데이터베이스 GUI 도구
|
|
brew install --cask dbeaver-community # 다중 DB 클라이언트
|
|
brew install --cask tableplus # macOS 네이티브 DB 클라이언트
|
|
|
|
# API 테스트 도구
|
|
brew install --cask postman
|
|
brew install --cask insomnia
|
|
|
|
# 터미널 개선
|
|
brew install zsh-autosuggestions
|
|
brew install zsh-syntax-highlighting
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 8단계: 프로젝트 설정
|
|
|
|
### 프로젝트 클론 및 설정
|
|
```bash
|
|
# 프로젝트 디렉토리로 이동
|
|
cd /Users/hyungi/news-project
|
|
|
|
# 가상환경 활성화
|
|
source venv/bin/activate
|
|
|
|
# 환경 변수 파일 생성
|
|
cp .env.example .env
|
|
```
|
|
|
|
### 환경 변수 설정 (.env 파일)
|
|
```bash
|
|
# .env 파일 편집
|
|
cat > .env << EOF
|
|
# 데이터베이스 설정
|
|
DATABASE_URL=postgresql://industrial_user:password@localhost:5432/industrial_info
|
|
REDIS_URL=redis://localhost:6379/0
|
|
ELASTICSEARCH_URL=http://localhost:9200
|
|
|
|
# 개발 환경 설정
|
|
DEBUG=True
|
|
SECRET_KEY=your-secret-key-here
|
|
|
|
# API 키 (필요시)
|
|
PUBMED_API_KEY=your-pubmed-api-key
|
|
IEEE_API_KEY=your-ieee-api-key
|
|
EOF
|
|
```
|
|
|
|
### Python 의존성 설치
|
|
```bash
|
|
# requirements.txt가 있는 경우
|
|
pip install -r requirements.txt
|
|
|
|
# 또는 기본 패키지 설치
|
|
pip install fastapi uvicorn sqlalchemy psycopg2-binary redis elasticsearch celery spacy beautifulsoup4 requests pandas numpy
|
|
```
|
|
|
|
### Node.js 의존성 설치 (프론트엔드가 있는 경우)
|
|
```bash
|
|
# frontend 디렉토리가 있는 경우
|
|
cd frontend
|
|
npm install
|
|
cd ..
|
|
```
|
|
|
|
---
|
|
|
|
## 🔧 9단계: 서비스 관리
|
|
|
|
### 서비스 시작/중지 명령어
|
|
```bash
|
|
# 모든 서비스 시작
|
|
brew services start postgresql@15
|
|
brew services start redis
|
|
brew services start elasticsearch
|
|
|
|
# 서비스 상태 확인
|
|
brew services list
|
|
|
|
# 특정 서비스 중지
|
|
brew services stop postgresql@15
|
|
brew services stop redis
|
|
brew services stop elasticsearch
|
|
|
|
# 서비스 재시작
|
|
brew services restart postgresql@15
|
|
```
|
|
|
|
### 자동 시작 설정
|
|
```bash
|
|
# 시스템 부팅 시 자동 시작 (이미 설정됨)
|
|
# brew services start 명령어로 설치한 서비스들은 자동으로 부팅 시 시작됨
|
|
|
|
# 수동으로 자동 시작 해제하려면
|
|
brew services stop postgresql@15
|
|
# 그리고 수동으로 시작하려면
|
|
pg_ctl -D /opt/homebrew/var/postgresql@15 start
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 10단계: 성능 최적화
|
|
|
|
### 메모리 사용량 최적화 (8GB Mac 기준)
|
|
```bash
|
|
# ~/.zshrc에 추가
|
|
cat >> ~/.zshrc << EOF
|
|
|
|
# 개발환경 메모리 최적화
|
|
export ELASTICSEARCH_JAVA_OPTS="-Xms512m -Xmx1g"
|
|
export REDIS_MAXMEMORY="256mb"
|
|
export PYTHONOPTIMIZE=1
|
|
|
|
# PostgreSQL 설정 최적화
|
|
export PGDATA="/opt/homebrew/var/postgresql@15"
|
|
EOF
|
|
|
|
source ~/.zshrc
|
|
```
|
|
|
|
### PostgreSQL 설정 최적화
|
|
```bash
|
|
# postgresql.conf 편집
|
|
vim /opt/homebrew/var/postgresql@15/postgresql.conf
|
|
|
|
# 다음 설정 추가/수정:
|
|
# shared_buffers = 256MB
|
|
# effective_cache_size = 1GB
|
|
# maintenance_work_mem = 64MB
|
|
# checkpoint_completion_target = 0.9
|
|
# wal_buffers = 16MB
|
|
# default_statistics_target = 100
|
|
|
|
# 설정 적용을 위해 재시작
|
|
brew services restart postgresql@15
|
|
```
|
|
|
|
---
|
|
|
|
## 🔍 11단계: 개발환경 테스트
|
|
|
|
### 연결 테스트 스크립트
|
|
```bash
|
|
# test_connections.py 생성
|
|
cat > test_connections.py << EOF
|
|
#!/usr/bin/env python3
|
|
import psycopg2
|
|
import redis
|
|
import requests
|
|
|
|
def test_postgresql():
|
|
try:
|
|
conn = psycopg2.connect(
|
|
host="localhost",
|
|
database="industrial_info",
|
|
user="industrial_user",
|
|
password="password"
|
|
)
|
|
print("✅ PostgreSQL 연결 성공")
|
|
conn.close()
|
|
except Exception as e:
|
|
print(f"❌ PostgreSQL 연결 실패: {e}")
|
|
|
|
def test_redis():
|
|
try:
|
|
r = redis.Redis(host='localhost', port=6379, db=0)
|
|
r.ping()
|
|
print("✅ Redis 연결 성공")
|
|
except Exception as e:
|
|
print(f"❌ Redis 연결 실패: {e}")
|
|
|
|
def test_elasticsearch():
|
|
try:
|
|
response = requests.get('http://localhost:9200')
|
|
if response.status_code == 200:
|
|
print("✅ Elasticsearch 연결 성공")
|
|
else:
|
|
print(f"❌ Elasticsearch 연결 실패: {response.status_code}")
|
|
except Exception as e:
|
|
print(f"❌ Elasticsearch 연결 실패: {e}")
|
|
|
|
if __name__ == "__main__":
|
|
print("🔍 개발환경 연결 테스트")
|
|
test_postgresql()
|
|
test_redis()
|
|
test_elasticsearch()
|
|
EOF
|
|
|
|
# 테스트 실행
|
|
python test_connections.py
|
|
```
|
|
|
|
### 시스템 리소스 모니터링
|
|
```bash
|
|
# 시스템 리소스 확인
|
|
htop
|
|
|
|
# Docker 컨테이너 리소스 확인 (Docker 사용 시)
|
|
docker stats
|
|
|
|
# 디스크 사용량 확인
|
|
df -h
|
|
|
|
# 메모리 사용량 확인
|
|
vm_stat
|
|
```
|
|
|
|
---
|
|
|
|
## 🚨 문제 해결
|
|
|
|
### 일반적인 문제들
|
|
|
|
#### 1. Homebrew 설치 실패
|
|
```bash
|
|
# 권한 문제 해결
|
|
sudo chown -R $(whoami) /opt/homebrew
|
|
|
|
# 또는 Rosetta 2 설치 (M1/M2 Mac)
|
|
softwareupdate --install-rosetta
|
|
```
|
|
|
|
#### 2. PostgreSQL 연결 실패
|
|
```bash
|
|
# 서비스 상태 확인
|
|
brew services list | grep postgresql
|
|
|
|
# 로그 확인
|
|
tail -f /opt/homebrew/var/log/postgresql@15.log
|
|
|
|
# 포트 충돌 확인
|
|
lsof -i :5432
|
|
```
|
|
|
|
#### 3. Elasticsearch 시작 실패
|
|
```bash
|
|
# Java 설치 확인
|
|
java --version
|
|
|
|
# 메모리 부족 시 설정 조정
|
|
export ELASTICSEARCH_JAVA_OPTS="-Xms256m -Xmx512m"
|
|
|
|
# 로그 확인
|
|
tail -f /opt/homebrew/var/log/elasticsearch.log
|
|
```
|
|
|
|
#### 4. Redis 연결 문제
|
|
```bash
|
|
# Redis 서비스 확인
|
|
brew services list | grep redis
|
|
|
|
# 설정 파일 확인
|
|
cat /opt/homebrew/etc/redis.conf
|
|
|
|
# 포트 확인
|
|
lsof -i :6379
|
|
```
|
|
|
|
### 성능 문제 해결
|
|
|
|
#### 메모리 부족 시
|
|
```bash
|
|
# 불필요한 서비스 중지
|
|
brew services stop elasticsearch # 임시로 중지
|
|
|
|
# Swap 사용량 확인
|
|
sysctl vm.swapusage
|
|
|
|
# 메모리 정리
|
|
sudo purge
|
|
```
|
|
|
|
#### 디스크 공간 부족 시
|
|
```bash
|
|
# Homebrew 캐시 정리
|
|
brew cleanup
|
|
|
|
# Docker 이미지 정리
|
|
docker system prune -a
|
|
|
|
# 로그 파일 정리
|
|
sudo rm -rf /opt/homebrew/var/log/*.log.*
|
|
```
|
|
|
|
---
|
|
|
|
## 📚 추가 리소스
|
|
|
|
### 유용한 명령어 모음
|
|
```bash
|
|
# 모든 Homebrew 서비스 상태 확인
|
|
brew services list
|
|
|
|
# 설치된 패키지 목록
|
|
brew list
|
|
|
|
# 패키지 정보 확인
|
|
brew info postgresql@15
|
|
|
|
# 의존성 확인
|
|
brew deps --tree postgresql@15
|
|
|
|
# 업데이트 가능한 패키지 확인
|
|
brew outdated
|
|
```
|
|
|
|
### 개발 워크플로우
|
|
```bash
|
|
# 일일 개발 시작 루틴
|
|
cd /Users/hyungi/news-project
|
|
source venv/bin/activate
|
|
brew services start postgresql@15 redis elasticsearch
|
|
|
|
# 일일 개발 종료 루틴
|
|
deactivate
|
|
brew services stop elasticsearch # 메모리 절약을 위해
|
|
```
|
|
|
|
### 백업 및 복원
|
|
```bash
|
|
# PostgreSQL 백업
|
|
pg_dump industrial_info > backup.sql
|
|
|
|
# PostgreSQL 복원
|
|
psql industrial_info < backup.sql
|
|
|
|
# 설정 파일 백업
|
|
cp ~/.zshrc ~/.zshrc.backup
|
|
cp .env .env.backup
|
|
```
|
|
|
|
---
|
|
|
|
이 가이드를 따라하면 macOS에서 Homebrew를 사용하여 완전한 개발환경을 구축할 수 있습니다. 각 단계별로 진행하면서 문제가 발생하면 문제 해결 섹션을 참조하세요.
|