Полное руководство по использованию Vagrant для установки тестовой среды WordPress

Установка локальной среды для WordPress – достаточно популярная потребность разработчиков. Поскольку все запущено на вашем компьютере, время загрузки становится значительно ниже, и вы можете безопасно протестировать все аспекты сайта, перед тем как перейти к работающей среде.

Локальная сборка WordPress предназначена не только для кодеров. Она подойдет и простым пользователям, которые могут очень быстро протестировать темы и плагины, создать столько сборок, сколько требуется, а также поиграться с WordPress, не сломав свой работающий сайт.

Многие пользователи используют XAMPP и MAMP вместо более свежего Vagrant. Хотя они тоже являются прекрасным выбором, Vagrant является более гибким, и при этом таким же простым.

В данном руководстве я покажу вам простой способ того, как установить Vagrant. Мы начнем с самых основ и закончим полноценной функционирующей сборкой WordPress. Давайте приступим!

Двухминутный метод

Запустить Vagrant на своем компьютере очень просто. Для начала нужно скачать VirtualBox и установить его, после чего взять уже Vagrant. Создаем каталог, в котором будут храниться файлы вашего сайта, и, используя Terminal или Command Prompt, вставляем следующий код (спасибо Джеффри Уэю):

curl -L -o 'install.sh' http://bit.ly/1hBfq57 && curl -L -o 'Vagrantfile' http://bit.ly/1mE3Qt9 && vagrant up

Готово. Если вы перейдете по ссылке http://192.168.33.21 в вашем браузере, вы увидите сообщение об успешном выполнении Apache. Теперь вы можете загрузить WordPress в директорию html в той папке, которую вы создали для вашего сайта.

Это действительно очень просто! Вы можете сделать гораздо больше всяких вещей, однако пока давайте посмотрим на теорию.

Как работает Vagrant?

Vagrant использует виртуальную машину для создания серверной среды. Это означает, что для вас устанавливается и запускается целая операционная система. Именно поэтому при первом запуске vagrant up может потребоваться 15-20 минут для завершения данного процесса. При последующих запусках вам потребуется всего лишь несколько секунд, поскольку операционная система уже будет установлена, ее понадобится лишь загрузить.

Чтобы добиться цели, Vagrant требует Vagrantfile и необязательный файл install.sh. Vagrantfile включает в себя всю информацию, которая требуется Vagrant для установки бокса: IP-адрес, который вы хотите использовать для доступа к веб-серверу, какой именно бокс вы хотите использовать, расположение этого бокса и т.д.

Необязательный файл install содержит в себе информацию о том, что вы хотите установить, после того как бокс будет создан. Сюда можно отнести MySQL-сервер, некоторые модификации Apache, сообщения об ошибках и т.д.

Vagrantfile можно представить себе в виде установщика OSX или Windows. Он позволяет вам добавлять некоторые параметры, которые используются в процессе установки. Файл install.sh автоматизирует задачи, которые вы могли бы сделать после установки системы (установить Dropbox, Evernote, Photoshop и т.д.).

Почему используют Vagrant?

Вы можете подумать следующим образом: это все, конечно, здорово, но у меня уже установлен и запущен на компьютере MAMP, так зачем мне теперь переходить на Vagrant? Мне лично больше нравится Vagrant вследствие его гибкости и переносимости.

Vagrant является очень гибким – вы можете управлять всеми его аспектами. Конечно, MAMP, XAMPP и другие похожие продукты являются превосходными, однако они предлагают ограниченную функциональность и настройку. Кроме того, ваша среда MAMP/XAMPP в действительности никогда не будет похожа на вашу рабочую среду. Поскольку Vagrant использует виртуальные машины, вы можете скачать боксы, которые будут полностью имитировать популярные веб-хостинги, что позволит вам получить практически идентичную локальную и рабочую среду.

Переносимость очень важна при работе в команде, либо если вы работаете из нескольких расположений. Vagrantfile и файл install – все, что вам нужно, чтобы получить полноценную конфигурацию сервера. Эти файлы в самом начале работы умещаются в 1 Кб и могут быть загружены в вашу систему управления версиями. Теперь ваша команда может использовать тестовую среду, вне зависимости от операционной системы, которая у вас имеется.

Настройка Vagrant

