Назад | Перейти на главную страницу

Как обновить и добавить модуль nginx в debian

Как обновить nginx с добавлением модуля без удаления старых файлов / конфигураций nginx?

Я установил nginx с помощью apt-get install, я попытался установить, загрузив tar.gz с сайта nginx, но это не дало никакого эффекта.

Я использую debian 6.0.2 squeeze

Буду признателен за совет.

Наилучшие пожелания

Если вам нужны новые модули, вам придется перекомпилировать nginx. Если вы хотите установить его из исходного кода, вам сначала нужно удалить пакет Debian. Вот вам краткое руководство. Я выполняю все как пользователь root следующим образом:

Создайте резервную копию ваших файлов конфигурации:

mkdir ~/nginx-config-backup && cp -r /etc/nginx/* ~/nginx-config-backup

Удалите предыдущую установку nginx:

apt-get remove nginx*

Вам понадобится это для сборки nginx из исходников:

apt-get install build-essentials

Каталог, в который мы поместим исходные файлы:

cd /usr/local/src

Получите последнюю разрабатываемую версию nginx:

wget http://nginx.org/download/nginx-1.3.9.tar.gz
tar -zxvf nginx-1.3.9.tar.gz
mv nginx-1.3.9 nginx
rm -f nginx-1.3.9.tar.gz

Получите последнюю версию PCRE:

cd ../../lib
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.31.tar.gz
tar -zxvf pcre-8.31.tar.gz
mv pcre-8.31 pcre
rm -f pcre-8.31.tar.gz

Получите последнюю версию OpenSSL:

wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
tar -zxvf openssl-1.0.1c.tar.gz
mv openssl-1.0.1c openssl
rm -f openssl-1.0.1c.tar.gz

Получите последнюю версию zlib:

git clone git://github.com/madler/zlib.git

Теперь я скачиваю два примера модулей для nginx:

cd ../includes
git clone git://github.com/masterzen/nginx-upload-progress-module.git
git clone git://github.com/gnosek/nginx-upstream-fair.git

Вернемся к nginx; настраиваем нашу установку и компилируем + устанавливаем:

cd ../src/nginx
./configure
  --prefix=/usr/local
  --sbin-path=/usr/local/sbin
  --conf-path=/etc/nginx/nginx.conf
  --pid-path=/var/run/nginx.pid
  --lock-path=/var/lock/nginx.lock
  --error-log-path=/var/log/nginx/error.log
  --http-log-path=/var/log/nginx/access.log
  --user=nginx
  --group=nginx
  --with-debug
  --with-file-aio
  --with-http_gzip_static_module
  --with-http_realip_module
  --with-http_ssl_module
  --with-md5=/usr/local/lib/openssl
  --with-md5-asm
  --with-openssl=/usr/local/lib/openssl
  --with-sha1=/usr/local/lib/openssl
  --with-sha1-asm
  --with-pcre=/usr/local/lib/pcre
  --with-pcre-jit
  --with-zlib=/usr/local/lib/zlib
  --without-http_browser_module
  --without-http_geo_module
  --without-http_limit_req_module
  --without-http_limit_conn_module
  --without-http_memcached_module
  --without-http_referer_module
  --without-http_split_clients_module
  --without-http_ssi_module
  --without-http_upstream_ip_hash_module
  --without-http_userid_module
  --without-http_uwsgi_module
  --add-module=/usr/local/include/nginx-upload-progress-module
  --add-module=/usr/local/include/nginx-upstream-fair
make
make install

Не забудьте все убрать:

cd /usr/local
rm -rf
  src/nginx
  include/nginx-upload-progress-module
  include/nginx-upstream-fair
  lib/pcre
  lib/zlib
  lib/openssl

Теперь у вас будет рабочий двоичный файл nginx в /usr/sbin/nginx. Также не забудьте обновить init-скрипт (при /etc/init.d/nginx) для nginx. Вот, например, мой личный init-скрипт:

https://github.com/Fleshgrinder/nginx-sysvinit-script