WordPress 개발 · 8 min read · Dec 07, 2025

Vagrant로 로컬 WordPress 개발 환경 설정하기

WordPress로 개발할 경우, 서버, 데이터베이스 도구 및 필요한 기타 도구와 함께 몇 개의 WordPress 사이트를 설치한 로컬 환경을 설정하는 것이 바람직합니다. 몇 개의 프로젝트에서 작업하는 경우에는 괜찮습니다. 그러나 프로젝트가 늘어나면 문제가 발생합니다. 또한 클라이언트의 설정이 여러분의 설정과 다르기 때문에 여러 환경을 유지 관리하는 데 따른 두통도 있습니다.

이 문제를 해결하기 위해, 우리는 Vagrant라고 부르는 도구를 사용할 수 있습니다. Vagrant는 가상 환경에서 작업하기 위한 도구입니다. 몇 가지 명령어로 로컬 개발 환경을 쉽게 설정할 수 있으며, 모든 것을 수동으로 설치하는 번거로움 없이 원하는 만큼 완전한 설정을 복제할 수 있습니다. Vagrant를 실행하려면 일련의 규칙을 정의해야 합니다. Vagrant는 이러한 규칙을 기반으로 가상 머신을 설정합니다. Vagrant는 이를 위해 두 개의 파일이 필요합니다: Vagrantfile은 Vagrant에 가상 머신이 필요로 하는 하드웨어 종류를 알려주고, 배포 파일은 Vagrant에 가상 머신에서 수행할 작업을 알려줍니다.

Vagrant는 가상 환경에서 작동하기 때문에 Vagrant를 실행하기 위해 가상 머신 소프트웨어가 필요합니다. 우리의 목적을 위해, 우리는 오픈 소스 Virtualbox를 사용할 것입니다.

VirtualBox 설치하기

Virtualbox의 다운로드 페이지로 이동하여 게스트 호스트에 해당하는 바이너리 파일을 다운로드합니다. (게스트 호스트는 개발 환경을 실행할 운영 체제입니다.) Virtualbox를 설치합니다.

Vagrant 설치하기

Vagrant의 다운로드 페이지에서 운영 체제에 해당하는 바이너리를 다운로드하고 설치합니다.

정상적으로 설치되었는지 테스트하려면, OS의 명령줄에 다음 명령어를 입력합니다.

$ vagrant -v

Vagrant Hosts Updater 플러그인 설치하기

vagrant-hostupdater 플러그인은 Vagrant가 설정한 도메인이 작동하도록 OS의 hosts 파일을 수정합니다. 설치하려면 다음 명령어를 실행합니다.

$ vagrant plugin install vagrant-hostsupdater

Vagrant/Virtualbox를 설치한 후에는 네트워킹 문제를 피하기 위해 OS를 재부팅합니다.

Git 설치하기

리눅스

이 튜토리얼을 위해 Git 버전 관리가 필요합니다. 설치되어 있지 않다면, Debian/Ubuntu 배포판을 사용하는 경우 다음 명령어를 사용하여 설치합니다.

$ sudo apt install git

또는 Fedora를 사용하는 경우

$ sudo dnf install git

또는 CentOS/RHEL을 사용하는 경우

$ sudo yum install git

설치된 Git 버전을 확인하려면 다음 명령어를 사용합니다.

$ git --version

다음과 같은 결과를 볼 수 있습니다.

$ git version 2.20.1

다음 명령어를 사용하여 Git을 설정해야 합니다.

$ git config --global user.name "Your Name"   
$ git config --global user.email "[email protected]"

윈도우

Windows에 Git을 설치하려면 Git의 다운로드 페이지로 이동하여 바이너리를 설치합니다.

Mac OS

Homebrew가 설치되어 있다면, 다음 명령어를 사용하여 Git을 설치할 수 있습니다.

$ brew install git

또는 Git의 다운로드 페이지에서 바이너리 패키지를 다운로드하여 설치할 수 있습니다.

다양한 Vagrant Vagrants 설치하기

Vagrant 설정을 처음부터 만드는 대신, WordPress 개발 환경을 만들기 위해 특별히 설계된 오픈 소스 Vagrant 구성인 Varying Vagrants Vagrant(VVV)를 사용할 것입니다. 표준 VVV는 Nginx 서버, MariaDB 데이터베이스, PHP, WP-CLI, Node.js, MailHog, Composer, memcached, phpMyAdmin, git 및 다양한 기타 도구와 함께 Ubuntu 18.04를 기반으로 가상 머신을 설정합니다. VVV는 기본적으로 여러 개의 WordPress 설치를 제공하며, 그 중 하나는 최신 bleeding-edge 버전으로 실험을 도와줍니다.

첫 번째 단계는 VVV의 Git 리포지토리를 시스템의 로컬 디렉토리에 클론하는 것입니다.

$ git clone -b master git://github.com/Varying-Vagrant-Vagrants/VVV.git ~/vvv

여기서는 시스템에서 리포지토리의 마스터 브랜치를 클론하고 있습니다. 더 빠른 업데이트를 원하신다면 개발 브랜치를 사용할 수 있습니다.

VVV 시작하기

VVV를 클론한 디렉토리로 이동합니다.

$ cd vvv

가상 머신을 설치하고 모든 것을 설정할 Vagrant 환경을 시작합니다.

$ vagrant up

이 과정은 시간이 걸릴 수 있으니 인내심을 가지세요. 이 과정에서 시스템의 hosts 파일을 설정하는 데 필요한 루트 비밀번호를 요청받을 수 있습니다.

Windows 8/10 사용자 주의사항

Windows를 사용 중이라면 다음과 같은 오류가 발생할 수 있습니다.

==> default: Booting VM...   
`VBoxManage`를 실행하는 동안 오류가 발생했습니다. Vagrant가 VirtualBox를 제어하는 데 사용하는 CLI입니다. 명령어와 stderr는 아래에 표시됩니다.   
   명령어: ["startvm", "1fe83aa1-2f23-4ddd-ad77-b7e7e00aabe6", "--type", "headless"]   
   Stderr: VBoxManage.exe: 오류: 내부 네트워크 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #3'를 열거나 생성하지 못했습니다 (VERR_INTNET_FLT_IF_NOT_FOUND).   
VBoxManage.exe: 오류: 네트워크 LUN을 연결하지 못했습니다 (VERR_INTNET_FLT_IF_NOT_FOUND)   
VBoxManage.exe: 오류: 세부정보: 코드 E_FAIL (0x80004005), 구성 요소 ConsoleWrap, 인터페이스 IConsole

여기서 언급된 어댑터를 주의하세요:

VirtualBox Host-Only Ethernet Adapter #3

제어판 >> 네트워크 및 공유 센터로 이동합니다. 이제 어댑터 설정 변경을 클릭합니다. VirtualBox Host-Only Ethernet Adapter #3와 이름이나 장치 이름이 일치하는 어댑터를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭합니다. 구성 버튼을 클릭합니다.

이제 드라이버 탭을 클릭합니다. 드라이버 업데이트를 클릭합니다. 내 컴퓨터에서 드라이버 찾아보기를 선택합니다. 이제 내 컴퓨터에서 사용 가능한 드라이버 목록에서 선택하게 하십시오를 선택합니다. 제공된 선택지를 선택하고 다음을 클릭합니다. 업데이트를 마치려면 닫기를 클릭합니다. 이제 터미널/Powershell/명령 창으로 돌아가 vagrant up 명령어를 반복 실행합니다. 이번에는 잘 작동해야 합니다.

이 과정이 끝나면 http://vvv.test URL에서 VVV 대시보드에 방문할 수 있습니다.

