Установка и настройка OpenVZ на Debian Lenny
Одной из технологий виртуализации является OpenVZ, которая базируется на ядре Linux. OpenVZ позволяет на одном физическом сервере запускать множество изолированных копий операционной системы, называемых Виртуальные Частные Серверы (Virtual Private Servers, VPS) или Виртуальные Среды (Virtual Environments, VE).
Виртуализация на уровне операционной системы в OpenVZ ограничивает использование гостевых систем Linux'ом, но даёт лучшую производительность, масштабируемость, плотность размещения, динамическое управление ресурсами, а также лёгкость в администрировании. Согласно сайту OpenVZ, накладные расходы на виртуализацию очень малы, и падение производительности составляет 1-3 %, по сравнению с обычными Linux-системами.
OpenVZ состоит из модифицированного ядра Linux и пользовательских утилит.
Для начала работы с OpenVZ устанавливаем ядро с поддержкой OpenVZ:
Перезагружаем сервер с новым ядром.
Включение цветного вывода для Capistrano
Устанавливаем библиотеку capistrano_colors:
Добавляем в ~/.caprc подключение этой библиотеки:
Развертывание Symfony приложения с Capistrano и Subversion
Одним важных процессов в разработке web-приложений, в том числе и написанных с использованием фреймворка Symfony, является деплоймент или разворачивание и обновление проекта на удаленном сервере. Для выполнения подобных действий существует множество средств и одним из самых популярных является Capistrano. Он достаточно прост в освоении, очень гибок в настройке и функциональный богат, но по-умолчанию настроен для Ruby on Rails приложений.
Настроить Capistrano для развертывания Symfony приложений не составляет особого труда, так как все этапы стандартного процесса с легкостью можно переопределить.
В корне проекта запускаем capify . и начинаем настраивать config/deploy.rb.
Capistrano и deploy проектов
Capistrano является инструментом для автоматизации задач на одном или нескольких удаленных серверах. Он выполняет команды на всех целевых машинах параллельно и обеспечивает механизм для отката изменений. Поэтому удобно использовать Capistrano для развертывания web-приложений.
Для того, чтобы без использования Capistrano разместить свой код в production среде, можно выполнить одно из следующих действий:
- Залить по FTP весь код приложения, а затем обновлять измененные файлы.
- При использовании системы контроля версий (например, Subversion) зайти через SSH на production сервер и получить/обновить код с помощью checkout/update из репозитория.
- Использовать скрипты на основе rsync для синхронизации своей рабочей копии с сервером.
Разумеется, эти подходы имеют полное право на существование. Но кроме обновления кода есть и другие вещи, которые необходимо выполнять (применение миграций базы данных, очистка кэша и т.д.). Capistrano позволяет автоматизировать все рутинные операции связанные с развертыванием и обновлением приложений, оставляя больше времени на процесс разработки.
Установка и настройка Nginx на CentOS 5 с Cpanel
Nginx - это небольшой, очень быстрый и эффективный веб-сервер, как правило, используемый для обслуживания статического контента и как обратный прокси (или балансировщик нагрузки) для Apache или других относительно медленных бэкендов.
Поэтому вполне естественно использовать Nginx в качестве фронтэнда для Apache. Nginx позволяет экономить значительный объем памяти и процессорного времени, как правило используемых многочисленными процессами Apache, отдающими контент клиентам.
mod_rpaf
В случае использования Nginx в качестве реверсивного прокси перед Apache, ip-адрес посетителя, получаемый Apache, будет неверным, так как все запросы к Apache приходят от Nginx.
Чтобы в Apache записывал реальные ip-адреса посетителей вместо ip-адреса сервера, необходим специальный модуль Apache (mod_rpaf).
Запуск web-приложения на Sinatra с Phusion Passenger
На сегодняшний день одним из самых простых способов запуска Rails и Rack web-приложений является Phusion Passenger, представляющий собой модуль для Apache и Nginx. Фреймворк Sinatra базируется на Rack, следовательно, приложения на его основе Passenger способен легко запускать.
Для приложения необходима базовая структура директорий:
|-- app.rb < -- непосредственно приложение
|-- config.ru <-- Rackup файл для запуска
|-- public/ <-- директория для статических файлов (картинки, css, javascript)
|-- tmp/ <-- временная директория
Bdoc и Hanna – удобный просмотр документации RubyGems
Bdoc является простой и удобной заменой для gem server. Bdoc не требует запуска сервера для просмотра документации, так как он генерирует статичный html с навигацией по установленной локально документации.
Установка Bdoc очень проста:
Автоматизация обновления TextMate bundles
Автоматизировать обновление установленных TextMate bundles можно с помощью небольшого shell скрипта. Поддерживается обновление bundles, добавленных как через Subversion, так и через Git.
for bundle in "/Library/Application Support/TextMate/Bundles"/*; do
cd "$bundle"
echo "$bundle"
[ -d ".git" ] && git pull
[ -d ".svn" ] && svn update
done
ps aux | grep "TextMate.app/Contents/MacOS/TextMate" | grep -v grep > /dev/null 2>&1 && \
osascript -e 'tell app "TextMate" to reload bundles'
Сохраняем в файл (например, update_textmate_bundles.sh) и делаем chmod +x этому файлу. Теперь с помощью одной команды будут обновлены все дополнительно установленные bundles.
Hello world с помощью Ruby, Sinatra и Haml
Sinatra является легковесным фреймворком на Ruby, позволяет быстро и легко разрабатывать небольшие web-приложения. В основе фреймворка лежит DSL для простой разработки, что позволяет не отвлекаться на разбор параметров и обработку шаблонов.
Для начала нужны Ruby и Rubygems. Затем необходимо установить Sinatra:
В любимом текстовом редакторе (Vim, Emacs, TextMate и т.п.) создаем в новой директории файл app.rb, являющийся web-приложением на Sinatra:
require 'sinatra'
get '/' do
'Hello world!'
end
Мониторинг nginx с помощью munin
С помощью munin можно получить различную статистическую информацию о сервере с наглядными графиками. Для получения информации из nginx в munin существует несколько готовых плагинов: nginx_request (количество запросов), nginx_status (подключения) и nginx_memory (используемая память).
Такие графики получаются в результате несложной настройки:

