1단계: 클라우드 준비

← 메인으로 다음: 서버 환경 설정 →

이제 본격적으로 Laravel 배포를 시작해볼까요? 첫 번째 단계는 클라우드 서버를 준비하는 거예요. 생각보다 간단하니 천천히 따라와주세요!

이 단계에서 배울 내용

  • Vultr에서 클라우드 서버 만들기
  • SSH로 서버에 처음 접속하기
  • 서버 초기 설정하기
  • 보안을 위한 사용자 생성하기
  • 기본 방화벽 설정하기

💡 예상 소요 시간: 20-30분 정도 걸려요.


1.1 Vultr 인스턴스 생성하기

왜 Vultr을 사용할까요?

Vultr은 사용하기 쉽고, 가격이 합리적이며, 한국(서울) 데이터센터를 제공해서 빠른 응답 속도를 얻을 수 있어요. 물론 AWS, DigitalOcean 등 다른 클라우드도 괜찮습니다!

단계별 서버 생성

1단계: Vultr 계정 로그인

  • Vultr 웹사이트에 접속해주세요
  • 계정이 없다면 회원가입을 먼저 진행하세요 (신용카드 등록 필요)

2단계: 새 인스턴스 생성

  1. 대시보드에서 “Deploy New Server” 또는 ”+” 버튼 클릭
  2. “Deploy New Instance” 선택

3단계: 서버 위치 선택

권장 위치:
✅ Seoul, Korea (가장 빠름)
⭐ Tokyo, Japan (서울이 없다면)

💡 팁: 서울 리전이 가장 빠르지만, 때로는 도쿄가 더 저렴할 수 있어요.

4단계: 서버 타입 선택

  • Server Type: Cloud Compute (일반적인 용도)
  • CPU & Storage Technology: Regular Performance (충분해요)

5단계: 운영체제 선택

Operating System: Ubuntu 25.10 x64

⚠️ 중요: Ubuntu 25.10은 최신 버전이에요. Vultr에서 지원하지 않는다면 Ubuntu 24.04 LTS를 선택하세요. 이 가이드의 모든 명령어는 동일하게 작동합니다.

6단계: 서버 플랜 선택

학습/테스트용 (이 가이드 기준)

Plan: $6/month
- 1 CPU
- 1GB RAM
- 25GB SSD Storage
- 1TB Bandwidth

실제 서비스 운영용 (권장)

Plan: $12/month 이상
- 1 CPU
- 2GB RAM
- 55GB SSD Storage
- 2TB Bandwidth

💰 비용 안내: 1GB RAM은 학습용이에요. 실제 서비스는 최소 2GB를 권장합니다. 방문자가 많아질수록 더 높은 사양이 필요합니다.

7단계: 추가 기능 설정

  • IPv6: ✅ 활성화 (선택사항, 미래를 위해)
  • Auto Backups: ☐ 선택 안함 (추가 비용 발생)
  • SSH Keys: 나중에 설정할게요

8단계: 서버 라벨 설정

Server Hostname & Label: laravel-demo

알아보기 쉬운 이름으로 지어주세요!

9단계: 배포 시작

  • “Deploy Now” 버튼 클릭
  • 약 1-2분 후 서버 준비 완료!

서버 정보 확인하기

서버가 생성되면 다음 정보를 확인하세요:

✅ IP Address: 123.456.78.90 (예시)
✅ Username: root
✅ Password: (자동 생성된 비밀번호)

🔒 중요: 비밀번호를 안전한 곳에 복사해두세요! 메모장이나 비밀번호 관리 앱에 저장하는 걸 권장합니다.


1.2 서버 초기 접속하기

이제 서버에 처음으로 접속해볼까요? SSH라는 방법을 사용합니다.

SSH가 뭔가요?

SSH는 원격 서버에 안전하게 접속할 수 있는 방법이에요. 마치 내 컴퓨터처럼 서버를 조작할 수 있습니다.

운영체제별 접속 방법

Mac / Linux 사용자

터미널을 열고 다음 명령어를 입력하세요:

# SSH로 서버 접속
ssh root@123.456.78.90

💡 설명: 123.456.78.90을 여러분의 실제 서버 IP 주소로 바꿔주세요!

처음 접속하면 이런 메시지가 나타납니다:

The authenticity of host '123.456.78.90' can't be established.
Are you sure you want to continue connecting (yes/no)?

yes를 입력하고 Enter를 누르세요.

그 다음 비밀번호를 입력하라는 메시지가 나오면, Vultr에서 받은 비밀번호를 입력합니다 (입력할 때 화면에 아무것도 안 보여도 정상이에요).

Windows 사용자

