Что-то у меня проблемы с установкой. Вот что сделал.
1. Установил Nginx через https://github.com/angristan/nginx-autoinstall
2. скачал эту же версию nginx перешел в его папку и попробовал сделать
./configure --add-module=/tmp/ngx_http_geoip2_module $(nginx -V)
получил ошибку
./configure: error: the geoip2 module requires the maxminddb library.
3. Нашел в сети эту подсказку и сделал
git clone --recursive https://github.com/maxmind/libmaxminddb
cd libmaxminddb
./bootstrap
./configure
make
make install
4. Снова ./configure —add-module=/tmp/ngx_http_geoip2_module $(nginx -V) и теперь все ок
5. Далее
make
make install
и вроде бы все тоже норм собралось.
Перезапускаю Nginx, смотрю его конфигурацию, а geoip2 там нет. как так?
root@hel:/# nginx -V
nginx version: nginx/1.22.0
built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
built with OpenSSL 1.1.1 (compatible; BoringSSL) (running with BoringSSL)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --user=nginx --group=nginx --with-cc-opt=-Wno-deprecated-declarations --with-cc-opt=-Wno-ignored-qualifiers --with-openssl=/usr/local/src/nginx/modules/quiche/quiche/deps/boringssl --with-quiche=/usr/local/src/nginx/modules/quiche --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_mp4_module --with-http_auth_request_module --with-http_slice_module --with-http_stub_status_module --with-http_realip_module --with-http_sub_module --add-module=/usr/local/src/nginx/modules/ngx_brotli --with-http_v3_module
1
При установке nginx штатными средствами ОС в Linux (apt, aptitude, yum, dnf
) нет возможности сконфигурировать его установку, чтобы добавить или убрать какие-либо модули и nginx устанавливается «как есть».
Что же делать, если нам необходимо добавить какой-либо модуль? Правильно, нужно пересобрать nginx вручную. О том, как это правильно сделать в Linux, рассказываем в статье.
Добавление модулей nginx в Linux (Debian/Ubuntu/CentOS/AlmaLinux)
Предположим, для примера, что нам необходимо добавить в nginx модуль http_mp4_module. Вывод команды nginx -V
покажет нам, что nginx собран без него.
nginx -V
Результат:
nginx version: nginx/1.18.0 (Ubuntu) built with OpenSSL 1.1.1f 31 Mar 2020 TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-lUTckl/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module
Сохраним вывод команды nginx -V
в какой-нибудь текстовый редактор — эта информация нам пригодится при конфигурировании. Видим, что версия nginx у нас установлена 1.18.0 — скачиваем такую же версию:
wget http://nginx.org/download/nginx-1.18.0.tar.gz
Распакуем архив и перейдём в папку nginx-1.18.0:
tar -xvf nginx-1.18.0.tar.gz cd nginx-1.18.0
Далее для сборки нам потребуется установить в систему дополнительные пакеты.
Для Debian/Ubuntu выполняем:
apt install build-essential
После предложения продолжить установку — Do you want to continue? [Y/n] — нажимаем Y
.
Для CentOS/AlmaLinux выполняем:
yum install gcc gcc-c++ kernel-devel yum groupinstall 'Development Tools'
После предложения продолжить установку — Is this ok [y/d/N] — нажимаем y
.
После установки пакетов приступаем к конфигурированию nginx с добавлением модуля http_mp4_module.
Для этого копируем из текстового редактора вывод команды nginx -V
, начиная с —prefix= и до первого —add-module= (все присутствующие в выводе —add_module= нам не нужны). После чего пишем в консоли ./configure
и вставляем скопированное из редактора. В нашем случае есть вывод:
--add-dynamic-module=/build/nginx-d8gVax/nginx-1.18.0/debian/modules/http-geoip2
поэтому просто копируем все, кроме этой строки.
В конец строки добавляем —with-http_mp4_module чтобы получилось так:
./configure --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module --with-http_mp4_module
Нажимаем Enter
и ждём окончания процесса.
В процессе конфигурирования возможно будут появляться ошибки. Способы их устранения описаны ниже.
Ошибка:
./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.
Для Debian/Ubuntu исправляется установкой libpcre++-dev:
apt install libpcre++-dev
Для CentOS/AlmaLinux исправляется установкой pcre-devel:
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.
Для Debian/Ubuntu:
apt install libssl-dev
Для CentOS/AlmaLinux:
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.
Для Debian/Ubuntu:
apt install libgeoip-dev
Для CentOS/AlmaLinux:
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.
Для Debian/Ubuntu:
apt install libxslt1-dev
Для CentOS/AlmaLinux:
yum install libxslt-devel
Ошибка:
./configure: error: the HTTP gzip module requires the zlib library You can either do not enable the module or install the libraries.
Для Debian/Ubuntu:
apt install zlib1g-dev
Для CentOS/AlmaLinux:
yum install zlib-devel
Ошибка:
./configure: error: the HTTP image filter module requires the GD library. You can either do not enable the module or install the libraries.
Для Debian/Ubuntu:
apt install libgd-dev
Для CentOS/AlmaLinux:
yum install gd gd-devel
Каждый раз после apt install
или yum install
недостающего пакета запускаем заново.
./configure --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module --with-http_mp4_module
После успешного окончания конфигурирования увидим на экране что-то вроде:
Configuration summary + using threads + using system PCRE library + using system OpenSSL library + using system zlib library nginx path prefix: "/usr/share/nginx" nginx binary file: "/usr/share/nginx/sbin/nginx" nginx modules path: "/usr/lib/nginx/modules" nginx configuration prefix: "/etc/nginx" nginx configuration file: "/etc/nginx/nginx.conf" nginx pid file: "/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" nginx http uwsgi temporary files: "/var/lib/nginx/uwsgi" nginx http scgi temporary files: "/var/lib/nginx/scgi"
Теперь можно собрать бинарник nginx — выполняем 2 команды:
make make install
По окончании сборки проверяем, что nginx собрался с нужным нам модулем:
/usr/share/nginx/sbin/nginx -V
Результат:
nginx version: nginx/1.18.0 built by gcc 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) built with OpenSSL 1.1.1f 31 Mar 2020 TLS SNI support enabled configure arguments: --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module --with-http_mp4_module
Как видим, --with-http_mp4_module
в выводе команды присутствует — всё получилось. Осталось заменить текущий бинарник nginx новым, который мы только что собрали.
Останавливаем nginx:
systemctl stop nginx
Переименовываем (на всякий случай) текущий nginx в nginx_back:
mv /usr/sbin/nginx /usr/sbin/nginx_back
Перемещаем на его место новый собраный бинарник:
mv /usr/share/nginx/sbin/nginx /usr/sbin/nginx
Удаляем ненужную больше папку /etc/nginx/sbin:
rm -Rf /usr/share/nginx/sbin
Проверяем ещё раз, что nginx у нас теперь тот, что нужно:
nginx -V
Результат:
nginx version: nginx/1.18.0 built by gcc 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) built with OpenSSL 1.1.1f 31 Mar 2020 TLS SNI support enabled configure arguments: --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module --with-http_mp4_module
Запускаем nginx:
systemctl start nginx
Удаляем ненужную больше папку и архив nginx-1.8.1:
cd ../ rm -Rf nginx-1.18.0/ rm -Rf nginx-1.18.0.tar.gz
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
Geoip2 module requires the maxminddb library
Hi @leev or everyone,
I’m trying to re-compile nginx with this ngx_http_geoip2_module
.
I’m trying to run the following command:
$ sudo ./configure --add-module=/opt/nginx/ngx_http_geoip2_module
but it fails on checking the Maxmind library with this output:
[...] configuring additional modules adding module in /opt/nginx/ngx_http_geoip2_module checking for MaxmindDB library ... not found ./configure: error: the geoip2 module requires the maxminddb library.
As I always read the documentation, I’ve of course installed the libmaxminddb
before and it seems to be available:
$ sudo ldconfig -p | grep maxmind libmaxminddb.so.0 (libc6,x86-64) => /usr/local/lib/libmaxminddb.so.0 libmaxminddb.so (libc6,x86-64) => /usr/local/lib/libmaxminddb.so
Do you have any suggestion to help me installing it, please?
Thank you!
Hi @leev, do you have any update on this issue please?
The only other time this has been reported is with #10, but otherwise I’m not sure sorry.
Thank you for your answer. After investigating, it looks like this is due to nginx 1.2.1
(default in Debian 7).
I’ve downloaded nginx 1.6.2
and it compiles like a charm.
I close this issue as I think you do not plan to support old nginx versions. Feel free to reopen
This still happens with 1.18.0 as of today. libmaxminddb etc are installed:
sudo ldconfig -p | grep maxmind
libmaxminddb.so.0 (libc6,x86-64) => /lib64/libmaxminddb.so.0
Any suggestions? Fedora 33.
Also experienced the same issue on debian buster. It seems the libmaxminddb0 package on debian is missing maxminddb.h and maxminddb_config.h which this software requires. The configuration script tests for maxmind by trying to include the header file and trying to compile whilst linking against maxminddb. make sure your maxmind configuration is good, you can test by creating this two line c file:
#include <maxminddb.h>
void main() { }
then verify it compiles using: gcc maxmindtest.c -o maxmindtest -l maxminddb
.. if it does your compilation of the nginx geoip2 module should be OK (at least maxmind wise).
I ended up grabbing the maxmind header files from the maxmind git repo:
wget -O /usr/include/maxminddb.h https://raw.githubusercontent.com/maxmind/libmaxminddb/main/include/maxminddb.h
wget -O /usr/include/maxminddb_config.h https://raw.githubusercontent.com/maxmind/libmaxminddb/main/include/maxminddb_config.h.in
after this it builds me the module .. hope this helps somebody
Существует несколько способов отключения эффекта Ctrl + C :
- Измените настройку терминала, чтобы она не генерировала сигнал.
- Заблокируйте сигнал, чтобы он был сохранен на более позднюю доставку, когда сигнал становится разблокированным.
- Игнорируйте сигнал или установите обработчик для него.
- Запустите подпроцессы в фоновой группе процессов.
Так как вы хотите обнаружить, что CTRL + C был нажат, игнорируя сигнал выключен. Вы можете изменить настройки терминала, но вам нужно будет написать пользовательский код обработки ключа. Оболочки не обеспечивают доступ к блокировку сигналов.
Вы можете, однако, вы можете автоматически изолировать подпроцессы от приема сигнала, запустив их в отдельной группе процесса. Интерактивные оболочки запускают фоновые команды в отдельной группе процессов по умолчанию, но не интерактивные оболочки выполняют их в той же группе процессов, и все процессы в группе процесса переднего плана получают сигнал от терминальных событий. Чтобы сообщить оболочку на запускать фоновые задания в отдельной группе процессов, запустить SET -M
. Бег Setsid Ping ...
является еще одним способом форсирования Ping
для запуска в отдельной группе процесса.
set -m
interrupted=
trap 'echo Interrupted, but ping may still be running' INT
set -m
ping … &
while wait; [ $? -ge 128 ]; do echo "Waiting for background jobs"; done
echo ping has finished
Если вы хотите Ctrl + Z , чтобы приостановить фоновую группу процессов, вам нужно будет распространять сигнал от оболочки.
Контролирующие сигналы тонко являются немного растягивающейся для скрипта оболочки, а раковины, отличные от att ksh, как правило, имеют немного багги, когда вы достигаете угловых случаев, поэтому рассмотрите язык, который дает вам больше контроля, такого как Perl, Python или рубиновый
06.10.2014, 14:53
Ссылка
2 ответа
Всем, у кого возникла эта проблема, вот решение:
- git clone —рекурсивныйhttps://github.com/maxmind/libmaxminddb
- компакт-диск libmaxminddb
- ./начальная загрузка
- ./настроить
- делать
- выполнить установку
Я заметил, что изначально после клонирования не было исполняемого файла configure, но после запуска./bootstrap он был создан . Затем я запускаю./configure, make, make install, и тут я заметил, что в папке/usr/local/include
maxminddb _были созданы config.h и maxminddb.h .
Затем я запускаю свой установочный скрипт nginx, и ошибок больше не было.
Skeptic
28.01.2020, 01:53
Ссылка
Мне не хватало версии maxminddb для разработки, поэтому я использовал:
yum install libmaxminddb-devel
osoblanco
28.01.2020, 01:53
Ссылка
Теги
Похожие вопросы
Lim
unread,
Jul 4, 2018, 7:03:38 AM7/4/18
to openresty-en
Lately I tried to setup GeoIP2 with openresty, with lots of trying I didn’t get it to compile. The machine is running x64 Debian 8.11.
The following error I’m receiving is: ./configure: error: the geoip2 module requires the maxminddb library. Compiling Under root.
Even though libmaxminddb is installed, and I did put in headers .h files in /usr/include.
By searching on the net, there have been other people coming across the same issue (though I don’t think with openresty).
What they mentioned is that it’s in the order which the modules is in ./configure by putting it before some modules or after it did work for some people.
I tried that by putting it before and after, and excluding every optional module in openresty and only compiled it with openresty + geoip2. Still I got the same error. and the library is located in:
whereis libmaxminddb
libmaxminddb: /usr/local/lib/libmaxminddb.la /usr/local/lib/libmaxminddb.a /usr/local/lib/libmaxminddb.so
So I thought, have anyone even compiled GeoIP2 with openresty, anyone with results? Or maybe there’s a configuration error with openresty and geoip2 when you run ./configure.
Therefor I’m coming here. Looking for help, and hopefully not a issue by my part. I followed the instructions as stated.
Thanks hopefully there can be a workaround or a fix.
Igor Clark
unread,
Jul 4, 2018, 6:42:00 PM7/4/18
to openre…@googlegroups.com
Hello,
I make sure to run ldconfig when building GeoIP into OpenResty, to make sure Linux knows where to find the lib files. I build & install libmaxmind and then run ldconfig like so:
MAXMIND_INSTALL_PATH=/usr/share/maxmind
MAXMIND_LIB_PATH=${MAXMIND_INSTALL_PATH}/lib
MAXMIND_INC_PATH=${MAXMIND_INSTALL_PATH}/include
tar xzf libmaxminddb-1.1.2.tar.gz
pushd libmaxminddb-1.1.2
./configure --prefix=${MAXMIND_INSTALL_PATH}
make
make install
echo "${MAXMIND_LIB_PATH}" > /etc/ld.so.conf.d/libmaxminddb.conf
ldconfig -v 2>/dev/null |grep -i maxmind
popd
Probably needs a version bump but it works for me.
HTH,
Igor
Lim
unread,
Jul 5, 2018, 5:34:26 AM7/5/18
to openresty-en
Actually worked! Thanks. I guess I should’ve included the paths to libmaxminddb when running openresty ./configure script before, I had to do that to make it work, I simply included the path to that folder and running ldconfig before, that was a fast workaround, thank you again.