서버 관리 필수 가이드 | 클라우드부터 온프레미스까지
서버란 무엇인가?
서버는 다른 컴퓨터(클라이언트)에 서비스를 제공하는 컴퓨터입니다. 웹서버, 데이터베이스 서버, 이메일 서버 등 다양한 종류가 있으며, 24시간 운영되어야 하므로 안정성이 가장 중요합니다.
> 핵심 요약: 이 글에서 가장 중요한 내용을 먼저 확인하세요.
서버의 역할:
- 데이터 저장 및 관리
- 웹사이트, 앱 서비스 제공
- 메일, 파일 공유 서비스
- 데이터 처리 및 분석
클라우드 vs 온프레미스
클라우드 서버 (AWS, Azure, Google Cloud)
장점:
- 초기 투자 비용 없음
- 자동 확장 가능 (유연함)
- 보안, 업데이트 자동
- 언제든 추가/삭제 가능
- 월 비용 발생
- 데이터 프라이버시 위험
- 인터넷 의존도 높음
온프레미스 (자체 서버)
장점:
- 데이터 완전 통제
- 커스터마이징 자유도 높음
- 장기적으로 비용 효율적
- 초기 구축 비용 높음 (1000만원 이상)
- 운영 인력 필요
- 확장이 어려움
웹 서버 설치 (Ubuntu 기준)
1단계: 서버 기초 설정
# 패키지 업데이트
sudo apt update
sudo apt upgrade -y
# 필수 도구 설치
sudo apt install curl wget git build-essential -y
# 방화벽 설정
sudo ufw enable
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS2단계: 웹 서버 설치 (Nginx 권장)
# Nginx 설치
sudo apt install nginx -y
# 시작 및 자동 시작 설정
sudo systemctl start nginx
sudo systemctl enable nginx
# 상태 확인
sudo systemctl status nginxNginx vs Apache:
| 항목 | Nginx | Apache |
| 성능 | 빠름 | 중간 |
| 메모리 사용 | 적음 | 많음 |
| 설정 | 간단 | 복잡 |
| 모듈 | 적음 | 많음 |
| 사용 비율 | 50% | 30% |
3단계: Node.js 설치 (JavaScript 앱 운영)
# Node.js 설치 (NVM 사용 권장)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install node
node --version
# npm 업데이트
npm install -g npm@latest4단계: 데이터베이스 설치 (MySQL)
sudo apt install mysql-server -y
# MySQL 초기 설정
sudo mysql_secure_installation
# MySQL 시작
sudo systemctl start mysql
sudo systemctl enable mysql
# 접속 확인
mysql -u root -p서버 성능 모니터링
1. CPU/메모리 모니터링
# 실시간 모니터링
top
htop # 더 보기 좋은 버전
# CPU 코어 수 확인
nproc
lscpu
# 메모리 상태
free -h
cat /proc/meminfo2. 디스크 모니터링
# 전체 디스크 사용량
df -h
# 폴더별 용량
du -sh /home/*
du -sh /var/log/*
# I/O 성능
iostat -x 1 53. 네트워크 모니터링
# 네트워크 트래픽
nethogs # 프로세스별 트래픽
iftop # 실시간 연결
# 포트 사용 현황
netstat -tlnp
ss -tlnp # netstat 대체서버 보안 관리
1. SSH 보안 강화
# SSH 설정 파일 편집
sudo nano /etc/ssh/sshd_config
# 변경 항목:
Port 2222 # 기본 포트 변경
PermitRootLogin no # root 로그인 금지
PasswordAuthentication no # 키 인증만 허용2. 방화벽 설정
# UFW 기본 설정
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw default deny routed
# 필요한 포트만 열기
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 상태 확인
sudo ufw status3. SSL/TLS 인증서 설치 (Let's Encrypt)
# Certbot 설치
sudo apt install certbot python3-certbot-nginx -y
# 인증서 자동 생성
sudo certbot --nginx -d yourdomain.com
# 자동 갱신 확인
sudo certbot renew --dry-run4. 로그 모니터링
# 시스템 로그
sudo tail -f /var/log/syslog
# 보안 로그
sudo tail -f /var/log/auth.log
# 웹 서버 로그
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
# 로그 분석
grep "Failed password" /var/log/auth.log | wc -l # 로그인 실패 수백업 전략 (매우 중요!)
1. 자동 백업 스크립트
#!/bin/bash
# backup.sh
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d_%H%M%S)
SOURCE="/var/www/html"
# 디렉토리 생성
mkdir -p $BACKUP_DIR
# 압축 백업
tar -czf $BACKUP_DIR/backup_$DATE.tar.gz $SOURCE
# 7일 이상 된 백업 삭제
find $BACKUP_DIR -name "backup_*.tar.gz" -mtime +7 -delete
echo "Backup completed: backup_$DATE.tar.gz"2. Crontab으로 자동 실행
# Cron 작업 편집
crontab -e
# 매일 자정에 백업 (추가)
0 0 * * * /home/user/backup.sh
# 매주 일요일 2시에 전체 백업
0 2 * * 0 /home/user/full_backup.sh3. 원격 백업 (클라우드)
# AWS S3로 백업
aws s3 sync /var/www/html s3://mybucket/backup/
# Rsync로 원격 서버 백업
rsync -avz /var/www/html/ user@backup-server:/backups/성능 최적화 팁 5가지
1. Gzip 압축 활성화
# Nginx 설정
sudo nano /etc/nginx/nginx.conf
# 추가:
gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1000;2. 캐시 설정
# 브라우저 캐시 활성화
add_header Cache-Control "public, max-age=3600";
# 정적 파일 캐시 (1주일)
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 7d;
}3. 연결 풀 최적화
# MySQL 최대 연결 수
max_connections = 200
# 연결 타임아웃
wait_timeout = 288004. 데이터베이스 인덱싱
-- 쿼리 성능 향상
CREATE INDEX idx_email ON users(email);
CREATE INDEX idx_created ON posts(created_at DESC);5. CDN 사용
정적 파일(이미지, CSS, JS)을 Cloudflare, AWS CloudFront로 배포하면 속도 30-50% 향상
자주 묻는 질문
> Q. 서버 크기는 어떻게 선택하나요?
A. 월간 트래픽 기반으로 선택합니다.
- ~10만 PV: t3.micro (1GB RAM)
- ~100만 PV: t3.small (2GB RAM)
- ~1000만 PV: t3.medium (4GB RAM)
A. 모니터링 도구 설정 (Nagios, Datadog)로 문제 발생 시 즉시 알림 받기
> Q. 데이터베이스 백업은 얼마나 자주?
A. 중요도에 따라
- 일일 사용자 데이터: 매일
- 로그: 주 1회
- 설정 파일: 변경할 때
A. AWS 기준 t3.micro (항상 무료 계층) ~ 월 1만원, t3.medium 월 5-10만원
> Q. 리눅스 버전은 뭘 선택해야 하나요?
A. 서버는 Ubuntu 20.04 LTS 또는 CentOS 8 추천 (LTS = Long Term Support)
결론
서버 관리는 단순해 보이지만, 보안, 성능, 백업 등 고려할 요소가 많습니다. 2026년 클라우드 서버로 시작하면 진입장벽이 낮고, 경험을 쌓으면 온프레미스로 전환할 수 있습니다.
매달 서버 상태를 점검하고 자동 백업을 설정하면, 안정적인 온라인 서비스를 운영할 수 있습니다.
관련 글: 리눅스 기초 완벽 정리 | 클라우드 스토리지 비교