Как настроить NGINX на Mac для тестирования

Вам нужно протестировать веб-сайт, который вы разрабатываете, но у вас в распоряжении только Mac? Вам не нужно строить отдельный сервер или виртуальную машину только для тестирования вашего сайта. Один из быстрых вариантов – установка NGINX на Mac, и у вас должен быть работающий веб-сервер прямо на вашем компьютере.

Останьтесь с нами и узнайте, как установить и настроить NGINX на Mac. Вы узнаете несколько различных способов установки NGINX, так что вы можете выбрать метод, который подходит вам. Вы также узнаете основные элементы конфигурации, чтобы помочь вам начать тестирование.

Предварительные требования

Этот учебник будет практической демонстрацией. Если вы хотите следовать за нами, убедитесь, что у вас есть следующее:

  • Любая недавняя версия macOS. На момент написания этого текста три поддерживаемые, не устаревшие версии macOS – это Catalina, Big Sur и Monterey. В этом учебнике используется macOS Big Sur.
  • Вашему компьютеру необходимы Xcode Command Line Tools, чтобы установить NGINX из исходного кода, или Homebrew, чтобы установить пакет NGINX (формула).

Установка NGINX на Mac

Существуют два способа установки NGINX на Mac: компиляция исходного кода или использование менеджера пакетов. Но не существует лучшего метода установки. Выбор метода зависит от ваших требований.

В следующих разделах вы узнаете, как выполнить оба метода установки NGINX.

Метод 1: Компиляция и установка из исходного кода

Компиляция и установка NGINX из исходного кода дает вам гибкость включения модулей или патчей безопасности в вашу установку NGINX. Например, вы можете скомпилировать NGINX, чтобы включить модуль Real-Time Messaging Protocol (RTMP), если настроите потоковый сервер.

Пользователь: Настраиваемость требует больше шагов и включает в себя ручную установку зависимостей. Следуйте этим шагам для установки NGINX на Mac из исходного кода.

1. Откройте терминал на своем Mac.

2. Выполните нижеуказанную команду, чтобы создать рабочий каталог в вашей домашней папке. Этот каталог будет содержать все необходимые файлы исходного кода для установки NGINX.

# Создайте папку исходного кода в вашей домашней директории
mkdir ~/src && cd ~/src

3. Затем выполните команды ниже, чтобы скачать (curl) и извлечь (tar) последнюю версию Perl Compatible Regular Expressions (PCRE). Модули NGINX Core и Rewrite требуют PCRE. Последняя версия PCRE на момент написания – 8.45.

# Скачайте и извлеките исходный код PCRE
curl -OL https://ftp.exim.org/pub/pcre/pcre-8.45.tar.gz
tar -xf pcre-8.45.tar.gz && rm pcre-8.45.tar.gz

4. Выполните каждую из команд ниже, чтобы скачать (curl) исходный код OpenSSL для добавления поддержки SSL. Это дополнение – пример настройки сборки NGINX. Последняя версия OpenSSL на момент написания – 1.1.1m.

# Скачайте и извлеките файлы исходного кода OpenSSL
curl -OL http://www.openssl.org/source/openssl-1.1.1m.tar.gz
tar -xf openssl-1.1.1m.tar.gz && rm openssl-1.1.1m.tar.gz

5. После загрузки требований выполните следующие команды для загрузки (curl) и извлечения (tar) исходного кода NGINX. Последняя стабильная версия на момент написания – 1.20.2.

# Загрузите и извлеките файлы исходного кода NGINX
curl -OL http://nginx.org/download/nginx-1.20.2.tar.gz
tar -xf nginx-1.20.2.tar.gz && rm nginx-1.20.2.tar.gz
# Перечислите файлы/папки в рабочем каталоге
ls -l

На данном этапе у вас должно быть три новых каталога в общей сложности, как показано ниже.

Listing the source folders

6. Теперь выполните следующие команды для компиляции (make) и установки (install) NGINX.

# Перейдите в папку исходного кода NGINX
cd nginx-1.20.2

# Создайте конфигурацию NGINX
## Параметры:
## --with-pcre=../pcre-8.45/ : Указывает местоположение исходного кода PCRE
## --with-http_ssl_module : Включает поддержку HTTPS
## --with-openssl=../openssl-1.1.1m/ : Указывает исходный код OpenSSL. Требуется для http_ssl_module
./configure --with-pcre=../pcre-8.45/ --with-http_ssl_module --with-openssl=../openssl-1.1.1m/

# Скомпилируйте NGINX
make
# Установите NGINX
sudo make install

7. Затем выполните следующую команду, чтобы добавить путь к NGNIX в системный $PATH, добавив полный путь /usr/local/nginx в /etc/paths. После этого шага вы сможете выполнять команды nginx без указания полного пути.

# Добавьте NGINX в файл /etc/paths
echo /usr/local/nginx/sbin | sudo tee -a /etc/paths

8. Выйдите из терминала, нажав CMD+Q, и откройте новую сессию терминала, чтобы применить новый $PATHS.

9. Выполните нижеприведенную команду nginx, чтобы запустить NGINX, так как сервер NGINX не запускается автоматически после установки.