Команда, которую я показал вам в начале этой статьи, делает следующее:

  • Загружает предварительно созданный Vagrant файл
  • Загружает предварительно созданный install файл
  • Запускает вашу виртуальную машину

Давайте выполним все эти шаги вручную; таким образом, мы сможем настроить их и изучить их работу. Создайте пустой каталог на вашем компьютере и, используя Terminal или Command Prompt, перейдите к этой папке. Создайте пустой файл под названием Vagrantfile и откройте его в любимом редакторе. Далее вставьте в него следующий код:

# -*- mode: ruby -*-
# vi: set ft=ruby :
 
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
 
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "precise64"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"
  config.vm.network :private_network, ip: "192.168.99.99"
  config.vm.provision :shell, :path => "install.sh"
  config.vm.synced_folder ".", "/var/www"
end

Как вы можете видеть, мы передаем некоторую информацию в Vagrant о том, как мы хотим, чтобы наша виртуальная машина была установлена. Бокс, который мы используем, называется precise64, он может быть загружен по URL, который вставлен выше. Вы можете найти кучу специальных боксов на Vagrantbox.es, однако этот идеально подходит для общего использования.

Затем идет IP-адрес, который вы хотите использовать для доступа к вашему веб-серверу. Чуть позже я покажу вам, как использовать что-то типа website.local вместо IP. В следующей строке стоит ссылка на файл install, после чего задается синхронизированная папка. Это – папка на виртуальной машине, которая будет синхронизироваться с вашей обычной файловой системой.

Файл install.sh может стать несколько более сложным в зависимости от того, что именно вам нужно установить. Я использовал следующий код.

sudo apt-get update
 
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password root'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password root'
 
sudo apt-get install -y vim curl python-software-properties
sudo add-apt-repository -y ppa:ondrej/php5
sudo apt-get update
 
sudo apt-get install -y php5 apache2 libapache2-mod-php5 php5-curl php5-gd php5-mcrypt php5-readline mysql-server-5.5 php5-mysql git-core php5-xdebug
 
sudo a2enmod rewrite
 
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php5/apache2/php.ini
sed -i "s/display_errors = .*/display_errors = On/" /etc/php5/apache2/php.ini
sed -i "s/disable_functions = .*/disable_functions = /" /etc/php5/cli/php.ini
 
sudo service apache2 restart
 
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Сначала мы обновляем apt-get, менеджер пакетов – это просто небольшое обслуживание. Затем мы устанавливаем имя пользователя и пароль для MySQL-сервера как root. Потом мы устанавливаем cURL, PHP5, Apache, Git  и т.д. Затем включается модуль перезаписи Apache и отчет об ошибках. Сервер затем перезагружается и ставится composer.

Оба моих файла, Vagrantfile и install, представляют собой несколько модифицированные версии этих же файлов от Джеффри Уэя. Если вам что-то не понятно в файле установки, не беспокойтесь, просто воспользуйтесь готовым кодом.

Финальный шаг: нам осталось ввести vagrant up в терминал или в командную строку и ждать, когда Vagrant сделает свое дело. При первом запуске потребуется много времени, поэтому можете сходить сделать себе чашечку кофе.

Настройка веб-сайтов

На данном этапе вы можете перейти к директории HTML и создать сайт, установить WordPress и т.д. Однако в действительности нам не требуется запускать одну виртуальную машину для каждого сайта, с которым мы работаем. И как насчет того, чтобы сделать нормальную ссылку на сайт вместо 192.168.99.99? Настроив несколько вещей, мы сможем все это легко сделать.

Вводим vagrant ssh в терминал или в командную строку для получения доступа к виртуальной машине. Вводим cd /etc/apache2/sites-available для получения доступа к папке, которая хранит текущие сайты. Мы можем использовать эту директорию для добавления виртуальных хостов. Вот как это сделать: давайте создадим конфигурационный файл, который будет содержать некоторые опции для нашего виртуального хоста. Используем touch blog.conf для создания нового конфигурационного файла. Затем вводим sudo vi blog.conf для редактирования файла через vi. Для перехода к Edit Mode нажмите «/», и вставьте следующий код в файл:

ServerName blog.local
DocumentRoot /var/www/blog
 
<Directory /var/www/laravel/blog>
  Options -Indexes +FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

Нажмите ESC и введите :wq, после чего щелкните Enter. Эта команда сохранит файл. ServerName в коде определяет то, как мы хотим обращаться к данному расположению. Вместо ввода 192.168.99.99/blog мы используем blog.local – так гораздо удобнее и проще!

