Полное руководство по использованию 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