Configure error the http rewrite module requires the pcre library

IssueWhen configure nginx 1.19.0, run the commands../configure --prefix=/opt/nginx-1.19.0But the following error occurs.checking for PCRE library ... not foundchecking for PCRE library in /usr/local/

Issue

When configure nginx 1.19.0, run the commands.

./configure --prefix=/opt/nginx-1.19.0

But the following error occurs.

checking for PCRE library ... not found
checking for PCRE library in /usr/local/ ... not found
checking for PCRE library in /usr/include/pcre/ ... not found
checking for PCRE library in /usr/pkg/ ... not found
checking for PCRE library in /opt/local/ ... not found

./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.

Solution

You need to install pcre.

1. Mac OS

Download pcre in the official website http://www.pcre.org/, such as pcre-8.44.zip, and run:

$ unzip pcre-8.44.zip
$ cd pcre-8.44
$ pwd
/Users/cpm/Downloads/packages/pcre-8.44

Copy your unzip path of pcre-8.44.zip, configure nginx again.

./configure --prefix=/opt/nginx-1.19.0 --with-pcre=/Users/cpm/Downloads/packages/pcre-8.44

2. Ubuntu/Debian

  • Use the method from step 1 above.
  • On the https://pkgs.org/search/?q=libpcre webpage, find the libpcre and libpcre-dev packages that match your operating system, download and install.
  • Use the apt-get command.
sudo apt-get install libpcre3-dev

3. RHEL/CentOS

  • Use the method from step 1 above.
  • On the https://pkgs.org/search/?q=pcre webpage, find the pcre and pcre-devel packages that match your operating system, download and install.
  • Use the yum command.
sudo yum install pcre-devel

При установке 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

While building nginx from source on CentOS/RHEL machine, encountered a very strange error as shown below:

./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.

I was wondering what this heck PCRE Library? I had never heard of it! After Googling, found that PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5. HTTP rewrite module of Nginx uses this PCRE library.

Solution: Install PCRE Library

You can install PCRE library using YUM as shown below:

yum install pcre

Once installed, again tried to compile Nginx and still faced the same error! Now found out the “pcre-devel” also need to be installed. You can install pcre-devel package using the below command:

yum install pcre-devel

Now compiling Nginx, went smooth, without any error 🙂

Author Profile

Ramya Santhosh

is a Web Designer and content creator. A freelance writer on latest trends in technology, gadget reviews, How to’s and many more.

The PCRE library is a set of functions that implement regular expression pattern matching . This is being used in many high profile open source projects like Apache, Nginx  and PHP. While i was trying to compile and install nginx on my staging machine, following error was thrown

1
2
3
4
5
6

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using withouthttp_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using withpcre=&lt;path&gt; option.

Configure script complains “pcre” library is missing on the server, which is required by “nginx” rewrite module. Either we need to disable the rewrite module in nginx or we have to install pcre library on the machine. As you know, rewrite functionality is very much critical for any webserver to manipulate the URLs.

In this article we will see how to install pcre and pcre-devel on Ubuntu and Centos

On Centos machine, I can install “pcre” and “pcre-devel” packages using yum .

1

yum install pcre pcredevel

How to install pcre and pcre-devel on Ubuntu ?

On ubuntu machines, the apt-get package names for “pcre” and  “pcre development packages are “libpcre3”   and “libpcre3-dev” . Run the following commands to install

1
2
3

aptget install libpcre3

aptget install libpcre3dev

On my machine, “libpcre3” was already installed and i had to install only “libpcre3-dev”

1
2
3
4
5
6
7
8

root@7b7d9678efd3:/nginx1.13.3# apt-get install libpcre3
Reading package lists... Done
Building dependency tree
Reading state information... Done
libpcre3 is already the newest version (2:8.383.1).
0 upgraded, 0 newly installed, 0 to remove and 30 not upgraded.

1
2
3
4
5
6
7
8
9
10
11
12
13
14

root@7b7d9678efd3:/nginx1.13.3# apt-get install libpcre3-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libpcre163 libpcre323 libpcrecpp0v5
The following NEW packages will be installed:
libpcre163 libpcre3dev libpcre323 libpcrecpp0v5
0 upgraded, 4 newly installed, 0 to remove and 30 not upgraded.
Need to get 820 kB of archives.
After this operation, 3519 kB of additional disk space will be used.
Do you want to continue? [Y/n] y

As always, feel free to drop us a note if you have any queries or feedbacks using our comment form below. Always happy to help you ???? Manuels d’utilisation

При установке Nginx штатными средствами ОС, нет возможности сконфигурировать его установку, чтобы добавить или убрать модули, и Nginx устанавливается “как есть”. Что же делать, если нам необходимо добавить модуль? Нужно пересобрать Nginx вручную.
Об этом и пойдет речь.

Предположим, что нам необходимо добавить в nginx модуль ngx_http_geo_module. Вывод команды nginx -V покажет нам, что Nginx собран без него.

nginx version: nginx/1.6.3
built by gcc 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC)
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 --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_spdy_module --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'

Вывод команды nginx -V лучше всего сохранить, поскольку данная информация нам потребуется в дальнейшем.

Шаг 1. Загружаем Nginx

Загружаем ту же версию Nginx, что и установлена.

wget http://nginx.org/download/nginx-1.6.3.tar.gz

Распакуем архив и перейдём в папку nginx-1.6.3:

tar zxvf nginx-1.6.3.tar.gz
cd nginx-1.6.3

Для сборки потребуются дополнительные пакеты, если они еще не установлены в системе, то производим их установку.

yum install gcc gcc-c++ kernel-devel
yum groupinstall "Development Tools"

Шаг 2. Сборка Nginx с необходимыми модулями

Приступаем к установке Nginx с добавлением необходимого модуля ngx_http_geo_module

Из ранее сохраненного вывод команды nginx -V копируем текст начиная с --prefix=

Должно получиться так:

./configure --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 --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_spdy_module --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --with-http_geoip_module
-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_spdy_module --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --with-http_geoip_module

В процессе установки возможно будут ошибки, исправляем их.

Исправление ошибок в процессе конфигурации

Ошибка

./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.

Исправляем

yum install openssl-devel

Ошибка

./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.

Исправляем

yum install pcre-devel

Ошибка

./configure: error: the GeoIP module requires the GeoIP library.
You can either do not enable the module or install the library.

Исправляем

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.

Исправляем

yum install libxslt-devel

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

Configuration summary
+ using system PCRE library
+ using system OpenSSL library
+ md5: using OpenSSL library
+ sha1: using OpenSSL library
+ using system zlib library

nginx path prefix: "/etc/nginx"
nginx binary file: "/usr/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/cache/nginx/client_temp"
nginx http proxy temporary files: "/var/cache/nginx/proxy_temp"
nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp"
nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp"
nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"

Теперь собираем Nginx

make
make install

После сборки проверяем установленные модули командой nginx -V

nginx version: nginx/1.6.3
built by gcc 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC)
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 --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_spdy_module --with-http_geoip_module --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'

Как видим, --with-http_geoip_module присутствует.

Перезапускаем Nginx

systemctl restart nginx

Модуль установлен.

25.03.2021 16:33 |
Другое

OS: Ubuntu 18.04

Фактически, установить nginx можно с помощью двух строк:

sudo apt update
sudo apt install nginx

что, собственно, я когда-то и сделал на своём десктопе. А вот на лэптопе решил поэкспериментировать.

Сборка и установка

Для начала обновим списки пакетов и репозиториев:

sudo apt-get update

Следующий шаг — загрузка исходников nginx. Для этого заходим на сайт nginx в секцию download, поскольку я буду устанавливать сервер на ноутбук (читайте, локальную машину), я скачаю Mainline version, в других случаях предпочёл бы Stable). Кликаем со ссылке правой клавишей мыши, копируем линк, скачиваем в любую директорию (в Вашем случае версия может отличаться):

wget http://nginx.org/download/nginx-1.19.8.tar.gz

и распаковываем (в эту же директорию):

tar -zxvf nginx-1.19.8.tar.gz

После мы должны увидеть директорию с исходниками:

$ ll
drwxr-xr-x  8 serhii75 serhii75     4096 бер  9 17:27 nginx-1.19.8/
-rw-rw-r--  1 serhii75 serhii75  1060155 бер  9 17:32 nginx-1.19.8.tar.gz

Команды будем запускать от имени root, поэтому выполним:

sudo su

Переходим в nginx-1.19.8 (опять-таки, у Вас может быть другая версия) и попробуем сконфигурировать исходники для сборки:

# cd nginx-1.19.8/
nginx-1.19.8# ./configure

Если после выполнения этой команды получили ошибку об отсутствии компилятора C:

./configure: error: C compiler cc is not found

…запустите команду:

# sudo apt-get install build-essential

Хотя c проблемой выше в этот раз не сталкивался, но получил другую ошибку:

./configure: error: the HTTP rewrite module requires the PCRE library.

Т.е. отсутствует библиотека для регулярных выражений (Perl Compatible Regular Expressions). На самом деле, запуская  ./configure, мы увидели чего не хватает. Что ж, установим необходимую библиотеку:

sudo apt-get install libpcre3 libpcre3-dev

а также библиотеки для компрессии и ssl:

sudo ap-get zlib1g zlib1g-dev libssl-dev

Снова запускаем ./configure и на этот раз никаких ошибок быть не должно. Посмотреть все возможные флаги конфигурации можно запустив:

# ./configure --help

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

  • —sbin-path=путь — задаёт имя исполняемого файла nginx, который используется для запуска/остановки сервиса nginx
  • —conf-path=путь — задаёт имя конфигурационного файла nginx.conf
  • —error-log-path=путь — задаёт имя основного файла ошибок, предупреждений и диагностики
  • —http-log-path=путь — задаёт имя основного файла регистрации запросов HTTP-сервера
  • —with-pcre — разрешает использование библиотеки PCRE
  • —pid-path=путь — задаёт имя файла nginx.pid, в котором будет храниться номер главного процесса
  • —with-http_ssl_module — разрешает сборку модуля для работы HTTP-сервера по протоколу HTTPS

В конечном итоге команда будет выглядеть так:

# ./configure --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 --with-pcre --pid-path=/var/run/nginx.pid --with-http_ssl_module

Запускаем, и после звершения можем компилировать:

# make

После того, как компиляция будет завершена, инсталлируем:

# make install

Проверяем, прошла ли успешно установка (после выполнения команды увидим примерно следующее):

# nginx -V
nginx version: nginx/1.19.8
built by gcc 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) 
built with OpenSSL 1.1.1  11 Sep 2018
TLS SNI support enabled
configure arguments: --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 --with-pcre --pid-path=/var/run/nginx.pid --with-http_ssl_module

Запускаем nginx:

# nginx

Проверяем, запущен ли процесс:

# ps aux | grep nginx
root      8186  0.0  0.0  32960   808 ?        Ss   21:45   0:00 nginx: master process nginx
nobody    8187  0.0  0.0  37780  3572 ?        S    21:45   0:00 nginx: worker process
root      8198  0.0  0.0  15936  1016 pts/0    S+   21:45   0:00 grep --color=auto nginx

И, если проверим в браузере, набрав localhost, то увидим «Welcom to nginx!».

Создаём системный сервис

Сервис позволит не только запускать и останавливать nginx, но так же стартовать nginx при загрузке/перезагрузке системы. Идём сюда, и переходим по ссылке NGINX Systemd service file в секции Systemd. Как и сказано в инструкции, создаём файл:

nano /lib/systemd/system/nginx.service

И копируем в него содержимое из ссылки выше. 
Важно: обратите внимание, что мы изменили строку с PIDFile, прописав путь, который указывали при конфигурировании. В итоге файл будет выглядеть так:

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Запускаем nginx:

systemctl start nginx

И проверяем есть ли процесс:

# ps aux | grep nginx
root      9564  0.0  0.0  32960   804 ?        Ss   22:07   0:00 nginx: master process /usr/sbin/nginx
nobody    9565  0.0  0.0  37780  3556 ?        S    22:07   0:00 nginx: worker process
root      9568  0.0  0.0  15936   992 pts/0    S+   22:07   0:00 grep --color=auto nginx

Судя по ответу всё в порядке. Поскольку теперь у нас есть сервис, мы можем посмотреть статус nginx используя команду:

# systemctl status nginx

что даст нам больше информации:

# systemctl status nginx
● nginx.service - The NGINX HTTP and reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2021-03-25 22:07:33 EET; 11min ago
  Process: 9563 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 9562 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
 Main PID: 9564 (nginx)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/nginx.service
           ├─9564 nginx: master process /usr/sbin/nginx
           └─9565 nginx: worker process

бер 25 22:07:33 serhii75-laptop systemd[1]: Starting The NGINX HTTP and reverse proxy server...
бер 25 22:07:33 serhii75-laptop nginx[9562]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
бер 25 22:07:33 serhii75-laptop nginx[9562]: nginx: configuration file /etc/nginx/nginx.conf test is successful
бер 25 22:07:33 serhii75-laptop systemd[1]: Started The NGINX HTTP and reverse proxy server.

На данный момент, после перезагрузки машины, nginx не будет запущен, что, очевидно, плохо для веб-сервера. Поэтому сделаем так, чтобы nginx «заводился» после ребута. 

Остановим сервис:

# systemctl stop nginx

И выполним:

systemctl enable nginx

После чего должны увидеть запись о том, что была создана символическая ссылка:

Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /lib/systemd/system/nginx.service.

Перезагружаем лэптоп, открываем консоль и проверяем запущен ли nginx:

$ sudo systemctl status nginx
[sudo] password for serhii75: 
● nginx.service - The NGINX HTTP and reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2021-03-25 22:37:50 EET; 35s ago
  Process: 2006 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 1991 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
 Main PID: 2010 (nginx)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/nginx.service
           ├─2010 nginx: master process /usr/sbin/nginx
           └─2011 nginx: worker process

бер 25 22:37:50 serhii75-laptop systemd[1]: Starting The NGINX HTTP and reverse proxy server...
бер 25 22:37:50 serhii75-laptop nginx[1991]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
бер 25 22:37:50 serhii75-laptop nginx[1991]: nginx: configuration file /etc/nginx/nginx.conf test is successful
бер 25 22:37:50 serhii75-laptop systemd[1]: Started The NGINX HTTP and reverse proxy server.

Примечание: поскольку мы теперь не под root-ом, понадобится добавлять sudo перед командой.

Работает! Что и требовалось.

На этом на сегодня всё. Успехов!

nginx: �������!

30.09.2011

������������� �����������, ��������� � ������� nginx-1.0.7
� ��������� ������� ./configure:

tar zxf nginx-1.0.7.tar.gz
cd nginx-1.0.7
./configure

��������, ��� ���������������� ��������� ������ ��-�� ����, ��� �� �������
�� ��� ���� ����������, ��������, ���������� PCRE:

./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.

� ���� ������ ����� ��� ���������� �� ������������� ������
ngx_http_rewrite_module � ������� ���������
--without-http_rewrite_module,
��� ���������� � ������� ���������� PCRE, ��� �� ������� ���������� PCRE
������ � nginx �� �������� �������, ������ configure
���� � ��� � ������� ���������
--with-pcre=<����>.
��������� ������� ��������� ������ � �������
��������� nginx.

���� ���������� ��������� ������������ ������, �� ���������� �����������
������� configure ����� �������:

make clean

����� ��������� ���������������� �������� nginx:

make

� ������������� ���:

make install

��������� ������ ���� ��������� � ������� ������������ root.
��� ���������������� ������ ��� ���������� nginx ����� ���������� � �������
/usr/local/nginx/.

����� �������� ��������� ��������� nginx � ������� ������������ root:

/usr/local/nginx/sbin/nginx

� �������

ps ax -o pid,ppid,user,%cpu,vsz,wchan,command|egrep '(nginx|PID)'

�� FreeBSD 4.x ������� �������� ���������:

  PID  PPID USER   %CPU   VSZ WCHAN  COMMAND
11116     1 root    0.0  1268 pause  nginx: master process /usr/local/nginx/sbi
11117 11116 nobody  0.0  1484 kqread nginx: worker process (nginx)
11118 11116 nobody  0.0  1484 kqread nginx: worker process (nginx)
11119 11116 nobody  0.0  1484 kqread nginx: worker process (nginx)

nginx ����� ��������� �������.

(C) ����� ������
http://sysoev.ru

PCRE Library is a library that is required to use HTTP rewrite when we do a compilation of nginx. The PCRE package contains Perl Compatible Regular Expression libraries useful for implementing regular expression pattern matching.

If PCRE is not installed on the server, it will result in the following error message during the Nginx compliation:

checking for PCRE library ... not found

checking for PCRE library in /usr/local/ ... not found

checking for PCRE library in /usr/include/pcre/ ... not found

./configure: error: the HTTP rewrite module requires the PCRE library.

You can either disable the module by using withouthttp_rewrite_module

option, or install the PCRE library into the system, or build the PCRE library

statically from the source with nginx by using withpcre=<path> option.

How to Install the PCRE library so we can install Nginx Web Server with the HTTP rewrite module ? login into your server via SSH as user ‘root’

1) First, goto a temporary directory

2) Download PCRE:

# wget http://downloads.sourceforge.net/pcre/pcre-8.10.tar.bz2

3) Unpack and change to the pcre directory

# tar -jxf pcre-8.10.tar.bz2

# cd pcre-8.10

4) Confiure PCRE:

5) Create the installation files and install PCRE

Once done, you should be able to install Nginx with the HTTP rewrite module.

Понравилась статья? Поделить с друзьями:
  • Configure error the http image filter module requires the gd library
  • Configuration error for all dimms on subsystem system memory
  • Configuration error dmi assertion
  • Configure error the http gzip module requires the zlib library
  • Configuration error daf 105