Добавление модулей nginx в Linux (Debian/Ubuntu/CentOS)
Что же делать, если нам необходимо добавить какой-либо модуль? Правильно, нужно пересобрать nginx вручную. О том как это правильно сделать в Linux написано в данной статье.
Предположим, для примера, что нам необходимо добавить в nginx модуль http_mp4_module. Вывод команды nginx -V покажет нам, что nginx собран без него.
Код: Виділити все
# nginx -VКод: Виділити все
nginx version: nginx/1.2.1
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
--pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
--without-http_browser_module --without-http_geo_module --without-http_limit_req_module --without-http_limit_zone_module
--without-http_memcached_module --without-http_referer_module --without-http_scgi_module --without-http_split_clients_module
--with-http_stub_status_module --without-http_ssi_module --without-http_userid_module --without-http_uwsgi_module
--add-module=/tmp/buildd/nginx-1.2.1/debian/modules/nginx-echoКод: Виділити все
# wget http://nginx.org/download/nginx-1.2.1.tar.gzКод: Виділити все
# tar –xvf nginx-1.2.1.tar.gz
# cd nginx-1.2.1Для Debian/Ubuntu выполняем:
Код: Виділити все
# aptitude install build-essentialКод: Виділити все
# yum install gcc gcc-c++ kernel-devel
# yum groupinstall 'Development Tools'Для этого копируем из текстового редактора вывод команды nginx -V начиная с --prefix= и до первого --add-module= (все присутствующие в выводе --add_module= нам не нужны). После чего пишем в консоли ./configure и вставляем скопированное из редактора. Должно получиться так:
Код: Виділити все
./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
--pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
--without-http_browser_module --with-http_geoip_module --without-http_memcached_module --without-http_referer_module
--without-http_scgi_module --without-http_split_clients_module --with-http_stub_status_module --without-http_ssi_module
--without-http_userid_module --without-http_uwsgi_moduleКод: Виділити все
./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
--pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
--without-http_browser_module --with-http_geoip_module --without-http_memcached_module --without-http_referer_module
--without-http_scgi_module --without-http_split_clients_module --with-http_stub_status_module --without-http_ssi_module
--without-http_userid_module --without-http_uwsgi_module --with-http_mp4_module--------
В процессе конфигурирования возможно будут появляться ошибки. Способы их устранения описаны ниже.
Ошибка:
Код: Виділити все
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.Код: Виділити все
# aptitude install libpcre++-devКод: Виділити все
# yum install pcre-develКод: Виділити все
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.Код: Виділити все
# aptitude install libssl-devКод: Виділити все
# yum install openssl-develКод: Виділити все
./configure: error: the GeoIP module requires the GeoIP library.
You can either do not enable the module or install the library.Код: Виділити все
# aptitude install libgeoip-devКод: Виділити все
# yum install GeoIP-develКод: Виділити все
./configure: error: the HTTP XSLT module requires the libxml2/libxslt
libraries. You can either do not enable the module or install the libraries.Код: Виділити все
# aptitude install libxslt1-devКод: Виділити все
# yum install libxslt-develКод: Виділити все
./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
--pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
--without-http_browser_module --with-http_geoip_module --without-http_memcached_module --without-http_referer_module
--without-http_scgi_module --without-http_split_clients_module --with-http_stub_status_module --without-http_ssi_module
--without-http_userid_module --without-http_uwsgi_module --with-http_mp4_moduleПосле успешного окончания конфигурирования увидим на экране что-то вроде:
Код: Виділити все
nginx path prefix: "/etc/nginx"
nginx binary file: "/etc/nginx/sbin/nginx"
nginx configuration prefix: "/etc/nginx"
nginx configuration file: "/etc/nginx/nginx.conf"
nginx pid file: "/var/run/nginx.pid"
nginx error log file: "/var/log/nginx/error.log"
nginx http access log file: "/var/log/nginx/access.log"
nginx http client request body temporary files: "/var/lib/nginx/body"
nginx http proxy temporary files: "/var/lib/nginx/proxy"
nginx http fastcgi temporary files: "/var/lib/nginx/fastcgi"Код: Виділити все
# make
# make installКод: Виділити все
# /etc/nginx/sbin/nginx -VКод: Виділити все
nginx version: nginx/1.2.1
TLS SNI support enabled
configure arguments: ./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
--pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
--without-http_browser_module --with-http_geoip_module --without-http_memcached_module --without-http_referer_module
--without-http_scgi_module --without-http_split_clients_module --with-http_stub_status_module --without-http_ssi_module
--without-http_userid_module --without-http_uwsgi_module --with-http_mp4_moduleОстанавливаем nginx:
Код: Виділити все
# service nginx stopКод: Виділити все
# mv /usr/sbin/nginx /usr/sbin/nginx_backКод: Виділити все
# mv /etc/nginx/sbin/nginx /usr/sbin/nginxКод: Виділити все
# rm -r -f /etc/nginx/sbinКод: Виділити все
# nginx -VКод: Виділити все
nginx version: nginx/1.2.1
TLS SNI support enabled
configure arguments: ./configure --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock
--pid-path=/var/run/nginx.pid --with-pcre-jit --with-http_gzip_static_module --with-http_ssl_module --with-ipv6
--without-http_browser_module --with-http_geoip_module --without-http_memcached_module --without-http_referer_module
--without-http_scgi_module --without-http_split_clients_module --with-http_stub_status_module --without-http_ssi_module
--without-http_userid_module --without-http_uwsgi_module --with-http_mp4_moduleКод: Виділити все
# service nginx startКод: Виділити все
# cd ../
# rm -r -f nginx-1.2.1