Как установить Nginx на FreeBSD 11.2

Вступление

Nginx - один из самых популярных веб-серверов в мире, известный своим частым использованием в качестве балансировщика нагрузки и обратного прокси-сервера. Он более дружественен к ресурсам, чем Apache, и многие из крупнейших и наиболее активно посещаемых сайтов в Интернете зависят от Nginx в обслуживании своего контента.

В этом руководстве мы продемонстрируем, как установить Nginx на сервер FreeBSD 11.2.

Предпосылки

Перед началом этого руководства вам понадобится доступ к серверу, на котором работает FreeBSD. Это руководство было написано специально для сервера под управлением FreeBSD 11.2, хотя оно также должно работать на более старых поддерживаемых версиях операционной системы.

Если вы новичок в работе с FreeBSD, вам может быть полезно настроить этот сервер, следуя these инструкциям ,

Кроме того, если вы планируете настроить доменное имя для этого сервера, вам потребуется следующее:

  • Зарегистрированное доменное имя, которым вы владеете и контролируете. Если у вас еще нет зарегистрированного доменного имени, вы можете зарегистрировать его у одного из множества регистраторов доменных имен (например, Namecheap, GoDaddy и т. Д.).

  • DNS * A Record *, который указывает ваш домен на публичный IP-адрес вашего сервера. Вы можете следовать thutorial этого имени хоста для получения подробной информации о том, как их добавить.

Шаг 1 - Установка Nginx

Для начала мы установим Nginx с помощью + pkg +, встроенного в FreeBSD инструмента управления бинарными пакетами. Следующая команда обновит вашу локальную копию доступных пакетов, а затем установит пакет + nginx +:

sudo pkg install nginx

Если вы впервые запускаете + pkg +, вам будет предложено подтвердить, что вы разрешаете ему самозагрузиться. Для этого нажмите + y +, а затем + ENTER +. Затем, когда появится запрос, подтвердите, что вы одобряете установку пакета + nginx +, нажав + y + и затем + ENTER + еще раз.

Если вы используете оболочку + csh + или + tcsh +, обязательно запустите команду + rehash +. Это информирует оболочку о новых установленных вами приложениях:

rehash

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

Шаг 2 - Включение службы Nginx и настройка брандмауэра с IPFW

Чтобы FreeBSD запустил Nginx как обычный сервис, вы должны сообщить FreeBSD, что хотите включить его. Это позволит вам управлять им как любой другой службой, а не как отдельным приложением, а также настроит FreeBSD для автоматического запуска при загрузке.

Для этого сначала нужно знать правильный параметр + rc +, который нужно установить для службы + nginx +. + rc + - это утилита FreeBSD, которая управляет процессами автоматической загрузки системы. Скрипты для каждого сервиса, доступного в системе, находятся в каталоге + / usr / local / etc / rc.d +. Они определяют параметры, которые используются для включения каждой службы с помощью переменной + rcvar +. Мы можем увидеть, на что настроен + rcvar + каждого сервиса, набрав:

