+68.62
425 читателей, 63 топика

Новая структура файлов LiveStreet

Мы начинаем серию публикаций о том, что мы уже реализовали нового и собираемся реализовать в новой версии LiveStreet.

Начнем с новой файловой структуры движка.
Главное, что сделали — это ввели жесткое разделение между файлами приложения и файлами фреймворка. В итоге в корне получилось всего три каталога:

Новая общая структура LS

Читать дальше →

Руководство по созданию плагина для v.0.4 на примере "Лента друзей"

Предисловие

Что такое плагины — читайте здесь.
По мотивам этого, выполняю обещание — привожу руководство как подобное сделать в виде плагина. Всех тонкостей в одной заметке не расскажешь, но основное постараюсь изложить.

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

Пошаговая схема:

Читать дальше →

Установка Livestreet с нуля (Debian): nginx + mysql + php-fpm + apc + memcached + sphinx

Возможно, этот гайд даже кому-нибудь понадобится.

0) Итак, у нас имеется свежепоставленный Debian с настроенным ssh-доступом и юзер с правами, достаточными для работы sudo.
Здесь и далее "#" в начале команды означает, что ее необходимо запускать с правами root-пользователя (например, с помощью sudo)
1) Пакеты будем ставить из репозитория dotdeb, поэтому для начала добавим его в sources.list:
# nano /etc/apt/sources.list

дописываем в конец файла
deb http://packages.dotdeb.org stable all

Далее импортируем ключ dotdeb'а:
wget http://www.dotdeb.org/dotdeb.gpg -O - -q | sudo apt-key add -

Обновляем список пакетов
# apt-get update

Читать дальше →

Использование плагинов в v.0.4

Безболезненное расширение функционала — достаточно проблематичный вопрос (под «безболезненностью» я понимаю весь спектр удобства для пользователей движка).

Я думаю, вы еще не забыли, что для добавления новых возможностей в версиях до 0.3.1 включительно используются Хаки и Модули. При этом установка любого стороннего творения дело достаточно хитрое и небезопасное, часто требующее ориентирования в архитектуре и особенностях движка. Для преодоления этих проблем в ядро v.0.4 была введена система плагинов:


К чему мы стремились создавая систему плагинов?

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


Для тех, кого заинтересовали подробности

Обработка изображений: crop, watermark, скругление углов



В новой версии livestreet намного улучшена работа с изображениями (и в плане качества, и в плане гибкости). Для обслуживания всевозможных операций с изображениями отведен специальный engine-модуль Image.

Коротко о том, что появилось нового:

1. Решена проблема с некрасивым ресайзом неквадратных аватарок (путем предварительного вырезания наибольшего возможного квадрата).

2. Устранены «почти» все проблемы с обработкой alpha и non-alpha прозрачности («почти»=«на столько на сколько это вообще возможно сделать с помощью PHP+GD2»). По крайней мере прозрачные png теперь можно использовать в аватарках спокойно.

3. Формирование HTML кода выводимого изображения централизировано в одной функции Image_BuildHTML(), которая запрашивает путь к изображению и дополнительные параметры (title,alt,align).

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

5. Закругление углов изображения.

О том, как пользоваться 4 и 5 поговорим подробнее.

Читать дальше →

Пример создания модуля

Попробуем на примере создать очень простой модуль/дополнение для LiveStreet. Сразу стоит оговориться, что под модулем в LiveStreet подразумевается некая библиотека дополнительного функционала, а не какой то законченный блок функционала. Модуль это только его часть. Надеюсь понятно смог объяснить, а теперь приступим!

Читать дальше →

Настраиваем сервер для LiveStreet. Часть VIII. APC, Memcached & Sphinx.

Предыдущие части:

На мой взгляд, на данный момент, есть только два осмысленных варианта настроить кэширование кода и данных (учитывая то, что LiveStreet поддерживает, конечно). Первый вариант — APC + Memcached. Второй вариант — XCache.

Почему?
  • Во-первых все остальные PHP оптимизаторы(eAccelerator, например) сильно проигрывают современным версиям APC и XCache. Всесторонне, особенно в разрезе надёжности. ( Особый случай это ZendOptimiser+ — оно, по отзывам, быстрое и надёжное, но не очень открытое и не очень бесплатное. И я, лично, не тестировал )
  • Во-вторых, как opcode кэшер APC, актуальных версий, лучше XCache. И быстрее и стабильней. Да, это субъективное мнение. Да, выигрыш незначителен. Но лучше. :)
  • А вот с кэшированием данных XCache справляется намного лучше Memcached. И поэтому если говорить именно об общей производительности, то выигрывает XCache. И это вполне ожидаемо, учитывая что Memcached — софт предназначенный, прежде всего, для многосерверных конфигураций.

Из вышеописанного проистекает моё личное мнение:
  • Высокая надежность и хорошая производительность = APC + Memcached( и ниже будет описан именно этот вариант).
  • Максимально возможная производительность с приемлемой надёжностью = XCache.

Еще одно важное замечание: коммуникации между сервисами лучше настраивать не через TCP/IP, а через UNIX socket. В рамках «всё на одном сервере» это и быстрее и надёжней. Именно таким образом настраивалась связка Apache + php-fpm в прошлых частях. Таким же образом, по возможности, будем действовать и дальше.

Читать дальше →

Настраиваем сервер для LiveStreet. Часть VII. NGINX.

Предыдущие части:

Общие замечания:
  1. Для продвинутых: рекомендуется не ставить nginx из бинарников, а пересобрать его из исходного кода только с нужными модулями. В бинарной сборке «по умолчанию», действительно, очень много для LiveStreet лишнего. Однако, я не считаю это простой задачей и поэтому описывать не буду. Кроме того, хотя эта идея, без сомнений, хорошая, драматического эффекта она не даст.
  2. Частично конфигурация снова взята из поста господина xyz
  3. Обращаю особое внимание на использование специального раздела для временных файлов, который, следуя советам господина Orhideous , мы создали во второй части

Читать дальше →

Использование поддоменов в LiveStreet

У многих возникает необходимость использовать поддомены для своих проектов на базе LiveStreet, например вынести на поддомены блоги.
Сделать это можно разными путями, например через реврайты в .htaccess, либо через роутер движка.
Я покажу как это можно сделать на примере последнего варианта, т.е. через роутер.

Читать дальше →