Встановлення Wardrobe CMS на OS X Server

Опублікував Сергій Макаренко 10-11-2014 об 21:29

Сподіваюся, що це буде перший і останній пост, присвячений копирсанню в нутрощах блогу. Але при установці Wardrobe CMS було декілька неочевидних речей, на усвідомлення яких я витратив більше часу, ніж вони того заслуговують. Тому вирішив написати цю публікацію для тих ентузіастів, які слідом за мною, забажають використовувати цю CMS на свої хостингах. Отже, для того, щоб можна було користуватися Wardrobe ваш хостинг має відповідати наступним вимогам.

З офіційних вимог в репозиторії на GitHub вказані такі:

  • Підтримка PHP починаючи з версії 5.3.7 і вище;
  • Розширення PHP MCrypt;
  • Сумісна с PDO СКБД (SQL, MySQL, PostgreSQL, SQLite).

В процесі встановлення на OS X Server v3 (який побудовано на базі OS X 10.9 Mavericks) я стикнувся з деякими нюансами, про які розкажу нижче.

Перш за все нам потрібно встановити СКБД MySQL, оскільки вона, починаючи з Mac OS X Server v10.6 Snow Leopard, не постачається в складі OS X. Є вбудована СКБД PostgreSQL, але б я не радив вам її чіпати оскільки на ній зав’язані майже всі системні служби (LDAP, Profile Manager, Mail Server і так далі) і це може привести до проблем таких масштабів, що потім витратите не одну годину на пошук причин, що викликали проблеми в роботі цих служб.

Встановлення СКБД MySQL

Пакет для встановлення СКБД MySQL для OS X 10.9 Mavericks беремо тут. Потреби описувати процесс встановлення MySQL немає, оскільки він постачається в *.pkg-файлі і встановлюється системною утілітою «Установщик».

Хотів би нагадати, що під час цього процесу ми будемо вносити зміни до конфігураційних файлів через програму «Термінал», а не через графічну оболонку OS X Server. Це загрожує тим, що під час оновлення OS X Mavericks або програми OS X Server ці всі налаштування можуть бути «перезатерті». Про це потрібно пам’ятати і перед оновлення програмного забезпечення вашого сервера на більш нову версію спочатку протестувати оновлення, або хочаб дослідити ті зміни, які будуть внесені у вашу поточну конфігурацію оновленням. Для цього вам стане у пригоді програма Pacifist.

Встановлення Xcode command line tools

Для того, щоб у нас була можливість використовувати консольну утіліту make нам знадобиться встановити Xcode command line tools. Для того, щоб це зробити треба в програмі «Термінал» виконати наступну команду:

xcode-select --install

Власне, після цього кроку ми готові до того, щоб почати процес конфігурування Apache. Отже, спочатку нам потрібно дізнатися поточну версію PHP, яку встановлено на нашому сервері. Це піотрібно для того, щоб ми знали, з якою версію сарців PHP збирати MCrypt. Окрім цього нам ще знадобиться консольна утіліта autoconf, яка в складі OS X 10.9 Mavericks «з коробки» відсутня. В підсумку нам потрібно зробити наступне:

  • Встановити autoconf;
  • Встановити libmcrypt;
  • Зібрати розширення MCrypt;
  • Сконфігурувати належним чином PHP на сервері.

Встанолвлення autoconf

Втомлювати вас розповідями про те, що таке autoconf я не буду. Якщо вам цікаво, то прочитати про те, для чого ця консольна утіліта можна тут. Я не маю звички зберігати сарці коду, тому збирав все в домашній теці. Але ви можете покласти сарці в теку /usr/local/src, спеціально призначену для цього. Завантажити остнню версію autoconf можна з сайту проекту. Для встановлення autoconf треба виконати такі команди:

cd ~/
mkdir ~/mcrypt
cd mcrypt
curl --remote-name http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
tar -xzvf autoconf-2.69.tar.gz
cd autoconf-2.69

При встановленні autoconf можна заширяти в будь-яку зручну для вас місцину на сервері. Для цього треба скористатися опцією --prefix. Команда для встановлення autoconf з цією опцією буде мати вигляд:

./configure --prefix=/usr/local/autoconf-2.69
make
sudo make install

Але якщо вам все одно, куди буде встановлено autoconf, то можна не використовувати опцію --prefix. В цьому випадку autoconf буде встановлено в теку /usr/local/bin/. Вашу папку, в якій ви разпакували сарці після встановлення можна буде видалити. Після встановлення перевіряємо результат нашої роботи за допомогою команди autoconf --version. У мене вивід цієї команди такий:

autoconf (GNU Autoconf) 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+/Autoconf: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David J. MacKenzie and Akim Demaille.

Встановлення libmcrypt

