Установка локальной среды для 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 [email protected]
Готово. Теперь у вас должен быть установленный 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
Классная мысль с Vagrant! Я всегда пользовался тестовым блогом в подкаталоге основного блога, То есть создал поддомен, закинул туда движок, поставил тему, которая мне нужна и все опыты проводил на нем.
Теперь прочитав вашу статью, я установлю блог на локальном компьютере с помощью Vagrant. Попробую тестировать на нем свой блог.
P.S. Для тех кто хочет сделать для себя тестовый блог (поддомен) и все необходимое для тестирования, то, я оставляю ссылку в своем имене на этот пост. Надеюсь, админ ее пропустит.
Не вкурил смысл извращений с Вагрантом и Виртуалбоксом… Чтобы запустить WP на локальной машине (на винде по крайней мере) и хоть обэксперементироваться нужно USBWebserver и пять минут… Все переносибельно флешкой т.к. лежит в отдельной папке и в систему не лезет, все файлы сайта доступны напрямую… Я так и делал все на компе, потом перетаскивал в интернет..
Ндаа… Хотел здесь подписаться на новости и почитать статейки по WordPress, но…. Здесь пишут явно не для новичков в этом деле. Попал сюда благодаря Vagrant, хотел установить на mac os, почитал и…. пишу этот коммент, ибо ничего не понял из статьи. Статья может и хороша, но мой уровень начинающего не позволил мне это оценить. Как говорил товарищ Горбунков: «Будем искать!»
Есть разные статьи. Как более простые, так и более сложные. Смотрите, изучайте…
Доброго времени суток!
Решил всё таки прокипятить себе мозг вашей статьёй. Застопорился на этом месте: «Используем touch blog.conf», у меня это не работает: «touch: cannot touch `blog.conf’: Permission denied». Я вроде бы выкрутился, выполняя далее: «Затем вводим sudo vi blog.conf» с дальнейшим сохранением в файл, но у меня почему то вставляется в файл не весь текст: «erverName blog.local». Да и удалить созданный файл blog.local не получается, опять Permission denied.
P.S.: Статья, действительно классная, жаль для меня немного сложновата.
«touch: cannot touch `blog.conf’: Permission denied»
У вас, скорее всего, нет прав на запись в данную папку. Вам нужны root права для выполнения этого действия.
Можно использовать sudo перед командами, чтобы получить права root на короткое время.
Т.е. sudo touch blog.conf
Также можно обернуть контент blog.conf в тег VirtualHost, чтобы папка блога загружалась по адресу blog.local.
Спасибо за помощь.
Подскажите, как теперь это всё можно удалить. Хочу попробовать по новой. Где-то видно напортачил. После хостов вагрант не грузится.
Снесите виртуалбокс и установите заново (желательно в новый каталог).
WOW ! It works! Наконец то. Спасибо. Завтра попробую установку WordPress с помощью WP-CLI
Давайте, пробуйте :)
Добрый день.
Сегодня 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
Посмотрите вот тут:
https://github.com/gratipay/gratipay.com/issues/2868
Здесь есть советы по обновлению VirtualBox
Не грузится blog.local, пока в ручную не перезапустишь сервер: sudo service apache2 restart.
По умолчанию грузится EN wp, возможно ли скачать RU ?
Вот ещё :»Вы можете продолжить установку вашего сайта, используя GUI-инструмент, перейдя к http://blog.local«. Но у меня здесь — Apache2 Debian Default Page.
По поводу языка: вот тут написано, как сделать загрузку русскоязычного дистрибутива:
http://wp-cli.org/commands/core/download/
С языком разобрался.
Как теперь войти в GUI-инструмент, вместо дефолтной страницы ?
Если так и не появляется, то попробуйте просто пропустить этот шаг и пойти по другому пути — через WP-CLI. Дальше приведены команды, которые установят WordPress. Вводите их и все пойдет, как нужно. В GUI-инструменте просто должна была появиться стандартная пошаговая установка WP. Если этого нет, то команды, которые приведены в статье ниже, как раз делают все то же самое.
Не могу решить. Всё выполнил, как в статье, установил Vagrant и WordPress с помощью WP-CLI. Когда захожу на http://local.blog вижу Apache2 Debian Default Page.
Всё работает ! Воспользовался вашим файлом 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
Что эта ошибка кстати означает ?
Неправильный hosts, а точнее не-FQDN на первом месте после ip-адреса сервера приводит к такой ошибке apache2.
FQDN — это полное имя домена.
etc/hosts должен выглядеть так:
1.2.3.4 somehost.prod.example.com somehost somehost.prod
У вас, видимо, не стоит полное имя домена на втором месте. Т.е. в качестве somehost.prod.example.com.
Спасибо за статью, но никак не получается сконфигурировать адрес blog.local. По умолчанию создаётся папка HTML, и если создать папку blog рядом с ней, то обращение всё равно идёт к папке html и только через 192.168.99.99. Если её переименовать в блог, апач ругается — где html?
Попробуйте совет из комментариев про обертывание кода в VirtualHost.
Комментарий от 24.02.2015 00:02.
Да, спасибо. Заработало.
Можно и под Windows 8.1 юзать — http://sysadm.pp.ua/linux/sistemy-virtualizacii/vagrant-begin.html