Директива DocumentRoot задает корневую директорию для сайта. Мы должны будем создать этот каталог, поэтому перейдите к синхронизированной папке, вбив cd /var/www/blog. Используйте mkdir blog для выполнения работы. Обратите внимание, что поскольку данная директория синхронизирована с вашей файловой системой, вы можете перейти к созданному каталогу на вашем компьютере и создать директорию блога оттуда.

Теперь у вас имеется конфигурационный файл, однако сайт должен быть активирован – введите sudo a2ensite blog. Наконец, перезапустите сервер для загрузки изменений: sudo service apache2 restart. Ваш сайт теперь активен, но нам предстоит сделать еще одну вещь: отредактировать файл hosts, чтобы убедиться в том, что ваш компьютер ищет blog.local в корректном расположении.

Для пользователей OSX и Linux файл hosts лежит по адресу: /etc/hosts. Используйте ваш терминал для его редактирования: sudo vi /etc/hosts. Для компьютеров Windows файл hosts находится по адресу C:WindowsSystem32Driversetchosts. Используйте текстовый редактор для его изменения. В обоих случаях вам нужно будет добавить одну строку в него:

192.168.99.99  blog.local

IP должен быть тем же самым, который вы определили в Vagrantfile. Название сайта должно быть именем сервера, которое вы задали в конфигурационном файле. Как только вы сохраните этот файл (используя :wq в терминале), вы сможете получить доступ к вашему новому сайту через http://blog.local.

Повторите этот процесс, создав такое количество виртуальных хостов, сколько вам нужно для работы с несколькими сайтами, используя ту же самую виртуальную машину.

Пятиминутная установка WordPress

Вы можете установить WordPress несколькими способами. Давайте рассмотрим два из них.

Самый популярный метод – перейти к WordPress.org, скачать WordPress и извлечь все файлы в новую директорию blogs. Поскольку WordPress извлекает файлы в свою собственную папку wordpress, вам, возможно, понадобится переместить все файлы и папки на один уровень выше, в директорию blog.

Как только вы сделаете это, вы можете перейти по адресу http://blog.local и завершить процесс инсталляции, используя известную пятиминутную установку. Перед тем, как закончить процесс установки, вам понадобится сделать еще одну дополнительную вещь – создать базу данных. Вы можете сделать это через терминал. Убедитесь в том, что вы подключились через SSH к вашему серверу. Введите mysql -uroot -p для доступа к серверу MySQL, используя root в качестве пароля, когда он будет запрошен. Затем введите CREATE DATABASE blog;, нажмите Enter и введите exit для выхода из MySQL консоли. Теперь у вас есть все необходимое для установки WordPress.

Установка WordPress с помощью WP-CLI

В статье «Установка WordPress на уровне профи» я описал работу с инструментом командной строки WP-CLI, который поможет выполнить массу разных задач, в том числе и установку. Поэтому давайте установим WP-CLI на наш локальный сервер и используем его для получения WordPress. Вы можете найти инструкции по установке в сети, однако здесь мы приведем короткий пошаговый процесс.

Убедитесь в том, что вы подключились через SSH к вашему серверу, и используйте cURL для загрузки файла WP-CLI:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Теперь измените права доступа к нему, чтобы убедиться, что вы можете его использовать, после чего поместите его по вашему пути, чтобы запускать его глобально. Используйте следующие две команды для этого:

chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Вы можете ввести wp —info в терминале и получить некоторую информацию о WP-CLI. Давайте скачаем все WordPress-файлы гораздо быстрее, чем мы это делали раньше.

Переходим в папку вашего сайта cd /var/www/blog, и используем wp core download. Это приведет к тому, что все WordPress файлы будут автоматически получены и извлечены в нужном месте, и ничего не придется переносить. Вы можете продолжить установку вашего сайта, используя GUI-инструмент, перейдя к http://blog.local, также вы можете продолжить работу с WP-CLI. Вот набор команд, которые вы можете использовать:

wp core config --dbuser=root --dbpass=root --dbname=blog
wp db create
wp core install --url=blog.local --title=Blog --admin_user=danielpataki --admin_password=secretpass --admin_email=mymail@mail.com