VVV는 두 개의 기본 WordPress 설치를 제공합니다 - http://one.wordpress.testhttp://two.wordpress.test 두 사이트는 동일한 로그인 세부정보를 가지고 있으며, 사용자 이름은 admin이고 비밀번호는 password입니다. 두 사이트의 데이터베이스 자격 증명은 사용자 이름과 비밀번호 모두 wp입니다. MySQL 루트 사용자 자격 증명은 사용자 이름과 비밀번호 모두 root입니다. VM의 루트 사용자 자격 증명은 사용자 이름은 root이고 비밀번호는 vagrant입니다.

http://trunk.wordpress.net에 개발자 WordPress 설치가 있지만, 프로비저닝되지 않았기 때문에 작동하지 않습니다. 이 설치는 Trac 티켓 및 패치로 작업하는 WordPress 기여자에게 유용합니다. 이를 활성화하려면 vvv-custom.yml을 열고 wordpress-trunk 아래의 skip_provisioning 값을 false로 변경한 다음 다음 명령어를 사용하여 VM을 다시 프로비저닝합니다.

$ vagrant reload --provision

URL이 없는 또 다른 WordPress 설치가 wordpress-meta-environment으로 레이블이 붙어 있습니다. 이 설치는 WordPress 메타 팀에 대한 기여에 유용한 환경을 생성합니다. 예를 들어, WordCamps, .org 등입니다. 이 설치를 활성화하려면 vvv-custom.yml 파일의 wordpress-meta-environment 아래에 다음 줄을 추가합니다.

hosts:  
  - wpmeta.test

그런 다음 skip_provisioning 값을 false로 변경하고 VM을 다시 프로비저닝합니다.

$ vagrant reload --provision

새 사이트 추가하기

VM에 다른 사이트를 추가하려면 vvv 디렉토리에서 vvv-custom.yml 파일을 편집해야 합니다. 파일이 없다면, vvv-config.yml을 복사하여 생성합니다. 이는 한 번만 수행하는 과정이며, 다시 수행할 필요는 없습니다. 항상 vvv-custom.yml에서 변경 사항을 적용해야 합니다. vvv-config.yml은 VVV를 업데이트할 때 덮어씌워지기 때문입니다.

새 사이트를 추가하려면 vvv-custom.yml의 사이트 섹션 아래에 다음 코드를 추가합니다.

newsite:
    repo: https://github.com/Varying-Vagrant-Vagrants/custom-site-template
    description: "A WordPress subdir multisite install"  
    vm_dir: /srv/www/newsite  
    local_dir: /home/user/vvv/www/newsite  
    branch: master  
    nginx_upstream: php
    skip_provisioning: false
    hosts:
      - newsite.test
    custom:
      wp_type: subdirectory

변수들

repo 변수는 VM에서 새 WordPress 사이트를 설정하는 방법에 대한 정보를 포함하는 미리 정의된 GitHub 리포지토리를 참조합니다. 현재 우리는 VVV에서 유지 관리하는 리포지토리를 사용하고 있습니다.

description 변수는 자명합니다.

vm_dir는 사이트가 존재할 VM 내부의 실제 디렉토리입니다.

local_dir는 호스트 머신에서 사이트가 존재하는 디렉토리입니다.

branch 변수는 Vagrant에 예제에서 리포지토리의 마스터 브랜치를 체크아웃하도록 지시합니다.

nginx_upstream은 Nginx가 요청을 전달하는 위치를 설정하는 데 사용되며, 일반적으로 설치에 필요한 PHP 버전을 변경하는 데 사용됩니다. 여기서 php는 기본 PHP 버전인 7.2를 나타냅니다. php71을 사용하여 PHP 7.1로 변경하거나 php56을 사용하여 PHP 5.6으로 변경할 수 있습니다.

skip_provisioning은 false로 설정되어 있으며, 이는 이 사이트를 VM에 포함해야 함을 의미합니다.