sudo nginx

10. Наконец, убедитесь, что NGINX запущен. Откройте окно веб-браузера и введите адрес HTTP://localhost. Вы должны увидеть страницу приветствия NGINX по умолчанию, подобную приведенной ниже.

Установка NGINX из исходного кода устанавливает порт прослушивания по умолчанию 80.

Accessing the NGINX default web page

Поскольку вы установили NGINX на Mac из исходного кода от имени root, вам нужно будет префиксировать каждую команду nginx, которую вы будете выполнять впоследствии, с помощью sudo.

Метод 2: Установка NGINX с использованием Homebrew

Установка NGINX с помощью Homebrew более удобна и менее подвержена ошибкам. Этот метод автоматически устанавливает зависимости. Если вам не нужно настраивать установку NGINX, этот метод является самым быстрым и требует только одной команды для установки!

Чтобы установить NGINX на Mac с использованием Homebrew, продолжайте следовать этим инструкциям.

1. Откройте новую сессию терминала.

2. Выполните нижеприведенную команду brew, чтобы установить NGINX.

brew install nginx

Можно ли устанавливать NGINX от имени root с помощью Homebrew? – Нет (официально). Команда установки brew отказывается выполняться с префиксом sudo. Если вы попытаетесь, вы получите сообщение об ошибке, приведенное ниже.

“Er” или: Запуск Homebrew от имени root-пользователя крайне опасен и больше не поддерживается. Поскольку Homebrew не снижает привилегий при установке, вы предоставите всем сценариям сборки полный доступ к вашей системе.”

3. После установки вызовите нижеприведенную команду для запуска NGINX. Эта команда запускает NGINX в качестве фонового демона.

По умолчанию Homebrew устанавливает NGINX в /usr/local/Cellar/nginx/<version> и создает символические ссылки в /usr/local/opt/. Бинарный файл nginx имеет символическую ссылку в /usr/local/bin, и этот каталог уже включен в $PATH.

nginx

Чтобы запустить NGINX без фонового сервиса, выполните вместо этого нижеприведенную команду. Эта команда выдает глобальную директиву НЕ запускать nginx как демон.

nginx -g “да” mon off;”

Вы можете остановить NGINX, нажав CTRL+C в терминале в этом режиме.

4. Наконец, вызовите команду curl ниже, чтобы подтвердить, что NGINX теперь работает.

Установка NGINX через Homebrew устанавливает порт прослушивания по умолчанию 8080. Это назначение порта по умолчанию гарантирует, что вы можете запускать nginx без sudo.

curl HTTP://localhost:8080

Как видно ниже, команда curl загрузила веб-страницу NGINX по умолчанию, что указывает на работу сервера.

Testing NGINX with curl

Настройка NGINX для тестирования

До сих пор вы установили NGINX, но он все еще работает на настройках по умолчанию. Перед началом тестирования вашего веб-сайта стоит рассмотреть несколько фундаментальных изменений.

Вы хотите, чтобы NGINX запускался автоматически при загрузке компьютера? Где вы будете хранить файлы для тестируемого вами веб-сайта? Следует ли сохранить назначенный порт прослушивания по умолчанию?

Это некоторые из элементов, которые вам придется настроить после установки NGINX, о чем вы узнаете в следующих разделах.

В последующих разделах будут представлены шаги по настройке файла(ов) конфигурации NGINX, установленного с помощью Homebrew, если инструкции явно не указывают иное.

Настройка прослушиваемого порта сервера

В зависимости от способа установки, прослушиваемым портом по умолчанию будет либо 80, либо 8080. Порт 8080 обычно подходит для тестирования и разработки. Однако в некоторых случаях вам может потребоваться изменить номер порта, возможно, из-за конфликта с другими службами или по другим причинам.

Независимо от причины, выполните следующие шаги, чтобы изменить прослушиваемый порт NGINX по умолчанию.

1. Сначала выполните следующую команду для отправки сигнала остановки (-s stop) и убедитесь, что NGINX не запущен. nginx -s stop

nginx -s stop

2. Затем выполните команду nginx ниже, чтобы узнать путь к файлу конфигурации NGINX.

nginx -t

Ниже показан результат, указывающий, что файл конфигурации находится в /usr/local/etc/nginx/nginx.conf.

Testing the NGINX configuration file

3. Откройте файл конфигурации в выбранном вами текстовом редакторе, например, nano, как показано ниже.

nano /usr/local/etc/nginx/nginx.conf

4. Теперь найдите строку listen внутри блока server {}. Как видно ниже, значение порта прослушивания равно 8080.

NGINX listening port number

5. Измените номер порта listen на другое уникальное значение порта, например, 9000, в этом примере. Сохраните изменение и закройте файл.

Changing the listening port number

6. Теперь повторно запустите команду nginx ниже, чтобы снова запустить NGINX.

nginx

7. Наконец, откройте новое окно браузера и перейдите по адресу HTTP://localhost:9000. NGINX теперь должен обслуживать веб-сайт на порту 9000, как показано ниже.

NGINX running on port 9000

Указание на ваш каталог веб-разработки