Готово. Теперь у вас должен быть установленный WordPress. WP-CLI имеет массу полезных команд, которые позволяют перемещать сайт, массово устанавливать плагины и темы. Это один из моих любимых инструментов для WordPress.

Проблемы с загрузкой WordPress

Если вы используете ту же самую конфигурацию, что и я, вы, возможно, обнаружите, что с ней очень сложно загружать изображения в WordPress. Мне потребовалось некоторое время, чтобы справиться с этой проблемой, однако она очень легко решается путем проверки того, что Apache запущен для Vagrant пользователей/групп. Давайте отредактируем соответствующий файл, используя sudo vi /etc/apache2/apache2.conf:

Нам нужно найти директивы пользователей и групп. Вы можете выполнить прокрутку, пока вы их не найдете, значения должны быть ${APACHE_RUN_USER} и ${APACHE_RUN_GROUP} соответственно. Вы можете также ввести :/User. Замените эти две строки следующими:

User vagrant
Group vagrant

Сохраните файл, используя :wq, после чего перезапустите сервер, выполнив sudo service apache2 restart. Когда это будет выполнено, вы сможете нормально загружать изображения.

Заключение

Есть много вещей, которые вы можете настроить в Vagrant, однако базовый процесс достаточно простой. Если вам нужен быстрый и грязный сервер, вы можете запустить его при помощи простой команды, после чего установить WordPress.

Используя некоторые виртуальные хосты и WP-CLI, вы можете создать мощную среду разработки или тестирования всего за пару минут. Как только я начал использовать Vagrant с WordPress, я больше уже никогда не оглядывался назад, и всегда использовать этот метод. Я надеюсь, что и вы тоже!

Используете ли вы локальную среду разработки с WordPress? Что вы используете? Vagrant? MAMP? XAMPP? Поделитесь своим мнением в комментариях!

Источник: wpmu.org

