Поставим сначала пакеты. Возможно вам пригодятся еще какие-то, но об этом вы узнаете, если какая-то команда не запустится:
И применяем их:
Переходим в директорию, где будем работать:
Выбираем нужную версию программы на сайте. И скачиваем её:
Распаковываем, но сам тарбол не стираем и оставляем его на месте(!!!):
Теперь нужно переименовать директорию с сорцами, потому что далее сборщик deb-пакета возьмет название и номер версии отсюда. Правило одно - слева имя пакета (оставим его nginx, чтобы он заменял стандартный) и следом первый дефис. А второй дефис разделяет версию пакета и версию мейнтейнера. И никаких подчеркиваний! Итак меняем версию:
И переходим в эту директорию:
*************************
Начало необязательной части, которую можно пропустить.
Возможно кому-то захочется скрыть версию пакета в целях безопасности. Делается это либо директивой server_tokens = Off позже в конфиге либо сейчас правкой 49-й строки здесь:
Если кому хочется, можно поменять конфиг сразу, чтобы пакет разворачивался уже с готовым конфигом:
Можно также добавить модули Nginx.
Конец необязательной части.
*************************
Деперь "дебианизируем" пакет:
В результате в этой директории появилась поддиректория debian, а уровнем выше, где мы оставили тарбол, появилась копия тарбола с надписью orig.
Поправим пару параметров перед сборкой. Например Description (один пробел слева как на образце обязателен):
Далее делаем вещь, специфическую для nginx - запрещаем стандартную автоконфигурацию и вписываем свою (ВНИМАНИЕ: перед строкой ./configure --pref..., которая во второй строке, не должно быть ни одного пробела и только один [Tab]. Иначе сборщик не заметит эту строку и конфигурация не пройдет. Первый признак ошибки - слишком быстро пробежавший билд, а в пакете не будет ничего кроме директории /usr):
Установим файлы приложения в сам пакет, а то он пустой получится:
Так как у нас ванильный пакет, а не дебиановский, то у нас изначально нету никакого init-скрипта. Создадим его, перетерев старый (пробел только перед шибэнгом не забудьте стереть):
А еще нам нужна инструкция для logrotate как часто ротировать логи Nginx. Создадим файл конфига:
Вот теперь у нас нормально соберется:
Отходим назад и смотрим:
Можно теперь поставить:
Также перед началом вписываем себе в переменное окружение (~/.bashrc) наши опознавательные знаки:apt-get install libpcre++-dev libssl-dev libgeoip-dev dh-make autotools-dev gcc-4.3 debhelper devscripts
DEBEMAIL="email.address@example.org" DEBFULLNAME="Имя Фамилия" export DEBEMAIL DEBFULLNAME
И применяем их:
source ~/.bashrc
Переходим в директорию, где будем работать:
cd /usr/src
Выбираем нужную версию программы на сайте. И скачиваем её:
wget http://nginx.org/download/nginx-1.0.8.tar.gz
Распаковываем, но сам тарбол не стираем и оставляем его на месте(!!!):
tar xzf nginx-1.0.8.tar.gz
Теперь нужно переименовать директорию с сорцами, потому что далее сборщик deb-пакета возьмет название и номер версии отсюда. Правило одно - слева имя пакета (оставим его nginx, чтобы он заменял стандартный) и следом первый дефис. А второй дефис разделяет версию пакета и версию мейнтейнера. И никаких подчеркиваний! Итак меняем версию:
mv nginx-1.0.8 nginx-1.0.8-nsq1
И переходим в эту директорию:
cd nginx-1.0.8-nsq1
*************************
Начало необязательной части, которую можно пропустить.
Возможно кому-то захочется скрыть версию пакета в целях безопасности. Делается это либо директивой server_tokens = Off позже в конфиге либо сейчас правкой 49-й строки здесь:
vi +49 src/http/ngx_http_header_filter_module.c
Если кому хочется, можно поменять конфиг сразу, чтобы пакет разворачивался уже с готовым конфигом:
vi conf/nginx.conf
Можно также добавить модули Nginx.
Конец необязательной части.
*************************
Деперь "дебианизируем" пакет:
dh_make --single -f ../nginx-1.0.8.tar.gz
В результате в этой директории появилась поддиректория debian, а уровнем выше, где мы оставили тарбол, появилась копия тарбола с надписью orig.
Поправим пару параметров перед сборкой. Например Description (один пробел слева как на образце обязателен):
vi debian/control
Description: small, but very powerful and efficient web serverNginx (engine x) is a web server created by Igor Sysoev and kindly providedto the open-source community. This server can be used as standalone HTTPserver and as a reverse proxy server before some Apache or another bigserver to reduce load to backend servers by many concurrent HTTP-sessions
Далее делаем вещь, специфическую для nginx - запрещаем стандартную автоконфигурацию и вписываем свою (ВНИМАНИЕ: перед строкой ./configure --pref..., которая во второй строке, не должно быть ни одного пробела и только один [Tab]. Иначе сборщик не заметит эту строку и конфигурация не пройдет. Первый признак ошибки - слишком быстро пробежавший билд, а в пакете не будет ничего кроме директории /usr):
vi debian/rules
override_dh_auto_configure:
./configure --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginx/proxy --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-uwsgi-temp-path=/var/run/nginx/uwsgi --http-scgi-temp-path=/var/run/nginx/scgi --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --with-http_gzip_static_module --with-http_geoip_module --with-http_realip_module --with-http_stub_status_module --with-poll_module --with-http_dav_module --with-debug --with-http_ssl_module --with-http_flv_module --with-cc-opt=' -O2 -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m64'
Установим файлы приложения в сам пакет, а то он пустой получится:
dh_install
Так как у нас ванильный пакет, а не дебиановский, то у нас изначально нету никакого init-скрипта. Создадим его, перетерев старый (пробел только перед шибэнгом не забудьте стереть):
И установим новый init-скрипт:tee > debian/init.d.ex
#! /bin/sh ### BEGIN INIT INFO # Provides: nginx # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the nginx web server # Description: starts nginx using start-stop-daemon ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/sbin/nginx NAME=nginx DESC=nginx test -x $DAEMON || exit 0 # Include nginx defaults if available if [ -f /etc/default/nginx ] ; then . /etc/default/nginx fi set -e case "$1" in start) echo -n "Starting $DESC: " start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON -- $DAEMON_OPTS || true echo "$NAME." ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON || true echo "$NAME." ;; restart|force-reload) echo -n "Restarting $DESC: " start-stop-daemon --stop --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON || true sleep 1 start-stop-daemon --start --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true echo "$NAME." ;; reload) echo -n "Reloading $DESC configuration: " start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON || true echo "$NAME." ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 exit 1 ;; esac exit 0
dh_installinit
А еще нам нужна инструкция для logrotate как часто ротировать логи Nginx. Создадим файл конфига:
tee > conf/logrotate
/var/log/nginx/*.log {И добавим его в список установленных файлов между 136-й и 137-й строками (перед END):
daily
missingok
rotate 16
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
[ ! -f /var/run/nginx/nginx.pid ] || kill -USR1 `cat /var/run/nginx/nginx.pid`
endscript
}
vi +136 auto/install
mkdir '\$(DESTDIR)$NGX_CONF_PREFIX'/logrotate.d
cp conf/logrotate '\$(DESTDIR)$NGX_CONF_PREFIX'/logrotate.d/nginx
Вот теперь у нас нормально соберется:
debuild -uc -us
Отходим назад и смотрим:
ls ../*deb
Можно теперь поставить:
dpkg -i ../nginx_1.0.8-nsq1-1_amd64.deb
Комментариев нет:
Отправить комментарий