Установка Apache в качестве бэкенд
На данный момент, самая новая версия программы 2.4 поэтому и будет рассмотрена настройка apache 2.4.
Обновляем список пакетов сервера:
sudo apt update
Обновляем пакеты сервера:
sudo apt upgrade
Установка веб сервера Apache:
sudo apt install apache2
Добавляем веб сервер Apache в автозагрузку:
sudo systemctl enable apache2
Управление веб сервером Apache
Проверка версии веб сервера Apache:
sudo apache2 -v
Запустить службу Apache:
sudo systemctl start apache2
Остановить службу Apache:
sudo systemctl stop apache2
Перезапустить службу Apache:
sudo systemctl restart apache2
Статус службу Apache:
sudo systemctl status apache2
Проверка на синтаксические ошибки Apache:
sudo apache2ctl -t
Настройка файрвола
Брандмауэр нужен для защиты системы от компьютерных атак или для изоляции самой системы, если она была поражена вредоносным программным обеспечением.
В Ubuntu используется оболочка под названием UFW или Uncomplicated FireWall. В этой статье мы разберём, как выполняется настройка UFW Ubuntu.
Проверка состояния файрвола:
sudo ufw status
Включение файрвола:
sudo ufw enable
Отключение файрвола:
sudo ufw disable
Также, если вы что-то испортили в настройках и не знаете как исправить, можно использовать команду для сброса настроек до состояния по умолчанию:
sudo ufw reset
Обратите внимание, что если вы работаете по SSH, или запущен Apache то перед тем, как включать брандмауэр, нужно добавить правило разрешающее работу, иначе не будет доступа к серверу или сайту.
Чтобы создать разрешающее правило, используется команда allow. Вместо allow могут использоваться и запрещающие правила ufw - deny и reject.
Посмотреть доступные имена приложений:
sudo ufw app list
Вы увидите список приложений пользователей:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Как видно из этого вывода, для Apache доступно три профиля:
Apache
: этот профиль открывает порт 80 (обычный, не шифрованный веб-трафик).Apache Full
: этот профиль открывает порты 80 (обычный, не шифрованный веб-трафик) и 443 (трафик шифруется с помощью TLS/SSL).Apache Secure
: этот профиль открывает только порт 443 (трафик шифруется с помощью TLS/SSL).
Рекомендуется включать самый ограниченный профиль, который будет позволять входящий трафик. Поскольку мы не настраивали 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)
Модули Apache
Как я уже говорил, Apache
- модульная программа, ее функциональность можно расширять с помощью модулей. Все доступные модули загрузчики и конфигурационные файлы модулей находятся в папке /etc/apache/mods-available
. А активированные в /etc/apache/mods-enable
.
Но вам необязательно анализировать содержимое этих папок. Настройка Apache 2.4 с помощью добавления модулей выполняется с помощью специальных команд.
Посмотреть все запущенные модули можно командой:
sudo apache2ctl -M
Включить модуль можно командой:
sudo a2enmod имя_модуля
Отключить модуль можно командой:
sudo a2dismod имя_модуля
После включения или отключения модулей нужно перезагрузить apache
:
sudo systemctl restart apache2
Во время выполнения одной из этих команд создается или удаляется символическая ссылка на файл модуля с расширением load
в директории mods-available
. Можете посмотреть содержимое этого файла, там будет только одна строка:
sudo nano /etc/apache2/mods-available/deflate.load
Это к тому, что активировать модуль можно было просто добавив эту строчку в файл apache2.conf
. Но принято делать именно так, чтобы избежать путаницы.
Настройки модулей находятся в той же папке, только в файле с расширением .conf
вместо load
. Например, посмотрим настройки того же модуля для сжатия deflate
:
sudo nano /etc/apache2/mods-available/deflate.conf
Файлы в папке conf-available
, это такие же модули, только они установлены отдельно от apache
, это может быть конфигурационные файлы для включения модуля php или любого другого языка программирования. Здесь работает все точно так же, только команды для включения и отключения этих модулей немного другие:
sudo a2enconf имя_модуля
sudo a2disconf имя модуля
Серверные логи
По умолчанию каждый запрос к вашему веб-серверу записывается в этом файле, если только Apache не настроен на другое поведение:
/var/log/apache2/access.log
По умолчанию все ошибки записываются в этот файл. Директива LogLevel в конфигурации Apache определяет, насколько детальными должны быть записи об ошибках:
/var/log/apache2/error.log
Настройка сервера Apache через htaccess
Файлы .htaccess
позволяют настраивать веб-сервер на Ubuntu для поведения в определенной директории. Все инструкции, указанные в этом файле выполняются как бы они были обвернуты в тег <directory адрес_папки>
если бы находились в основном файле.
Важно заметить, что для того, чтобы сервер читал инструкции из .htaccess
настройки для этой папки в основном файле или файле виртуального хоста не должны содержать AllowOverride None
, чтобы могли работать все настройки нужно AllowOverride All
.
А в остальном, здесь может выполняться любая настройка сервера apache
, от включения модулей, до обычного изменения доступа к папке. Поскольку все параметры мы уже рассмотрели просто приведем пару примеров:
Order Deny,Allow
Deny from all
Запрещает всем доступ к этой папке, важно применить, для папок с конфигурацией. Чаще всего .htaccess
используется для работы с модулем mod_rewrite, который позволяет изменять запросы на лету:
RewriteEngine on
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]
Подробнее про файл .htaccess
можно почитать тут.
Важные файлы и директории Apache
Как вы заметили есть папки conf
, mods
и site
. У папок есть приставки available
и enabled
. При включении модуля или хоста создается символическая ссылка из папки available
(доступно) в папку enable
(включено). Поэтому настройки лучше выполнять именно в папках available
.
/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