Site icon 쿠키프레스

Laravel 프로젝트를 Vultr에 배포하는 가장 빠른 방법

📢 본 글의 일부 링크는 제휴 링크로, 구매 시 소정의 수수료를 받습니다. 독자에게 추가 비용은 발생하지 않습니다.

Laravel 프로젝트를 로컬에서 잘 돌리다가 막상 실서버에 배포하려면 막막할 때가 있습니다. Forge 같은 유료 툴 없이, VPS에 직접 손으로 올리는 방법을 처음부터 끝까지 정리했습니다. 이 글을 따라하면 30분 안에 Vultr VPS에 Laravel 프로젝트를 배포할 수 있습니다.

대상 독자: Laravel 개발 경험이 있고, 직접 VPS 서버에 배포해보고 싶은 분

사전 준비

이 가이드에서 사용하는 환경은 다음과 같습니다.

Vultr 계정이 없다면 먼저 가입이 필요합니다. 신규 가입 시 $100 크레딧이 제공되어 한 달 이상 무료로 테스트할 수 있습니다.

Step 1: Vultr 인스턴스 생성

Vultr 대시보드에서 Deploy > Cloud Compute 선택 후 다음 옵션으로 설정합니다.

Deploy Now를 클릭하면 약 60초 안에 서버가 준비됩니다. IP 주소를 메모해둡니다.

Step 2: 서버 초기 셋팅

SSH로 접속합니다. 초기 비밀번호는 Vultr 대시보드에서 확인 가능합니다.

ssh root@[서버IP]

먼저 패키지를 업데이트하고 배포용 유저를 생성합니다.

apt update && apt upgrade -y

# 배포용 유저 생성
adduser deploy
usermod -aG sudo deploy

# 방화벽 설정
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable

Step 3: Nginx + PHP 8.2 + MySQL 설치

# Nginx 설치
apt install nginx -y

# PHP 8.2 + 필수 익스텐션
add-apt-repository ppa:ondrej/php -y
apt update
apt install php8.2 php8.2-fpm php8.2-mysql php8.2-xml \
    php8.2-mbstring php8.2-curl php8.2-zip php8.2-bcmath -y

# MySQL 8.0
apt install mysql-server -y
mysql_secure_installation

MySQL 보안 설정이 끝나면 Laravel용 데이터베이스와 유저를 생성합니다.

mysql -u root -p

CREATE DATABASE laravel_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY '강력한패스워드';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Step 4: Composer 설치

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer

Step 5: Laravel 프로젝트 배포

deploy 유저로 전환 후 진행합니다.

su - deploy
cd /var/www

# Git으로 프로젝트 클론
git clone https://github.com/[계정]/[리포지토리].git myapp
cd myapp

# Composer 의존성 설치
composer install --optimize-autoloader --no-dev

# 환경 설정
cp .env.example .env
php artisan key:generate

# .env 수정 (DB 정보 입력)
nano .env

.env에서 DB 설정을 입력합니다.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=강력한패스워드

마이그레이션과 권한 설정을 완료합니다.

php artisan migrate --force

# 권한 설정
sudo chown -R www-data:www-data /var/www/myapp
sudo chmod -R 755 /var/www/myapp/storage
sudo chmod -R 755 /var/www/myapp/bootstrap/cache

Step 6: Nginx 설정 + SSL

Nginx 설정 파일을 작성합니다.

sudo nano /etc/nginx/sites-available/myapp
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    root /var/www/myapp/public;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

마지막으로 Let’s Encrypt로 HTTPS를 적용합니다.

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

자주 만나는 에러

에러원인해결
500 Server Error.env 파일 없음 또는 APP_KEY 미설정php artisan key:generate 실행
Permission Denied (storage)storage 폴더 권한 문제chmod -R 775 storage bootstrap/cache
SQLSTATE Connection RefusedDB 설정 오류.env의 DB_HOST를 127.0.0.1로 확인
Nginx 502 Bad GatewayPHP-FPM 소켓 경로 불일치php8.2-fpm 소켓 경로 확인
Class not foundautoload 캐시 문제composer dump-autoload 실행

마무리

이 가이드에서 다룬 내용을 정리하면 다음과 같습니다.

다음 단계로는 Laravel Forge를 활용한 자동화 배포 또는 GitHub Actions CI/CD 파이프라인 구성을 추천합니다.

💡 이 튜토리얼에서 사용한 서비스

Vultr 서울 리전 VPS — 국내 최저 지연시간, 신규 가입 시 $100 크레딧 제공


Vultr 시작하기 (신규 가입 $100 크레딧)

위 링크는 제휴 링크입니다. 클릭 후 가입 시 추가 비용 없이 블로그 운영에 도움이 됩니다.

함께 읽으면 좋은 글들

워드프레스 모바일 반응형 디자인 설정 완벽 가이드

50대 초보자도 쉽게 구글 애드센스 승인받는 법 [완벽가이드]

Exit mobile version