Рубрики
Uncategorized

Переход с веб-сервера Apache2 на веб-сервер Nginx

Недавно на работе мне пришлось перенести наши веб-серверы разработки, промежуточные и производственные веб-серверы с Apache2 на Nginx. То… Помеченный nginx, php, apache, веб-сервер.

Недавно на работе мне пришлось перенести наши веб-серверы разработки, промежуточные и производственные веб-серверы с Apache2 на Nginx. Причина этого шага заключается в том, что в остальной части компании мы используем Nginx для всех внутренних сервисов, но когда по какой-то причине были созданы веб-сайты, консультанты установили Apache2. Это стало проблемой в основном для руководства. В этой статье я буду пошагово описывать этот процесс. Я буду использовать бродячий ящик для всех скриншотов, но шаги, которые я сделал, были одинаковыми для реальных серверов.

Сервер

Для своего тестового сервера я использую vagrant и ubuntu/бионический 64 . На этом сервере у меня был apache2.4 , php7.2 и mysql5.7 базовый СВЕТИЛЬНИК стек. Который я перенесу в стек LEMP , заменив Apache на Nginx.

На этом сервере запущен сайт WordPress с запущенным WordPress 5.2.4. Мы достигнем нашей цели, как только сможем увидеть этот сайт WordPress, работающий на Nginx и PHP 7.3. О, и у нас есть куча переменных env настройка экземпляра Apache2, который также придется перенести в установку Nginx.

Установка Nginx

Довольно прямолинейно. Начните с проверки наличия обновлений.

sudo apt update
sudo apt upgrade

На самом деле установите Nginx.

sudo apt install nginx

Nginx теперь установлен, но не запущен, поскольку в системе уже установлен и настроен Apache2, Apache2 будет использовать порт 80 это означает, что во избежание конфликтов мы должны запустить Nginx на другом порту, чтобы проверить, все ли работает хорошо. Я выбираю порт 8080 .

Настройте Nginx с портом 8080

Существует веб-сайт по умолчанию, который настроен с помощью Nginx (как и Apache), просто чтобы убедиться, что все работает. Конфигурацию можно посмотреть по адресу.

sudo vim /etc/nginx/sites-available/default

Это должно открыть файл, который выглядит следующим образом.

На линии 22 и 23 мы собираемся измениться 80 чтобы 8080 .

listen 8080 default_server;
listen [::]:8080 default_server;

Давайте быстро протестируем конфигурацию, прежде чем запускать службу Nginx.

sudo nginx -t

Если все в порядке, давайте напишем небольшую HTML страницу, которая просто сообщит нам, что сервер запущен. Линия 41 показывает мне корень сервера. Я изменил корневой каталог сервера, чтобы убедиться, что я не использую тот же каталог, что и Apache.

root /srv/www/html;

Это каталог, в который я буду добавлять index.html файл. Теперь мы можем запустить сервер.

sudo service nginx start

Чтобы протестировать новую конфигурацию.

curl http://localhost:8080

Который должен вернуть новый HTML файл, который я создал. Переходим к установке PHP .

Установка PHP

Прямо сейчас у нас в системе установлен PHP7.2 , так как весь PHP7.2 немного напугал и Nginx конфигурация, будет перенесена в PHP7.3 .

Во-первых, Ubuntu не знает, где взять PHP7.3 , поэтому нам нужно добавить репозиторий.

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt upgrade

Фактически устанавливаю PHP7.3 и некоторые расширения. Это как раз те расширения, которые мне нужны, не стесняйтесь добавлять или удалять расширения по мере необходимости.

sudo apt install php7.3
sudo apt install php7.3-cli php7.3-fpm php7.3-pdo php7.3-mysql php7.3-zip  php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json

Как только все расширения будут установлены, пришло время снова отредактировать конфигурационный файл Nginx , чтобы сообщить ему, что на нашем веб-сайте используется PHP . Конфигурационный файл приведен ниже, со всеми удаленными комментариями и комментариями только к тем строкам, которые были изменены.

Проверьте конфигурацию, чтобы убедиться в отсутствии синтаксических ошибок.

sudo nginx -t

Вероятно, вы получите сообщение об ошибке, так как в /srv/config/default.nginx.conf отсутствует файл env. . Просто добавьте туда пустой файл, пока объясню, что он делает позже.

Надеюсь, это решило вашу ошибку. Теперь давайте изменим index.html файл в index.php и добавьте немного базового PHP кода, чтобы посмотреть, все ли работает. Кроме того, обязательно установите соответствующие разрешения для index.php файл. Мне нравится идти с тобой.

sudo chmod 755 index.php

Перезапустите сервер Nginx

sudo service nginx restart

И вы должны увидеть файл PHP , который вы написали. Я распечатал функцию phpinfo() , чтобы убедиться в правильности конфигурации.

Переменные среды Сервера

Мне нравится, когда некоторые конфигурации моих приложений сохраняются в $_SERVER суперглобальном. Это удобно, когда вы перемещаете свое приложение между устройствами , этап и prod серверы и не хотите продолжать менять свои пароли к БД или конечные точки API.

Файл, к которому мы прикоснулись /srv/config/default.nginx.conf , я добавлю в него следующие строки кода.

fastcgi_param   APP_ENV         dev;
fastcgi_param   APP_ENDPOINT    https://dev.server.com;
fastcgi_param   DB_HOST         localhost;
fastcgi_param   DB_USER         root;
fastcgi_param   DB_PASS         password;

Формат обычно

fastcgi_param  {VAR_NAME}      {VAR_VALUE};

Не стесняйтесь добавлять любые другие переменные env. Как только ваш счастливый тест настроится и перезагрузится Nginx . Вы должны увидеть свои новые переменные в выводе функции phpinfo() , как показано ниже.

Обратите пристальное внимание на последние 5 значений.

И все, просто переместите все свои файлы в соответствующую папку, чтобы провести заключительный тест. Когда вы будете готовы, вы можете остановить службу Apache .

sudo service apache2 stop

Измените номер порта с 8080 в конфигурации Nginx , чтобы 80 и перезапустить Nginx , и мы закончили.

Отличная работа!

Оригинал: “https://dev.to/davinderpalrehal/moving-from-apache2-to-nginx-webserver-2n6a”