По умолчанию при установке NGINX на Mac веб-каталог обслуживается из /usr/share/nginx/html (установленного из исходных кодов) или /usr/local/Cellar/nginx/<version>/html (установленного через Homebrew).

Но что если файлы вашего веб-сайта где-то еще, например, на другом диске? Не волнуйтесь. Следуйте приведенным ниже шагам, чтобы указать NGINX ваш каталог веб-разработки.

1. Сначала выполните нижеуказанные команды, чтобы остановить NGINX и открыть файл конфигурации в текстовом редакторе, как вы делали в разделе «Настройка прослушивания сервера» (шаги один до трех).

# Остановить NGINX
nginx -s stop
# Запустить тест для поиска файла конфигурации
nginx -t
# Открыть файл конфигурации для редактирования
nano /usr/local/etc/nginx/nginx.conf

2. В текстовом редакторе найдите строку root html; внутри блока server {}.

The default web directory location

3. Измените значение root и укажите путь к своей пользовательской папке. В этом примере веб-директория находится в /Volume/DevData/testweb. Сохраните изменения и закройте редактор.

Тестовый сайт в этом примере – это статический сайт под названием Dimensions, загруженный с HTML5 Up. Этот образец сайта можно бесплатно скачать и использовать в соответствии с Лицензией Creative Commons Attribution 3.0.

Changing the default web directory location

4. Теперь снова запустите сервер NGINX.

nginx

5. Наконец, перейдите по адресу HTTP://localhost:9000 с помощью вашего веб-браузера. Теперь NGINX обслуживает ваш тестовый сайт из вашей пользовательской веб-директории, как показано на скриншоте ниже.

Testing if NGINX serves a custom web directory location

Включение автозапуска NGINX для установки из исходного кода

По умолчанию NGINX не запускается автоматически, независимо от выбранного метода установки. В разработке или при тестировании автозапуск NGINX может не потребоваться. Но если вам это нужно, вы можете настроить автозапуск NGINX при загрузке с помощью процесса launchd.

Вы можете настроить автозапуск NGINX для установки как из исходных кодов, так и на основе Homebrew. Но для этой демонстрации начнем с установки из исходных кодов.

Чтобы включить автозапуск NGINX для установки из исходных кодов, выполните следующие шаги.

1. Запустите команду touch, чтобы создать новый файл свойств (PLIST) для NGINX.

Место /Library/LaunchDaemons хранит глобальные демоны, которые выполняются от имени root или указанного пользователя. Имя файла может быть любым, но было бы полезно, если оно содержало имя создаваемого вами демона.

sudo touch /Library/LaunchDaemons/ata.nginx.plist

2. Теперь откройте файл PLIST для редактирования.

sudo nano /Library/LaunchDaemons/ata.nginx.plist

3. Скопируйте код ниже и вставьте его в текстовый редактор. Сохраните файл и закройте редактор.

Кратко говоря, приведенный ниже код определяет демон с именем ata.nginx. Программа для запуска – /usr/local/nginx/sbin/nginx, и значение RunAtLoad означает, что программа будет запущена при загрузке компьютера.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>ata.nginx</string>
				<key>Program</key>
				<string>/usr/local/nginx/sbin/nginx</string>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

4. Наконец, выполните следующую команду launchctl, чтобы load демона. Эта команда сразу запускает NGINX. И с этого момента NGINX будет автоматически запускаться после каждой перезагрузки компьютера.

sudo launchctl load -w /Library/LaunchDaemons/ata.nginx.plist

Предположим, вы передумали и предпочли бы отключить автозапуск NGINX. Запустите следующую команду. Эта команда останавливает и отключает автозапуск демона NGINX.

sudo launchctl unload -w /Library/LaunchDaemons/ata.nginx.plist

Включение автозапуска NGINX для установки на основе Homebrew

В отличие от установки на основе исходного кода, для установки NGINX на основе Homebrew вам нужно выполнить всего одну команду для включения или отключения автозапуска NGINX. Удобно, не так ли?

Запустите следующую команду для включения автозапуска NGINX. Команда start немедленно запускает NGINX и регистрирует его для запуска при загрузке.

sudo brew services start nginx

После выполнения команды вы получите похожий вывод, как показано на изображении ниже.

Starting the NGNIX service

Чтобы отключить состояние автозапуска NGINX, выполните следующую команду. Как видите, единственная часть команды, которую нужно изменить, – это замена start на stop. Эта команда также корректно завершает работу сервера NGINX немедленно.

sudo brew services stop nginx

Заключение

Вот и все! Установка NGINX на Mac – надежный способ быстро запустить веб-сервер для тестирования. У вас есть варианты установки в зависимости от ваших требований к настройке, и настройка его параметров быстра через файлы конфигурации в формате обычного текста – не требуются специальные инструменты.

NGINX не ограничивает тестирование и запуск только для одного веб-сайта. Вы можете запускать одновременно несколько разработочных доменов и веб-сайтов без взаимных вмешательств. Или, если вы чувствуете себя авантюрным, вы можете запустить NGINX в Docker на Mac тоже!

Source:
https://adamtheautomator.com/nginx-on-mac/