Инструкция по установке веб сервера

Введение

Apache — кроссплатформенный HTTP-сервер, который был создан с учетом ошибок старого web-сервера NCSA HTTPd. На данный момент стабильная версия имеет номер 2.4.63. Основные достоинства Apache — кроссплатформенность и модульная система, позволяющая оптимизировать программное обеспечения для нужд конкретной разработки.

В этой статье рассмотрим установку HTTP-сервера Apache на операционную систему (ОС) Ubuntu. В рамках этой публикации используется релиз Ubuntu 20.04 server и web-сервер Apache версии 2. Система развернута в облачной платформе Selectel. Для тестового сервера используется минимальная конфигурация мощностей — 1 ядро и 1 ГБ оперативной памяти. Для запуска простого ненагруженного приложения этого достаточно.

Настроить виртуальный сервер

Откройте панель управления Selectel и перейдите в раздел Облачная платформа. Нажмите Создать сервер.

Используем минимальную конфигурацию. Не забудьте добавить SSH-ключ, для Ubuntu 24.04 это обязательный шаг.

После создания сервера в панели можно будет посмотреть его IP-адрес.

Теперь можем подключиться к нему по SSH. 

Самым простым способом подключения является использование утилиты PuTTY. Эта утилита является кроссплатформенной. Скачать ее можно с официального сайта https://www.chiark.greenend.org.uk/~sgtatham/putty/.

Для подключения в поле Host Name (or IP address) вводим полученный ранее ip-адрес, остальные опции оставляем без изменений. 

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

login as: root
root@xx.xx.xx.178's password: 
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-51-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

root@kassie:~# 

Установить Apache

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

Чтобы повысить привилегии обычного пользователя, используется команда sudo. Первоначально необходимо загрузить информацию об актуальных списках пакетов и зависимостях.

Разбираетесь в железе? Пройдите тест и проверьте себя

    sudo apt update

После этой операции произведем установку пакета Apache2, он располагается в стандартном репозитории, дополнительные добавлять не нужно.

    sudo apt install apache2 

По окончании демон запускается автоматически, а также попадает в автозагрузку.

Настроить брандмауэр для Apache

Рекомендуем в Ubuntu использовать ufw. Uncomplicated Firewall — утилита для настройки межсетевого экрана. Если настройка происходит на виртуальном сервере, желательно проверить наличие установленной утилиты.

    sudo ufw status verbose

В случае отсутствия ее в списке установленных пакетов появится ошибка:

    sudo: ufw: command not found

Тогда ее необходимо установить:

    sudo apt install ufw

Заново запросим ее статус:

    Status: inactive 

Это означает, что она деактивирована. Активируем:

    sudo ufw enable

Разрешаем HTTP на сервере:

    sudo ufw allow http

Очень важно в этом моменте разрешить SSH-доступ. На тестовом сервере SSH на стандартном порту 22.

    sudo ufw allow 22/tcp

Обязательно перезапустить процесс:

    sudo ufw reload

Проверить базовую настройку Apache

На данный момент сервер доступен из интернета по HTTP. Можно проверить это в браузере по ip-адресу в поисковой строке. Ip-адрес мы уже получили в панели управления сервером.

Появившееся приветствие означает успешную начальную настройку Apache-сервера.

Как запустить Apache и другие полезные команды

В этом разделе будут собраны базовые команды для управления Apache web-сервером. Несмотря на то, что демон запускается самостоятельно, иногда необходимо выключить его или перечитать конфигурацию.

Проверить статуса демона Apache:

    sudo systemctl status apache2

В выводе будет указан текущий статус. Возможны два варианта.

Активен:

apache2.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
     Active: active (running) since Fri 2025-01-24 10:48:52 UTC; 9min ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 1924 (apache2)
      Tasks: 55 (limit: 1119)
     Memory: 6.3M (peak: 6.5M)
        CPU: 66ms
     CGroup: /system.slice/apache2.service
             ├─1924 /usr/sbin/apache2 -k start
             ├─1927 /usr/sbin/apache2 -k start
             └─1928 /usr/sbin/apache2 -k start

Неактивен:

apache2.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
     Active: inactive (dead) since Fri 2025-01-24 10:58:38 UTC; 1s ago
   Duration: 9min 45.788s
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 3709 ExecStop=/usr/sbin/apachectl graceful-stop (code=exited, status=0/SUCCESS)
   Main PID: 1924 (code=exited, status=0/SUCCESS)
        CPU: 83ms

Иногда возникает ошибка.

apache2.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Fri 2025-01-24 11:01:08 UTC; 2s ago
   Duration: 9min 45.788s
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 3732 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
        CPU: 10ms

Jan 24 11:01:08 kassie systemd[1]: Starting apache2.service - The Apache HTTP Server...
Jan 24 11:01:08 kassie apachectl[3734]: AH00526: Syntax error on line 13 of /etc/apache2/sites-enabled/000-default.conf:
Jan 24 11:01:08 kassie apachectl[3734]: Invalid command 'meow', perhaps misspelled or defined by a module not included in the server configuration

Чтобы выйти в консоль из статуса, необходимо использовать клавишу q или комбинацию клавиш Ctrl+С.

Для деактивации:

    sudo systemctl stop apache2

Для активации:

    sudo systemctl start apache2

Перезапуск:

    sudo systemctl restart apache2

При изменении конфигурации Apache возможно ее перечитать без разрыва текущей сессии с хостов:

    sudo systemctl reload apache2

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

    sudo systemctl disable apache2

Активировать автозагрузку:

    sudo systemctl enable apache2

Настроить виртуальные хосты Apache

Можно использовать веб-сервер Apache для поддержки одного web-приложения. Но достаточно часто приходится на одном сервере создавать и обслуживать несколько web-ресурсов. В Apache для этих целей используется модуль виртуальных хостов. Он позволяет развернуть несколько web-приложений на одном сервере с использованием одного ip-адреса, но разных доменных имен. Про теорию доменных имен есть хорошие статьи и книги, например, статья о DNS-сервере BIND и книга Крикета Ли, Пола Альбитц «DNS и BIND». Об управлении доменами и ресурсными записями написали в базе знаний Selectel.

Перейдем к настройке виртуального хоста.

В Ubuntu конфигурации виртуальных хостов расположены в директории /etc/apache2/sites-available.  Нам необходимо получить директорию для виртуального хоста по умолчанию. Получим root-директорию из файла дефолтной конфигурации:

    grep "DocumentRoot" /etc/apache2/sites-available/000-default.conf

Вывод:

DocumentRoot /var/www/html

Создадим новые необходимые директории, не меняя корневой.

    sudo mkdir -p /var/www/example.com/html

В стандартном исполнении Apache ищет документ index.htm или index.html

Создадим простой html5-документ: 

    sudo touch /var/www/example.com/html/index.html

Добавим небольшую структуру документа, открыв его в текстовом редакторе:

    sudo nano /var/www/example.com/html/index.html

Вставляем в файл.

<!DOCTYPE html>
<html>
 <head>
   <title>Hello</title>
   <meta charset="utf-8">
 </head>
 <body>
         <h1>Hello Selectel!</h1>
  </body>
</html>

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

    sudo cp /etc/apache2/sites-available/000-default.conf  /etc/apache2/sites-available/example.com.conf

Теперь откроем скопированный файл, рассмотрим основные директивы и внесем необходимые правки. На данном этапе нам будет интересна только строка, в которой указан путь к директории виртуального хоста. Меняем его на путь к директории, созданной специально для него. Чтобы при обращении Аpache мог перенаправить запрос именно к созданному нами виртуальному хосту.

    sudo nano /etc/apache2/sites-available/example.com.conf

Файл дефолтного виртуального хоста:

