Виртуальная машина AMP на FreeBSD для WordPress

Два месяца назад мы говорили об установке Apache, MySQL и PHP на виртуальной Linux-машине. Сегодня мы выжмем максимум из вашего железа — речь пойдет о FreeBSD, который декларирует высочайшую производительность за счет эффективной работы с памятью. Кроме того, это настоящий UNIX, являющийся потомком знаменитой системы из лабораторий AT&T (подробнее — в истории FreeBSD).

Ограничивая систему в ресурсах, мы сознательно подвергаем ее стресс-тесту. Готовый сайт — «летает». Но прежде чем запустить его, мы пройдем через многочасовой процесс сборки необходимых компонентов.

Загрузка дистрибутива FreeBSD

В отличие от многочисленных клонов Linux, здесь все просто: http://www.freebsd.org/ru/where.html

Рекомендуем для тестирования выбрать ISO-образ сборки для i386 архитектуры. На момент написания статьи актуальным является 9.2 релиз системы, поэтому мы загружаем файл FreeBSD-9.2-RELEASE-i386-disc1.iso

Настройка виртуальной машины

Как и прежде, воспользуемся VirtualBox. В этой системе виртуализации есть заготовка настроек FreeBSD,

2013-12-02_0509

которые мы расширим до 8Гб жесткого диска.

2013-12-02_0510

Относительно памяти — нам действительно хватит 128Мб.

2013-12-02_0509_001

Инсталляция системы

Запустите виртуальную машину. При первом запуске будет предложено выбрать диск с дистрибутивом — нажмите в диалоге кнопку с изображением папки и выберите загруженный ранее ISO-образ.

2013-12-02_0529После нажатия Start будет запущен загрузчик системы, который после начальных проверок на несколько секунд выведет экран выбора опций запуска системы.

2013-12-02_0531Пока просто ждем развития событий. Экран сменится на череду сообщений о найденных в виртуальной машине устройствах. Затем появится запрос:

2013-12-02_0535Нажмите «Ввод» чтобы выбрать выделенный пункт по умолчанию — Install.

На следующий запрос о необходимости выбрать нестандартную раскладку клавиатуры ответим «Нет» (для выбора пользуйтесь клавишами со стрелками или Tab’ом):

2013-12-02_0537

 

Назовем наш сервер ampserver:

2013-12-02_0544

 

Теперь выберем из устанавливаемых компонентов системы только ports — выделите пункт games и нажмите «Пробел» чтобы отказаться от установки тривиальных игр:

2013-12-02_0545Воспользуемся «Помощником» при разметке диска — оставим пункт Guided:

2013-12-02_0549Также подтвердим, что под систему мы отводим весь диск (Entire Disk):

2013-12-02_0551Из выделенных нами 8Гб установщик предлагает отвести 64Кб для загрузчика, 409Мб для раздела подкачки, а оставшееся пространство — для файлов операционной системы и приложений, с чем мы также соглашаемся нажав «Ввод»:

2013-12-02_0552Подтвердим это еще одним нажатием на «Ввод»:

2013-12-02_0557Далее следует достаточно продолжительная фаза, включающая проверку дистрибутива

2013-12-02_0559

и разворачивание архивов на диск.

2013-12-02_0607

Это не требует нашего вмешательства.

По окончании вы увидите приглашение задать пароль администратора (пользователя root). Введите пароль (желательно его записать) — пароль не отображается при вводе:

2013-12-02_0612И после нажатия на «Ввод» повторите его же:

2013-12-02_0613Если повторно введен тот же пароль, появится запрос сетевого адаптера:

2013-12-02_0616Инициируем установку IPv4:

2013-12-02_0623Подтвердим настройку по DHCP:

2013-12-02_0626Откажемся от настройки IPv6:

2013-12-02_0627

 

Примем полученную по DHCP конфигурацию:

2013-12-02_0633Подтвердим использование локального времени:

2013-12-02_0637

 

Выберем регион, в котором находимся (в нашем случае — Европа):

2013-12-02_0638

 

Выберем страну (в нашем случае — Украина):

2013-12-02_0639

 

При наличии нескольких временных зон — также выберем соответствующую:

2013-12-02_0641И подтвердим выбор:

2013-12-02_0642

 

Оставим список сервисов, запускаемых по умолчанию без изменений:

2013-12-02_0643Откажемся от сохранения снимков системы при сбое:

2013-12-02_0646

Также воздержимся от добавления новых пользователей в систему (обратите внимание: FreeBSD не позволяет удаленно регистрироваться под именем root):

2013-12-02_0647Вот и все! Система установлена. Нажимаем «Ввод» для выхода из программы установки:

2013-12-02_0648И отказываемся от внесения финальных правок в конфигурацию:

2013-12-02_0651Вместо еще одного нажатия на «Ввод» для перезапуска виртуальной машины

2013-12-02_0652

выполним ее отключение — для этого достаточно закрыть окно и послать сигнал отключения (это обеспечит аккуратное завершение работы):

2013-12-02_0657После завершения работы виртуальной машины «извлеките» образ диска из виртуального CD-привода:

Eject-Installation-ISO-ImageСервер готов к первому запуску!

Инсталляция WordPress

Система портов FreeBSD пользуется заслуженной любовью. Воспользуемся ею для установки всего необходимого (и только того что необходимо).

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

2013-12-02_0715Для входа введите имя пользователя root и пароль администратора, который был задан при инсталляции. Если все верно, система выдаст приглашение ко вводу команд (в нашем случае — root@ampserver:~ # ):

2013-12-02_0719Перейдем в каталог, где находится порт wordpress:

cd /usr/ports/www/wordpress

и запустим установку:

make install clean

Дальнейший процесс достаточно однообразен — система будет выполнять проверки зависимостей, показывать список доступных для каждого требуемого пакета опций (см. снимок ниже), загружать исходные коды пакета из интернет, применять специфические для FreeBSD обновления, компилировать и устанавливать:

2013-12-02_0727Для наших целей менять настройки по умолчанию не требуется. Поэтому при появлении каждого запроса на изменение конфигурации мы просто будем нажимать «Ввод» (кроме PHP, где требуется дополнительная опция). Чтобы оценить продолжительность процесса перечислим пакеты, которые устанавливаются по нашему запросу (список может со временем меняться; перечислены только пакеты, для которых выдается запрос конфигурации):

  • wordpress-3.6,1
  • php5-5.4.17 — при появлении окна конфигурации отметьте опцию APACHE:
    2013-12-02_1723
  • m4-1.4.16_1,1
  • help2man-1.43.3
  • perl-5.14.4 (установка этого пакета выполняется после длительной компиляции)
  • gettext-0.18.3
  • libiconv-1.14_1 (на этом этапе также выполняется длительная компиляция)
  • gmake-3.82_1
  • pcre-8.33
  • libxml2-2.8.0_2 (продолжительная компиляция)
  • curl-7.31.0_1
  • ca_root_nss-3.15.1
  • php5-gd-5.4.17
  • libcheck-0.9.10
  • python27-2.7.5_1
  • libxslt-1.1.28_1
  • freetype2-2.4.12_1
  • png-1.5.17
  • t1lib-5.1.2_2,1
  • php5-mysql-5.4.17

Что мы получили в итоге? Оптимизированную среду выполнения WordPress именно для вашего компьютера — ведь все программное обеспечение было скомпилировано из исходных кодов с учетом имеющихся ресурсов! (Если быть точным, то процесс установки может быть проще, а скомпилированный код — еще оптимальнее, но это выходит за рамки данной статьи).

Попутно неискушенные пользователи могли увидеть откуда берется PHP и Perl.

И еще раз вспомним о том, что для сборки программ мы обошлись всего 128Мб памяти.

MySQL

Но мы пока не обзавелись системой управления базами данных. При том, что PHP был собран с драйвером MySQL, сама СУБД не была установлена, т.к. в общем случае сервером баз данных может служить другой компьютер.

Конфигурацию с несколькими серверами оставим читателям в качестве домашнего задания. Сами установим MySQL на тот же сервер. Для этого перейдем в каталог с портом MySQL:

cd /usr/ports/databases/mysql56-server

и (как это было сделано выше) запустим установку:

make install clean

Apache

Последний ингредиент — www-сервер. При том, что есть более эффективные альтернативы, установим обещанный Apache:

cd /usr/ports/www/apache24
make install clean

Примите опции по умолчанию:

2013-12-02_1200

 

При установке Apache требуется подтвердить конфигурацию следующих пакетов:

  • apache24-2.4.6
  • apr-1.4.8.1.5.2
  • gdbm-1.10

Внимательные читатели заметили, что в итоге получена конфигурация Apache 2.4, MySQL 5.6 и PHP 5.4. Ранее мы рассматривали установку сервера на основе CentOS 6.4  c установленными пакетами Apache 2.2.15, MySQL 5.1.52 и PHP 5.3.2, что для некоторых практических задач — слишком консервативно. Для решения этой проблемы  можно пользоваться неофициальными репозиториями или собирать необходимую версию ПО вручную. В первом случае получаем удобный способ обновления с некоторым риском конфликтов с другими установленными в системе пакетами. Во втором — сталкиваемся с необходимостью дальнейшей поддержки пакетов и библиотек вручную. Именно тут начинают возвращаться инвестиции времени, которые мы вложили во FreeBSD, поскольку поддержка актуального состояния этой системы — не сложнее описанного выше процесса установки.

Конфигурирование сервера

Прежде всего, сервер должен знать свое имя. Чтобы не настраивать DNS, отредактируем файл hosts:

ee /etc/hosts

Необходимо добавить строку

127.0.0.1      ampserver ampserver.local

Чтобы сохранить изменения нажмите Esc и дважды нажмите «Ввод».

2013-12-02_1450Добавим название сервера в конфигурацию Apache:

ee /usr/local/etc/apache24/httpd.conf

Найдите строку ServerName и укажите следующее:

ServerName ampserver.local:80

Получится примерно следующее:

2013-12-02_1455

 

Найдите раздел <IfModule mime_module> и ниже строки TypesConfig добавьте строки

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

 2013-12-02_1852

Ниже найдите строку «#Include etc/apache24/extra/httpd-vhosts.conf» и удалите знак «#» перед ней:

2013-12-02_1643

Найдите строку DirectoryIndex index.html и добавьте index.php:

2013-12-02_1841

Сохраните изменения.

Теперь разрешим запуск сервиса — введите:

ee /etc/rc.conf

и добавьте строку (обратите внимание на то, что в конце файла должна остаться пустая строка — см. изображение ниже):

apache24_enable="YES"

2013-12-02_1518

 

Добавим виртуальный хост:

ee /usr/local/etc/apache24/extra/httpd-vhosts.conf

Ограничимся тривиальной конфигурацией. Добавьте следующие строки в конец файла (остальные строки можно удалить или «закомментировать» — поставить «#» в начале строк, которые сервер должен игнорировать):

<VirtualHost *:80>
    DocumentRoot "/usr/local/www/wordpress"
    ServerName ampserver.local
    <Directory "/">
        Require all granted
    </Directory>
</VirtualHost>

Примерно так:

2013-12-02_1919

Запускаем Apache:

/usr/local/sbin/apachectl start

2013-12-02_1520Далее — настроим базу данных.

Файл rc.config редактировать не обязательно — можно добавить строку конфигурации командой:

echo 'mysql_enable="YES"' >> /etc/rc.conf

Запускаем сервер:

/usr/local/bin/mysql_install_db --basedir=/usr/local --datadir=/var/db/mysql --user=mysql

/usr/local/etc/rc.d/mysql-server start

И создаем базу данных для WordPress:

/usr/local/bin/mysqladmin create wordpress

 

Чтобы дальнейшую настройку вести в броузере, настроим сеть как описано в разделе «Доступ к виртуальной машине«, но с изменениями. После установки режима Bridged Adapter перезапускать сетевой драйвер не нужно. А чтобы получить новый IP-адрес виртуальной машины, введите команду

ifconfig em0

Среди выводимой информации о сетевом адаптере будет и адрес (в нашем случае — 192.168.1.40):

2013-12-02_1601Добавьте этот адрес в файл hosts на своем компьютере. Если ваша основная система — Windows, запустите Notepad от имени администратора, откройте файл «%SystemRoot%\System32\drivers\etc\hosts» и внесите строку (замените IP на определенный выше!):

192.168.1.40      ampserver.local

Получится примерно так:

2013-12-02_1624Теперь откройте в любом броузере адрес http://ampserver.local

2013-12-02_1855

В конфигурации доступа к базе данных укажите имя пользователя root, а поле для ввода пароля — очистите.

Добавить комментарий