hosts 변수는 사이트에 접근하기 위해 필요한 URL을 설정하는 데 사용됩니다.

custom 섹션은 WordPress 사이트에 대한 추가 제어가 필요한 경우 유용합니다. 이 섹션을 사용하여 멀티사이트 설치를 설정하거나 다른 버전의 WordPress를 설치하고 데이터베이스 또는 설치에 사용될 사이트 이름을 변경할 수 있습니다.

wp_type 변수는 설치가 단일, 도메인이 있는 멀티사이트 또는 서브디렉토리가 있는 멀티사이트가 될지를 결정합니다. wp_type은 single, subdomain, subdirectory 및 none의 네 가지 값을 가질 수 있습니다. 서브도메인 설치를 통해 다음 형식으로 멀티사이트 설치를 위한 여러 호스트를 정의할 수 있습니다.

hosts:
    - multisite.test
    - site1.multisite.test
    - site2.multisite.test
  custom:
    wp_type: subdomain

custom 섹션 아래에 wp_version이라는 변수를 추가할 수 있습니다. WordPress의 Nightly 버전을 설치하려면 이를 nightly로 설정할 수 있습니다. 세 가지 값: nightly, latest 및 버전 번호를 가질 수 있습니다.

custom: 
     wp_version: nightly

또 다른 변수인 db_name은 설치를 위한 데이터베이스 이름을 설정할 수 있게 해줍니다.

custom:
    db_name: super_secet_db_name

마지막으로, site_title 변수는 WP 사이트의 제목을 설정할 수 있게 해줍니다.

custom:
    site_title: My Awesome Dev Site

이것은 VVV에 자신의 웹사이트를 추가하는 데 필요한 모든 변수와 옵션을 다룹니다. vvv-custom.yml 파일을 변경한 후, 새 사이트가 작동하도록 하려면 다음 명령어를 실행합니다.

$ vagrant reload --provision

기존 사이트 추가하기

지금까지 우리는 VVV에 완전히 새로운 사이트를 추가하는 방법을 배웠습니다. 하지만 이미 작업 중인 사이트가 있고 이를 VVV에 추가하고 싶다면 어떻게 해야 할까요? 이를 살펴보겠습니다.

기존 사이트를 추가하기 위한 첫 번째 단계는 이전과 동일합니다. 즉, vvv-custom.yml 파일을 편집하고 다음 코드를 추가합니다.

howtoforge:
    repo: https://github.com/Varying-Vagrant-Vagrants/custom-site-template
    description: "A WordPress site"  
    vm_dir: /srv/www/newsite  
    local_dir: /home/user/vvv/www/newsite  
    hosts:
      - howtoforge.local

이렇게 하면 VVV가 http://howtoforge.local를 통해 접근할 수 있는 새 사이트를 설정하도록 지시합니다. 하지만 이는 완전히 새로운 사이트입니다. 우리가 해야 할 일은 이를 기존 설치로 변환하는 것입니다. 이를 위해 기존 WordPress 설치에서 파일을 로컬 디렉토리인 /home/user/vvv/www/newsite로 복사해야 합니다.

$ cp /var/www/howtoforge/ /home/user/vvv/www/newsite/

이제 데이터베이스를 복사해야 합니다. 이를 간단하게 수행하는 방법은 기존 데이터베이스를 .sql 파일로 내보내고, 해당 파일을 블로그 디렉토리로 복사한 다음 VM에 SSH로 접속하여 데이터베이스를 다시 가져오는 것입니다.

먼저, 로컬 시스템의 명령줄에서 mysql에 로그인하고 다음 명령어를 사용하여 데이터베이스를 내보냅니다.

$ cd /home/user/vvv/www/newsite
$ mysqldump -u username -p database_name > data-dump.sql

이제 VM을 다시 프로비저닝할 수 있습니다.

$ vagrant reload --provision

VM에 SSH로 접속합니다.

$ vagrant ssh

