웹사이트 검색

Vagrant로 로컬 WordPress 개발 환경 설정


이 페이지에서

  1. VirtualBox 설치
  2. Vagrant 설치
    1. Vagrant Hosts Updater 플러그인 설치\n

    1. 리눅스
    2. 맥 OS

    1. VVV 시작
    2. Windows 8/10 사용자를 위한 참고 사항\n
    3. 새 사이트 추가
    4. 변수
    5. 기존 사이트 추가
    6. SSL 활성화\n
    7. WordPress 업데이트
    8. VVV 업데이트

    워드프레스로 개발한다면 필요한 다른 툴과 함께 서버, 데이터베이스 툴, 몇 개의 워드프레스 사이트를 설치한 로컬 환경을 설정하는 것이 바람직하다. 몇 개의 프로젝트만 작업하는 경우에는 괜찮습니다. 그러나 그들이 번식하면 문제가 발생합니다. 또한 클라이언트가 귀하와 다른 설정을 가지고 있기 때문에 여러 환경을 유지 관리해야 하는 골칫거리도 있습니다.

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

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

    버추얼박스 설치

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

    방랑자 설치

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

    성공적으로 설치되었는지 테스트하려면 OS 명령줄에 다음 명령을 입력하십시오.

    $ vagrant -v

    Vagrant Hosts Updater 플러그인 설치

    vagrant-hostupdater 플러그인은 Vagrant에서 설정한 도메인이 작동하도록 OS 호스트 파일을 수정합니다. 설치하려면 다음 명령을 실행하십시오.

    $ vagrant plugin install vagrant-hostsupdater

    네트워킹 문제가 없도록 Vagrant/Virtualbox를 설치한 후 OS를 재부팅합니다.

    힘내 설치

    리눅스

    이 자습서에는 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 ""

    윈도우

    Windows에 Git을 설치하려면 Gits 다운로드 페이지로 이동하여 바이너리를 설치하세요.

    맥 OS

    homebrew가 설치되어 있으면 다음 명령을 통해 Git을 설치할 수 있습니다.

    $ brew install git

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

    다양한 Vagrant Vagrant 설치

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

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

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

    여기에서는 시스템에 있는 저장소의 마스터 분기를 복제합니다. 더 빠른 업데이트를 원하면 개발 분기를 사용할 수 있습니다.

    VVV 시작하기

    VVV를 복제한 디렉토리로 변경합니다.

    $ cd vvv

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

    $ vagrant up

    이 과정은 다소 시간이 걸릴 수 있으므로 인내심을 가지십시오. 시스템 호스트 파일을 설정하는 데 필요한 프로세스 중에 루트 암호를 묻는 메시지가 나타날 수 있습니다.

    Windows 8/10 사용자를 위한 참고 사항

    Windows를 사용 중인 경우 다음 오류가 발생할 수 있습니다.

    ==> default: Booting VM... 
    There was an error while executing `VBoxManage`, a CLI used by Vagrant
    for controlling VirtualBox. The command and stderr is shown below.

    Command: ["startvm", "1fe83aa1-2f23-4ddd-ad77-b7e7e00aabe6", "--type", "headless"]

    Stderr: VBoxManage.exe: error: Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only
    Ethernet Adapter #3' (VERR_INTNET_FLT_IF_NOT_FOUND).
    VBoxManage.exe: error: Failed to attach the network LUN (VERR_INTNET_FLT_IF_NOT_FOUND)
    VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole

    여기에 언급된 어댑터에 유의하십시오.

    VirtualBox Host-Only Ethernet Adapter #3

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

    이제 드라이버 탭을 클릭하십시오. 드라이버 업데이트를 클릭하십시오. 내 컴퓨터에서 드라이버 찾아보기를 선택합니다. 이제 내 컴퓨터의 사용 가능한 드라이버 목록에서 직접 선택을 선택하십시오. 선택한 항목을 선택하고 다음을 클릭합니다. 닫기를 클릭하여 업데이트를 마칩니다. 이제 Terminal/Powershell/Command 창으로 돌아가서 vagrant up 명령을 반복합니다. 이번에는 잘 작동합니다.

    이 작업이 완료되면 http://vvv.test url에서 VVV 대시보드를 방문할 수 있습니다.

    VVV는 두 가지 기본 WordPress 설치와 함께 제공됩니다. - http://two.wordpress.test 두 사이트 모두 동일한 로그인 세부 정보(사용자 이름은 admin, 비밀번호는 비밀번호)가 있습니다. 두 사이트 모두에 대한 데이터베이스 자격 증명은 사용자 이름과 암호로 wp입니다. MySQL 루트 사용자 자격 증명은 사용자 이름과 암호 모두 루트입니다. 그리고 VM의 루트 사용자 자격 증명은 사용자 이름으로 root이고 암호로 vagrant입니다.

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

    $ vagrant reload --provision

    wordpress-meta-environment로 표시된 URL이 없는 다른 wordpress 설치가 있습니다. 이 설치는 WordPress 메타 팀(예: WordCamps, .org 등)에 기여하는 데 유용한 환경을 만듭니다. 이 설치를 활성화하려면 vvv-custom.yml

    hosts:
    - wpmeta.test

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

    $ vagrant reload --provision

    새 사이트 추가

    VM에 다른 사이트를 추가하려면 vvv 디렉토리에서 찾을 수 있는 vvv-custom.yml 파일을 편집해야 합니다. 거기에 없으면 vvv-config.yml을 복사하여 만드십시오. 이것은 일회성 프로세스이며 다시 수행할 필요가 없습니다. VVV를 업데이트할 때 vvv-config.yml을 덮어쓰므로 항상 vvv-custom.yml에서 변경하십시오.

    사이트 섹션 아래에 다음 코드를 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에서 관리하는 저장소를 사용하고 있습니다.

    설명 변수는 자명합니다.

    vm_dir은 사이트가 상주할 VM 내부의 실제 디렉토리입니다.

    local_dir은 사이트가 있는 호스트 시스템의 디렉토리입니다.

    분기 변수는 Vagrant에게 여기 예제에서 repo의 마스터 분기를 확인하도록 지시합니다.

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

    skip_provisioning은 이 사이트를 VM에 포함해야 함을 의미하는 false로 설정됩니다.

    호스트 변수는 사이트에 액세스하는 데 필요한 URL을 설정하는 데 사용됩니다.

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

    wp_type 변수는 설치가 단일, 도메인이 있는 다중 사이트 또는 하위 디렉토리가 있는 다중 사이트인지 여부를 결정합니다. wp_type은 single, subdomain, subdirectory 및 none의 네 가지 값을 갖습니다. 하위 도메인 설치를 사용하면 다중 사이트 설치를 위해 다음 형식으로 여러 호스트를 정의할 수 있습니다.

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

    wp_version인 사용자 지정 섹션 아래에 변수를 하나 더 추가할 수 있습니다. Nightly 버전의 WordPress를 설치하려면 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 활성화

    Localhost 설치는 일반적으로 보안되지 않습니다. Lets Encrypt를 사용하더라도 localhost에 자신의 인증서를 설치하는 것은 시간이 오래 걸리고 지루한 프로세스가 될 수 있습니다. 그러나 VVV는 이 프로세스를 매우 쉽게 만들고 기본적으로 모든 WordPress 설치에서 SSL을 활성화합니다. 귀하의 사이트에서 https를 사용하기 시작하십시오. 처음으로 브라우저가 유효하지 않은 인증서에 대해 불평하지만 예외로 추가하면 이제부터는 괜찮을 것입니다.

    워드프레스 업데이트

    대시보드에서 WordPress 설치를 업데이트할 수 있습니다. 또한 VVV는 VM을 재프로비저닝할 때마다 wordpress를 업데이트합니다. WordPress.org에서 다운로드하고 zip 파일을 추출하여 WordPress를 수동으로 업데이트할 수도 있습니다. 그리고 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 개발 환경을 설정하는 방법에 대한 자습서를 마칩니다. 질문이 있으시면 알려주십시오.