Блог про WordPress
Комментарии: 26
  1. Алексей

    Классная мысль с Vagrant! Я всегда пользовался тестовым блогом в подкаталоге основного блога, То есть создал поддомен, закинул туда движок, поставил тему, которая мне нужна и все опыты проводил на нем.

    Теперь прочитав вашу статью, я установлю блог на локальном компьютере с помощью Vagrant. Попробую тестировать на нем свой блог.

    P.S. Для тех кто хочет сделать для себя тестовый блог (поддомен) и все необходимое для тестирования, то, я оставляю ссылку в своем имене на этот пост. Надеюсь, админ ее пропустит.

  2. Андрей

    Не вкурил смысл извращений с Вагрантом и Виртуалбоксом… Чтобы запустить WP на локальной машине (на винде по крайней мере) и хоть обэксперементироваться нужно USBWebserver и пять минут… Все переносибельно флешкой т.к. лежит в отдельной папке и в систему не лезет, все файлы сайта доступны напрямую… Я так и делал все на компе, потом перетаскивал в интернет..

  3. DM

    Ндаа… Хотел здесь подписаться на новости и почитать статейки по WordPress, но…. Здесь пишут явно не для новичков в этом деле. Попал сюда благодаря Vagrant, хотел установить на mac os, почитал и…. пишу этот коммент, ибо ничего не понял из статьи. Статья может и хороша, но мой уровень начинающего не позволил мне это оценить. Как говорил товарищ Горбунков: «Будем искать!»

    1. Дмитрий (автор)

      Есть разные статьи. Как более простые, так и более сложные. Смотрите, изучайте…

  4. DM

    Доброго времени суток!
    Решил всё таки прокипятить себе мозг вашей статьёй. Застопорился на этом месте: «Используем touch blog.conf», у меня это не работает: «touch: cannot touch `blog.conf’: Permission denied». Я вроде бы выкрутился, выполняя далее: «Затем вводим sudo vi blog.conf» с дальнейшим сохранением в файл, но у меня почему то вставляется в файл не весь текст: «erverName blog.local». Да и удалить созданный файл blog.local не получается, опять Permission denied.
    P.S.: Статья, действительно классная, жаль для меня немного сложновата.

  5. Дмитрий (автор)

    «touch: cannot touch `blog.conf’: Permission denied»
    У вас, скорее всего, нет прав на запись в данную папку. Вам нужны root права для выполнения этого действия.

  6. Дмитрий (автор)

    Можно использовать sudo перед командами, чтобы получить права root на короткое время.
    Т.е. sudo touch blog.conf

  7. Дмитрий (автор)

    Также можно обернуть контент blog.conf в тег VirtualHost, чтобы папка блога загружалась по адресу blog.local.

    <VirtualHost *:80>
    ServerName blog.local
    DocumentRoot /var/www/blog
     
    <Directory /var/www/blog>
      Options -Indexes +FollowSymLinks
      AllowOverride All
      Require all granted
    </Directory>
    </VirtualHost>
  8. DM

    Спасибо за помощь.
    Подскажите, как теперь это всё можно удалить. Хочу попробовать по новой. Где-то видно напортачил. После хостов вагрант не грузится.

    1. Дмитрий (автор)

      Снесите виртуалбокс и установите заново (желательно в новый каталог).

  9. DM

    WOW ! It works! Наконец то. Спасибо. Завтра попробую установку WordPress с помощью WP-CLI

    1. Дмитрий (автор)

      Давайте, пробуйте :)

  10. DM

    Добрый день.
    Сегодня blog.local уже загружаться не захотел. Может проблема в этом, при загрузке vagrant up: The guest additions on this VM do not match the installed version of VirtualBox! In most cases this is fine, but in rare cases it can prevent things such as shared folders from working properly. If you see shared folder errors, please make sure the guest additions within the virtual machine match the version of VirtualBox you have installed on your host and reload your VM. Guest Additions Version: 4.2.0 VirtualBox Version: 4.3

    1. Дмитрий (автор)

      Посмотрите вот тут:

      https://github.com/gratipay/gratipay.com/issues/2868

      Здесь есть советы по обновлению VirtualBox

  11. DM

    Не грузится blog.local, пока в ручную не перезапустишь сервер: sudo service apache2 restart.

  12. DM

    По умолчанию грузится EN wp, возможно ли скачать RU ?
    Вот ещё :»Вы можете продолжить установку вашего сайта, используя GUI-инструмент, перейдя к http://blog.local«. Но у меня здесь — Apache2 Debian Default Page.

    1. Дмитрий (автор)

      По поводу языка: вот тут написано, как сделать загрузку русскоязычного дистрибутива:

      http://wp-cli.org/commands/core/download/

  13. DM

    С языком разобрался.
    Как теперь войти в GUI-инструмент, вместо дефолтной страницы ?

    1. Дмитрий (автор)

      Если так и не появляется, то попробуйте просто пропустить этот шаг и пойти по другому пути — через WP-CLI. Дальше приведены команды, которые установят WordPress. Вводите их и все пойдет, как нужно. В GUI-инструменте просто должна была появиться стандартная пошаговая установка WP. Если этого нет, то команды, которые приведены в статье ниже, как раз делают все то же самое.

  14. DM

    Не могу решить. Всё выполнил, как в статье, установил Vagrant и WordPress с помощью WP-CLI. Когда захожу на http://local.blog вижу Apache2 Debian Default Page.

  15. DM

    Всё работает ! Воспользовался вашим файлом blog.conf В начале не хотел им пользоваться, потому что после перезагрузки apache выскакивает ошибка: AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using xxx.x.x.x. Set the ‘ServerName’ directive globally to suppress this message
    Что эта ошибка кстати означает ?

    1. Дмитрий (автор)

      Неправильный hosts, а точнее не-FQDN на первом месте после ip-адреса сервера приводит к такой ошибке apache2.

      FQDN — это полное имя домена.

      etc/hosts должен выглядеть так:

      1.2.3.4 somehost.prod.example.com somehost somehost.prod

      У вас, видимо, не стоит полное имя домена на втором месте. Т.е. в качестве somehost.prod.example.com.

  16. DB

    Спасибо за статью, но никак не получается сконфигурировать адрес blog.local. По умолчанию создаётся папка HTML, и если создать папку blog рядом с ней, то обращение всё равно идёт к папке html и только через 192.168.99.99. Если её переименовать в блог, апач ругается — где html?

  17. Дмитрий (автор)

    Попробуйте совет из комментариев про обертывание кода в VirtualHost.
    Комментарий от 24.02.2015 00:02.

  18. DB

    Да, спасибо. Заработало.

  19. aprog2015

    Можно и под Windows 8.1 юзать — http://sysadm.pp.ua/linux/sistemy-virtualizacii/vagrant-begin.html

Добавить комментарий для DM Отменить ответ

Получать новые комментарии по электронной почте.