grep rcvar /usr/local/etc/rc.d/*

После установки эта команда выведет листинг, подобный следующему:

Output/usr/local/etc/rc.d/cloudconfig:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudfinal:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudinit:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/cloudinitlocal:rcvar="cloudinit_enable"
/usr/local/etc/rc.d/nginx:rcvar=
/usr/local/etc/rc.d/rsyncd:rcvar=rsyncd_enable

Параметр, который вам нужно установить для службы + nginx +, выделен здесь в этом выводе. Также полезно знать имя самого скрипта - последний компонент пути перед двоеточием - это имя, которое FreeBSD использует для ссылки на сервис.

Чтобы включить службу + nginx +, вы должны добавить ее + rcvar + в файл + rc.conf +, который содержит информацию о глобальной конфигурации системы, на которую ссылаются сценарии запуска. Используйте предпочитаемый вами редактор, чтобы открыть файл + / etc / rc.conf с привилегиями` + sudo`. Здесь мы будем использовать + ee +:

sudo ee /etc/rc.conf

В верхней части файла уже будет несколько параметров + rcvar +. Добавьте параметр + nginx_enable + + rcvar + под ними и установите для него " YES ":

/etc/rc.conf

. . .
sshd_enable="YES"


. . .

Находясь в файле + rc.conf +, мы добавим еще несколько директив для включения и настройки брандмауэра IPFW. IPFW - это межсетевой экран с отслеживанием состояния, написанный для FreeBSD. Он предоставляет мощный синтаксис, который позволяет настраивать правила безопасности для большинства случаев использования.

Прямо под добавленным параметром + nginx_enable + добавьте следующие выделенные строки:

/etc/rc.conf

. . .
nginx_enable="YES"

Вот что делает каждая из этих директив и их настройки:

  • + firewall_enable =" YES "+ - Установка этой директивы в " YES " позволяет брандмауэру запускаться при загрузке сервера.

  • + firewall_type =" workstation "+ - FreeBSD предоставляет несколько типов брандмауэров по умолчанию, каждый из которых имеет несколько разные конфигурации. Объявляя тип + workstation +, брандмауэр защищает этот сервер только с использованием правил с отслеживанием состояния.

  • + firewall_myservices =" 22 / tcp 80 / tcp "+ - Директива + firewall_myservices + - это то, где вы можете перечислить TCP-порты, которые вы хотите разрешить через брандмауэр. В этом примере мы указываем порты + 22 + и + 80 +, чтобы разрешить SSH и HTTP доступ к серверу соответственно.

  • + firewall_allowservices =" any "+ - Это позволяет машине с любого IP-адреса обмениваться данными через порты, указанные в директиве + firewall_myservices +.

После добавления этих строк сохраните файл и закройте редактор, нажав + CTRL + C +, напечатав + exit +, а затем нажав + ENTER +.

Затем запустите службу межсетевого экрана + ipfw +. Поскольку это первый раз, когда вы запускаете брандмауэр на этом сервере, есть вероятность, что это приведет к остановке вашего сервера, что сделает его недоступным по SSH. Следующая команда + nohup + - что означает «без зависаний» - запустит брандмауэр, предотвращая остановку, а также перенаправит стандартный вывод и ошибку во временный файл журнала:

sudo nohup service ipfw start >/tmp/ipfw.log 2>&1

Однако если вы используете оболочки + csh + или + tcsh +, это перенаправление вызовет перенаправление + Ambiguous output. + В вашем выводе. Если вы используете одну из этих оболочек, запустите следующую команду, чтобы запустить + ipfw +:

sudo nohup service ipfw start >&/tmp/ipfw.log

Затем запустите сервис + nginx

sudo service nginx start

Затем, чтобы проверить, что Nginx способен правильно обслуживать контент, введите общедоступный IP-адрес вашего сервера в адресную строку предпочитаемого вами веб-браузера:

http://

Если все работает правильно, вы увидите целевую страницу Nginx по умолчанию:

изображение: https: //assets.digitalocean.com/freebsd/nginx/nginx_default_page.png [страница по умолчанию для Nginx]

Это показывает, что Nginx установлен и работает правильно, и что он разрешен через брандмауэр, как и ожидалось. Тем не менее, есть еще несколько изменений конфигурации, которые необходимо внести, чтобы он работал с нестандартными настройками или обслуживал контент с использованием доменного имени.

Шаг 3 - Настройка блока сервера

При использовании веб-сервера Nginx server blocks (аналогично виртуальным хостам в Apache) можно использовать для инкапсуляции деталей конфигурации и размещения нескольких доменов с одного сервера. Мы создадим домен с именем * example.com *, но вы должны * заменить его своим собственным доменным именем *. Чтобы узнать больше о настройке доменного имени с помощью DigitalOcean, см. Наш Introduction to DigitalOcean DNS.

Nginx во FreeBSD 11.2 имеет один серверный блок, включенный по умолчанию, который настроен для обслуживания документов из каталога в + / usr / local / www / nginx +. Хотя это хорошо работает для одного сайта, он может стать громоздким, если вы размещаете несколько сайтов. Вместо того, чтобы изменять + / usr / local / www / nginx +, давайте создадим структуру каталогов внутри + / usr / local / www + для нашего сайта * example.com *.

Создайте каталог для * example.com * следующим образом, используя флаг + -p + для создания любых необходимых родительских каталогов:

sudo mkdir -p /usr/local/www//html

Затем назначьте владельца каталога пользователю * www *, профилю пользователя Nginx по умолчанию:

sudo chown -R www:www /usr/local/www/

Права доступа к вашему веб-корню должны быть правильными, если вы не изменили значение + umask +, но вы можете убедиться, набрав:

sudo chmod -R 755 /usr/local/www/

Затем создайте пример страницы + index.html, используя` + ee + `:

sudo ee /usr/local/www//html/index.html

Внутри добавьте следующий пример HTML:

/usr/local/www/example.com/html/index.html

<html>
   <head>
       <title>Welcome to !</title>
   </head>
   <body>
       <h1>Success!  The  server block is working!</h1>
   </body>
</html>

Сохраните и закройте файл, когда вы закончите.

Чтобы Nginx обслуживал этот контент, необходимо создать блок сервера с правильными директивами. Откройте основной файл конфигурации Nginx. По умолчанию это хранится в каталоге + / usr / local / etc / nginx / +:

sudo ee /usr/local/etc/nginx/nginx.conf

Когда вы впервые откроете файл, в самом верху вы увидите следующее:

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

#user  nobody;
worker_processes  1;

. . .

Раскомментируйте директиву + user +, удалив знак решетки (+ # +), а затем измените пользователя с * nobody * на * www *. Затем обновите директиву + worker_processes +, которая позволяет вам выбирать, сколько рабочих процессов будет использовать Nginx. Оптимальное значение для ввода здесь не всегда очевидно или легко найти. Установка его в + auto + говорит о том, что Nginx устанавливает его равным одному рабочему на ядро ​​ЦП, что в большинстве случаев будет достаточно:

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

user  ;
worker_processes  ;
. . .

Затем прокрутите вниз до блока + server +. Со всеми удаленными комментариями это будет выглядеть так:

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

. . .
   server {
       listen       80;
       server_name  localhost;

       location / {
           root   /usr/local/www/nginx;
           index  index.html index.htm;
       }

       error_page   500 502 503 504  /50x.html;

       location = /50x.html {
           root   /usr/local/www/nginx-dist;
       }
   }

Удалите весь этот блок сервера, включая все закомментированные строки, и замените его следующим содержимым:

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

. . .
   server {
       access_log /var/log/nginx/.access.log;
       error_log /var/log/nginx/.error.log;
       listen       80;
       server_name   www.;

       location / {
           root   /usr/local/www//html;
           index  index.html index.htm;
       }
   }
. . .

Вот что делают директивы в этом блоке сервера:

  • + access_log +: эта директива определяет местоположение журналов доступа сервера.

  • + error_log +: определяет файл, в который Nginx будет записывать свои журналы ошибок.

  • + listen +: директива + listen + объявляет, какой порт Nginx должен прослушивать. В этом случае мы устанавливаем порт + 80 +, чтобы он мог прослушивать HTTP-трафик.

  • + server_name +: здесь укажите Nginx на ваше доменное имя и любые псевдонимы, которые у вас есть для него. Если у вас нет доменного имени, укажите Nginx на публичный IP-адрес вашего сервера.

  • + root +: определяет корень документа сайта, который вы создали ранее на этом шаге.

  • + index +: эта директива определяет файлы, которые будут использоваться в качестве индекса, и в каком порядке они должны проверяться.

Все вместе, с удаленными комментариями, файл будет выглядеть так:

/usr/local/letc/nginx/nginx.conf

user  www;
worker_processes  ;

events {
   worker_connections  1024;
}

http {
   include       mime.types;
   default_type  application/octet-stream;
   sendfile        on;
   keepalive_timeout  65;

   server {
       access_log /var/log/nginx/.access.log;
       error_log /var/log/nginx/.error.log;
       listen       80;
       server_name   www.;

       location / {
           root   /usr/local/www/;
           index  index.html index.htm;
       }

   }

}

Сохраните и закройте файл, когда вы закончите. Затем проверьте ваш файл конфигурации на наличие синтаксических ошибок, набрав:

sudo nginx -t

Если в вашем файле конфигурации нет обнаруживаемых синтаксических ошибок, вы увидите следующее:

Outputnginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

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

Когда ваша конфигурация проверена правильно, продолжайте и перезагрузите сервис + nginx +, чтобы включить ваши изменения:

sudo service nginx reload

Теперь Nginx должен обслуживать контент, настроенный вами в файле + index.html +. Проверьте это, перейдя к + http: // +, где вы должны увидеть что-то вроде этого:

изображение: https: //assets.digitalocean.com/articles/nginx_server_block_1404/first_block.png [первый серверный блок Nginx]

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

Шаг 4 - Управление процессом Nginx

Теперь, когда ваш веб-сервер запущен и работает, давайте рассмотрим некоторые основные команды управления.

Чтобы остановить ваш веб-сервер, введите:

sudo service nginx stop

Чтобы запустить веб-сервер, когда он остановлен, введите:

sudo service nginx start

Чтобы остановить и снова запустить службу, введите:

sudo service nginx restart

Если вы просто вносите изменения в конфигурацию, вы можете перезагрузить Nginx, не разрывая соединения. Для этого введите:

sudo service nginx reload

Наконец, вспомните, как на шаге 2 мы включили службу + nginx +, добавив директиву + nginx_enable = "YES" + в файл + rc.conf + . Если вы хотите отключить службу `+ nginx +, чтобы предотвратить ее запуск при загрузке сервера, вам нужно будет снова открыть этот файл и удалить эту строку.

Заключение

Теперь на вашем компьютере установлен полнофункциональный веб-сервер Nginx. Отсюда вы можете зашифровать веб-трафик вашего сервера, включив HTTPS. Чтобы узнать, как это сделать, обратитесь к Works, чтобы обезопасить Nginx с помощью Let Encrypt на FreeBSD. Вы также можете install и настроить MySQL и PHP, который вместе с Nginx даст вам полный стек FEMP.

Related