Статьи

Системное администрирование

Monit - мониторинг состояния процессов.

О monit.

Monit позволяет:

  • Отслживать состояние Запущенных процессов, потребление ими ресурсов, доступность/ответы на сокетах и портах, и.т.п.
  • Следить за файлами и каталогами по правам, контрольным суммам, времени модификации, размеру.
  • Тестировать сетевые подключения, по TCP, UDP, через сокеты и по более высокоуровневым протоколоам, таким как HTTP или SMTP, причём возможности проверки таких протоколов расширяемы, т.к. имеется возможность посылки произвольных данных и проверки ответа.
  • Запускать пользовательские скрипты, и анализировать код завершения, и таким образом можно сильно расширить возможности проверки.
  • Следить за ресурсами сервера - загрузкой процессора, памяти, Load Average.

При этом monit, это не только система мониторинга - он может не только следить и отправлять уведомления при определённых событиях, но и автоматически выполнять определённые действия, например перезапуск упавшего процесса, что позволяет сделать систему более устойчевой и автономной.

Также monit имеет встроенный веб сервер с поддержкой http, https. Это позволяет отслеживать состояние системы и управлять monit используя обычный браузер.

 

Установка и начальная настройка.

Для установки имеет смысл воспользоваться пакетным менеджером вашей ОС. например:

Debian, Ubuntu:

#sudo apt-get install monit

Gentoo:

#emerge monit

Для настройки monit используется файл конфигурации monitrc, чаще всего он находится в каталоге /etc или /etc/monit. Используюется свой скриптовый язык Domain Specific Language (DSL). Комментарии начинаются с #.

Конфигурационный файл состоит из нескольких логических секций:

  • Глобальные параметры, в формате set <параметр> <значение>.
  • Описание сервисов, в формате check <тип сервиса> <различные пареметры>
  • Дополнительные файлы конфигурации include <имя файла>, с помощью которых можно удобно настраивать отслеживание отдельных сервисы в отдельных файлах. Также поддерживаются символы замены, например include /etc/monit.d/*.cfg

Сервисы могут быть объеденены в группы, и управляться на уровне групп.

 

Примеры конфигурации для контроля различных процессов.

 

Настройка VPS для хостинга php проекта (gentoo, nginx, php-fpm, mysql)

Введение.

  • Выбор OS.
  • Nginx+PHP-FPM как альтернатива Apache mod_php.

Установка и настройка.

  • make.conf, use, profile, cборка окружения.
  • Необходимые пакеты.
  • Настройка системы.
  • Настройка php-fpm.
  • Настройка nginx.
  • Примеры конфигов nginx для популярных CMS.
  • Безопасность.
  • Настройка доступа к файлам через sftp.

Оптимизация.

  • OC
  • файловая система.
  • mysql.
  • php и nginx.

Дополнения.

  • Обработка почты с помощью GMail.
  • Собственный почтовый сервер (exim, dovecot).
  • Настройка ftp сервера.
  • Средства мониторинга.

FAQ

 

Статья находится в процессе написания. Coming soon... =)

VPS - Gentoo nginx php-fpm - Введение

Выбор OS.

Так сложилось, что из дистрибутивов Linux я предпочитаю Debian based и Gentoo, ну и FreeBSD. Debian и FreeBSD, в зависимости от роли сервера я использую на выделенных серверах (FreeBSD чаще всего как хранилище, или в коммуникационных задачах, Debian в остальных случаях), Gentoo на VPS. 

В случае VPS, где ресурсы достаточно ограничены, я предпочитаю именно Gentoo, т.к. из-за её гибкой системы portage, можно удобно собирать ПО с нужными оптимизациями и только необходимыми зависимостями, что очень способствует работе при ограниченных ресурсах, Экономится, в частности, весьма ценная на VPS оперативная память. Чаще всего этот выбор возможен, т.к. у подавляющего большинства хостеров, предоставляющих VPS, имеется  пресет Gentoo.

Есть и минус, т.к. вычислительные мощности VPS достаточно скромны, сборка пакетов происходит небыстро. Но это операция после ввода сервера в строй не такая частая, и на мой взгляд экономия ресурсов во время работы этот минус с лихвой перевешивает.

Nginx+PHP-FPM как альтернатива Apache mod_php.

Теперь пара слов, почему выбрана именно связка nginx и php-fpm.

Тут опять основная причина в экономии памяти. Nginx не запускает в отличии от Apache по процессу (или потоку) на клиента, что очень существенно экономит память. Можно конечно было бы использовать схему Nginx (фронэнд) - Apache+ mod_php (бекэнд), но Apache в данной связке, вообще говоря, лишнее звено, т.к. вся его роль сводится к по большому счёту к обработке .htaccess файлов, реврайтам и запуску необходимого количества процессов php. Первое, в случае хостинга своих проектов не сильно нужно - изменения настроек можно сделать или в конфигурации nginx или в самом приложении, со второй проблемой Nginx справляется не хуже Apache, хотя из-за того, что синтаксис реврайтов различен, приходится произвести небольшую работу по их переписыванию. Но опять же, у нас не масс хостинг, и это не такая большая работа.  Запуск же обработчиков php возложен на php-fpm - fastcgi process manager, который раньше был патчем к php, а сейчас вошёл в поставку php из коробки, и вполне применим на продакшен серверах.

Drupal

Drupal - система управления котентом (CMS) и платформа постороения веб приложений (CMF) с открытым исходным кодом выпускающаяся по лицензии GPL.Это мощная модульная система, отличающаяся большой гибкостью и позволяющая создать широкий спектр сайтов, от визитки или персонального блога, до крупного портала.Drupal поддерживает локализацию интерфейса(имеется готовая русская локализация для стандартных модулей и для большого кол-ва дополнительных) и создание многоязычных сайтов. Примеры посещаемых сайтов реализованных на Drupal.

Модули

Описание и примеры использования различных модулей Drupal.

Menu Bredcrumb

Дружим uc_catalog и nodewords

Для Drupal существует очень полезный модуль nodewords. Он позволяет задавать метатеги материалам, профилям пользователей, терминам таксономии и даже произвольным страницам, но есть у него недостаток: он не работает для каталога ubercat, т.к. не считает страницы его категорий страницами терминов таксономии.

Можно было бы конечно прописать метатеги основываясь на пути, но это муторно и неудобно.

Т.к. катагории товаров в ubercart ничто иное как термины таксономии, логично бы было при просмотре соответствующей категории использовать метатеги соответствующего термина таксономии.

Вот маленький модуль реализующий данный функционал:

uc_catalog_meta.module

<?php

function uc_catalog_meta_nodewords_api() {
  // Мы используем эту версию nodewords api
  return array('version' => '1.12');
}

function uc_catalog_meta_nodewords_type_id(&$result, $arg) {
  // Страницы каталога находятся у нас по адресу: catalog/tid.
  if ($arg[0] == 'catalog') {
    if (isset($arg[1]) && is_numeric($arg[1])) {
      // Говорим nodewords что на самом-то деле для категории каталога, надо подставить метатеги термина с соответствующим tid 
      $result['type'] = NODEWORDS_TYPE_TERM;
      $result['id'] = $arg[1];
    }
  }
}

uc_catalog_meta.info
name = Nodewords for uc_catalog
description= Метатеги на страницах категорий каталога
package = Custom core = 6.x
dependencies[] = nodewords
 
В зависимостях не указан модуль uc_catalog, т.к. если реализовать каталог с помощью например taxonomy_menu и views, то существует та же проблема и данное решение тоже подходит.

Темы оформления для Drupal

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

Источники готовых шаблонов(тем) для Drupal

http://drupal.org/project/themes основное хранилище тем для Drupal на официальном сайте проекта.

http://themegarden.org/drupal6 отличный ресурс, где можно посмотреть как будет выглядеть тестовый сайт при установке той или иной темы и переключаться между темами.

 

Вёрстка

Электроника