Фев 3 2009

Как создать deb пакет из исходников. Краткое руководство

Все чаще сталкиваюсь с тем что в репозиториях много старых пакетов, в бекпортах бывает версия поновее, но все же не последний релиз, а порой вообще никакой версии нет! Почитал разной информации на эту тему, пришел к выводу что ничего сложного нет, и можно самому собрать deb пакет. Конечно разных примудростей там полно, но мы ведь делаем пакеты для себя =), а не для миллионов пользователей. А если вы хотите стать крутым ментейнером, тогда вам быстрее всего не сюда, а на сайт debian.org, читать оригинальную инструкцию, где все подробно расписано.

Есть конечно выход скачать исходники, откомпилировать, установить и пользоваться, только зачем делать из сервера помойку.

Цель данной заметки описать максимально кратко, процесс создания deb пакета из исходников.
Собирать будем nginx.

Нам понадобятся следующие пакеты:

$ apt-get install  autoconf automake libtool autotools-dev dpkg-buildpackage fakeroot dh-make

Дальше создаем каталоги, качаем и переименовываем файл, архив обьязательно должен быть tar.gz, если у вас другой, переархивируйте, за названиями следите внимательно, любое отклонение может привести к тому что вы словите ошибки при сборе пакета.

$ mkdir /root/deb/nginx
$ mkdir /root/deb/nginx/0.7.33
$ cd /root/deb/nginx/0.7.33 
$ wget http://sysoev.ru/nginx/nginx-0.7.33.tar.gz
$ mv nginx-0.7.33.tar.gz nginx_0.7.33.orig.tar.gz
$ tar zxvf nginx_0.7.33.orig.tar.gz
$ cd nginx-0.7.33

Далее конфигурируем, делаем как обычно ./configure –prefix=/usr && make (но не устанавливаем!)

Дебианизируем

$ dh_make
 
Type of package: single binary, multiple binary, library, kernel module or cdbs?
 [s/m/l/k/b] s
 
Maintainer name : root
Email-Address   : info@root
Date            : Sun, 8 Jun 2009 14:12:55 +0200
Package Name    : nginx
Version         : 0.7.33
License         : blank
Type of Package : Single
Hit <enter> to confirm:

Мы скомандовали сформировать пекет для одиночного бинарного файла.

Первое что теперь нужно сделать, это открыть файл debian/control и добавить описание программы.

Description: <insert up to 60 chars description>
 <insert long description, indented with spaces>

В место и без кавычек вписываем описание что это за программа.

Теперь правим debian/rules, нам нужно расскоментировать dh_install в секции binary-arch:
Вышеописанные действия нужны для сборки любого deb пакета, а теперь приступаем конкретно к nginx. Нужно немного подправить debian/rules, указать в секции config.status: что нас интересует и куда должен устанавливается nginx.

config.status: configure
        dh_testdir
./configure --prefix=/var/lib/nginx --sbin-path=/usr/sbin --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginx/proxy --with-http_flv_module --with-http_ssl_module --with-http_realip_module

Если вы пользуетесь nginx, и как раз пытаетесь его собрать, вы можете посмотреть с какими параметрами он у вас собран, и собрать его с точно такими же параметрами.

$ nginx -V #покажет вам все

Раз у нас уже все готово, можем приступить к созданию deb пакета.

$ cd /root/deb/nginx/0.7.33/nginx-0.7.33 
$ dpkg-buildpackage -rfakeroot

В конечном итоге вы получите deb пакет nginx_0.7.33-1_i386.deb, который можно установовить как обычные debian пакеты:

dpkg -i nginx_0.7.33-1_i386.deb

Ссылки && Что почитать:

1) http://forum.ubuntu.ru/index.php?topic=11609.0;topicseen
2) Официальное полное руководство на Русском http://www.debian.org/doc/maint-guide/

Удачных вам сборок и компиляций ;) .


марта 28 2008

Установка и настройка Nginx. Nginx frontend + Apache backend. Установка mod_rpaf

Интро

Легкие веб-сервера набирают обороты. По статистике Google Online Security Blog в Интернете стоит около 4% веб серверов на Nginx. Всем известный rambler.ru крутится на nginx. Nginx действительно отличный веб-сервер который достоин внимания.

Перед нами стоит задача, поставить Nginx как frontend что бы он обрабатывал только некоторые типы файлов, как мы знаем типы файлов – css, js, jpg, gif, exe, tar, pdf и другие подобные – это статика, обрабатывая такие типы файлов легким веб-сервером nginx мы снизим нагрузку на веб-сервер Apache и получим хороший прирост к производительности.

Шаг 1. Установка Nginx
Установка Nginx занимает несколько секунд.
Debian:

apt-get install nginx

FreeBSD:

cd /usr/ports/www/nginx
make install clean

Конфигурационный файл nginx вы найдете у себя в
Debian – /etc/nginx/nginx.conf
FreeBSD – /usr/local/etc/nginx/nginx.conf

Шаг 2. Подготовка Apache.
Настроим Apache, открываем конфигурационный файл, имя файла зависит от версии Apache и платформы. У меня вторая ветка Apache (2.2.x) на Debian и FreeBSD платформах.

Debian – /etc/apache2/ports.conf
FreeBSD – /usr/local/etc/apache2/httpd.conf

Находим строку вида Listen 80.100.100.10:80 где “80.100.100.10″ IP вашего сервера и устанавливаем порт 81

Listen 80.100.100.10:81

Больше ничего не меняйте в конфиге Apache.

Шаг 3. Настройка Nginx

server {
 listen 80.100.100.10:80; # ip вашего сервера и порт
 server_name myexample.com www.myexample.com; # Имя вашего домена с www и без
 location / {
 proxy_pass http://80.100.100.10:81/;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarder_for;
 }
 location ~* \.(jpeg|jpg|gif|png|css|js|pdf|txt|tar)$ { # Обрабатываемые типы файлов
 root /home/www/myexample.com/httpdocs; # Путь к коренвевому каталогу вашего сайта
 }
}

Строки заголовка запроса X-Real-IP и X-Forwarded-For нужны будут вам если вы в своих скриптах используете информацию об IP-адресе посетителя или хотите скрыть от скриптов разделение на фрондэнд/бэкэнд и видеть нормальные IP пользователей, вместо IP фронтэнда, в таком случае вам необходимо будет дополнительно установить и настроить модуль mod_rpaf.

Шаг 4. Установка mod_rpaf
FreeBSD

cd /usr/ports/www/mod_rpaf
make install clean

После установки откройте конфигурационный файл Apache и проверьте наличие следующей строки :

LoadModule rpaf_module        libexec/apache22/mod_rpaf.so

если такой строки нет, добавьте, но указывайте свой путь к файлу mod_rpaf.so
И немного ниже добавьте следующие строки предварительно заменив “80.100.100.10″ на свой IP

RPAFenable On
RPAFsethostname On
RPAFproxy_ips 80.100.100.10
RPAFheader X-Forwarded-For

Примеры конфигураций nginx (frontend version)
Минимальная рабочая конфигурация для одного домена
Конфигурация nginx для одного домена с возможностью скрывать ip frontend-a и правильно отображать айпи пользователей (При условии что настроен mod_praf для Apache)
Конфигурация nginx с теми же возможностями что и у варианта “2″ но для нескольких доменов и поддоменов
Конфигурация nginx с теми же возможностями что и у варианта “3″ но с более широкими возможностями настройки разных интересных переменных для оптимизации nginx веб-сервера

Ссылки
Установка Nginx
Документация по Nginx