방법 1: PuTTY 사용

  1. PuTTY 다운로드
  2. PuTTY 실행
  3. Host Name에 서버 IP 입력: 123.456.78.90
  4. Port: 22
  5. “Open” 클릭
  6. 비밀번호 입력

방법 2: Windows Terminal (Windows 10/11)

ssh root@123.456.78.90

Mac/Linux와 동일한 방법으로 진행하면 됩니다.

접속 성공!

접속에 성공하면 이런 화면을 볼 수 있어요:

Welcome to Ubuntu 25.10 (GNU/Linux 6.x.x-generic x86_64)

 * Documentation:  https://help.ubuntu.com

Last login: ...

root@laravel-demo:~#

축하합니다! 🎉 서버에 접속하셨어요.


1.3 시스템 업데이트

새 서버는 항상 먼저 업데이트를 해줘야 해요. 최신 보안 패치와 버그 수정을 받기 위해서죠.

패키지 목록 업데이트

# 시스템 패키지 목록 업데이트
apt update

💡 설명:

  • apt는 Ubuntu의 패키지 관리자예요
  • update는 설치 가능한 패키지 목록을 최신화합니다

시스템 업그레이드

# 설치된 패키지들을 최신 버전으로 업그레이드
apt upgrade -y

💡 -y 옵션은 뭔가요? 모든 설치 확인 질문에 자동으로 “yes”라고 답하는 옵션이에요. 편리하죠?

이 과정은 3-5분 정도 걸릴 수 있어요. 커피 한 잔 하면서 기다려볼까요? ☕

재부팅 필요한지 확인

# 재부팅이 필요한지 확인
ls -l /var/run/reboot-required 2>/dev/null && echo "재부팅이 필요합니다" || echo "재부팅 불필요"

만약 재부팅이 필요하다고 나오면:

# 시스템 재부팅 (선택사항)
reboot

재부팅하면 SSH 연결이 끊어집니다. 약 1분 후 다시 접속하세요.


1.4 필수 유틸리티 설치

기본적으로 필요한 도구들을 먼저 설치해봅시다.

# 기본 유틸리티 한 번에 설치
apt install -y curl wget unzip software-properties-common \
               apt-transport-https ca-certificates gnupg lsb-release

각 도구가 하는 일

도구 용도
curl 웹에서 파일 다운로드
wget curl과 비슷한 다운로드 도구
unzip 압축 파일 풀기
software-properties-common 저장소 관리
apt-transport-https HTTPS 저장소 지원
ca-certificates SSL 인증서
gnupg 암호화 키 관리
lsb-release 시스템 정보 확인

시스템 정보 확인

설치가 완료되면 시스템 정보를 확인해봅시다:

# 커널 정보 확인
uname -a

# Ubuntu 버전 확인
lsb_release -a

1.5 보안 사용자 생성

root 계정으로 계속 작업하는 건 위험해요. 일반 사용자를 만들어서 사용하는 게 안전합니다.

deploy 사용자 만들기

# 새 사용자 생성
adduser deploy

이런 질문들이 나올 거예요:

New password: (비밀번호 입력)
Retype new password: (비밀번호 다시 입력)
Full Name []: Deploy User (또는 Enter)
Room Number []: (Enter)
Work Phone []: (Enter)
Home Phone []: (Enter)
Other []: (Enter)
Is the information correct? [Y/n] Y

🔒 보안 팁: 강력한 비밀번호를 설정하세요! 최소 12자 이상, 대소문자+숫자+특수문자 조합을 권장합니다.

sudo 권한 부여

# deploy 사용자를 sudo 그룹에 추가
usermod -aG sudo deploy

💡 sudo가 뭔가요? sudo는 일반 사용자가 관리자 권한이 필요한 명령을 실행할 때 사용하는 명령어예요. 더 안전한 방식입니다.

SSH 키 설정 (권장)

비밀번호 대신 SSH 키로 로그인하면 훨씬 안전해요.

# SSH 디렉토리 생성
mkdir -p /home/deploy/.ssh

# root의 SSH 키를 deploy 사용자에게 복사
cp ~/.ssh/authorized_keys /home/deploy/.ssh/

# 소유권 및 권한 설정
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys

deploy 사용자로 전환

# deploy 사용자로 전환
su - deploy

# 현재 사용자 확인
whoami
# 출력: deploy

# 현재 디렉토리 확인
pwd
# 출력: /home/deploy

이제부터는 deploy 사용자로 작업할 거예요!

💡 root로 돌아가려면: exit 명령어를 입력하면 됩니다.


1.6 방화벽 설정

서버를 외부 공격으로부터 보호하기 위해 방화벽을 설정해봅시다.

UFW 방화벽이란?

UFW(Uncomplicated Firewall)는 Ubuntu의 쉬운 방화벽이에요. 필요한 포트만 열고 나머지는 차단합니다.

기본 정책 설정

# 모든 들어오는 연결 차단 (기본)
sudo ufw default deny incoming

# 모든 나가는 연결 허용 (기본)
sudo ufw default allow outgoing

💡 설명:

  • incoming: 외부에서 서버로 들어오는 연결
  • outgoing: 서버에서 외부로 나가는 연결

SSH 포트 허용 (매우 중요!)

# SSH 포트 22번 허용 (이걸 안하면 접속이 끊어져요!)
sudo ufw allow ssh

⚠️ 경고: 이 단계를 빼먹으면 SSH 접속이 차단됩니다!

웹서버 포트 허용

# HTTP 포트 80번 허용
sudo ufw allow 80

# HTTPS 포트 443번 허용
sudo ufw allow 443

방화벽 활성화

# UFW 방화벽 활성화
sudo ufw enable

이런 경고가 나타납니다:

Command may disrupt existing ssh connections. Proceed with operation (y|n)?

y를 입력하고 Enter를 누르세요.

방화벽 상태 확인

# 현재 방화벽 규칙 확인
sudo ufw status verbose

출력 결과:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere

완벽해요! 🎉


1.7 추가 보안 설정 (선택사항)

더 강력한 보안을 원하시나요? 다음 설정들을 추가해보세요.

SSH 포트 변경 (고급)

기본 SSH 포트(22번)를 변경하면 자동화된 공격을 막을 수 있어요.

# SSH 설정 파일 편집
sudo nano /etc/ssh/sshd_config

다음 줄을 찾아서 수정:

# Port 22

Port 2222

로 변경

저장하고 나가기: Ctrl + X, Y, Enter

# 새 포트 방화벽 허용
sudo ufw allow 2222

# SSH 재시작
sudo systemctl restart sshd

⚠️ 주의: 다음 접속부터는 ssh -p 2222 deploy@서버IP 로 접속해야 합니다!

Fail2Ban 설치 (무차별 대입 공격 방지)

# Fail2Ban 설치
sudo apt install -y fail2ban

# 자동 시작 설정
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Fail2Ban은 로그인 시도를 여러 번 실패하면 자동으로 IP를 차단해요.


✅ 1단계 완료 체크리스트

모든 단계를 완료하셨나요? 체크리스트로 확인해봅시다!

  • Vultr 인스턴스 생성 완료
  • SSH로 서버 접속 성공
  • 시스템 업데이트 완료 (apt update && apt upgrade)
  • 필수 유틸리티 설치 완료
  • deploy 사용자 생성 및 sudo 권한 부여
  • SSH 키 설정 (권장)
  • UFW 방화벽 설정 (SSH, HTTP, HTTPS 포트 허용)
  • 방화벽 활성화 확인
  • deploy 사용자로 전환 가능

최종 확인 명령어

모든 설정이 제대로 되었는지 확인해봅시다:

# 현재 사용자 확인 (deploy여야 함)
whoami

# 방화벽 상태 확인
sudo ufw status

# 시스템 정보 확인
uname -a
lsb_release -a

문제 해결

문제 1: SSH 접속이 안 돼요

Connection refused 또는 Connection timeout

해결 방법:

  • Vultr 대시보드에서 서버가 “Running” 상태인지 확인
  • IP 주소를 정확히 입력했는지 확인
  • 인터넷 연결 확인
  • 방화벽에서 SSH 포트가 열려있는지 확인

문제 2: 비밀번호가 안 먹혀요

Permission denied (publickey,password)

해결 방법:

  • 비밀번호 복사/붙여넣기 시 공백이 포함되지 않았는지 확인
  • Vultr 웹 콘솔로 접속해서 비밀번호 재설정
  • 대소문자 구분 확인

문제 3: apt 명령어가 안 돼요

E: Could not get lock /var/lib/apt/lists/lock

해결 방법:

# 잠금 파일 제거
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*

# dpkg 재구성
sudo dpkg --configure -a

# 다시 업데이트
sudo apt update

문제 4: 방화벽 때문에 SSH가 끊겼어요

해결 방법:

  • Vultr 웹 콘솔로 접속
  • 다음 명령어 실행:
    sudo ufw allow ssh
    sudo ufw enable
    

다음 단계

축하합니다! 1단계를 완료하셨어요! 🎉

서버가 준비되었으니 이제 Laravel을 실행하는데 필요한 소프트웨어들을 설치할 차례입니다.


← 메인으로 다음: 서버 환경 설정 →