Недавно на работе мне пришлось перенести наши веб-серверы разработки, промежуточные и производственные веб-серверы с 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”