Ошибка установки пакета NGINX в Ubuntu 18.04
Я новичок в Ubuntu. Мне нужно включить сжатие brotli на сервере nginx.
Я пытаюсь установить NGINX с BROTLI по ссылке ниже. https://www.howtoforge.com/tutorial/how-to-install-nginx-with-brotli-compression-on-ubuntu-1804/
когда я пытаюсь установить пакет сборки по ссылке, я получаю сообщение об ошибке.
root@sachin-virtual-machine:/usr/local/src# ls
nginx-1.14.2 nginx_1.14.2-1~bionic.dsc
nginx_1.14.2-1~bionic_amd64.buildinfo nginx_1.14.2.orig.tar.gz
nginx_1.14.2-1~bionic_amd64.changes nginx-dbg_1.14.2-1~bionic_amd64.deb
nginx_1.14.2-1~bionic_amd64.deb ngx_brotli
nginx_1.14.2-1~bionic.debian.tar.xz
root@sachin-virtual-machine:/usr/local/src# sudo dpkg -i *.deb
dpkg: regarding nginx_1.14.2-1~bionic_amd64.deb containing nginx:
nginx conflicts with nginx-common
nginx-common (version 1.14.0-0ubuntu1.2) is present and installed.
dpkg: error processing archive nginx_1.14.2-1~bionic_amd64.deb (--install):
conflicting packages - not installing nginx
(Reading database ... 175249 files and directories currently installed.)
Preparing to unpack nginx-dbg_1.14.2-1~bionic_amd64.deb ...
Unpacking nginx-dbg (1.14.2-1~bionic) over (1.14.2-1~bionic) ...
dpkg: dependency problems prevent configuration of nginx-dbg:
nginx-dbg depends on nginx (= 1.14.2-1~bionic); however:
Version of nginx on system is 1.14.0-0ubuntu1.2.
Version of nginx on system, provided by nginx-core:amd64, is <none>.
dpkg: error processing package nginx-dbg (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
nginx_1.14.2-1~bionic_amd64.deb
nginx-dbg
root@sachin-virtual-machine:/usr/local/src#
Пожалуйста, ведите меня с этим.
1 ответ
У вас уже установлен nginx, поэтому вы должны удалить эту версию, чтобы иметь возможность собирать и устанавливать ее из исходного кода.
Проверьте новую версию nginx и удалите ее
dpkg -l nginx*
- Вы должны увидеть версию
1.14.2
удалите его сsudo dpkg remove nginx-1.14.2
и убедитесь, что вы используете правильный номер версии.
- Вы должны увидеть версию
Сейчас делаю
sudo apt update
а такжеsudo apt upgrade
чтобы убедиться, что у них нет проблем.Теперь удалите старую версию
sudo apt purge <nginx-1.14.0>
- Теперь соберите эту новую версию и установите и, если возникнут проблемы
sudo apt install -f
Если вы уже используете NGINX и хотели бы добавить поддержку Brotli, вы можете сделать это путем сборки и установки динамического модуля. Есть много шагов для этого. Для автоматизации вот сценарий bash, который я использовал при построении моего:
#!/bin/bash
# https://www.majlovesreg.one/tag/code/
# https://www.majlovesreg.one/adding-brotli-to-a-built-nginx-instance
# For custom NGINX version, use:
# ngver=1.14.2
# For passing via the command line, use:
# ngver=$1
# For automated detection of installed NGINX, use:
ngver=$(nginx -v 2>&1 | grep -oP '(?<=/).*')
moddir=/usr/share/nginx/modules
builddir=$(mktemp -d)
# Install needed development packages if not yet installed in the system
# sudo apt -y install git libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev
# Build in tmp directory
cd ${builddir}
# Download and unpack NGINX
wget https://nginx.org/download/nginx-${ngver}.tar.gz && { tar zxf nginx-${ngver}.tar.gz && rm nginx-${ngver}.tar.gz; } || { echo '!! download failed, exiting...'; exit 1; }
# Download, initialize, and make Brotli for NGINX
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli && git submodule update --init && cd ../nginx-${ngver}
nice -n 19 ionice -c 3 ./configure --with-compat --add-dynamic-module=../ngx_brotli || { echo '!! configure failed, exiting...'; exit 2; }
nice -n 19 ionice -c 3 make modules || { echo '!! make failed, exiting...'; exit 3; }
# Replace brotli in modules directory, i.e. /usr/share/nginx/modules/
[ -f ${moddir}/ngx_http_brotli_filter_module.so ] && sudo mv ${moddir}/ngx_http_brotli_filter_module.so ${moddir}/ngx_http_brotli_filter_module.so.old
[ -f ${moddir}/ngx_http_brotli_static_module.so ] && sudo mv ${moddir}/ngx_http_brotli_static_module.so ${moddir}/ngx_http_brotli_static_module.so.old
sudo cp objs/*.so ${moddir}/
sudo chmod 644 ${moddir}/ngx_http_brotli_filter_module.so
sudo chmod 644 ${moddir}/ngx_http_brotli_static_module.so
cd ${builddir}
# If new module works well, clean up build files
sudo nginx -t && { sudo rm -r ${builddir}/ngx_brotli; rm -r ${builddir}/nginx-${ngver}; } || { echo '!! nginx conf failed, exiting...'; exit 4; }
# Restart NGINX
systemctl is-active nginx && sudo systemctl restart nginx || sudo systemctl start nginx
echo
systemctl --no-pager status nginx
echo
echo 'Build and install of ngx_brotli sucessful!'
echo
После этого вам нужно будет загрузить динамические модули, добавив их в nginx.conf
:
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
Этот ответ был взят с этой веб-страницы: https://www.majlovesreg.one/adding-brotli-to-a-built-nginx-instance