Тепер треба встановити бібліотеку libmcrypt завдяки якій стане можлива робота розширення MCrypt для PHP-движка, який вбудований в OS X Server. Завантажити сарці можна з сайту проекту. Роспаковуємо архів і встановлюємо libmcrypt:

tar -zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make
sudo make install

Збирання розширення MCrypt

Для того, щоб зібрати розширення MCrypt належним чином нам треба спочатку дізнатися яка версія PHP вбудована в OS X Server. Для цього виконаємо команду:

php -v

У мене версія OS X Server 3.2.2 (Build 13S5187). Версія OS X 10.9.5 (Build 13F34). За цих умов вивід команди був такий:

PHP 5.4.30 (cli) (built: Jul 29 2014 23:43:29) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

Це значить, що збирати розширення MCrypt нам потрібно з сарців PHP 5.4.30. Якщо взяти іншу версію PHP, то в нашій системі працювати MCrypt не буде. Качаємо потрібну версію сарців PHP з українського дзеркала. Розпаковуємо архів:

tar -zxvf php-5.4.17.tar.bz2
cd ../php-5.4.17/ext/mcrypt/

Далі, за допомогою команди phpize, яка є частиною PHP пакету для розробників, готуємо оточення для розширення MCrypt:

/usr/bin/phpize

Вивід цієї команди у мене був такий:

Configuring for:
PHP Api Version:         20100412
Zend Module Api No:      20100525
Zend Extension Api No:   220100525

Ну а далі команди, які нам вже знайомі:

./configure
make
sudo make install

Після того, як процес компіляції буде закінчено з’явиться таке повідомлення:

Installing shared extensions:   /usr/lib/php/extensions/no-debug-non-zts-20100525/

Процес встановлення компонентів закінчено. Тепер нам залишилося сконфігурувати належним чином PHP для того, щоб він «побачив» нове розширення і підвантажував його під час запуску.

Конфігурація PHP

Тут все досить просто. Нам доведеться редагувати вміст файла php.ini, який знаходиться в теці /etc/. Відкриваємо файл консольним редактором nano:

sudo nano /etc/php.ini

Додаємо в секцію розширень ці два рядка:

extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20100525/"
extension=mcrypt.so    

В конфігураційному фалі мого сервера це рядки 908 та 909. Не забуваємо, що PHP спілкується з СКБД MySQL за допомогою сокетів. Оскільки PHP з коробки в OS X Server не знає про MySQL після встановлення СКБД потрібно вказати йому на файл mysql.sock:

pdo_mysql.default_socket=/tmp/mysql.sock

В моєму фалі це 989 рядок. Все. Зберігаємо зміни і перезапускаємо Apache. Для того, щоб перевірити результати нашої роботи можна створити файл phpinfo.php з наступним вмістом:

<?php
    phpinfo();
?>

І закинути його в теку web-сервера. Якщо його відкрити через браузер, там має бути секція mcrypt і виглядати вона має так.

Перевірка mcrypt

Встановлення CMS Wardrobe

Ну тепер все зовсім просто. Завантажуємо менеджер залежностей Composer для PHP і кладемо туди, куди нам зручно. Я поклав в ~/Downloads/. А далі виконуємо в «Терміналі» команду:

php composer.phar create-project wardrobe/wardrobe

Цікаво те, що в поточній стабільній версії за номером 1.1 я не зміг змусити запрацювати маршрути, про які розповідав в попередній публікації. А пізніше спробував поставити версію для розробників:

php composer.phar create-project wardrobe/wardrobe --stability=dev

Там все запрацювало немов годинник. Досі жодних проблем не помітив. Після виконання цієї команди з’явиться тека wardrobe. Її закидаєте теку Apache (в OS X Server це /Library/Server/Web/Data/Sites/) і натравлюєте Apache на теку public, яка знаходиться всередині wardrobe. Ну а далі виконуємо вказівки розробника CMS Wardrobe.

Ну і на останок невеликий лайф-хак. Wardrobe має певні недоліки в безпеці системи тем, які доволі легко усуваються. Для того, щоб файли теми не були доступні ззовні достатньо додати в файл .htaccess кілька рядків коду:

<FilesMatch "\.blade.php$">
    Deny from all
</FilesMatch>

А для того, щоб зекономити час на кастомізації зовнішнього вигляду оновленого блогу можете скористатися моєю темою, сарці якої я виклав на GitHub. В ній ви можете знайти:

  • Приклад маршруту для відображення сторінки;
  • Додавання коду для Google Analytics;
  • Соціальні кнопки для Twitter, Facebook, VK та G+;
  • Коментарі Disqus;
  • Збільшення зображень за допомогою FacyBox;

Сподіваюся, ця інформація стане для вас корисною.