HTTP сервер Apache является самым широко используемым веб-сервером в мире. Он предоставляет множество удобных функций включая динамически загружаемые модули, широкую поддержку мультимедиа, и интеграцию с другим популярным программным обеспечением.
В этом руководстве мы расскажем, как установить веб-сервер Apache на ваш сервер с Ubuntu 18.04.
Перед тем, как начать следовать шагам, описанным в этом руководстве, вам необходимо настроить отдельный, не-рутовый (non-root) профиль пользователя на вашем сервере с Ubuntu 18.04. Кроме того, вам потребуется настроить базовый файрвол для блокирования всех портов, кроме необходимых для работы Apache. Вы можете ознакомиться с процессом настройки аккаунта пользователя и настройкой файрвола на вашем сервере следуя шагам нашего руководства по первичной настройке сервера на Ubuntu 18.04.
После завершения создания аккаунта войдите на ваш сервер с помощью вновь созданного пользователя.
Apache доступен из дефолтных репозиториев Ubuntu, что позволяет устанавливать его с помощью средств управления пакетами.
Давайте начнём с обновления локального индекса пакетов:
- sudo apt update
Далее установим пакет apache2
:
- sudo apt install apache2
После подтверждения установки apt
установит Apache и все необходимые зависимости.
Перед тестированием установки Apache необходимо изменить настройки файрвола для разрешения доступа извне к дефолным веб-портам. Если вы следовали инструкциям по настройке файрвола из руководства по первичной настройке сервера, ваш файрвол UFW уже должен быть настроен таким образом, чтобы ограничивать доступ к вашему серверу.
В процессе установки Apache регистрирует себя в конфигурации UFW, создавая несколько профилей приложения, которые могут быть использованы для включения и отключения доступа к Apache через файрвол.
Выведем профили приложений ufw
следующей командой:
- sudo ufw app list
Вы увидите список приложений пользователей:
ВыводAvailable applications:
Apache
Apache Full
Apache Secure
OpenSSH
Как видно из этого вывода, для Apache доступно три профиля:
Рекомендуется включать самый ограниченный профиль, который будет позволять входящий трафик. Поскольку мы не настраивали SSL для нашего сервера в этом руководстве, нам потребуется включить только порт 80:
- sudo ufw allow 'Apache'
Вы можете проверить внесённые изменения командой:
- sudo ufw status
В выводе вы должны видеть, что HTTP трафик разрешён:
ВыводStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
Как видно из этого вывода профиль был включен для разрешения доступа к веб-серверу.
После завершения процесса установки Ubuntu 18.04 запустит Apache. Веб-сервер уже должен быть запущен.
Проверим в системе инициализации systemd
, что сервис работает, следующей командой:
- sudo systemctl status apache2
Вывод● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Tue 2018-04-24 20:14:39 UTC; 9min ago
Main PID: 2583 (apache2)
Tasks: 55 (limit: 1153)
CGroup: /system.slice/apache2.service
├─2583 /usr/sbin/apache2 -k start
├─2585 /usr/sbin/apache2 -k start
└─2586 /usr/sbin/apache2 -k start
Как видно из представленного вывода, сервис выглядит работающим корректно. Тем не менее, самый надёжный способ проверить работу Apache - это запросить веб-страницу.
Вы можете запросить дефолтную веб-страницу Apache с помощью IP адреса вашего сервера. Если вы не знаете IP адрес вашего сервера, вы можете найти его несколькими способами с помощью командной строки.
Введите следующую команду:
- hostname -I
Она вернёт несколько адресов, разделённых пробелами. Вы можете попробовать каждый из них в вашем веб-браузере.
Другой способ заключается в использовании команды, которая позволяет увидеть ваш IP адрес из другого места в сети Интернет:
- curl -4 icanhazip.com
После того, как вы найдёте IP адрес вашего сервера, введите его в свой веб-браузер:
- http://IP_адрес_вашего_сервера
Вы должны увидеть дефолтную страницу Apache для Ubuntu 18.04:
Эта страница свидетельствует о том, что Apache работает корректно. На этой странице также представлена базовая информация о важных файлах и директориях Apache.
Теперь, когда у вас есть работающий веб-сервер, рассмотрим некоторые базовые команды для управления им.
Для остановки себ-сервера наберите:
- sudo systemctl stop apache2
Для запуска остановленного сервера наберите:
- sudo systemctl start apache2
Для перезапуска сервиса наберите:
- sudo systemctl restart apache2
Если вы вносите какие-то изменения в конфигурацию, Apache зачастую может перезагружаться без потери открытых соединений. Для этого наберите команду:
- sudo systemctl reload apache2
По умолчанию Apache сконфигурирован на запуск при загрузке сервера. Вы можете отключить такое поведение следующей командой:
- sudo systemctl disable apache2
Для повторного включения сервиса при загрузке сервера наберите:
- sudo systemctl enable apache2
Теперь Apache должен опять запускаться автоматически при загрузке сервера.
При использовании веб-сервера Apache вы можете использовать виртуальные хосты (аналог серверных блоков в Nginx) для хранения конфигурационных настроек разных сайтов. Это позволяет иметь более одного сайта на одном сервере. В этом руководстве мы будем для примера использовать доменное имя example.com, но вам следует заменить его вашим собственным доменным именем. Для того, чтобы узнать больше о настройке доменных имён в DigitalOcean, рекомендуем ознакомиться с нашим Введением в DNS DigitalOcean.
Apache для Ubuntu 18.04 уже имеет один виртуальный хост, включенный по умолчанию, который настроен на отдачу документов из директории /var/www/html
. Хотя это и удобно для обслуживания одного сайта, это становится неудобным, когда сайтов несколько. Вместо того, чтобы изменять /var/www/html
, давайте создадим новую структуру директорий внутри /var/www
для нашего сайта example.com, оставив /var/www/html
для показа дефолтной страницы пользователям в случаях, когда клиентский запрос не совпадает ни с одним из настроенных доменных имён.
Создайте директорию для example.com используя флаг -p
для создания необходимых родительских директорий:
- sudo mkdir -p /var/www/example.com/html
Далее настройте владельца директории с помощью переменной окружения $USER
:
- sudo chown -R $USER:$USER /var/www/example.com/html
Теперь права должны для корневой директории быть настроены правильным образом при условии, что вы не меняли своё значение umask
. На всякий случай мы можем удостовериться в этом командой:
- sudo chmod -R 755 /var/www/example.com
Далее создадим страницу index.html
в nano
или любом другом текстовом редакторе:
- nano /var/www/example.com/html/index.html
Добавим в файл следующий HTML:
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com server block is working!</h1>
</body>
</html>
Сохраните и закройте файл.
Для того, чтобы Apache мог отдавать этот контент, нам необходимо настроить виртуальный хост с корректными настройками. Вместо того, чтобы редактировать существующий файл виртуального хоста /etc/apache2/sites-available/000-default.conf
, создадим новый файл для нашего сайта - /etc/apache2/sites-available/example.com.conf
:
- sudo nano /etc/apache2/sites-available/example.com.conf
Скопируйте следующий текст настроек виртуального хоста в созданный файл:
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Обратите внимание, что мы обновили DocumentRoot
на адрес нашей новой директории, и ServerAdmin
на адрес электронной почты, доступный для администратора example.com. Мы также добавили две директивы: ServerName
, которая устанавливает базовое доменное имя, которое должно использоваться для хоста, а также ServerAlias
, которая определяет другие имена, которые должны использоваться для отображения хоста так же, как и базовое доменное имя.
Сохраните и закройте файл после внесения изменений.
Теперь активируем профиль сайта с помощью утилиты a2ensite
:
- sudo a2ensite example.com.conf
Деактивируем дефолтный сайт, определённый в 000-default.conf
:
- sudo a2dissite 000-default.conf
Далее проверим наши настройки на наличие ошибок:
- sudo apache2ctl configtest
Вы должны увидеть следующий вывод:
ВыводSyntax OK
Перезапустите Apache для применения внесённых изменений:
- sudo systemctl restart apache2
Теперь Apache должен работать с вашим доменным именем. Вы можете проверить это введя http://example.com
в вашем браузере, где в результате вы должны увидеть что-то в этом роде:
Теперь, когда вы знаете, как управлять сервисом Apache, вам стоит ознакомиться с важными файлами и директориями Apache.
/var/www/html
: фактический веб-контент, который по умолчанию состоит только из дефолтной страницы Apache, которую мы видели ранее, хранится в директории /var/www/html
. Это может быть изменено в конфигурационных файлах Apache./etc/apache2
: это конфигурационная директория Apache. Все файлы конфигурации Apache находятся здесь./etc/apache2/apache2.conf
: главный конфигурационный файл Apache. Изменения в этом файле влияют на глобальную конфигурацию Apache. Этот файл отвечает за загрузку многих других файлов из конфигурационной директории./etc/apache2/ports.conf
: этот файл определяет порты, которые Apache будет слушать. По умолчанию Apache слушает порт 80, а также порт 443 при условии, что модуль для работы с SSL включен./etc/apache2/sites-available/
: в этой директории хранятся файлы виртуальных хостов. Apache не использует файлы из этой директории, если ссылки на них нет в директории sites-enabled
. Обычно настройка всех файлов виртуальных хостов осуществляется в этой директории, а активация хоста происходит путём создания ссылки в другой директории командой a2ensite
./etc/apache2/sites-enabled/
: директория, в которой хранятся активированные виртуальные хосты. Обычно это делается путём создания ссылки на файл конфигурации хоста из директории sites-available
с помощью команды a2ensite
. Apache читает конфигурационный файлы и ссылки из этой директории при запуске или перезапуске./etc/apache2/conf-available/
, /etc/apache2/conf-enabled/
: эти директории связаны друг с другом так же, как и sites-available
и sites-enabled
связаны друг с другом, но используются для хранения фрагментов конфигурации, которые не принадлежат виртуальным хостам. Файлы в директории conf-available
могут быть включены командой a2enconf
и выключены командой a2disconf
./etc/apache2/mods-available/
, /etc/apache2/mods-enabled/
: эти директории содержат, соответственно, доступные и активные модули. Файлы, оканчивающиеся на .load
, содержат фрагменты для загрузки конкретных модулей, а файлы, оканчивающиеся на .conf
, содержат настройки этих модулей. Модули можно активировать командой a2enmod
и деактивировать командой a2dismod
./var/log/apache2/access.log
: по умолчанию каждый запрос к вашему веб-серверу записывается в этом файле, если только Apache не настроен на другое поведение./var/log/apache2/error.log
: по умолчанию все ошибки записываются в этот файл. Директива LogLevel
в конфигурации Apache определяет, насколько детальными должны быть записи об ошибках.Теперь, когда ваш веб-сервер установлен, у вас есть множество вариантов того, что делать дальше. Если вы хотите построить более полный стек приложений, вы можете ознакомиться с нашим руководством по установке и настройке стека LAMP на Ubuntu 18.04.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!