Ты кто такой? WordPress? До свиданья!

для раздела Блоги

Людям, знакомым хоть немного с созданием сайта наверняка знаком популярный блоговый движок WordPress. 
Безусловно, он очень удобен. Под него написаны тысячи плагинов и визуальных тем. Интерфейс админки понятен любому человеку.
Всё это замечательно ровно до того момента, пока в один прекрасный день владелец сайта не заметит, что сайт уже неприлично тормозит.
Эта статья адресована предусмотрительным или потенциальным владельцам сайта на WordPress.

Зачем что-то менять?
Причин тормозов существует масса. Будем считать, что вэб-сервер настроен оптимально под высокие нагрузки и железо на хостинге не самое отстойное, какое только может быть. О настройке VPS/своего_сервера я еще возможно напишу, если будет интерес со вашей стороны.
В конечном итоге мы придем к тому, что потребуется поднять производительность вэб-приложения.
Не секрет, хотя может для кого-то это станет откровением, что во многом производительность вэб-приложения ограничивается самым медленным звеном. Как правило, этим звеном являются системы хранения данных. А что чаще всего выступает в их роли? База данных.
Типичная база данных (далее - БД) для PHP-приложение это MySQL, хотя бывает некоторые более продвинутые люди используют и PostgreSQL. Эти БД в совокупности с такими как MSSQL или OracleDB относятся к типу реляционных БД.  
При этом относительно недавно стали набирать популярность нереляционные БД (NoSQL). Я не стану копипастить из википедии, если интересны подробности - загуглите. Если вкратце, то обычные SQL БД, при всей их замечательности с точки зрения мощности функционала, не всегда оптимальны для решения конкретной задачи. Причина этому недостаточная производительность, стоимость или даже некоторые особенности хранения данных.
Одной из наиболее популярных, бесплатных, удобных и хорошо документированных NoSQL БД является MongoDB.
Встает закономерный вопрос: можно ли как-то использовать эту БД на своих проектах, где традиционно использовался MySQL? К сожалению, в силу структурных различий баз данных сходу, "из коробки", заменить не получится.  Тем не менее, некоторые энтузиасты проявили инициативу и, к примеру, выпустили специальную версию WordPress под MongoDB. Назвали незатейливо и соответственно - MongoPress.
Пожалуй стоит привести несколько графиков, показывающих превосходство.
Конфигурация весьма производительная:


  • Linux Debian Lenny Kernel 2.6.26-2-amd64


  • Intel(R) Core(TM) i5 CPU 661 @ 3.33GHz


  • 4GB RAM


  • HDD SATA Model Number: WDC WD5000AADS-00S9B0 (500GB)


Задача достаточно типовая:


  • MySQL: Select – Update – Insert – Delete


  • MongoDB: Find – FindAndModify – Save – Remove


Первый случай: одно подключение к базе данных. График показывает зависимость времени выполнения запросов от количества операций в очереди.

Здесь в лидерах безусловно MySQL. Однако это не совсем характерная нагрузка, присущая вэб-сайтам, где обычно разрешается несколько десятков одновременных подключений к БД. 
Посмотрим, как в таком случае справятся участники теста.

Здесь всё встает на свои места. MongoDB показывает чуть менее чем 2-кратное превосходство над MySQL!
Таким образом, мы убедились в том, что MongoPress должен показать заметно лучшую отзывчивость для сайтов с высокой посещаемостью.
Поехали?
Я использую Ubuntu Server 12.04 на своем VPS. Поэтому и буду описывать шаги установки и настройки под Debian-based систему.
Допустим, что у вас уже есть готовый вэб-сервер. Если хотите на тестовом попробовать - sudo apt-get install lamp-server^ :) MySQL и MongoDB мирно сосуществуют.
Хотя у Ubuntu есть mongo в штатном-репозитарии, для самой свежей версии лучше добавить mongodb-репозитарий в aptitude:
 

1) sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
2) sudo nano /etc/apt/sources.list

Добавляем в конец файла строчку

deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen
3) sudo apt-get update
4) sudo apt-get install mongodb-10gen

Если установка успешно завершена, то выполнив команду "mongo" вы попадете в консоль базы данных.
Теперь установим библиотеку для работы php с mongodb.
Нам понадобится PECL. Если у вас его нет, то скорее всего нет и php-pear. Решается это просто:

sudo apt-get install php-pear

Теперь ставим и подключаем библиотеку:

sudo pecl install mongo
В папке /etc/php5/conf.d/ создаем файл например mongo.ini (sudo nano /etc/php5/conf.d/mongo.ini) и пишем туда строчку

extension=mongo.so
 

Также вам понадобится библиотека php GD. Если ее все еще нет, то ставится с помощью команды:


sudo apt-get install php5-gd

И наконец, рестартуем вэб-сервер.
Для Apache это sudo /etc/init.d/apache2 restart
Если у вас nginx/php-fpm, то наверное и так поймете :)
Проверяем подключение библиотек через обычную функцию phpinfo()
 
Пора поставить MongoPress.
На сайте http://www.mongopress.org качаем его и распаковываем архив в корень вэб-сервера (если там ничего еще нет) или куда вам нужно.
Прописываем права на запись конфигов:

chmod 777 /var/www/mp-settings
chmod 777 -R /var/www/mp-cache

Открываем сайт - видим инсталлятор.
Заполняем, что он просит. После установки последуем его рекомендации безопасности и поставим права:

chmod 755 /var/www/mp-settings

Перезагружаем страницу. Если видим тоже самое сообщение, то этот баг лечится комментированием содержимого функции mongopress_install_error в файле mp-includes/mp-loader.php
После этого всё должно заработать.
P.S.
MongoPress требует наличия mod_rewrite или аналогичного движка.
Для администрирования MongoDB лично я поставил RockMongo.
Дефолтный логин/пароль на БД admin/admin
 
 
Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Оценитe материал
рейтинг: 1.0 из 5
голосов: 2

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают