Содержание
- Установка модулей в Nginx на примере http_geoip_module
- Шаг 1. Загружаем Nginx
- Шаг 2. Сборка Nginx с необходимыми модулями
- Исправление ошибок в процессе конфигурации
- Теперь собираем Nginx
- Module ngx_http_xslt_module
- Example Configuration
- Directives
- Русские Блоги
- Основы Nginx: 4: установка и настройка сторонних модулей
- Шаг 1. Подтвердите заранее
- Шаг 2. Загрузите исходный код
- Загрузите исходный код nginx
- Разархивируйте исходный код nginx
- Получите исходный код subs_filter
- Шаг 3: перекомпилируйте
- Общие ошибки и соответствующие методы
- Шаг 4: компилируйте
- Шаг 5: установка
- Шаг 6. Подтвердите результаты
- Интеллектуальная рекомендация
- IView CDN Загрузка значка шрифта нормальная, а значок шрифта не может быть загружен при локальной загрузке JS и CSS
- Критическое: ошибка настройки прослушивателя приложения класса org.springframework.web.context.ContextLoaderLis
- 1086 Не скажу (15 баллов)
- Pandas применяют параллельный процесс приложения, многоядерная скорость очистки данных
- PureMVC Learning (Tucao) Примечания
- Install and compile nginx 1.14 on Ubuntu 18.04 LTS server
- Install and compile Nginx 1.14
- Login as root/super user
- Create Nginx system user
- Install dependency packages
- Download and install nginx 1.14
- Download Nginx Source package
- Decompress the downloaded Nginx source package
- Compiling/Installing from Nginx source files
- Create systemd service script file for nginx
- Check and confirm Nginx defualt port and webpage
- Why we install dependencies package before compiling nginx source code
- Do’nt be greedy, share the knowledge!
- Related
- Comments
- 2 responses to “Install and compile nginx 1.14 on Ubuntu 18.04 LTS server”
Установка модулей в Nginx на примере http_geoip_module
При установке Nginx штатными средствами ОС, нет возможности сконфигурировать его установку, чтобы добавить или убрать модули, и Nginx устанавливается “как есть”. Что же делать, если нам необходимо добавить модуль? Нужно пересобрать Nginx вручную.
Об этом и пойдет речь.
Предположим, что нам необходимо добавить в nginx модуль ngx_http_geo_module . Вывод команды nginx -V покажет нам, что Nginx собран без него.
Вывод команды nginx -V лучше всего сохранить, поскольку данная информация нам потребуется в дальнейшем.
Шаг 1. Загружаем Nginx
Загружаем ту же версию Nginx, что и установлена.
Распакуем архив и перейдём в папку nginx-1.6.3 :
Для сборки потребуются дополнительные пакеты, если они еще не установлены в системе, то производим их установку.
Шаг 2. Сборка Nginx с необходимыми модулями
Приступаем к установке Nginx с добавлением необходимого модуля ngx_http_geo_module
Из ранее сохраненного вывод команды nginx -V копируем текст начиная с —prefix=
Должно получиться так:
В процессе установки возможно будут ошибки, исправляем их.
Исправление ошибок в процессе конфигурации
Ошибка
Исправляем
Ошибка
Исправляем
Ошибка
Исправляем
Ошибка
Исправляем
При успешной конфигурации вывод будет приблизительно следующий:
Теперь собираем Nginx
После сборки проверяем установленные модули командой nginx -V
Как видим, —with-http_geoip_module присутствует.
Источник
Module ngx_http_xslt_module
The ngx_http_xslt_module (0.7.8+) is a filter that transforms XML responses using one or more XSLT stylesheets.
This module is not built by default, it should be enabled with the —with-http_xslt_module configuration parameter.
This module requires the libxml2 and libxslt libraries.
Example Configuration
Directives
Syntax: | xml_entities path ; |
---|---|
Default: | — |
Context: | http , server , location |
Specifies the DTD file that declares character entities. This file is compiled at the configuration stage. For technical reasons, the module is unable to use the external subset declared in the processed XML, so it is ignored and a specially defined file is used instead. This file should not describe the XML structure. It is enough to declare just the required character entities, for example:
Syntax: | xslt_last_modified on | off ; |
---|---|
Default: | |
Context: | http , server , location |
This directive appeared in version 1.5.1.
Allows preserving the “Last-Modified” header field from the original response during XSLT transformations to facilitate response caching.
By default, the header field is removed as contents of the response are modified during transformations and may contain dynamically generated elements or parts that are changed independently of the original response.
Syntax: | xslt_param parameter value ; |
---|---|
Default: | — |
Context: | http , server , location |
This directive appeared in version 1.1.18.
Defines the parameters for XSLT stylesheets. The value is treated as an XPath expression. The value can contain variables. To pass a string value to a stylesheet, the xslt_string_param directive can be used.
There could be several xslt_param directives. These directives are inherited from the previous configuration level if and only if there are no xslt_param and xslt_string_param directives defined on the current level.
Syntax: | xslt_string_param parameter value ; |
---|---|
Default: | — |
Context: | http , server , location |
This directive appeared in version 1.1.18.
Defines the string parameters for XSLT stylesheets. XPath expressions in the value are not interpreted. The value can contain variables.
There could be several xslt_string_param directives. These directives are inherited from the previous configuration level if and only if there are no xslt_param and xslt_string_param directives defined on the current level.
Syntax: | xslt_stylesheet stylesheet [ parameter = value . ]; |
---|---|
Default: | — |
Context: | location |
Defines the XSLT stylesheet and its optional parameters. A stylesheet is compiled at the configuration stage.
Parameters can either be specified separately, or grouped in a single line using the “ : ” delimiter. If a parameter includes the “ : ” character, it should be escaped as “ %3A ”. Also, libxslt requires to enclose parameters that contain non-alphanumeric characters into single or double quotes, for example:
The parameters description can contain variables, for example, the whole line of parameters can be taken from a single variable:
It is possible to specify several stylesheets. They will be applied sequentially in the specified order.
Syntax: | xslt_types mime-type . ; |
---|---|
Default: | |
Context: | http , server , location |
Enables transformations in responses with the specified MIME types in addition to “ text/xml ”. The special value “ * ” matches any MIME type (0.8.29). If the transformation result is an HTML response, its MIME type is changed to “ text/html ”.
Источник
Русские Блоги
Основы Nginx: 4: установка и настройка сторонних модулей
В предыдущей статье рассказывалось, как проверить, установлен ли сторонний модуль или нет. В этой статье в качестве примера будет использоваться subs_filter, чтобы познакомить с тем, как компилировать и устанавливать исходный код.
В качестве примера возьмем модуль subs_filter, просто выполните следующие действия:
Шаг 1. Подтвердите заранее
Как правило, это требование состоит в том, что nginx был установлен, в противном случае вы можете загрузить исходный код nginx и исходный код модуля напрямую и скомпилировать его напрямую, но в более общей ситуации вам необходимо подтвердить установленную версию nginx и настройки времени компиляции. Сначала вам необходимо выполнить следующую команду Получите эту информацию.
Таким образом, мы знаем, что текущая версия nginx — 1.16.1, а также получаем параметры конфигурации, используемые во время компиляции.
Установите subs_filter одновременно, подтвердите, что в текущем состоянии будет ошибка, чтобы убедиться, что действия по установке и настройке являются нормальными.
Шаг 2. Загрузите исходный код
Загрузите исходный код nginx
При необходимости загрузите исходный код nginx 1.16.1 здесь.
Команда загрузки: wget http://nginx.org/download/nginx-1.16.1.tar.gz
Разархивируйте исходный код nginx
Получите исходный код subs_filter
Используйте следующую команду, чтобы получить исходный код subs_filter
git clone http://github.com/yaoweibin/ngx_http_substitutions_filter_module.git
Шаг 3: перекомпилируйте
Добавьте следующее содержимое к параметрам настройки компиляции, полученным на шаге 1.
Примечание. Путь необходимо изменить к тому же каталогу, созданному командой git clone.
Затем используйте ./configure, чтобы установить
Примечание. Параметр nginx with-ipv6 будет автоматически оцениваться после версии nginx 1.11.5.В этой статье в основном описывается метод пользовательской установки и настройки, поэтому я не буду повторять его здесь.
Общие ошибки и соответствующие методы
Как правило, компонентов установки не хватает.Чтобы избежать ошибок в команде configure, рекомендуется перед использованием yum установить пакеты, необходимые для следующих распространенных ошибок.
Соответствующий метод: yum -y install redhat-rpm-config.noarch
Соответствующий метод: yum -y install pcre-devel
Соответствующий метод: yum -y install openssl openssl-devel
Соответствующий метод: yum -y install libxml2 libxml2-dev libxslt-devel
Соответствующий метод: yum -y install gd-devel
Соответствующий метод: yum -y install perl-devel perl-ExtUtils-Embed
Соответствующий метод: yum install gperftools -y
Шаг 4: компилируйте
Используйте команду make для компиляции
Шаг 5: установка
Используйте make install для завершения установки
Шаг 6. Подтвердите результаты
Перезапустите службу nginx и перезагрузите службу.
Вы можете видеть, что сообщение об ошибке неизвестной директивы «subs_filter» больше не появляется, указывая на то, что сторонний модуль работал.
Интеллектуальная рекомендация
IView CDN Загрузка значка шрифта нормальная, а значок шрифта не может быть загружен при локальной загрузке JS и CSS
Используйте iview, чтобы сделать небольшой инструмент. Чтобы не затронуть другие платформы, загрузите JS и CSS CDN на локальные ссылки. В результате значок шрифта не может быть загружен. Просмо.
Критическое: ошибка настройки прослушивателя приложения класса org.springframework.web.context.ContextLoaderLis
1 Обзор Серверная программа, которая обычно запускалась раньше, открылась сегодня, и неожиданно появилась эта ошибка. Интуитивно понятно, что не хватает связанных с Spring пакетов, но после удаления п.
1086 Не скажу (15 баллов)
При выполнении домашнего задания друг, сидящий рядом с ним, спросил вас: «Сколько будет пять умножить на семь?» Вы должны вежливо улыбнуться и сказать ему: «Пятьдесят три». Это.
Pandas применяют параллельный процесс приложения, многоядерная скорость очистки данных
В конкурсе Algorith Algorith Algorith Algorith Algorith 2019 года используется многофункциональная уборка номера ускорения. Будет использовать панды. Но сама панда, кажется, не имеет механизма для мно.
PureMVC Learning (Tucao) Примечания
Справочная статья:Введение подробного PrueMVC Использованная литература:Дело UnityPureMvc Основная цель этой статьи состоит в том, чтобы организовать соответствующие ресурсы о PureMVC. Что касается Pu.
Источник
Install and compile nginx 1.14 on Ubuntu 18.04 LTS server
This post will help you to install and compile nginx 1.14 on Ubuntu 18.04 LTS server. We always recommend to our readers that whenever you use any ubuntu server always go for latest LTS edition.
When you install nginx by compiling from source package, it gives you one major benefit and that is adding extra module after installation. When you install by using package manager tool like yum,apt, dnf etc., you will get blocker when you need to install additional module in nginx. Yes! package manager provides easy control on package and it is faster too.
Disclaimer: We are installing Nginx on DigitalOcean droplet(server)
Install and compile Nginx 1.14
Follow the given below steps to install Nginx from source package on Ubuntu 18.04 LTS .
Login as root/super user
Login to server as root. In case, you are login as non-root user then you have to switch to super user (It need sudeors access).
To become super user from non-root user, here is the command.
You can either use sudo with all command which you run and requires super user access.
Create Nginx system user
Run the given below command for creating new nginx system user. This user will be used for installing the nginx.
Install dependency packages
Install all the dependencies. These all packages are listed because we will add related modules. In other words you can also say that these dependencies are related to some Nginx module.
Download and install nginx 1.14
In this section, we will read how to install and compile nginx 1.14 .
Always remember that with every new nginx release some changes are introduced and hence it might also reflect on list of modules which will be added during compilation.
Download Nginx Source package
Always download and install stable and latest nginx source release. This is case with all types o package in all Operating system. It keeps your system less vulnerable to any attack/malicious activity.
At the time of writing this post, the Nginx stable version is 1.14. Hence we are downloading the same.
Decompress the downloaded Nginx source package
When you download the nginx stable release package,it has extension of tar.gz . It means it is compress tar ball file and need to decompress first. In other technical term you can say untar the package.
Compiling/Installing from Nginx source files
After decompress the package tar ball, the directory called ‘nginx-1.14.0’ will be extracted out. Now change directory to nginx-1.14.0 and start compiling the source files.
Make and install.
The installation is completed and you will get the ‘Configuration summary’ like this at trailing end of output.
Configuration summary output (These are not commands)
nginx 1.14 ubuntu 18.04
Create systemd service script file for nginx
To start,stop,restart and checking status of nginx service you can create systemd service script.
Use your favourite file editor, our is vi/vim .
Write/paste the given below contents in file /lib/systemd/system/nginx.service . Save and exit from file editor.
After creating the nginx service file, you should reload the systemd manager configuration.
To start nginx service
To stop nginx service
To restart nginx service
To check status of nginx service
To enable nginx service to run at booting time
To disable nginx service, not to run at booting time
Check and confirm Nginx defualt port and webpage
Start the nginx service as given in above section. Then follow the given below steps.
(A) Check default listening port (port number 80 or http)
Run given below command to check nginx default listening port.
ss -tanlp|grep 80
Output: You can see port number 80 listening for ALL and nginx pid number also.
(B) Check default Nginx web page
From your laptop/Desktop , open the web browser eg.Google Chrome or Firefox . Type the ip address of Nginx server in web browser’s URL field.
Note:To get the ip address of your system , use the command ip addr list
Why we install dependencies package before compiling nginx source code
This section is for additional good read. There are reasons why we have installed particular dependencies packages. So we are sharing the information about the dependency package name and its related error during nginx compilation.
2 responses to “Install and compile nginx 1.14 on Ubuntu 18.04 LTS server”
Hi, i follow the step as you show and on the last step when I run the sudo make install and keeping getting the following error message, may I know what I did wrong? or how to solve the following error?
Источник
При установке 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
I recently updated my mac-os to Mojave. I was using Nginx and it was working on my previous os but after updating to Mojave, I am not able to start my Nginx.
So I tried to install it again, first, it gave me c compiler error, So I downloaded the Xcode command-line tools and it was gone. Now it gives me libxml2/libxslt libraries not found. I tried to install it using brew but I still get the same error. I am not sure what is going wrong.
I have downloaded libxml2 and libxslt using brew install.
My configure script.
./configure
--prefix=/opt/nginx/$NGINX_NAME_VERSION
--pid-path=/var/run/nginx.pid
--conf-path=/etc/nginx/$NGINX_NAME_VERSION/conf/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--lock-path=/var/lock/nginx.lock
--http-client-body-temp-path=/var/tmp/nginx/body
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi
--http-proxy-temp-path=/var/tmp/nginx/proxy
--http-scgi-temp-path=/var/tmp/nginx/scgi
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
--with-debug
--with-http_addition_module
--with-http_dav_module
--with-http_geoip_module
--with-http_gzip_static_module
--with-http_realip_module
--with-http_stub_status_module
--with-http_ssl_module
--with-http_sub_module
--with-http_xslt_module
--with-mail
--with-mail_ssl_module
--with-cc-opt=-I/usr/local/opt/openssl/include
--with-ld-opt=-L/usr/local/opt/openssl/lib
--builddir=$NGINX_BUILD_PATH
Error :
checking for OpenSSL library ... found
checking for zlib library ... found
checking for libxslt ... not found
checking for libxslt in /usr/local/ ... not found
checking for libxslt in /usr/pkg/ ... not found
checking for libxslt in /opt/local/ ... not found
You can see it is able to find OpenSSL, zlib but not libxslt. Please someone help me to resolve the issue.
Подключение дополнительных модулей к NGINX не самая тривиальная вещь для веб-разработчиков. Рассмотрим эту задачу на примере сборки NGINX с модулем HTTP Redis (ngx_http_redis).
Раньше, для подключения модулей к NGINX, нужно было полностью компилировать и веб-сервер и желаемые модули, но начиная с версии 1.9.11 можно этого не делать, а обойтись командой make modules, но для этого необходимо правильно сконфигурировать всю сборку NGINX.
Итак, сначала нужно узнать какая версия NGINX установлена. Если меньше 1.9.11, то читаем Установка последней версии NGINX.
nginx -v
##
nginx version: nginx/1.13.5
Скачиваем и распаковываем в домашнюю директорию ту же самую версию NGINX (в нашем случае 1.13.5):
wget https://nginx.ru/download/nginx-1.13.5.tar.gz
tar -xzvf nginx-1.13.5.tar.gz
Скачиваем и распаковываем модуль HTTP Redis:
wget https://people.freebsd.org/~osa/ngx_http_redis-0.3.8.tar.gz
tar -xzvf ngx_http_redis-0.3.8.tar.gz
Итого, у нас должны быть:
1. Установленный и работающий NGINX >= 1.9.11
2. Скаченный дистрибутив NGINX той же версии, что в пункте 1
3. Скаченный дистрибутив модуля HTTP Redis
Теперь мы можем скомпилировать модуль и подключить его в файле nginx.conf командой load_module my_module.so.
Нужно узнать текущую конфигурацию билда NGINX, смотрим его командой:
nginx -V
Заходим в директорию, куда распаковался скаченный NGINX:
cd nginx-1.13.5/
Готовимся к билду. Он проходит в два этапа: «configure» и «make».
Configure
Нужно после команды ./configure поставить то, что показано у вас в команде nginx -V. В моём случае (Ubuntu 16, nginx 1.13.5) получается:
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --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-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' --add-dynamic-module=../ngx_http_redis-0.3.8
В конце добавлен путь к динамическому модулю, который нужно скомпилировать (мы находимся в директории nginx ~/nginx-1.13.5), не забудьте его добавить:
--add-dynamic-module=../ngx_http_redis-0.3.8
Нажимаем Enter. Если вам повезло и на выходе нет ошибок, отлично.
Make
Дальше создаём модуль командой:
make modules
Если опять нет ошибок, то вы получите файл:
nginx-1.13.5/objs/ngx_http_redis_module.so
Подключаем его к NGINX, для этого в /etc/nginx/nginx.conf добавляем в самый верх строку с load_module, указываем полный путь до файла:
sudo nano /etc/nginx/nginx.conf
## Load our module:
load_module /home/vagrant/nginx-1.13.5/objs/ngx_http_redis_module.so;
Перезагружаем:
sudo nginx -s reload
Если нет сообщения об ошибке, значит модуль подключился! Можно переписать ngx_http_redis_module.so в более подходящее место и не забыть изменить путь к нему в nginx.conf.
Обновление NGINX
Модуль привязан к конкретной версии NGINX, если мы её обновим, то, скорее всего, он перестанет работать. Поэтому нужно пакет NGINX поставить на холд — заблокировать от обновления:
## sudo apt-mark hold <package>
sudo apt-mark hold nginx
## Remove HOLD
# sudo apt-mark unhold <package-name>
## Check HOLD
#apt-mark showhold
Ошибки и проблемы
Проблемы «configure»
1. Не проходит конфигурация билда, команда ./configure возвращает ошибку (после этого нельзя запустить make modules)
Ошибки такого вида:
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.
В данном примере, если мы изменим конфигурацию (чтобы проходил ./configure) и поставим —without-http_gzip_module, скорее всего, на этапе подключения модуль не подойдёт к nginx (см. ниже)
В процессе могут вылетать разные требования к библиотекам, которые нужны для билда nginx (или не вылетать). Эти пакеты может понадобиться установить самостоятельно (а могут уже стоять):
1. «./configure: error: C compiler cc is not found»
sudo apt-get install build-essential
2. PCRE
sudo apt-get install libpcre3
sudo apt-get install libpcre3-dev
3. OpenSSL
sudo apt-get install libssl-dev
4. HTTP XSLT module requires the libxml2/libxslt
sudo apt-get install libxml2
sudo apt-get install libxml2-dev
sudo apt-get install libxslt-dev
5. «…the HTTP image filter module requires the GD library»
sudo apt-get install libgd-dev
6. GeoIP
sudo apt-get install libgeoip-dev
7. PAM authentication module
sudo apt-get install libpam-dev
Проблемы подключения
Когда удалось скомпилировать модуль, но не работает подключение в NGINX:
— Модуль module-name.so компилируется, но при перезагрузке nginx пишет, что не та версия — перепроверить и скачать соответствующую версию.
— «is not binary compatible» ошибка примерно такая:
nginx: [emerg] module "/usr/share/nginx/modules/ngx_http_redis_module.so" is not binary compatible in /etc/nginx/nginx.conf:1
Это значит неправильно сконфигурирован билд модуля. Разбираемся с опциями ./configure: неправильно скопировали, не все зависимости установлены и так далее.