<VirtualHost *:80>	# The ServerName directive sets the request scheme, hostname and port that	# the server uses to identify itself. This is used when creating	# redirection URLs. In the context of virtual hosts, the ServerName	# specifies what hostname must appear in the request's Host: header to	# match this virtual host. For the default virtual host (this file) this	# value is not decisive as it is used as a last resort host regardless.	# However, you must set it for any further virtual host explicitly.	#ServerName www.example.com	ServerAdmin webmaster@localhost	DocumentRoot /var/www/html	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,	# error, crit, alert, emerg.	# It is also possible to configure the loglevel for particular	# modules, e.g.	#LogLevel info ssl:warn	ErrorLog ${APACHE_LOG_DIR}/error.log	CustomLog ${APACHE_LOG_DIR}/access.log combined	# For most configuration files from conf-available/, which are	# enabled or disabled at a global level, it is possible to	# include a line for only one particular virtual host. For example the	# following line enables the CGI configuration for this host only	# after it has been globally disabled with "a2disconf".	#Include conf-available/serve-cgi-bin.conf</VirtualHost>

<VirtualHost *:80> — в этой строке указываем ip-адрес сервера, а также порт, используемый для этого виртуального хоста. На данный момент мы используем HTTP и один ip-адрес. В связи с этим номер порта 80, адрес не указываем. Настройка HTTPS будет описана ниже. 

ServerAdmin webmaster@localhost — строка связи с администратором, необходимо указать активный почтовый адрес отвечающего за обслуживание сервера специалиста. Опционально. Добавим адрес, по которому всегда придут на помощь support@selectel.ru.

DocumentRoot /var/www/html — root-директория или корневой каталог виртуального хоста. Обязательна к применению и настройке. В нашем случае это путь к созданной ранее директории с документом index.html. Вносим изменения:

    /var/www/example.com/html

ErrorLog ${APACHE_LOG_DIR}/error.log — путь к файлу с логами сервера. Вносить какие-либо изменения нет необходимости. Здесь будут храниться ошибки запуска демона и ошибки, не относящиеся к клиентам.

CustomLog ${APACHE_LOG_DIR}/access.log combined — это директива для хранения логов клиентского доступа. 

Редактирование файла на этом завершается. Это минимальная конфигурация для запуска виртуального хоста на Apache web-сервере. Изменять конфигурацию далее на данном этапе нет необходимости.

Сохраняем и выходим из редактора. Для сохранения используется комбинация Ctrl+o, для выхода Ctrl+x.

Файл с готовой конфигурацией:

<VirtualHost *:80>	# The ServerName directive sets the request scheme, hostname and port that	# the server uses to identify itself. This is used when creating	# redirection URLs. In the context of virtual hosts, the ServerName	# specifies what hostname must appear in the request's Host: header to	# match this virtual host. For the default virtual host (this file) this	# value is not decisive as it is used as a last resort host regardless.	# However, you must set it for any further virtual host explicitly.	#ServerName www.example.com	ServerAdmin support@selectel.ru	DocumentRoot /var/www/example.com/html	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,	# error, crit, alert, emerg.	# It is also possible to configure the loglevel for particular	# modules, e.g.	#LogLevel info ssl:warn	ErrorLog ${APACHE_LOG_DIR}/error.log	CustomLog ${APACHE_LOG_DIR}/access.log combined	# For most configuration files from conf-available/, which are	# enabled or disabled at a global level, it is possible to	# include a line for only one particular virtual host. For example the	# following line enables the CGI configuration for this host only	# after it has been globally disabled with "a2disconf".	#Include conf-available/serve-cgi-bin.conf</VirtualHost>

Для подключения виртуальных хостов, а также модулей в Apache HTTP-сервере используется набор команд:

a2enmod {модуль} — подключение модуля;

a2dismod {модуль} — отключение модуля;

a2ensite {конфиг виртуального хоста} — подключает виртуальный хост;

a2dissite {конфиг виртуального хоста} — отключает виртуальный хост.

Нам потребуется a2ensite для активации созданного хоста:

    sudo a2ensite example.com.conf

И a2dissite для деактивации дефолтного:

    sudo a2dissite 000-default.conf

После внесенных изменений требуется перечитать конфигурацию сервера:

    sudo systemctl reload apache2 

Теперь мы можем обратиться с созданному виртуальному хосту по доменному имени.

В этой инструкции мы не используем dns, поэтому для разрешения имени используем файл hosts.

В windows этот файл расположен здесь: C:\Windows\System32\drivers\etc\hosts.

А в linux/mac: /etc/hosts.

Добавим строчку: 94.0.0.0 example.com.

Где 94.0.0.0 — ранее полученный ip-адрес сервера, а example.com — доменное имя виртуального хоста.

Теперь перейдем в браузер и в адресной строке наберем: example.com.

Получим созданное web-приложение:

SSL для Apache

TLS (transport layer security — протокол защиты транспортного уровня) и предыдущая версия защиты SSL (secure sockets layer — слой защищенных сокетов). Это все протоколы криптографии, созданные для защиты передачи данных между узлами в информационной сети.

Оба протокола используют асимметричное шифрование для аутентификации, симметричное шифрование для конфиденциальности и коды аутентичности сообщений. Подробно останавливаться на теории сейчас нет необходимости. На первоначальном этапе достаточно быть в курсе, что эти протоколы отвечают за сохранность конфиденциальности данных в момент обмена данными между клиентом и сервером. Ключи могут быть самозаверяющими, т.е. созданными и подписанными самим web-сервером.

