Установка и настройка веб-сервера (Apache, Nginx)

Добро пожаловать в подробное руководство по установке и настройке веб-сервера в НАЙС ОС. В этом документе мы рассмотрим установку и базовую настройку двух популярных веб-серверов: Apache и Nginx. Эти веб-серверы широко используются для обслуживания веб-сайтов и приложений, и понимание их настройки является важным навыком для системных администраторов и разработчиков.

Установка и настройка Apache

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

Установка Apache

Для установки Apache в НАЙС ОС используйте пакетный менеджер tdnf. Выполните следующую команду:

tdnf install httpd

Запуск и остановка Apache

После установки вы можете запустить Apache с помощью systemd:

systemctl start httpd

Для автоматического запуска Apache при загрузке системы выполните команду:

systemctl enable httpd

Для остановки Apache используйте команду:

systemctl stop httpd

Проверка состояния Apache

Чтобы проверить состояние Apache, выполните команду:

systemctl status httpd

Эта команда выведет информацию о состоянии службы Apache, включая её текущее состояние и последние журналы.

Настройка Apache

Файл конфигурации Apache по умолчанию находится в /etc/httpd/conf/httpd.conf. Рассмотрим основные параметры конфигурации.

Основные параметры конфигурации

  • Listen: Указывает, на каких IP-адресах и портах Apache будет принимать запросы. По умолчанию установлено Listen 80 для HTTP.
  • ServerName: Указывает имя сервера. Например, ServerName www.example.com.
  • DocumentRoot: Указывает каталог, из которого будут обслуживаться файлы. По умолчанию это /var/www/html.
  • Directory: Указывает настройки для конкретного каталога. Например:


    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted

  

Создание виртуальных хостов

Виртуальные хосты позволяют обслуживать несколько сайтов на одном сервере. Рассмотрим пример настройки виртуального хоста.

Создайте новый файл конфигурации для виртуального хоста в /etc/httpd/conf.d/:

nano /etc/httpd/conf.d/example.com.conf

Добавьте следующую конфигурацию:



    ServerAdmin webmaster@example.com
    ServerName www.example.com
    DocumentRoot /var/www/example.com
    ErrorLog /var/log/httpd/example.com-error.log
    CustomLog /var/log/httpd/example.com-access.log combined

  

Создайте каталог для сайта и добавьте тестовый файл:

mkdir -p /var/www/example.com
echo "Hello, World!" > /var/www/example.com/index.html

Перезапустите Apache, чтобы применить изменения:

systemctl restart httpd

Управление модулями Apache

Apache поддерживает различные модули для расширения функциональности. Модули можно загружать и отключать с помощью директивы LoadModule в конфигурационном файле. Например, для загрузки модуля rewrite добавьте строку:


LoadModule rewrite_module modules/mod_rewrite.so
  

После изменения конфигурации перезапустите Apache:

systemctl restart httpd

Обеспечение безопасности Apache

Безопасность веб-сервера является критически важной задачей. Рассмотрим несколько основных настроек для обеспечения безопасности Apache.

Ограничение доступа к каталогам

Для ограничения доступа к определенным каталогам используйте директиву Directory с параметром Require. Например, для ограничения доступа к административному разделу:



    Require ip 192.168.1.0/24

  

Настройка HTTPS

Для настройки HTTPS используйте модуль mod_ssl. Установите его с помощью команды:

tdnf install mod_ssl

Добавьте следующий блок в конфигурацию виртуального хоста:



    ServerAdmin webmaster@example.com
    ServerName www.example.com
    DocumentRoot /var/www/example.com
    ErrorLog /var/log/httpd/example.com-error.log
    CustomLog /var/log/httpd/example.com-access.log combined
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/example.com.crt
    SSLCertificateKeyFile /etc/pki/tls/private/example.com.key

  

Перезапустите Apache для применения изменений:

systemctl restart httpd

Установка и настройка Nginx

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

Установка Nginx

Для установки Nginx в НАЙС ОС используйте пакетный менеджер tdnf. Выполните следующую команду:

tdnf install nginx

Запуск и остановка Nginx

После установки вы можете запустить Nginx с помощью systemd:

systemctl start nginx

Для автоматического запуска Nginx при загрузке системы выполните команду:

systemctl enable nginx

Для остановки Nginx используйте команду:

systemctl stop nginx

Проверка состояния Nginx

Чтобы проверить состояние Nginx, выполните команду:

systemctl status nginx

Эта команда выведет информацию о состоянии службы Nginx, включая её текущее состояние и последние журналы.