이제 데이터베이스를 VM에 다시 가져옵니다.

$ cd /srv/www/newsite 
$ mysql -u root -p newsite < data-dump.sql

VVV는 프로비저닝 중에 우리 블로그를 위해 newsite라는 새 데이터베이스를 이미 생성했습니다. 여기서 루트 사용자의 비밀번호는 root입니다. 위 명령어는 기존 데이터베이스를 새 데이터베이스로 가져옵니다.

이로써 VVV에 기존 사이트 설정이 완료되었습니다.

SSL 활성화하기

로컬호스트 설치는 일반적으로 보안이 되어 있지 않습니다. 그리고 로컬호스트에 자신의 인증서를 설치하는 것은 긴 과정이 될 수 있으며, Let’s Encrypt를 사용하더라도 번거로울 수 있습니다. 그러나 VVV는 이 과정을 상당히 쉽게 만들어 주며 기본적으로 모든 WordPress 설치에 SSL이 활성화되어 있습니다. 사이트에서 https를 사용하기 시작하세요. 처음에는 브라우저가 유효하지 않은 인증서에 대해 불만을 제기할 수 있지만 예외로 추가하면 이후에는 괜찮을 것입니다.

WordPress 업데이트하기

대시보드에서 WordPress 설치를 업데이트할 수 있습니다. 또한 VVV는 VM을 다시 프로비저닝할 때마다 WordPress를 업데이트합니다. WordPress.org에서 다운로드하여 zip 파일을 추출하여 수동으로 업데이트할 수도 있습니다. 또한 VVV와 함께 번들로 제공되는 WP CLI를 사용할 수도 있습니다. WP CLI를 사용하여 사이트를 업데이트하려면 다음 명령어를 사용합니다.

$ cd /srv/www/newsite
$ wp core update

VVV 업데이트하기

첫 번째 단계는 Vagrant 머신을 중지하는 것입니다.

$ vagrant halt

이제 Vagrant와 Virtualbox가 최신 상태인지 확인합니다. 그렇지 않은 경우, 다시 다운로드하여 설치합니다.

다음 명령어를 실행하여 Vagrant 박스를 업데이트합니다. 선택 사항이지만 진행하는 것이 좋습니다.

$ vagrant box update

이제 GitHub에서 최신 VVV 버전을 가져옵니다.

$ git pull

업데이트를 완료하기 위해 박스를 다시 프로비저닝합니다.

$ vagrant up --provision

추가 도구

VVV는 설치할 수 있는 다양한 유틸리티와 함께 제공됩니다. 이들은 vvv-custom.yml 파일의 유틸리티 섹션에 나열되어 있습니다. 기본적으로 tls-ca와 phpmyadmin이 활성화되어 있습니다. 유틸리티 섹션에서 # 기호를 제거하여 memcached, opcache, webgrind, mongodb, tideways 및 PHP 버전 5.6에서 7.3까지 추가로 설치할 수 있습니다.

설치할 소프트웨어를 추가할 수도 있습니다. vvv-custom.yml 파일을 다음과 같이 수정해야 합니다.

utilities:
  core:
    - tls-ca  
    - phpmyadmin
  java:
    - java7
utility-sources:
  java:
    repo: https://github.com/example/java-utilities.git
    branch: master

여기서 예를 들어 java라는 새로운 섹션을 추가합니다. 설치 코드는 git 리포지토리에서 가져옵니다. 귀하의 git 리포지토리는 다음과 같은 구조여야 합니다.

java7/
    provision.sh

provision.sh 파일에는 VM에 java를 설치하는 데 필요한 코드가 포함됩니다. 폴더 이름은 vvv-custom.yml 파일에서 사용한 이름과 일치해야 합니다.

결론

이로써 Vagrant로 로컬 WordPress 개발 환경을 설정하는 방법에 대한 튜토리얼이 마무리되었습니다. 질문이 있으면 알려주세요.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.