Такие ключи подходят для использования протокола HTTPS и шифрования данных, но не являются доверенными для сети интернет. Также сертификаты бывают выданными центрами сертификации. Они не только шифруют данные, но также web-браузер знает о таком ключе и доверяет ему по-умолчанию. В таком случае сертификаты платные, но имеется возможность использования бесплатного сервиса Let`s encrypt. С использованием сервиса можно создать и заверить ключ.

В этом случае сертификат будет действительным для сети интернет, но бесплатным. В этой инструкции будет настроено простое шифрование с использованием самозаверяющего ключа, созданного на сервере Apache.

Создать SSL-сертификат на сервере

Чтобы создать и подписать сертификат, потребуется пакет OpenSSL. Он есть в системе, не нужно устанавливать. Сейчас будет создан и подписан сертификат, а также закрытый и открытый ключи будут перемещены в необходимые директории.

    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/server-example.key -out /etc/ssl/certs/server-example.crt

Расшифровка опций из команды:

req -x509 — опция определения стандарта сертификата (-x509 стандарт инфраструктуры открытого ключа).

-nodes — отказаться от защиты сертификата паролем. Если убрать эту опцию, произойдет запрос пароля для ключа, который необходимо вводить при каждом запуске web-сервера (желательно использовать в продакшене). 

-days 365 — срок действия сертификата. Обычно срок устанавливается более длительный, но для тестового сервера достаточно. Также необходимо учитывать, что на web-сервере время и дата должны быть верными.

-newkey rsa:2048 — опция указывает на создание нового сертификата и ключа единовременно. Часть rsa:2048 обозначает размер ключа.

-keyout /etc/ssl/private/server-sample.key — обозначает директорию, в которую необходимо поместить закрытый ключ.

-out /etc/ssl/certs/server-sample.crt- — директория местоположения сертификата.

server-sample.key и server-sample.crt — имена ключа и сертификата.

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

Country Name (2 letter code) [AU]:RU — указываем страну.

State or Province Name (full name) [Some-State]:LIP — область.

Locality Name (eg, city) []:Lipetsk — город.

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Sel — организацию.

Organizational Unit Name (eg, section) []:Sel — отдел.

Common Name (e.g. server FQDN or YOUR name) []:94.255.255.255 — вводим доменное имя или белый адрес сервера.

Email Address []: — адрес для связи с владельцем ключа. Можно оставить пустым или заполнить почту, аналогичную ServerAdmin в конфигурации веб-сервера.

После выполнения операции требуется подключение модуля SSL для Apache HTTP-сервера. Ранее были разобраны команды для этого действия. Вот так выглядит необходимая:

    sudo a2enmod ssl

После включения модуля необходимо перезапустить демона Apache.
Переходим к настройке HTTPS для виртуального хоста. Вносим изменения в файл его настройки.

    sudo nano /etc/apache2/sites-available/example.com.conf

Во-первых, меняем директиву <VirtualHost *:80>.

Порт изменится на 443 (порт для протокола HTTPS по умолчанию).

Добавляем директиву SSLEngine on после строки DocumentRoot для включения поддержки SSL на web-сервере.

После этого еще две строки, в которых указан путь к ключу и сертификату:

    SSLCertificateFile /etc/ssl/certs/server-example.crt
SSLCertificateKeyFile /etc/ssl/private/server-example.key

Теперь файл конфигурации виртуального хоста выглядит следующим образом:

<VirtualHost *:443>	# The ServerName directive sets the request scheme, hostname and port that	# the server uses to identify itself. This is used when creating	# redirection URLs. In the context of virtual hosts, the ServerName	# specifies what hostname must appear in the request's Host: header to	# match this virtual host. For the default virtual host (this file) this	# value is not decisive as it is used as a last resort host regardless.	# However, you must set it for any further virtual host explicitly.	#ServerName www.example.com	ServerAdmin support@selectel.ru	DocumentRoot /var/www/example.com/html		SSLEngine on	SSLCertificateFile /etc/ssl/certs/server-example.crt	SSLCertificateKeyFile /etc/ssl/private/server-example.key	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,	# error, crit, alert, emerg.	# It is also possible to configure the loglevel for particular	# modules, e.g.	#LogLevel info ssl:warn	ErrorLog ${APACHE_LOG_DIR}/error.log	CustomLog ${APACHE_LOG_DIR}/access.log combined	# For most configuration files from conf-available/, which are	# enabled or disabled at a global level, it is possible to	# include a line for only one particular virtual host. For example the	# following line enables the CGI configuration for this host only	# after it has been globally disabled with "a2disconf".	#Include conf-available/serve-cgi-bin.conf</VirtualHost>

Перед проверкой по web добавим разрешающее правило безопасности:  

    sudo ufw allow https

А также перечитаем конфигурацию web-сервера Apache:

    sudo systemctl reload apache2

Теперь при запросе сервера по HTTPS:example.com браузер выдаст оповещение о небезопасном сертификате. Проигнорировав его, будет отображено созданное ранее web-приложение.

На этом настройка SSL закончена.

Конфигурационные файлы и директории web-сервера Apache

Приведенные файлы и директории используются для настройки Apache-сервера. В данном документе уникальных настроек не приводится. Этот раздел создан для ознакомительных целей.

/etc/apache2 — директория конфигурационных файлов Apache.

/etc/apache2/apache2.conf — основной файл конфигурации сервера. Он отвечает за множество настроек сервера. Например, включить чтение файла .htaccess необходимо именно здесь.

/etc/apache2/envvars — файл значения переменных среды для Apache.

/etc/apache2/magic —  отображает инструкции для определения типа файла на сервере и клиенте. 

/etc/apache2/ports.conf —  настройка слушающих портов по умолчанию.

/etc/apache2/sites-available/ — директория конфигураций виртуальных хостов.

/etc/apache2/sites-enabled/ — здесь хранится информация об активных виртуальных хостах.

/etc/apache2/conf-available/ — директория настроек хостов, не относящихся к виртуальным.

/etc/apache2/conf-enabled/ — ссылки на включенные хосты, не относящиеся к виртуальным. 

/etc/apache2/mods-available/ и /etc/apache2/mods-enabled/ — директории модулей. Модули, а также их настройки расположены здесь.

/var/www — директория для хранения web-приложений. Обычно виртуальные хосты тоже хранят здесь. Может быть изменена.

/var/log/apache2 — директория файлов логирования, содержит в себе два файла, ранее в этой инструкции было описано какой из них за что отвечает.

Безопасность web-сервера Apache

Сервер, который смотрит в интернет, вне зависимости от задач на него возложенных, находится в опасности. Он может быть атакован злоумышленниками с последующим вмешательством в его функциональность. Рассмотрим защиту от доступа неблагонадежных пользователей к серверу по протоколу SSH.

В Linux-системах отличным решением является утилита Fail2ban. Принцип ее работы основан на отслеживании файлов логирования доступа к серверу. По заданному количеству попыток обращений создается правило блокировки ip-адреса, с которого предположительно происходит вторжение.

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

    sudo apt-get install fail2ban -y

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

/etc/fail2ban/jail.conf — отвечает за настройки безопасности конкретных сервисов.

Вносить изменения в него не рекомендуется, поэтому создадим новый файл с расширением .local. Эти файлы имеют приоритет выше, чем файл .conf для Fail2ban.

    sudo nano /etc/fail2ban/jail.local 

Внесем настройки для защиты SSH:

    [sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 4
bantime  = 60

Построчно:

Директива [sshd] отвечает за защиту доступа по SSH при отказе в авторизации;

enabled = true — состояние;

port = 22 — номер порта;

filter = sshd — имя, по которому идет поиск в логах сервиса;

logpath = /var/log/auth.log — файл журнала, из которого будут взяты результаты поиска по фильтру;

maxretry = 4 — количество неудачных попыток;

bantime  = 60 — время блокировки в секундах. Сейчас эта секция добавлена для тестовой инструкции, в продакшене обычно время блокировки больше.

С настройкой закончили, добавим демона fail2ban в загрузку и запустим, а потом проверим его работу.

    sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Как мы видим, доступ заблокирован после превышения попыток авторизации.

Через 60 секунд доступ появится.

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

    sudo fail2ban-client set sshd unbanip ip_add

ip_add — заблокированный адрес.

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

Рассмотрим также установку HTTP-сервера Apache на операционную систему Windows. В примере будем использовать Microsoft® Windows Server 2019 Standard. 

Подготовка системы

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

Скриншот панели управления Selectel: создание сервера и получение IP‑адреса.

Панель управления Selectel.

Для работы веб-сервера Apache в системе должен быть установлен пакет Microsoft Visual C++ Redistributable, который необходим для запуска приложений, созданных в Microsoft Visual Studio. Подробная информация и ссылки для скачивания различных версий можно найти на странице Microsoft. Мы воспользуемся последним выпуском для платформы x64, ссылку на который копируем в буфер обмена.

Переходим к работе с сервером. В нашем случае он называется Wendy.

Скриншот панели управления Selectel: сервер создан.

Почти вся дальнейшая работа будет выполняться в консоли панели управления. Взаимодействие с операционной системой Windows Server осуществляется через графический интерфейс. Наиболее удобный способ дистанционно работать с ОС Windows — воспользоваться одной из программ, предназначенных для обмена данными по протоколу RDP.

RDP (Remote Desktop Protocol) — это протокол удаленного доступа, разработанный Microsoft. Он позволяет подключаться к другому компьютеру через сетевое соединение, видеть его экран и взаимодействовать с ним через интерфейс программы.

В операционных системах от Microsoft уже встроена утилита «Подключение к удаленному рабочему столу». Также существуют RDP-клиенты для macOS, Linux, Android и iOS.

Использование дополнительного необязательного ПО выходит за рамки данной инструкции, поэтому мы прибегнем к минималистичному, хоть и не самому удобному способу — будем взаимодействовать с сервером через браузер. Для удобства его рабочий стол можно развернуть во весь экран.

Скриншот рабочего стола удаленного сервера панели в управления Selectel.

Запускаем Internet Explorer и вставляем в адресную строку скопированную ранее ссылку на последнюю версию Visual C++ Redistributable, сохраняем пакет и запускаем установщик.

Скриншот принятия лицензионного соглашения для установки дополнительного ПО Microsoft.

Установка Apache

На официальной странице веб‑сервера Apache сказано, что для систем Microsoft готовые сборки не поддерживаются. Однако предоставляется список доверенных сайтов, где готовую сборку можно взять. Мы воспользуемся самым первым — apachelounge.com.

Скриншот страницы сайта, предоставляющего сборку Apache для Windows.

Выбирая место на диске для размещения Apache, следует иметь в виду один нюанс. Пакет сконфигурирован так, что без дополнительных действий он будет работать только при установке в корневую папку директории C:\, то есть главный исполняемый файл httpd.exe оказывается в каталоге C:\Apache24\bin. В противном случае, в файле Apache24\conf\httpd.conf необходимо переопределить переменную SRVROOT: изменить значение по умолчанию «c:/Apache24» на актуальный путь файлов веб‑сервера.

    Define SRVROOT "c:/Apache24"

Обратите внимание, что для обозначения пути используется слэш, а не обратный слэш!

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

Продолжим работу в консоли. Проверим работоспособность веб-сервера. Перейдем в каталог, где находится файлы Apache (по умолчанию, это C: \Apache24) и запустим приложение:

    &gt; cd C:\Apache24
&gt; .\httpd.exe

Обратите внимание на точку в начале команды — она задает текущий каталог явно!

Открываем Internet Explorer и ввводим в адресную строку localhost. Должна отобразиться надпись It works.

Покинем временно консоль в панели управления и воспользуемся браузером, который используем в повседневные жизни. Введем в его адресную строку IP-адрес хоста, на котором запущен Apache. В нашем случае — это 5.159.102.111. Страница окажется недоступной — брандмауэр Windows блокирует доступ к серверу.

Настройка правил брандмауэра

Чтобы к Apache можно было достучаться из публичной сети, необходимо добавить правило для межсетевого экрана. Открываем меню Пуск и в строке поиска вводим firewall: 

Переходим в раздел углубленных настроек:

Далее в разделе входящих соединений создаем правило для программы, где указываем путь к исполняемого файлу Apache — httpd.exe:

Путь к файлу программы удобнее всего задать, воспользовавшись кнопкой Browse:

На следующем шаге разрешаем соединения:

Убеждаемся, что все галочки выставлены:

Скриншот последнего шага приводить не будем — он очень прост: необходимо придумать произвольное имя для созданного правила.

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

Способы запуска

Обычно сервер выполняется в системе в качестве службы. Для этого можно использовать следующие команды, открыв ту же консоль CMD или powershell: 

  • httpd.exe -k start — для запуска,
  • httpd.exe -k stop — для остановки,
  • httpd.exe -k restart — для перезапуска.

Обратите внимание, консоль должна открываться от имени администратора — в противном случае для управления процессом не хватит прав.

Заключение

На этом инструкция по настройке web-сервера Apache завершена. Подведем итог: мы настроили один из самых популярных web-серверов и доступ к нему по протоколу HTTPS , изучили возможность настройки виртуальных хостов и обезопасили сервер от злоумышленников. На данном этапе администратор может самостоятельно обслуживать и настраивать Apache web-сервер на linux.

Другие материалы по работе с Apache

Когда разработчик создает сайт — перед отправкой на внешние сервера он тестирует его локально. Для этого ему нужен собственный веб-сервер: ПО, которое работает на его личном ПК и позволяет обмениваться HTTP-запросами. Такой сервер называется локальным: к нему нет доступа ни у кого, кроме самого программиста и людей, которым он предоставит доступ.

Мы уже писали, как установить сервер — но для операционной системы Linux. Теперь разберем процесс с более привычной для многих ОС Windows.

Какая версия Windows понадобится

Существует серверная версия ОС Windows. Она называется Windows Server и предназначена для администрирования сетей из нескольких компьютеров. Ее используют в корпоративной инфраструктуре — чтобы управлять рабочими устройствами. Для нее существуют и веб-сервера, которые позволяют запускать сайты — но обычно речь идет о больших проектах.

Для установки локального веб-сервера Windows Server не нужна. Достаточно обычной пользовательской операционной системы. Желательно — одной из новых версий, например Windows 10. Старые системы вроде Windows XP больше не поддерживаются, и обновлений ПО для них не выпускают.

Какие есть веб-сервера для Windows

В качестве локального сервера обычно используют одну из трех программ:

  • XAMPP — ее мы разбирали в статье про установку сервера на Ubuntu;
  • Denwer — популярное, но довольно сложное для начинающих ПО с консольным интерфейсом;
  • Open Server — на ее примере мы и будем показывать процесс. 

Open Server — бесплатное ПО, которое не требует установки. В отличие от Denwer, оно довольно легко настраивается и поэтому подходит для новичков. Но весит немало: убедитесь, что на диске свободно как минимум несколько гигабайт.

Еще одно преимущество Open Server — его создали русскоязычные разработчики из стран СНГ. Поэтому официальный сайт и техническая документация по проекту — полностью на русском.

В перечисленных трех инструментах уже есть все необходимое для работы: поддержка языка PHP и баз данных, веб-сервер, позволяющий запускать сайты. Но можно вместо них использовать собственные конфигурации: установить компоненты по отдельности и настроить среду. Это продвинутый вариант — он сложнее, но позволяет более гибко конфигурировать сервер.

Как установить локальный сервер на Windows

Мы не будем подробно останавливаться на установке ОС Windows. Если человек — пользователь этой системы, скорее всего она уже установлена у него на компьютере. Кроме того, процесс обычно проще, чем в случае с Linux. Поэтому сразу перейдем к тому, как поставить сервер.

  1. Перейдите на официальный сайт Open Server и скачайте последнюю стабильную версию ПО. Обратите внимание: для его работы нужно, чтобы у вас стояла Windows 10. Старые ОС поддерживаются ограниченно: некоторые функции будут недоступны.
  2. Начнется загрузка файла с расширением .exe — подождите, пока она завершится, и после этого запустите его.
  3. Выберите путь для установки сервера. Разработчики рекомендуют устанавливать его в корень диска: C:\OSPanel. Если у вас есть SSD — лучше использовать его, так как он быстрее.
  4. Если вы хотите, чтобы сервер был портативным — можете установить его на съемный диск. Тогда понадобится выбрать вариант «Портативная установка». В других случаях лучше выбирать стандартную.
  5. Подождите, пока программное обеспечение установится. Затем запустите утилиту System Preparation Tool — она идет в комплекте с Open Server и помогает подготовить компьютер к запуску сервера. Запускать ее нужно с правами администратора.
  6. Добавьте Open Server в список исключений своего антивируса, чтобы тот не мешал работе сервера. Это важно, потому что антивирус будет замедлять работу ПО — а иногда и вовсе останавливать ее.

После завершения установки перезагрузите компьютер. Теперь локальный сервер можно запускать. 

Как запустить сервер в первый раз

В отличие от System Preparation Tool, сам сервер не обязательно запускать от имени администратора. Более того: сами разработчики не рекомендуют так делать.

Запустить локальный сервер можно двумя способами:

  • через меню «Пуск»;
  • с помощью команды .\bin\ospanel.exe в консоли — этот способ рекомендуют, если ПО установили портативно.

В трее — области уведомлений в меню операционной системы — должен появиться значок Open Server. Это будет значить, что ПО успешно запустилось. Можете кликнуть по значку и перейти в интерфейс программы.

При первом запуске разработчики рекомендуют открыть CLI — интерфейс командной строки — и проверить, все ли в порядке. Вот что понадобится сделать:

  1. выбрать в программе пункт Меню → Интерфейс командной строки;
  2. посмотреть логи с помощью команды osp log general — проверить, не описаны ли там какие-то ошибки;
  3. создать корневой сертификат, если не сделали этого при установке, с помощью команды osp cacert init.

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

Если при запуске CLI выдает ошибку The system cannot write to the specified device — значит, в командной строке вашей системы используется неподходящий шрифт. Нужно заменить его на шрифт в кодировке, совместимой с UTF-8 — сами разработчики Open Server рекомендуют Consolas.

Как установить модули в Open Server

Open Server поддерживает множество модулей для веб-разработки — но по умолчанию после установки все они отключены. Чтобы работать с серьезными проектами, понадобится подключать их по мере необходимости.

  • Если модуль уже установлен, достаточно активировать его для нужного проекта через меню Open Server.
  • Если модуль не установлен — понадобится поставить его с помощью инсталлятора, который вы использовали при установке самого сервера.
  • Модули можно создавать и самостоятельно — но это уже более продвинутая задача, которая вряд ли понадобится на первых этапах работы.

Обычно, если Open Server устанавливали полностью, модули уже есть в инструменте. Но если при установке вы сняли галочки с некоторых модулей, а затем они вам понадобились, — нужно будет запустить файл установщика еще раз и поставить галочки только рядом с необходимыми компонентами.

Как создавать проекты и работать с ними

Open Server предлагает начинающим несколько тестовых проектов — чтобы потренироваться и набить руку. Для каждого проекта, как тестового, так и своего собственного, нужно сделать две вещи:

  • выбрать версию PHP, которая будет использоваться в проекте;
  • активировать нужные модули, например веб-сервер Nginx — его часто используют в связке с Apache как прокси-сервер.

Сам веб-сервер Apache используется по умолчанию. Активировать для него какие-либо модули не нужно.

Чтобы создать проект, нужно сформировать для него каталог внутри папки home. Назовем его firstproject. Внутри этого каталога необходимо создать папки:

  • osp — там будут находиться файлы с настройками и конфигурацией веб-сервера;
  • public — создается по необходимости и содержит файлы самого сайта.

В папке osp нужно создать файл под названием project.ini. Там будет находиться конфигурация. Содержимое файла должно быть таким:

[имя_домена]

public_dir = {base_dir}\public

php_engine = PHP-X.Y

Вместо [имя_домена] нужно подставить желаемое доменное имя для сайта, а вместо PHP-X.Y — нужную версию языка PHP.

Управлять сервером можно с помощью меню в интерфейсе Open Server. Там есть команды, позволяющие подключить новые модули, изменить версию PHP и сделать многое другое. А чтобы посмотреть, как выглядит сайт, достаточно перейти по его доменному имени — оно написано в файле project.ini вместо [имя_домена].

Например, для тестового проекта, который создан и настроен в Open Server по умолчанию, доменное имя — example.local.

Теперь вы можете создавать веб-страницы и тестировать их — открывать на собственном веб-сервере. А если нужны более сложные функции Open Server, можете ознакомиться с официальной документацией последней версии ПО.

Краткие выводы

  • Локальный веб-сервер на Windows может понадобиться разработчику, чтобы тестировать сайты перед отправкой на основной сервер.
  • Обычно локальный сервер запускают на собственном компьютере, а доступ к нему имеет только сам владелец.
  • Устанавливать серверную версию Windows не нужно — достаточно обычной системы, желательно новой версии.
  • Существует много вариантов ПО для веб-серверов: Denwer, XAMPP, Open Server и другие. Они уже содержат все необходимое для запуска сайта на домашнем ПК.
  • Процесс установки и настройки для каждого сервера отличается. В случае с Open Server нужно скачать установщик, выбрать параметры установки и дождаться ее окончания. После этого — настроить окружение и сам сервер.
  • Проекты лежат в отдельной папке — там находятся файлы сайта и конфигурации. В файле конфигурации описано, какая версия PHP используется в проекте и как называется домен.

Apache HTTP-сервер представляет из себя кроссплатформенное программное обеспечение, назначение которого прежде всего это – размещение сайтов. Веб-сервер Apache поддерживает различные операционные системы, в том числе и Windows. Здесь разберём, как установить и настроить Apache для работы веб-страницы на Windows Server. В качестве примера будем использовать виртуальный выделенный сервер под управлением Windows Server 2022.

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

Перед тем, как приступить непосредственно к настройке веб-сервера, необходимо установить пакет Visual C++, содержащий компоненты среды, необходимые для запуска приложений C++, а именно, Visual C++ Redistributable for Visual Studio 2015. Данный пакет требуется для запуска Apache. Чтобы получить дистрибутив, перейдите по ссылке, где кликните Download.

В следующем окне отметьте 64-х разрядную версию дистрибутива и ещё раз нажмите Download.

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

Загрузка и установка веб-сервера

Теперь можно обратиться к установке непосредственно веб-сервера. Zip-архив Apache доступен на его странице загрузки. Перейдите на неё и кликните в строку, содержащую 64-х битную версию веб-сервера.

По окончании загрузки архива извлеките из него каталог Apache24. В нашем примере мы сохраняем его на диске C:. Таким образом, файлы веб-сервера будут располагаться в папке C:\Apache24\. При этом вы можете сохранить каталог в любое другое удобное для вас место и даже переименовать его по вашему усмотрению.

Настройка веб-сервера

Далее, переходим к настройке конфигурации Apache. Для этого необходимо внести изменения в конфигурационный файл httpd.conf, который расположен в папке conf каталога веб-сервера. Откройте файл для редактирования и прежде всего найдите строку Define SRVROOT "C:/Apache24". После чего приведите её в соответствие с тем, куда вы разместили и как переименовали каталог Apache24. В нашем примере изменять данную строку необходимости нет.

Если в установленной версии конфигурационного файла отсутствует параметр Define SRVROOT, то имя каталога необходимо прописать в следующих строках, заменив значение ${SRVROOT} на путь к директории веб-сервера:

  • ServerRoot "${SRVROOT}"
  • DocumentRoot "${SRVROOT}/htdocs"
  • <Directory "${SRVROOT}/htdocs">
  • ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"

Затем найдите строку, которая содержит Options Indexes FollowSymLinks, и дополните её ещё одним значением, чтобы строка выглядела следующим образом:

Options Indexes FollowSymLinks ExecCGI

Далее, необходимо разрешить веб-серверу выполнять файлы .cgi и .pl. Это должно позволить запускать CGI- и Perl-скрипты вне директории cgi-bin. Для этого отыщите следующую строку:

#AddHandler cgi-script .cgi

И в начале строки удалите символ #, тем самым актировав данную настройку. Следующей строкой добавьте ещё одну:

AddHandler cgi-script .pl

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

ScriptInterpreterSource Registry

Для применения внесённых изменений сохраните файл httpd.conf.

Запуск веб-сервера

На следующем шаге мы попробуем запустить веб-сервер. Сделать это можно из командной строки или из оболочки PowerShell. В первом случае откройте командную строку, для чего используйте комбинацию клавиш Win R, либо строку поиска, где наберите cmd.

В открывшейся командной строке запустите исполняемый файл httpd.exe из директории bin, расположенной в каталоге веб-сервера:

C:\Apache24\bin\httpd.exe

Запуск командной оболочки PowerShell так же производится при помощи клавиш Win R или строки поиска, где следует набрать powershell. Активация веб-сервера производится командой:

& "C:\Apache24\bin\httpd.exe"

Чтобы убедиться, что веб-сервер работает, откройте на вашем VPS браузер и перейдите в нём по адресу http://localhost:

Настройка брандмауэра

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

Запуск брандмауэра осуществляется с использованием опять же комбинации Win R, где следует набрать firewall.cpl. После открытия окна Windows Defender Firewall кликните в строку Advanced settings.

В открывшемся окне перейдите в Inbound Rules и кликните в New Rule.

В стартовом окне мастера активируйте строку Program и нажмите Next.

Затем при помощи кнопки Browse выберите файл httpd.exe из каталога bin, после чего нажмите Next.

В следующем окне отметьте все чекбоксы и снова нажмите Next.

И наконец, в строке Name укажите название нового правила и для его сохранения кликните Finish.

Теперь ваша веб-страница будет доступна из сети в том числе и с вашей локальной рабочей станции. Чтобы перейти к ней наберите в адресной строке браузера IP-адрес вашего удалённого сервера или имя домена, A-запись которого настроена на этот IP-адрес.

Запуск Apache как службы

На данном этапе необходимо произвести запуск веб-сервера так, чтобы он функционировал как служба. Это позволит отказаться от использования командной строки и оболочки PowerShell для запуска Apache, поскольку веб-сервер будет работать в фоновом режиме. Для этого откройте командную строку, перейдите в каталог bin и запустите файл httpd.exe со следующими параметрами:

httpd.exe -k install

Таким образом, Apache теперь будет работать как служба и проверить это можно в менеджере служб. Чтобы это сделать используйте комбинацию клавиш Win R, где введите services.msc. В списке найдите службу Apache2.4, откройте её и убедитесь, что служба запущена. Если это не так, нажмите Start.

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

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

Самые распространенные веб-серверы в 2023 году — это Nginx и Apache. В этом материале мы расскажем, как установить и настроить Apache на операционной системе Ubuntu 22.04.

Apache HTTP Server или просто Apache — это бесплатный кроссплатформенный веб-сервер с открытым исходным кодом. Он был разработан в 1995 году группой разработчиков для устранения недостатков популярного на тот момент веб-сервера NCSA HTTPd.

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

Через год после выхода Apache получил популярность среди хостинг-компаний и разработчиков благодаря новой функциональности и кроссплатформенности. В 2005 году порядка 70% всех серверов в сети работало на Apache. Сейчас эта цифра держится в районе 20%, а основной конкурент Apache — это Nginx.

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

В целом, к плюсам Apache можно отнести:

  • Бесплатное ПО;
  • Кастомизация: веб-сервер на Apache можно легко подстроить под конкретные цели и задачи благодаря большому количеству дополнительных модулей и открытому коду.
  • Большое комьюнити;
  • Кроссплатформенность;
  • Хороший уровень производительности и безопасности.

А к минусам:

  • Требовательность к ресурсам, особенно при обслуживании большого количества одновременных запросов;
  • Ограниченная многопоточность: Apache использует технологию мультипроцессинга, помещая каждое соединение в отдельный поток. Количество таких потоков ограниченно, что негативно сказывается при большом количестве запросов;
  • Сложность настройки из-за большого количества настроек.

vds

Установка Apache

Установка Apache выполняется в несколько шагов:

Шаг 1. Обновите индексы пакетов apt

Перед установкой любого программного обеспечения на Ubuntu в первую очередь необходимо обновить индексы пакетов. Благодаря этому в репозитории будут находиться последние пакеты, доступные для установки.

Для обновления индекс пакетов APT до последней версии выполните следующую команду:

sudo apt update

Шаг 2. Установка веб-сервера Apache

Установка веб-сервера Apache на Ubuntu — это простой процесс, включающий в себя выполнение одной команды и перезагрузку системы. Чтобы установить Apache, выполните следующую команду:

sudo apt install apache2

После чего перезагрузите систему.

Шаг 3. Запуск и автозагрузка Apache

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

sudo systemctl start apache2

Эту команду придется выполнять каждый раз при запуске сервера. Чтобы избежать этого, добавим Apache в автозагрузку:

sudo systemctl enable apache2

Шаг 4. Проверка установки сервера Apache

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

service apache2 status

Image2

Настройка брандмауэра

Теперь, когда вы установили Apache на Ubuntu, необходимо разрешить внешние подключения через брандмауэр UFW.

UFW (Uncomplicated Firewall) — это интерфейс командной строки для iptables, который представляет собой фаервол для ОС Linux. Он предназначен для упрощения управления правилами фаервола, делая его более доступным для новичков. UFW позволяет легко настраивать правила фаервола, такие как открытие или закрытие портов, блокировка или разрешение доступа к сети и т.д.

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

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

При включенном брандмауэре вы можете обнаружить, что подключение к серверу Apache с удаленного устройства невозможно. Это связано с тем, что порты, которые использует Apache, по умолчанию закрыты. Речь идет о 80 порту (для HTTP) и 443 порту (для HTTPS). Откроем подключение к обоим портам

Давайте начнем с открытия 80 порта. Через этот порт будут проходить подключения к Apache через HTTP.

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

В первую очередь проверим, включен ли файрвол UFW:

sudo ufw status

Мы должны увидеть статус Active. Если это не так, запустите сервис ufw следующей командой:

sudo ufw enable

Чтобы разрешить доступ к порту 80 с помощью UFW, мы можем использовать следующую команду в терминале:

sudo ufw allow 80

Также если вы планируете использовать HTTPS с сервером Apache на Ubuntu, вам также необходимо открыть порт 443.

Порт 443 — это порт, через который HTTPS работает по умолчанию. Поэтому если вы посетили сайт, использующий протокол «https://», ваш веб-браузер будет использовать именно этот порт.

Вы можете разрешить этот порт с помощью этой команды:

sudo ufw allow 443

Посещение вашего веб-сайта

Теперь, когда вы установили веб-сервер Apache на Ubuntu и открыли подключения в брандмауэре, давайте попробуем зайти на него.

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

Если планируется подключения с удаленного устройства, то в первую очередь необходимо узнать IP-адрес сервера Apache. Есть несколько способов узнать это.

Самый простой способ — использовать команду hostname с опцией -I. Команда в качестве результата выведет список IP-адресов, назначенных вашему устройству.

hostname -I

Например, нашему тестовому серверу присвоен только локальный IP-адрес, который мы видим ниже.

192.168.0.215

По этому адресу нужно перейти в любом браузере. Если вы получаете доступ непосредственно с вашего сервера Ubuntu, вы можете использовать 127.0.0.1 или localhost вместо этого.

После перехода по этому адресу вы должны увидеть страницу, аналогичную той, что показана на скриншоте ниже.

Image1

Это говорит о том, что вы успешно запустили Apache на Ubuntu.

Заключение

В рамках этого материала мы рассмотрели установку Apache на Ubuntu 22.04, настройку брандмауэра и запуск сервера. При разработке сайта или веб-приложение эти шаги будут первыми на пути к готовому продукту. Если вы хотите создать свой сервер, то для этих планов вы можете арендовать облачный сервер на timeweb.cloud.

Nginx лого

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

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

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

Nginx (произносится как «engine x») — веб-сервер и прокси-сервер, поддерживающий HTTP, HTTPS, а также TCP/UDP-протоколы. Его можно использовать как сервер статического контента, обратный прокси, балансировщик нагрузки и почтовый прокси. Более того, на 2024 год это самый популярный сервер: на нём работает 34 % всех сайтов в Интернете. По популярности он опередил даже прежнего лидера и «старичка» среди веб-серверов Apache, разработанного в далёком 1995 году. До появления Nginx в 2002-м на Apache работало 60 % веб-сайтов, сейчас же его распространённость упала до 30 %. На такое перераспределение охвата повлияло то, что разработчики более нового Nginx учитывали ошибки Apache и меняющиеся потребности пользователей.

Многие известные российские платформы работают на Nginx, в том числе «Яндекс», Mail.Ru, «ВКонтакте» и «Рамблер».

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

Кроме того, Nginx часто используют в тандеме с другим сервером, таким как Apache. В такой конфигурации Nginx выступает в роли фронтенда: он отдаёт пользователю статические ресурсы, а запросы к динамическим страницам (например, на PHP) перенаправляет Apache или другому приложению на бэкенде. Этот подход помогает разгрузить основное приложение, ускорить время отклика и повысить устойчивость всей системы.

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

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

Развернуть Nginx можно как на локальной машине, так и на удалённом сервере — например, на VPS с установленной Linux-системой. Наиболее надёжно и стабильно он работает в популярных дистрибутивах вроде Ubuntu, Debian, CentOS, а также в средах на базе FreeBSD и других Unix-подобных ОС. Возможна установка и на macOS или Windows, однако такие решения чаще применяются для тестирования или разработки, а не для продакшена.

В большинстве случаев установка Nginx на Linux-системах предельно проста: пакет уже включён в стандартные репозитории, и его можно установить с помощью менеджера пакетов — например, apt в Ubuntu. Это быстрый и надёжный способ, особенно если не требуются нестандартные модули или глубокой кастомизации.

Альтернативный вариант — собрать Nginx из исходников. Такой подход подойдёт опытным пользователям и администраторам, которым необходима поддержка редких модулей, нестандартных настроек или дополнительной оптимизации. Этот путь требует больше времени и понимания структуры конфигурации, но даёт максимальную гибкость.

В рамках этой статьи мы сосредоточимся на установке Nginx из репозитория Ubuntu — как на самом распространённом и удобном варианте для большинства пользователей.

  1. Непосредственно перед установкой обновим данные репозитория, для этого введём в терминале:
apt update
  1. Когда обновлённые данные о наличии пакетов загрузятся, можно приступить к установке:
apt install nginx
  1. Программа установлена, добавим её в список ПО, которое автоматически запускается сразу после запуска системы:
systemctl enable nginx
  1. Теперь нужно убедиться, что процессы завершились успешно, ПО установлено, заработало корректно и есть в списке автозапуска:
service nginx status

Если в выведенных данных вы видите строку, которая начинается с «Active: active (running)…», то это говорит об успешных установке и запуске.

Альтернативный способ выполнить проверку — перейти по IP-адресу сервера в браузере. Если в окне отобразится приветственная страница, то установка прошла правильно.

Приветственное сообщение nginx

Приветствие в браузере
  1. Следующий шаг — убедимся, что включён автозапуск:
systemctl is-enabled nginx

Правильный вывод — «enabled».

Команды Nginx на Ubuntu

Синтаксис базовых команд:

sudo systemctl <command> nginx

Вместо <command> укажите одну из следующих команд:

  • start — для запуска,
  • stop — для остановки,
  • restart — чтобы перезапустить,
  • reload — чтобы перезагрузить веб-сервер,
  • status — проверить актуальный статус.

Кроме того используется запрос «nginx -t» для тестирования конфигурации.

Когда Nginx уже запущен, для управления можно обращаться к исполняемому файлу (для чего используют флаг «-s»). Общий синтаксис обращения:

nginx -s <command>

Вместо <command> можно указать одну из команд:

  • stop — быстрое завершение всех процессов;
  • quit — медленное завершение, при котором все текущие запросы будут обслужены;
  • reload — перезагрузить файл конфигурации;
  • reopen — закрыть и открыть файлы логов.

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

На выделенных серверах можно перезапустить и перезагрузить программу через SSH.

  • Перезапуск:
/etc/init.d/nginx stop
/etc/init.d/nginx start
  • Перезагрузка:
/etc/init.d/nginx reload

После изменения конфигурационных файлов Nginx требуется обязательно применить новые параметры. Это можно сделать двумя способами: перезапуском (restart) или перезагрузкой (reload) службы. На первый взгляд они похожи, но отличаются по поведению и надёжности.

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

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

sudo nginx -t

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

Таким образом, рекомендуется всегда использовать reload, а не restart, особенно при внесении незначительных изменений — например, добавлении нового хоста, корректировке правил проксирования или обновлении SSL-сертификата. Это безопаснее, надёжнее и позволяет избежать перебоев в работе продакшена.

Настройка сетевого экрана

Сетевой экран (файрвол) управляет доступом к портам. В рамках настройки нужно закрыть все порты, кроме необходимых — для SSH, HTTP и HTTPS. В примере мы покажем, как открыть стандартные порты 22, 80 и 443 (SSH, HTTP и HTTPS соответственно). Однако известно, что на эти порты приходится большинство хакерских атак, поэтому рекомендуется сначала изменить установленные по умолчанию порты сервера, а потом произвести перенастройку сетевого экрана.

  1. Настраивать сетевой экран будем с помощью UFW (Uncomplicated Firewall), инструмента командной строки, предназначенного для управления политикой безопасности файрвола. Обычно утилита установлена по умолчанию, в противном случае установим её (не забудьте перед этим обновить репозиторий):
apt install ufw
  1. Когда установка будет завершена, произведём настройку и добавим Nginx. Задавать правила нужно обязательно с выключенным файрволом, а включать его можно только по окончании настройки. Откроем /etc/ufw/applications.d/nginx.ini для редактирования:
nano /etc/ufw/applications.d/nginx.ini

Hедактировать этот файл не обязательно — правила для Nginx уже включены в UFW по умолчанию.

  1. Пропишем в содержимом:
[Nginx HTTP]
title=Web Server
description=Enable NGINX HTTP traffic
ports=80/tcp
[Nginx HTTPS] \
title=Web Server (HTTPS) \
description=Enable NGINX HTTPS traffic
ports=443/tcp
[Nginx Full]
title=Web Server (HTTP,HTTPS)
description=Enable NGINX HTTP and HTTPS traffic
ports=80,443/tcp

4. Для проверки просмотрим текущий список приложений, добавленных в утилиту:

ufw app list

Если изменения применились, то в выведенном списке должен быть веб-сервер.

  1. Затем запустим сетевой экран и дадим разрешение использовать перечисленные выше порты:
ufw enable
ufw allow 'Nginx Full'
ufw allow 'OpenSSH'
  1. Убедимся, что изменённые настройки применены:
ufw status

В выводе будет информация о текущем состоянии и правилах UFW.

Базовая настройка

Параметры конфигурации должны быть правильно настроены. Nginx управляют директивы, прописанные в файле nginx.conf и в файлах папок /etc/nginx/sites-available и /etc/nginx/sites-enabled.

Файл nginx.conf содержит основные параметры. В sites-available лежат conf-файлы доступных виртуальных хостов, а sites-enabled содержит сведения об активных сайтах.

Обзор основного конфигурационного файла

Файл nginx.conf и расположен в папке /usr/local/nginx/conf, /etc/nginx или /usr/local/etc/nginx. Откроем nginx.conf (замените /directory/ на актуальный путь):

nano /directory/nginx.conf

Содержание конфигурационного файла nginx

Содержание конфигурационного файла nginx

Как мы уже писали выше, файл разбит на одиночные директивы и блоки. Внутри блоков может храниться более одной директивы с дополнительными инструкциями, объединённые в блок по какому-либо признаку.

Перечислим некоторые из них:

  • user — пользователь, от чьего имени осуществляется запуск;
  • worker_processes — параметр ограничивает количество процессов, выполняющих обработку запросов; фиксированный параметр не может превышать число ядер CPU; укажите «auto», чтобы установить его автоматически равным количеству ядер CPU;
  • pid — задаёт путь к nginx.pid, где будет храниться номер главного процесса; главный процесс отвечает за чтение и проверку конфигурации и управляет рабочими процессами;
  • include — подключает дополнительные conf-файлы;
  • events — блочные директивы, описывающие характеристики сетевого соединения;
  • worker_connections — параметр ограничивает количество одновременных соединений;
  • multi_accept — мультидоступ; включён по значению «on», и отключён по «off»;
  • use — способ, которым будут обработаны соединения;
  • http — блочные директивы, ответственные за HTTP;
  • tcp_nopush — если присвоено значение «on», то заголовки HTTP будут передаваться одним пакетом;
  • tcp_nodelay — если «on», то отправляемые данные не будут буферизованы;
  • keepalive_timeout — максимальное время ожидания, после которого соединение закрывается;
  • keepalive_requests — ограничивает количество запросов по keep-alive соединению, когда достигнуто указанное количество — соединение закрывается;
  • error_log — лог ошибок; чтобы собрать ошибки в конкретном блоке, добавьте в его директивы «error_log»;
  • gzip — сжатие данных. 

Как настроить виртуальные хосты

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

Рассмотрим работу Nginx на примере сайта с доменным именем test_adminvps.ru и статическим содержимым.

  1. Сначала создадим корневой каталог:
mkdir -p /var/www/test_adminvps.ru/html
  1. Создадим файл index.html и откроем его для редактирования:
nano /var/www/test_adminvps.ru/html/index.html
  1. Внесём в него данные, необходимые для отображения веб-страницы в браузере, укажем тип документа, язык, кодировку, заполним теги:
<!DOCTYPE html>
<html lang="ru">
<head>
<title>test_adminvps.ru</title>
<meta charset="utf-8">
</head>
<body>
<h1>Hello</h1>
</body>
</html>
  1. Создадим конфигурационный файл сайта в каталоге /etc/nginx/sites-available для сайта test_adminvps.ru:
nano /etc/nginx/sites-available/test_adminvps.ru.conf
  1. Запишем в него:  
server {
listen 80;
listen [::]:80;
server_name test_adminvps.ru www.test_adminvps.ru;
root /var/www/test_adminvps.ru/html;
index index.html index.xml;
}
  1. После этих действий сайт добавлен в доступные. Осталось добавить его в список активных в папке sites-enabled:
ln -s /etc/nginx/sites-available/test_adminvps.ru.conf /etc/nginx/sites-enabled/
  1. Виртуальный хост создан, проверим его текущее состояние:
nginx -t
  1. Затем нужно деактивировать дефолтный виртуальный хост:
rm /etc/nginx/sites-enabled/default

Дефолтный хост отключён, теперь Nginx будет использовать первый виртуальный хост из конфигурации. А это означает, что по IP-адресу сервера откроется созданный нами test_adminvps.ru.

  1. Перезагружаем веб-сервер:
systemctl restart nginx
  1. Перейдём по его адресу — в окне браузера должна отобразиться индексная страница сайта.

Настройка Nginx как обратного прокси на VPS с Ubuntu

Настройка Nginx

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

Такой подход особенно актуален для владельцев проектов на VPS: вы можете изолировать внутренние сервисы (например, бэкенд на Node.js или API-сервер) и при этом предоставить пользователям единый внешний адрес — с HTTPS и авторизацией.

Шаг 1. Подготовка приложения

Для примера предположим, что у вас запущен веб-сервис на локальном порту 3000. Убедитесь, что приложение доступно по адресу:

curl http://localhost:3000

Если вы видите ответ сервера — значит, он готов к подключению через прокси.

Шаг 2. Создание прокси-конфигурации

Создайте новый конфигурационный файл для домена в /etc/nginx/sites-available/:

sudo nano /etc/nginx/sites-available/myproject.conf

Впишите следующее:

server {
    listen 80;
    server_name myproject.ru www.myproject.ru;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Замените myproject.ru на ваш реальный домен и при необходимости порт 3000 — на тот, где запущено ваше приложение.

Шаг 3. Активация конфигурации

Создайте символическую ссылку в sites-enabled:

sudo ln -s /etc/nginx/sites-available/myproject.conf /etc/nginx/sites-enabled/

Проверьте конфигурацию:

sudo nginx -t

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

sudo systemctl reload nginx

Теперь при переходе на домен myproject.ru Nginx будет проксировать запросы к внутреннему приложению на localhost:3000.

Шаг 4. Настройка HTTPS (по желанию)

Чтобы защитить соединение, можно быстро подключить бесплатный SSL-сертификат с помощью Certbot. Если у вас ещё не установлен Certbot, выполните:

sudo apt install certbot python3-certbot-nginx

А затем запустите автоматическую настройку:

sudo certbot --nginx

Следуйте инструкциям: Certbot добавит блок listen 443 ssl, сгенерирует сертификат и настроит безопасное соединение.

Типовые ошибки и как их избежать

Даже при корректной установке Nginx могут возникнуть ошибки в работе, особенно при настройке конфигурационных файлов, виртуальных хостов и обратного прокси. Ниже — список распространённых проблем и способы их устранения.

Nginx не запускается. Причина: ошибка в синтаксисе конфигурации.

Проверьте файл перед перезапуском:

sudo nginx -t

Если в выводе указана ошибка, исправьте путь, блок server или директиву, а затем перезапустите:

sudo systemctl reload nginx

403 Forbidden. Причина: у Nginx нет прав на доступ к файлам сайта.

Убедитесь, что у директории и файлов есть права на чтение для пользователя, от которого запущен Nginx (обычно это www-data):

sudo chown -R www-data:www-data /var/www/your_site
sudo chmod -R 755 /var/www/your_site

Также проверьте правильность пути в директиве root.

502 Bad Gateway. Причина: Nginx не может достучаться до внутреннего приложения (например, на порту 3000 или до PHP-FPM).

Убедитесь, что внутренний сервис запущен и работает на нужном порту:

curl http://localhost:3000

Если используется PHP, проверьте:

sudo systemctl status php8.1-fpm

Также проверьте корректность значения proxy_pass или fastcgi_pass в конфигурации Nginx.

404 Not Found. Причина: файл не найден по указанному пути.

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

Ошибка SSL или HTTPS не работает. Причина: не настроен сертификат или неправильно указан путь к файлам ключей.

Если вы используете Certbot, проверьте, что сертификат выдан:

sudo certbot certificates

Для ручной настройки удостоверьтесь, что пути к ssl_certificate и ssl_certificate_key верны и файлы существуют. Перезапустите службу:

sudo systemctl reload nginx

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

sudo tail -f /var/log/nginx/error.log

Они помогут выявить причину сбоя и быстро её устранить.

Процесс установки Nginx на Ubuntu завершён. В результате описанных здесь действий сервер уже готов к следующему шагу — подключению SSL-сертификата и настройке переадресации с HTTP на HTTPS.

Заключение

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

Мы также разобрали, как защитить доступ с помощью файрвола, подключить SSL-сертификат и избежать типичных ошибок, возникающих при запуске. Всё это — основа стабильной работы любого проекта, особенно если вы разворачиваете его на удалённом VPS.

Следующий логичный шаг — автоматизация рутинных задач (например, с помощью скриптов), настройка мониторинга ресурсов и бекапов. Но даже на текущем этапе у вас в руках полноценная платформа, готовая к приёму трафика и размещению современных сайтов и сервисов.

Если вы используете VPS от AdminVPS, все описанные действия поддерживаются на уровне инфраструктуры, а команда технической поддержки готова прийти на помощь в любое время суток. Надёжный сервер — залог спокойной работы и уверенности в завтрашнем дне.

Читайте в блоге:

  • Шесть способов узнать версию Nginx
  • Как перезагрузить сервер
  • 13 причин превышения допустимой нагрузки на сайт
  • Команда «пинг»: для чего нужна и как пингуют серверы

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Прихожая вика 3 инструкция по сборке
  • Аквалор для промывания носа взрослым при заложенности носа инструкция
  • Умный насос xiaomi инструкция
  • Хофитол инструкция по применению до или после еды
  • Циклоферон в ампулах инструкция уколы