Настройка Nginx

Основной файл конфигурации Nginx находится в /etc/nginx/nginx.conf. Рассмотрим основные параметры конфигурации.

Основные параметры конфигурации

  • worker_processes: Указывает количество рабочих процессов. Рекомендуется установить значение равным числу ядер процессора.
  • events: Блок конфигурации событий, в котором можно задать количество соединений, обрабатываемых каждым рабочим процессом.
  • http: Основной блок конфигурации HTTP, содержащий настройки серверов и местоположений.

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    include /etc/nginx/conf.d/*.conf;
}
  

Создание виртуальных хостов

Виртуальные хосты в Nginx настраиваются с помощью блоков server внутри блока http. Рассмотрим пример настройки виртуального хоста.

Создайте новый файл конфигурации для виртуального хоста в /etc/nginx/conf.d/:

nano /etc/nginx/conf.d/example.com.conf

Добавьте следующую конфигурацию:


server {
    listen       80;
    server_name  www.example.com;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page  404 /404.html;
    location = /40x.html {
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    }
}
  

Создайте каталог для сайта и добавьте тестовый файл:

mkdir -p /usr/share/nginx/html/example.com
echo "Hello, World!" > /usr/share/nginx/html/example.com/index.html

Перезапустите Nginx, чтобы применить изменения:

systemctl restart nginx

Управление модулями Nginx

В отличие от Apache, Nginx компилирует модули статически, поэтому для добавления или удаления модуля требуется перекомпиляция сервера. Однако, большинство необходимых модулей уже включены в стандартную сборку Nginx.

Обеспечение безопасности Nginx

Безопасность веб-сервера является критически важной задачей. Рассмотрим несколько основных настроек для обеспечения безопасности Nginx.

Ограничение доступа к каталогам

Для ограничения доступа к определенным каталогам используйте директиву location с параметрами allow и deny. Например, для ограничения доступа к административному разделу:


server {
    ...
    location /admin {
        allow 192.168.1.0/24;
        deny all;
    }
    ...
}
  

Настройка HTTPS

Для настройки HTTPS используйте модуль ngx_http_ssl_module. Убедитесь, что он включен в вашей сборке Nginx. Добавьте следующий блок в конфигурацию виртуального хоста:


server {
    listen 443 ssl;
    server_name www.example.com;
    ssl_certificate /etc/pki/tls/certs/example.com.crt;
    ssl_certificate_key /etc/pki/tls/private/example.com.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }
}
  

Перезапустите Nginx для применения изменений:

systemctl restart nginx

Мониторинг и журналирование

Оба веб-сервера поддерживают журналирование доступа и ошибок, что является важным для мониторинга и отладки.

Настройка журналов в Apache

В Apache журналирование настраивается с помощью директив ErrorLog и CustomLog. Пример настройки:



    ...
    ErrorLog /var/log/httpd/example.com-error.log
    CustomLog /var/log/httpd/example.com-access.log combined
    ...

  

Настройка журналов в Nginx

В Nginx журналирование настраивается с помощью директив error_log и access_log. Пример настройки:


server {
    ...
    error_log /var/log/nginx/example.com-error.log;
    access_log /var/log/nginx/example.com-access.log;
    ...
}
  

Анализ журналов

Для анализа журналов можно использовать различные инструменты, такие как goaccess, logrotate и другие.

Оптимизация производительности

Оптимизация производительности веб-сервера является важной задачей для обеспечения быстрого отклика и стабильной работы сайтов.

Оптимизация Apache

  • Модули: Отключите ненужные модули для уменьшения потребления ресурсов.
  • KeepAlive: Установите KeepAlive On для уменьшения нагрузки на сервер за счет повторного использования существующих соединений.
  • MaxClients: Установите MaxClients в зависимости от доступных ресурсов для предотвращения перегрузки сервера.

Оптимизация Nginx

  • Worker Processes: Установите worker_processes в значение, равное количеству ядер процессора.
  • Worker Connections: Установите worker_connections в значение, достаточное для обработки большого количества соединений.
  • Cache: Включите кэширование для статических файлов для уменьшения нагрузки на сервер.

Заключение

Мы рассмотрели основные аспекты установки и настройки веб-серверов Apache и Nginx в НАЙС ОС. Эти веб-серверы предоставляют мощные возможности для обслуживания веб-сайтов и приложений, и понимание их настройки является важным навыком для системных администраторов. Продолжайте изучать и применять эти знания на практике для создания стабильных и производительных веб-серверов.