Инструменты пользователя

Инструменты сайта


software:linux_server:ubuntu_server_install_apache

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
software:linux_server:ubuntu_server_install_apache [2024/02/28 16:01] – создано vladpolskiysoftware:linux_server:ubuntu_server_install_apache [2024/03/01 12:05] (текущий) – [Ссылки и Примечания] vladpolskiy
Строка 1: Строка 1:
-ecn+======Установка Apache HTTP Server в Ubuntu 22.04====== 
 + 
 +=====Введение===== 
 + 
 +[[software:linux_server:apache_http_server|Apache HTTP Server]] является наиболее широко используемым веб-сервером в мире. Он предоставляет множество мощных функций, включая динамически загружаемые модули, надежную поддержку мультимедиа и обширную интеграцию с другим популярным программным обеспечением. 
 + 
 +В этом руководстве мы проследим, как установить Apache HTTP Server на сервер Ubuntu 22.04. 
 + 
 +Подключимся к нашему серверу через программу PuTTY, введем логин указанный при установке нашего сервера и пароль. 
 + 
 +{{:software:linux_server:apache_http_server_2.png?|}} 
 + 
 +=====Предварительные условия===== 
 + 
 +Прежде чем приступить к работе с этим руководством, на вашем сервере должен быть настроен обычный пользователь без полномочий root с привилегиями sudo. Кроме того, вам необходимо включить базовый брандмауэр для блокировки несущественных портов. Вы можете узнать, как настроить учетную запись обычного пользователя и настроить брандмауэр для вашего сервера, следуя нашему руководству по начальной настройке сервера для Ubuntu 20.04 . 
 + 
 +Если у вас есть доступная учетная запись, для начала войдите в систему как пользователь без полномочий root. 
 + 
 +=====Установка Apache===== 
 + 
 +Apache доступен в репозиториях программного обеспечения Ubuntu по умолчанию, что позволяет установить его с помощью обычных инструментов управления пакетами. 
 + 
 +Начнем с обновления локального индекса пакетов, чтобы отразить последние изменения исходного кода: 
 + 
 +<code> 
 +sudo apt update 
 +</code> 
 + 
 +{{:software:linux_server:apache_http_server_3.png?|}} 
 + 
 +Введем повторно пароль и дождемся окончания обновления индекса пакетов. 
 + 
 +{{:software:linux_server:apache_http_server_4.png?|}} 
 + 
 +Установим непосредственно сам пакет Apache HTTP Server  
 + 
 +<code> 
 +sudo apt install apache2 
 +</code> 
 + 
 +{{:software:linux_server:apache_http_server_5.png?|}} 
 + 
 +После подтверждения установки apt install  
 + 
 +<code> 
 +Do you want to continue? [Y/n] **Y** 
 +</code> 
 + 
 +будет установлен Apache и все необходимые зависимости. 
 + 
 +{{:software:linux_server:apache_http_server_6.png?|}} 
 + 
 +=====Настройка брандмауэра===== 
 + 
 +Перед тестированием Apache необходимо изменить настройки брандмауэра, чтобы разрешить внешний доступ к веб-портам по умолчанию. Предполагая, что вы следовали инструкциям, указанным в предварительных требованиях, у вас должен быть настроен брандмауэр UFW, ограничивающий доступ к вашему серверу. 
 + 
 +Во время установки Apache регистрируется в UFW, чтобы предоставить несколько профилей приложений, которые можно использовать для включения или отключения доступа к Apache через брандмауэр. 
 + 
 +Перечислите **ufw** профили приложений, набрав: 
 + 
 +<code> 
 +sudo ufw app list 
 +</code> 
 + 
 +{{:software:linux_server:apache_http_server_7.png?|}} 
 + 
 +Как видно из результатов, для Apache доступны три профиля: 
 + 
 +  * Apache : этот профиль открывает только порт 80 (обычный незашифрованный веб-трафик). 
 +  * Apache Full : этот профиль открывает как порт 80 (обычный незашифрованный веб-трафик), так и порт 443 (зашифрованный трафик TLS/SSL). 
 +  * Apache Secure : этот профиль открывает только порт 443 (трафик с шифрованием TLS/SSL). 
 + 
 +Рекомендуется включить наиболее ограничительный профиль, который по-прежнему будет разрешать настроенный вами трафик. Поскольку в этом руководстве мы еще не настроили SSL для нашего сервера, нам нужно будет разрешить трафик только через порт 80: 
 + 
 +<code> 
 +sudo ufw allow 'Apache' 
 +</code> 
 + 
 +{{:software:linux_server:apache_http_server_8.png?|}} 
 + 
 +Правила обновлены и вы можете проверить изменение, набрав: 
 + 
 +<code> 
 +sudo ufw status 
 +</code> 
 + 
 +В результате, при включенном брандмауэре, будет предоставлен список разрешенного HTTP-трафика с уведомлением запись "Status: active" и мы смело переходим к главе **Проверка вашего веб-сервера** 
 + 
 +{{:software:linux_server:apache_http_server_10.png?|}} 
 + 
 +В случае же отключенного брандмауэра, мы получим запись "Status: inactive"  
 + 
 +{{:software:linux_server:apache_http_server_9_1.png?|}} 
 + 
 +====Включение брандмауэра UFW в Ubuntu==== 
 + 
 +Как только мы обнаружим, что брандмауэр не активен, проверим, добавлены ли к нему какие-либо правила. Эта команда будет работать, даже если брандмауэр неактивен. 
 + 
 +<code> 
 +sudo ufw show added 
 +</code> 
 + 
 +{{:software:linux_server:apache_http_server_9_2.png?|}} 
 + 
 +Проверим правила и убедимся, что если мы включим брандмауэр, с нашим сервером все будет в порядке. А затем включим брандмауэр с подтверждением наших действий клавишей **Y**. 
 + 
 +<code> 
 +sudo ufw enable 
 +</code> 
 + 
 +{{:software:linux_server:apache_http_server_9_3.png?|}} 
 + 
 +Снова проверим статус брандмауэра UFW ранее использованной командой: 
 + 
 +<code> 
 +sudo ufw status 
 +</code> 
 + 
 +{{:software:linux_server:apache_http_server_9_4.png?|}} 
 + 
 +Брандмауэр успешно активирован. 
 + 
 +[[software:linux_server:ubuntu_server_setting_firewall_ufw|См. подробную статью о настройке брандмауэра через UFW]] 
 +=====Проверка вашего веб-сервера===== 
 + 
 +Наш веб-сервер уже должен быть установлен и запущен. 
 +Проверим **systemd** систему инициализации, чтобы убедиться, что служба работает, набрав: 
 + 
 +<code> 
 +sudo systemctl status apache2 
 +</code> 
 + 
 +{{:software:linux_server:apache_http_server_11.png?|}} 
 + 
 +Как подтверждает этот вывод, служба запущена успешно. Однако лучший способ проверить это — запросить страницу у Apache. 
 + 
 +Вы можете получить доступ к целевой странице Apache по умолчанию, чтобы убедиться, что программное обеспечение работает правильно через ваш IP-адрес. Если вы не знаете IP-адрес вашего сервера, вы можете получить его несколькими способами из командной строки. 
 + 
 +Попробуйте ввести это в командной строке вашего сервера: 
 + 
 +<code> 
 +hostname -I 
 +</code> 
 + 
 +{{:software:linux_server:apache_http_server_12.png?|}} 
 + 
 +Другой вариант — использовать инструмент Icanhazip, который должен предоставить вам ваш общедоступный IP-адрес, прочитанный из другого места в Интернете: 
 + 
 +<code> 
 +curl -4 icanhazip.com 
 +</code> 
 + 
 +{{:software:linux_server:apache_http_server_13.png?|}} 
 + 
 +Когда у вас есть IP-адрес вашего сервера, введите его в адресную строку браузера (у меня это 192.168.1.145): 
 + 
 +<code> 
 +http://192.168.1.145 
 +</code> 
 + 
 +Вы должны увидеть веб-страницу Apache Ubuntu 22.04 по умолчанию: 
 + 
 +{{:software:linux_server:apache_http_server_14.png?|}} 
 + 
 +Эта страница указывает на то, что Apache работает правильно. Он также включает некоторую базовую информацию о важных файлах Apache и расположении каталогов. 
 + 
 +=====Управление процессом Apache===== 
 + 
 +Теперь, когда ваш веб-сервер настроен и работает, давайте рассмотрим некоторые основные команды управления с использованием **systemctl**. 
 + 
 +Чтобы остановить ваш веб-сервер, введите: 
 + 
 +<code> 
 +sudo systemctl stop apache2 
 +</code> 
 + 
 +Чтобы запустить веб-сервер, когда он остановлен, введите: 
 + 
 +<code> 
 +sudo systemctl start apache2 
 +</code> 
 + 
 +Чтобы перезапустить веб-сервер, когда это необходимо, введите: 
 + 
 +<code> 
 +sudo systemctl restart apache2 
 +</code> 
 + 
 +Если вы просто вносите изменения в конфигурацию, Apache часто может перезагрузиться, не разрывая соединения. Для этого используйте эту команду: 
 + 
 +<code> 
 +sudo systemctl reload apache2 
 +</code> 
 + 
 +По умолчанию Apache настроен на автоматический запуск при загрузке сервера. Если это не то, что вам нужно, отключите это поведение, набрав: 
 + 
 +<code> 
 +sudo systemctl disable apache2 
 +</code> 
 + 
 +Чтобы снова включить запуск службы при загрузке, введите: 
 + 
 +<code> 
 +sudo systemctl enable apache2 
 +</code> 
 + 
 +Теперь Apache должен запускаться автоматически при повторной загрузке сервера. 
 + 
 +=====Настройка виртуальных хостов (рекомендуется)===== 
 + 
 +При использовании веб-сервера Apache вы можете использовать **виртуальные хосты** (аналогично серверным блокам в Nginx) для инкапсуляции деталей конфигурации и размещения более одного домена на одном сервере. Мы создадим домен под названием **your_domain**, но вам следует **заменить его своим собственным доменным именем**. 
 + 
 +В Apache в Ubuntu 22.04 по умолчанию включен один серверный блок, который настроен для обслуживания документов из **/var/www/html** каталога. Хотя это хорошо работает для одного сайта, это может стать громоздким, если вы размещаете несколько сайтов. Вместо изменения **/var/www/html**, давайте создадим структуру каталогов **/var/www** для сайта **your_domain**, оставив ее **/var/www/html** в качестве каталога по умолчанию, который будет обслуживаться, если запрос клиента не соответствует никаким другим сайтам. 
 + 
 +Создайте каталог для your_domain следующим образом: 
 + 
 +<code> 
 +sudo mkdir /var/www/your_domain 
 +</code> 
 + 
 + 
 + 
 +Затем назначьте владельца каталога с помощью **$USER** переменной среды: 
 + 
 +<code> 
 +sudo chown -R $USER:$USER /var/www/your_domain 
 +</code> 
 + 
 +Разрешения ваших веб-корней должны быть правильными, если вы не изменили значение umask, которое устанавливает разрешения для файлов по умолчанию. Чтобы убедиться, что ваши разрешения верны и разрешить владельцу читать, записывать и выполнять файлы, одновременно предоставляя разрешения только на чтение и выполнение группам и другим лицам, вы можете ввести следующую команду: 
 + 
 +<code> 
 +sudo chmod -R 755 /var/www/your_domain 
 +</code> 
 + 
 +{{:software:linux_server:apache_http_server_15.png?|}} 
 + 
 +Затем создайте образец index.html страницы, используя nano или ваш любимый редактор: 
 + 
 +<code> 
 +sudo nano /var/www/your_domain/index.html 
 +</code> 
 + 
 +Внутри добавьте следующий образец HTML: 
 + 
 +<file html index.html> 
 +<html> 
 +    <head> 
 +        <title>Welcome to Your_domain!</title> 
 +    </head> 
 +    <body> 
 +        <h1>Success!  The your_domain virtual host is working!</h1> 
 +    </body> 
 +</html> 
 +</file> 
 + 
 +{{:software:linux_server:apache_http_server_16.png?|}} 
 + 
 +Сохраните CTRL+O->INTER и закройте CTRL+X файл, когда закончите. 
 + 
 +{{:software:linux_server:apache_http_server_17.png?|}} 
 + 
 +Чтобы Apache мог обслуживать этот контент, необходимо создать файл виртуального хоста с правильными директивами. Вместо того, чтобы изменять файл конфигурации по умолчанию, расположенный по **/etc/apache2/sites-available/000-default.conf** адресу, давайте создадим новый по адресу :**/etc/apache2/sites-available/your_domain.conf** 
 + 
 +<code> 
 +sudo nano /etc/apache2/sites-available/your_domain.conf 
 +</code> 
 + 
 +Вставьте следующий блок конфигурации, который аналогичен блоку по умолчанию, но обновлен для нашего нового каталога и имени домена: 
 + 
 +<file conf your_domain.conf> 
 +<VirtualHost *:80> 
 +    ServerAdmin webmaster@localhost 
 +    ServerName your_domain 
 +    ServerAlias www.your_domain 
 +    DocumentRoot /var/www/your_domain 
 +    ErrorLog ${APACHE_LOG_DIR}/error.log 
 +    CustomLog ${APACHE_LOG_DIR}/access.log combined 
 +</VirtualHost> 
 +</file> 
 + 
 +Обратите внимание, что мы обновили **DocumentRoot** наш новый каталог и **ServerAdmin** адрес электронной почты, к которому может получить доступ администратор сайта your_domain . Мы также добавили две директивы: **ServerName**, которая устанавливает базовый домен, который должен соответствовать этому определению виртуального хоста, и **ServerAlias**, которая определяет дополнительные имена, которые должны совпадать, как если бы они были базовым именем. 
 +{{:software:linux_server:apache_http_server_18.png?|}} 
 + 
 +Сохраните CTRL+O->INTER и закройте CTRL+X файл, когда закончите. 
 + 
 +{{:software:linux_server:apache_http_server_19.png?|}} 
 + 
 +Давайте активируем файл с помощью a2ensite инструмента: 
 + 
 +<code> 
 +sudo a2ensite your_domain.conf 
 +</code> 
 + 
 +{{:software:linux_server:apache_http_server_20.png?|}} 
 + 
 +Отключите сайт по умолчанию, определенный в 000-default.conf: 
 + 
 +<code> 
 +sudo a2dissite 000-default.conf 
 +</code> 
 + 
 +{{:software:linux_server:apache_http_server_21.png?|}} 
 + 
 +Далее проверим наличие ошибок конфигурации: 
 + 
 +<code> 
 +sudo apache2ctl configtest 
 +</code> 
 + 
 +Вы должны получить следующий вывод: 
 + 
 +{{:software:linux_server:apache_http_server_22.png?|}} 
 + 
 +Перезапустите Apache, чтобы изменения вступили в силу: 
 + 
 +<code> 
 +sudo systemctl restart apache2 
 +</code> 
 + 
 +Теперь Apache должен обслуживать ваше доменное имя. Вы можете проверить это, перейдя к , где вы должны увидеть что-то вроде этого: **http://your_domain (http://192.168.1.145)** 
 + 
 +{{:software:linux_server:apache_http_server_23.png?|Пример виртуального хоста Apache}} 
 + 
 +====Подключение и отключение виртуальных хостов==== 
 + 
 +Для того что-б подключить/отключить виртуальный хост который прописан в файле /etc/apache2/sites-available/mercurial нужно выполнить: 
 + 
 +Для подключения 
 + 
 +<code> 
 +sudo a2ensite mercurial 
 +</code> 
 + 
 +Для отключения 
 + 
 +<code> 
 +sudo a2dissite mercurial 
 +</code> 
 +=====Знакомство с важными файлами и каталогами 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 определяет, насколько подробно будут содержаться журналы ошибок. 
 + 
 +====Заключение==== 
 + 
 +Теперь, когда у вас установлен веб-сервер, у вас есть множество вариантов типа контента, который вы можете обслуживать, и технологий, которые вы можете использовать для создания более богатого опыта. 
 + 
 +=====Ссылки и Примечания===== 
 +  * [[software:linux_server:ubuntu_server_setting_firewall_ufw|См. подробную статью о настройке брандмауэра через UFW]] 
 +  * [[https://learnubuntu.com/ufw-status-inactive/|Исправьте «sudo ufw status 
 +Status: inactive» в Ubuntu]] 
 +  * [[https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-20-04|Первоначальная настройка сервера с Ubuntu 20.04]] 
 +  * [[https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04|Как установить веб-сервер Apache в Ubuntu 20.04]]
software/linux_server/ubuntu_server_install_apache.1709125274.txt.gz · Последнее изменение: vladpolskiy