Как обновить nginx и сохранить все настройки?
Подскажите, пожалуйста, как на рабочем сервере обновится до последней версии nginx «на лету» и при этом сохранить все настройки вебсервера (сайты, домены, конфигы и т.п.) ?
- Вопрос задан более трёх лет назад
- 10499 просмотров
Комментировать
Решения вопроса 1
apt-get update && apt-get install nginx -y
обновит только nginx
Иль Вы из исходников собирали?
Ответ написан более трёх лет назад
Нравится 2 2 комментария
serious911 @serious911 Автор вопроса
Нет, через apt-get instatll устанавливал.
а папки /etc/nginx/sites-available, /etc/nginx/sites-enabled, /etc/nginx/nginx.conf сохранятся при этом?
всегда так обновлял и все было хорошо, но для начала просто скопируй к себе в домашнюю директорию эти папки. Восстановить ели что, будет проще 🙂
Ответы на вопрос 3
При обновлении nginx не трогает текущие конфиги, а новые кладёт рядом, либо в директорию с примерами. Это раз. У nginx есть киллерфича обновления бинарника на лету. Это два. Выбирайте.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Можно использовать git.
1) подготавливаем репозиторий:
$ cd /etc/nginx $ git init . && git add . && git commit -m initial
2) обновляем nginx:
# debian/ubuntu $ apt-get update && apt-get install nginx # redhat/centos $ yum install nginx
3) смотрим измения и коммитим необходимое:
$ git diff $ git add nginx.conf && git commit -m updated
Обновить nginx в Debian 9, 10 до последней версии
Чтобы обновить или установить последнюю доступную версию WEB-сервера nginx в Debian 9, 10, необходимо.
Установите пакеты, необходимые для подключения apt-репозитория:
sudo apt install curl gnupg2 ca-certificates lsb-release
Для подключения apt-репозитория для стабильной версии nginx, выполните следующую команду:
echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Если предпочтительно использовать пакеты для основной версии nginx, выполните следующую команду вместо предыдущей:
echo "deb http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Теперь нужно импортировать официальный ключ, используемый apt для проверки подлинности пакетов:
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
Проверьте, верный ли ключ был импортирован:
sudo apt-key fingerprint ABF5BD827BD9BF62
Вывод команды должен содержать полный отпечаток ключа 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 :
pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14] 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 uid [ unknown] nginx signing key
Чтобы установить nginx, выполните следующие команды:
apt update
Если он был ранее установлен, то сохраните все конфигурационные файлы, а затем удалите полностью
apt-get remove nginx nginx-common
Далее установите nginx и перезалейте файлы конфига
apt install nginx
После запустите ngnix
service nginx start
Как обновить nginx
Все чаще и чаще клиенты MyHosti сталкиваются с желанием иметь самый последний софт на своём сервере. В данной статье мы рассмотрим, как выполнить обновление Nginx до последней актуальной версии.
Выполняем подключение репозиториев Nginx.
1. Переходим в директорию с источниками пакетов:
cd /etc/apt/sources.list.d/
cd /etc/yum.repos.d/
2. Создадим файлы для указания источника пакетов Nginx
touch nginx.list
touch nginx.list
3. Указываем репозиторий Nginx
echo "deb http://nginx.org/packages/debian/ wheezy nginx" | tee -a /etc/apt/sources.list.d/nginx.list
echo "deb-src http://nginx.org/packages/debian/ wheezy nginx" | tee -a /etc/apt/sources.list.d/nginx.list
echo "deb http://nginx.org/packages/debian/ jessie nginx" | tee -a /etc/apt/sources.list.d/nginx.list
echo "deb-src http://nginx.org/packages/debian/ jessie nginx" | tee -a /etc/apt/sources.list.d/nginx.list
echo "deb http://nginx.org/packages/ubuntu/ precise nginx" | tee -a /etc/apt/sources.list.d/nginx.list
echo "deb-src http://nginx.org/packages/ubuntu/ precise nginx" | tee -a /etc/apt/sources.list.d/nginx.list
echo "deb http://nginx.org/packages/ubuntu/ trusty nginx" | tee -a /etc/apt/sources.list.d/nginx.list
echo "deb-src http://nginx.org/packages/ubuntu/ trusty nginx" | tee -a /etc/apt/sources.list.d/nginx.list
echo "deb http://nginx.org/packages/ubuntu/ wily nginx" | tee -a /etc/apt/sources.list.d/nginx.list
echo "deb-src http://nginx.org/packages/ubuntu/ wily nginx" | tee -a /etc/apt/sources.list.d/nginx.list
echo "deb http://nginx.org/packages/ubuntu/ xenial nginx" | tee -a /etc/apt/sources.list.d/nginx.list
echo "deb-src http://nginx.org/packages/ubuntu/ xenial nginx" | tee -a /etc/apt/sources.list.d/nginx.list
CentOS 5 / CloudLinux 5
echo "[nginx]" | tee -a /etc/yum.repos.d/nginx.repo
echo "name=nginx repo" | tee -a /etc/yum.repos.d/nginx.repo
echo "baseurl=http://nginx.org/packages/mainline/centos/5/"'$basearch/' | tee -a /etc/yum.repos.d/nginx.repo
echo "gpgcheck=0" | tee -a /etc/yum.repos.d/nginx.repo
echo "enabled=1" | tee -a /etc/yum.repos.d/nginx.repo
CentOS 6 / CloudLinux 6
echo "[nginx]" | tee -a /etc/yum.repos.d/nginx.repo
echo "name=nginx repo" | tee -a /etc/yum.repos.d/nginx.repo
echo "baseurl=http://nginx.org/packages/mainline/centos/6/"'$basearch/' | tee -a /etc/yum.repos.d/nginx.repo
echo "gpgcheck=0" | tee -a /etc/yum.repos.d/nginx.repo
echo "enabled=1" | tee -a /etc/yum.repos.d/nginx.repo
CentOS 7 / CloudLinux 7
echo "[nginx]" | tee -a /etc/yum.repos.d/nginx.repo
echo "name=nginx repo" | tee -a /etc/yum.repos.d/nginx.repo
echo "baseurl=http://nginx.org/packages/mainline/centos/7/"'$basearch/' | tee -a /etc/yum.repos.d/nginx.repo
echo "gpgcheck=0" | tee -a /etc/yum.repos.d/nginx.repo
echo "enabled=1" | tee -a /etc/yum.repos.d/nginx.repo
4. Подключаем ключи Nginx
Обновляем Nginx на Ubuntu Server 20.04 из репозитория
Всем добрых выходных. Что может быть проще чем обновить пакет на Ubuntu Server? Если он обновляется, то всё очень просто: «apt install пакет». А вот если нет.
Пришла задачка — обновить nginx на одном из web серверов. Главное требование, обновиться нужно на версию не ниже 1.21, потому что в более ранних версиях обнаружена какая-то уязвимость.
Захожу на сервер, смотрю версию nginx.
dpkg -l | grep nginx
У нас установлен nginx 1.18.0, да, нужно обновлять.
apt-get update apt-get install nginx dpkg -l | grep nginx
И ничего не изменилось, облом. Может, Ubuntu старая?
lsb_release -a
Да не такая и старая, Ubuntu 20.04.3 LTS. К сожалению такое случается, новые версии пакетов не сразу доходят до официальных репозиториев.
Делать нечего, будем обновлять пакет с репозитория nginx.
Создаём файл репозитория.
cd /etc/apt/sources.list.d touch nginx.list
Для Ubuntu 20 прописываем внутри:
deb https://nginx.org/packages/ubuntu/ focal nginx deb-src https://nginx.org/packages/ubuntu/ focal nginx
Обновляем локальные репозитории:
apt update
Находим текст ошибки:
Следующие подписи не могут быть проверены, так как недоступен открытый ключ: NO_PUBKEY $key
The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY $key
Собственно, указанный ключ нам и нужен.
Копируем этот ключ и регистрируем:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62
Вот теперь можно обновлять nginx.
apt update apt install nginx
Проверяем что установилось:
dpkg -l | grep nginx
Стоит nginx 1.22, условия задания соблюдены.
systemctl stop nginx systemctl start nginx