Как найти apache в linux

Apache – это популярнейший свободный веб-сервер. Состоянием на 2020 год он используется на 33% всех сайтов интернета, а это приблизительно 304 миллиарда сайтов. Этот веб-сервер был разработан в далеком 1995, как замена для популярного того сервера NCSA и исправил множество его проблем. Ходят слухи что его имя походит от a patchy, заплатка, так как он исправлял ошибки NCSA. Сейчас же, это кроссплатформенная программа, поддерживающая Windows, Linux и MacOS и обеспечивающая достаточную гибкость, настраиваемость и функциональность. Программа имеет модульную структуру, что позволяет расширять ее функциональность почти до бесконечности с помощью модулей.

Установить Apache в Linux можно с помощью нескольких команд, но программа предоставляет очень большое количество настроек, которые можно изменить, а также модулей, после включения которых она будет работать лучше. В этой статье будет рассмотрена установка и настройка Apache, в качестве основной системы мы будем использовать Ubuntu, но вы можете повторить эти действия в любом другом дистрибутиве. Будет рассмотрена не только установка самой программы, но и способы ее настройки, настройка виртуальных хостов apache, а также самые полезные модули.

На данный момент, самая новая версия программы 2.4 поэтому и будет рассмотрена настройка apache 2.4. Как я уже говорил, в Linux программа устанавливается буквально в пару команд. Для установки в Ubuntu сначала обновим систему до самой новой версии:

sudo apt update
sudo apt upgrade

Затем установка apache2:

sudo apt install apache2

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

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

sudo systemctl enable apache2

Настройка Apache

Уже прошло то время, когда конфигурация Apache хранилась в одном файле. Но оно и правильно, когда все распределено по своим директориям, в конфигурационных файлах легче ориентироваться.

Все настройки содержатся в папке /etc/apache/:

  • Файл /etc/apache2/apache2.conf отвечает за основные настройки
  • /etc/apache2/conf-available/* – дополнительные настройки веб-сервера
  • /etc/apache2/mods-available/* – настройки модулей
  • /etc/apache2/sites-available/* – настойки виртуальных хостов
  • /etc/apache2/ports.conf – порты, на которых работает apache
  • /etc/apache2/envvars

Как вы заметили есть две папки для conf, mods и site. Это available и enabled. При включении модуля или хоста создается символическая ссылка из папки available (доступно) в папку enable (включено). Поэтому настройки лучше выполнять именно в папках available. Вообще говоря, можно было бы обойтись без этих папок, взять все и по старинке свалить в один файл, и все бы работало, но сейчас так никто не делает.

Сначала давайте рассмотрим главный файл конфигурации:

vi /etc/apache2/apache2.conf

apache

Timeout – указывает как долго сервер будет пытаться продолжить прерванную передачу или прием данных. 160 секунд будет вполне достаточно.

KeepAlive On – очень полезный параметр, позволяет передавать несколько файлов, за одно соединение, например, не только саму html страницу, но и картинки и css файлы.

MaxKeepAliveRequests 100 – максимальное количество запросов за одно соединение, чем больше, тем лучше.

KeepAliveTimeout 5 – таймаут соединения, обычно для загрузки страницы достаточно 5-10 секунд, так что больше ставить не нужно, но и рвать соединение раньше чем загрузились все данные тоже не нужно.

User, Group – пользователь и группа, от имени которых будет работать программа.

HostnameLookups – записывать в логи вместо ip адресов доменные имена, лучше отключить, чтобы ускорить работу.

LogLevel – уровень логирования ошибок. По умолчанию используется warn, но чтобы логи заполнялись медленнее достаточно включить error

Include – все директивы include отвечают за подключение рассмотренных выше конфигурационных файлов.

apache1

Директивы Directory отвечают за настройку прав доступа к той или иной директории в файловой системе. Синтаксис здесь такой:

<Directory /адрес/в/файловой/системе/>
Параметр значение
</Directory>

Здесь доступны такие основные опции:

AllowOverride – указывает нужно ли читать .htaccess файлы из этой директории, это такие же файлы настроек и таким же синтаксисом. All – разрешать все, None – не читать эти файлы.

DocumentRoot – устанавливает из какой папки нужно брать документы для отображенияа пользователю

Options – указывает какие особенности веб-сервера нужно разрешить в этой папке. Например, All – разрешить все, FollowSymLinks – переходить по символическим ссылкам, Indexes – отображать содержимое каталога если нет файла индекса.

Require – устанавливает, какие пользователи имеют доступ к этому каталогу. Require all denied – всем запретить, Require all granted – всем разрешить. можно использовать вместо all директиву user или group чтобы явно указать пользователя.

Order – позволяет управлять доступом к директории. Принимает два значения Allow,Deny – разрешить для всех, кроме указанных или Deny,Allow – запретить для всех, кроме указанных. Теперь мы можем запретить доступ к директории для всех: Deny from all, а затем разрешить только для приложения от losst.pro: Allow from losst.pro.

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

У нас остался файл /etc/apache2/ports.conf:

apache2

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

Последний файл /etc/apache2/envvars, его вы вряд ли будете использовать, в нем указанны переменные, которые можно использовать в других конфигурационных файлах.

apache3

Дальше поговорим немного о htacess. Совсем немного.

Настройка сервера 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]

Но это очень обширная тема и выходит за рамки этой статьи.

Настройка модулей Apache

Как я уже говорил, Apache – модульная программа, ее функциональность можно расширять с помощью модулей. Все доступные модули загрузчики и конфигурационные файлы модулей находятся в папке /etc/apache/mods-available. А активированные в /etc/apache/mods-enable.

Но вам необязательно анализировать содержимое этих папок. Настройка Apache 2.4 с помощью добавления модулей выполняется с помощью специальных команд. Посмотреть все запущенные модули можно командой:

apache2ctl -M

apache4

Включить модуль можно командой:

sudo a2enmod имя_модуля

А отключить:

sudo a2dismod имя_модуля

После включения или отключения модулей нужно перезагрузить apache:

sudo systemctl restart apache2

Во время выполнения одной из этих команд создается или удаляется символическая ссылка на файл модуля с расширением load в директории mods-available. Можете посмотреть содержимое этого файла, там только одна строка. Например:

vi /etc/apache2/mods-available/deflate.load

apache5

Это к тому, что активировать модуль можно было просто добавив эту строчку в файл apache2.conf. Но принято делать именно так, чтобы избежать путаницы.

Настройки модулей находятся в той же папке, только в файле с расширением .conf вместо load. Например, посмотрим настройки того же модуля для сжатия deflate:

vi /etc/apache2/mods-available/deflate.conf

apache6

Файлы в папке conf-available, это такие же модули, только они установлены отдельно от apache, это может быть конфигурационные файлы для включения модуля php или любого другого языка программирования. Здесь работает все точно так же, только команды для включения и отключения этих модулей немного другие:

a2enconf имя_модуля

a2disconf имя модуля

Как вы убедились, включать модули очень просто. Давайте включим несколько необходимых, но не включенных по умолчанию модулей:

sudo a2enmod expires
sudo a2enmod headers
sudo a2enmod rewrite
sudo a2enmod ssl

Модули expires и headers уменьшают нагрузку на сервер. Они возвращают заголовок Not Modified, если документ не изменился с последнего запроса. Модуль expiries позволяет устанавливать время, на которое браузер должен кэшировать полученный документ. Rewrite позволяет изменять запрашиваемые адреса на лету, очень полезно при создании ЧПУ ссылок и т д. А последний для включения поддержки шифрования по SSL. Не забудьте перезагрузить apache2 после завершения настроек.

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

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

Настройки хостов Apache расположены в папке /etc/apache2/sites-available/. Для создания нового хоста достаточно создать файл с любым именем (лучше кончено с именем хоста) и заполнить его нужными данными. Обернуть все эти параметры нужно в директиву VirtualHost. Кроме рассмотренных параметров здесь будут использоваться такие:

  • ServerName – основное имя домена
  • ServerAlias – дополнительное имя, по которому будет доступен сайт
  • ServerAdmin – электронная почта администратора
  • DocumentRoot – папка с документами для этого домена

Например:

vi /etc/apache2/sites-available/test.site.conf

apache7

<VirtualHost *:80>
ServerName test.site
ServerAlias www.test.site
ServerAdmin webmaster@localhost
DocumentRoot /var/www/test.site/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

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

sudo a2ensite test.site

Здесь test.site – имя файла виртуального хоста. Для отключения тоже есть команда:

sudo a2dissite test.site

Настройка виртуальных хостов Apache завершена и на публичном сервере это все бы уже работало, но если вам нужна настройка Apache на домашней машине, то вы ваш новый сайт не откроется в браузере. Браузер не знает такого сайта. И откуда ему знать? DNS службы не могут ничего сообщить об этом доменном имени. Но в системе Linux мы можем сами указать ip адреса для доменных имен в файле /etc/hosts. Поэтому добавляем в конец файла такие строки:

vi /etc/hosts

127.0.0.1 test.site
127.0.0.1 www.test.site

Вот, ну теперь будет работать, открывайте браузер, проверяйте.

Выводы

Вот и все. Установка и настройка Apache linux завершена, вы можете использовать программу для размещения ваших сайтов. Более того, вы не просто настроили ее, вы разобрались со всеми подробностями и теперь знаете чуточку больше. Если у вас остались еще вопросы, пишите в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

1. Overview

Apache is an open source web server that’s available for Linux servers free of charge.

In this tutorial we’ll be going through the steps of setting up an Apache server.

What you’ll learn

  • How to set up Apache
  • Some basic Apache configuration

What you’ll need

  • Ubuntu Server 16.04 LTS
  • Secure Shell (SSH) access to your server
  • Basic Linux command line knowledge

Got everything ready? Let’s move on to the next step!

Originally authored by Aden Padilla


2. Installing Apache

To install Apache, install the latest meta-package apache2 by running:

sudo apt update
sudo apt install apache2

After letting the command run, all required packages are installed and we can test it out by typing in our IP address for the web server.

Apache-Installed

If you see the page above, it means that Apache has been successfully installed on your server! Let’s move on.


3. Creating Your Own Website

By default, Apache comes with a basic site (the one that we saw in the previous step) enabled. We can modify its content in /var/www/html or settings by editing its Virtual Host file found in /etc/apache2/sites-enabled/000-default.conf.

We can modify how Apache handles incoming requests and have multiple sites running on the same server by editing its Virtual Hosts file.

Today, we’re going to leave the default Apache virtual host configuration pointing to www.example.com and set up our own at gci.example.com.

So let’s start by creating a folder for our new website in /var/www/ by running

sudo mkdir /var/www/gci/

We have it named gci here but any name will work, as long as we point to it in the virtual hosts configuration file later.

Now that we have a directory created for our site, lets have an HTML file in it. Let’s go into our newly created directory and create one by typing:

cd /var/www/gci/
nano index.html

Paste the following code in the index.html file:

<html>
<head>
  <title> Ubuntu rocks! </title>
</head>
<body>
  <p> I'm running this website on an Ubuntu Server server!
</body>
</html>

Pretty cool, right?

Now let’s create a VirtualHost file so it’ll show up when we type in gci.example.com.


4. Setting up the VirtualHost Configuration File

We start this step by going into the configuration files directory:

cd /etc/apache2/sites-available/

Since Apache came with a default VirtualHost file, let’s use that as a base. (gci.conf is used here to match our subdomain name):

sudo cp 000-default.conf gci.conf

Now edit the configuration file:

sudo nano gci.conf

We should have our email in ServerAdmin so users can reach you in case Apache experiences any error:

ServerAdmin yourname@example.com

We also want the DocumentRoot directive to point to the directory our site files are hosted on:

DocumentRoot /var/www/gci/

The default file doesn’t come with a ServerName directive so we’ll have to add and define it by adding this line below the last directive:

ServerName gci.example.com

This ensures people reach the right site instead of the default one when they type in gci.example.com.

Now that we’re done configuring our site, let’s save and activate it in the next step!


5. Activating VirtualHost file

After setting up our website, we need to activate the virtual hosts configuration file to enable it. We do that by running the following command in the configuration file directory:

sudo a2ensite gci.conf

You should see the following output

Enabling site gci.
To activate the new configuration, you need to run:
  service apache2 reload
root@ubuntu-server:/etc/apache2/sites-available#

To load the new site, we restart Apache by typing:

service apache2 reload

End result

Now is the moment of truth, let’s type our host name in a browser. Final Hooray!

Was this tutorial useful?

Thank you for your feedback.


  • Главная

  • Инструкции

  • Ubuntu

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

Под веб-серверами понимают как физические машины, так и специальное программное обеспечение. С точки зрения софта, веб-сервер — это программа, которая реализует логику сервера в клиент-серверной архитектуре: принимает 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 использует технологию мультипроцессинга, помещая каждое соединение в отдельный поток. Количество таких потоков ограниченно, что негативно сказывается при большом количестве запросов;
  • Сложность настройки из-за большого количества настроек.

Установка 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.

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

Рассказываем про то, как установить и настроить Apache в Linux.

Что такое Apache?

Apache — это кроссплатформенное программное обеспечение для гибкой настройки надежных веб-серверов. На базе Apache строится огромное количество веб-сервисов и сайтов.

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

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

Как установить Apache?

Процесс установки Apache-сервера мало чем отличается от установки любого другого программного обеспечения в Linux.

Я буду описывать все этапы на примере операционной системы Linux Mint (это дериватив от Ubuntu и Debian). Поэтому, если вы используете Fedora или какой-то другой дистрибутив, название пакетного менеджера apt-get и связанные опции надо будет заменить на подходящие аналоги.

  • Открываем терминал.
  • Для начала обновим список доступных в системе пакетов командой sudo apt-get update.
Нужно обновить систему…
Нужно обновить систему…
  • Терминал потребует ввести пароль суперпользователя, чтобы выполнить эту операцию. Вводим его.
Во время ввода пароля набираемые символы могут не отображаться в терминале
Во время ввода пароля набираемые символы могут не отображаться в терминале
  • Затем используем команду sudo apt-get upgrade, чтобы обновить все установленные в систему пакеты.
Устанавливаем свежие версии приложений, имеющихся в системе
Устанавливаем свежие версии приложений, имеющихся в системе
  • Терминал попросит подтвердить это действие. Для этого вводим в него заглавную букву «Д» (или Y в английской версии).
Подтверждаем свои намерения
Подтверждаем свои намерения
  • Затем переходим непосредственно к установке Apache с помощью команды sudo apt-get install apache2. В CentOS и ее дериватах Apache называется httpd.
Собственно, все
Собственно, все

Чтобы включить сервер Apache нужно выполнить одну из следующих команд:

  • sudo service apache2 start (универсальная).
  • sudo systemctl start apache2.service (для Debian и ему подобных).
  • sudo systemctl start httpd.service (для CentOS и ее дериватов).

А чтобы выключить:

  • sudo service apache2 stop (универсальная).
  • sudo systemctl stop apache2.service (для Debian и ему подобных).
  • sudo systemctl stop httpd.service (для CentOS и ее дериватов).

Настраиваем Apache

С незамысловатым процессом установки разобрались, теперь нужно настроить наш сервер.

Для начала добавим его в автозагрузку, чтобы каждый раз не запускать заново. Это можно сделать, введя в терминал команду sudo systemcl enable apache2 (это для Ubuntu)

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

  • Большая часть параметров хранится в файле /etc/apache2/apache2.conf. Тут указаны все базовые опции, необходимые для старта сервера и его полноценной работы.
  • Дополнительные настройки прописаны в файле /etc/apache2/conf-available/.
  • Модули Apache можно посмотреть и настроить в файле /etc/apache2/mods-available.
  • Файл /etc/apache2/sites-available отвечает за настройку виртуальных хостов.
  • В /etc/apache2/ports.conf указываются порты, которые Apache использует в работе.

Базовая конфигурация

Для начала разберемся с основным конфигурационным файлом.

Чтобы его открыть, вводим в терминал команду sudo nano /etc/apache2/apache2.conf

В нем содержатся следующие опции:

  • Timeout — эта опция отображает количество секунд, которое сервер будет тратить на попытку восстановить подключение, если оно по какой-то причине оборвется. По умолчанию установлено значение в 300 секунд, но его можно без последствий сократить вдвое.
  • Keep Alive — по умолчанию эта настройка включена, и благодаря ей сервер может передавать  несколько файлов единовременно.
  • MaxKeepAliveRequests — это максимальное количество доступных запросов на одно соединение с сервером.
  • KeepAliveTimeout — эта опция отображает количество секунд, через которое сервер разорвет соединение, если веб-страница не загрузится полностью. Слишком маленькое значение приведет к неработоспособности сайта у пользователей с медленным интернетом.
  • User — имя пользователя, запускающего сервер.
  • Group — группа пользователей, запускающего сервер.
  • HostnameLookups — эта опция интерпретирует IP-адреса в журнале работы (логе) сервера в полноценные доменные имена.
  • LogLevel — эта опция указывает на то, какие именно ошибки будут отправляться в журнал работы (лог) сервера.
  • Include — тут прописаны конфигурационные файлы, которые были перечислены в начале этого блока.
Здесь находятся все необходимые параметры для быстрого запуска сервера
Здесь находятся все необходимые параметры для быстрого запуска сервера

Настройки Directory

В конце файла /etc/apache2/apache2.conf есть блок параметров Directory. С помощью него серверу можно выдать определенные права доступа на разные части файловой системы.

Параметры в этой части файла строятся следующим образом:

Указывается тег <Directory тут же в скобках прописывается адрес папки, на которую выдаются права. Скобка закрывается >. Затем вписываются опции на выбор пользователя. А потом тег закрывается.

По умолчанию там можно увидеть такую запись:

Options FollowSymLinks AllowOverride None Require all denied

Здесь можно более скрупулезно настроить отдельные папки
Здесь можно более скрупулезно настроить отдельные папки

Список опций для параметров Directory

  • AllowOverride — если указана эта опция с параметром All, то Apache будет считывать параметры из файла .htaccess, который частенько используют для добавления дополнительных настроек или более тонких изменений в работе сервера.
  • DocumentRoot — сюда прописывается директория в файловой системе, из которой сервер будет брать файлы для отображения пользователю.
  • Options — дополнительные параметры для взаимодействия сервера с выбранной папкой. Например, можно разрешить переход по символическим ссылкам, указав параметр FollowSymLinks.
  • Require — рядом с этой опцией нужно указать имя пользователя, которому будет разрешено получить доступ к настраиваемой папке.
  • Order — рядом с этой опцией нужно указать один из аргументов: либо Allow from название хоста, либо Deny from название хоста. В первом случае указываем хосты, у которых будет доступ к настраиваемой папке, а во втором — наоборот.

Конфигурация файла /etc/apache2/ports.conf

Рассмотрим еще один конфигурационный файл, вносить изменения в который не обязательно. Здесь можно указать только порты, с которыми работает («слушает») сервер. По умолчанию установлен 80 порт, и это вполне рабочий вариант. Для подключений с использованием протокола SSL используется 443 порт.

Обычно здесь ничего менять не нужно.

Файл с настройками портов
Файл с настройками портов

Настраиваем Apache с помощью .htaccess

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

У инструкций, вписанных в .htaccess тот же синтаксис, поэтому вы можете использовать те настройки, что уже были описаны выше (Order, Require). Также в .htaccess можно прописать запуск какого-либо модуля. Более того, его можно тут же настроить. Вводимые инструкции будут зависеть от самого модуля и поддерживаемых им параметров.

Подключаем модули Apache

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

Взглянуть на список запущенных модулей можно с помощью команды apache2ctl -M

Также есть команда для включения нового модуля sudo a2enmod название модуля и выключения sudo a2dismod название модуля

Если что, все изменения, касающиеся модулей начинают действовать только после перезагрузки сервера.

Это, то, что уже работает
Это, то, что уже работает

Из полезных модулей, которые можно подключить, не загружая ничего на компьютер выделю:

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

Есть и популярные сторонние модули. Например:

  • pagespeed — это модуль для Apache, который создала компания Google. Его основная задача — оптимизация веб-ресурсов. Он умеет сжимать данные, исправлять ошибки в тексте, контролировать размер файлов на сервере и так далее. Все в угоду производительности.
  • mod-security — дополнительный защитный слой для вашего сервера. Этот модуль запрещает серверу принимать трафик, который прописан в заранее подготовленных правилах.
  • spamhaus — еще одна попытка защитить сервер от взлома и других потенциальных угроз. Вместе с модулем подгружается база IP-адресов, которые считаются небезопасными и могут навредить серверу. И как вы уже поняли, модуль блокирует запросы с этих адресов.

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

Естественно, на сервере Apache (на одном компьютере) можно разместить несколько веб-ресурсов. Можно завести хоть сотню виртуальных хостов, каждый из которых будет со своим набором данных и уникальным содержимым.

Чтобы добавить новый хост на Apache-сервер, создадим новый документ с названием хоста в папке sites-available. Это можно сделать командой sudo nano /etc/apache2/sites-available/название файла.conf

Содержимое файла должно выглядеть следующим образом:

<VirtualHost *:80> ServerName название вашего сайта ServerAlias ссылка на ваш сайт в формате www.site.com ServerAdmin почтовый адрес администратора сайта в формате mail@mail.ru DocumentRoot путь до папки, в которой лежат документы, связанные с конкретным хостом. Обычно это файлы в папке /var/www/ ErrorLog $APACHE_LOG_DIR/error.log CustomLog $APACHE_LOG_DIR/access.log combined

Добавляем новый хост
Добавляем новый хост

Чтобы активировать новый хост (после его создания), вводим в терминал команду sudo a2ensite название хоста

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

Автор материала: Владимир Ковылов

Подписывайтесь на наш канал и ставьте лайки! А еще можете посетить наш официальный сайт.

4 ноября, 2022 11:59 дп
3 397 views
| Комментариев нет

LAMP Stack, Ubuntu

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

В этом туториале вы узнаете, как установить веб-сервер Apache на Ubuntu 22.04.

Требования

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

Когда всё настроено, войдите в систему как пользователь без root.

1: Установка Apache

Apache есть в стандартном репозитории Ubuntu, поэтому его можно установить с помощью стандартного пакетного менеджера.

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

sudo apt update

Затем установим пакет apache2:

sudo apt install apache2

После этого apt установит Apache и все необходимые зависимости.

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

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

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

Чтобы посмотреть список профилей ufw введите:

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 разрешен.

3: Тестирование веб-сервера

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

С помощью системы инициализации systemd мы можем убедиться, что он запустился. Запросите его состояние:

sudo systemctl status apache2

Получаем вывод:

apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-04-23 22:36:30 UTC; 20h ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 29435 (apache2)
      Tasks: 55 (limit: 1137)
     Memory: 8.0M
     CGroup: /system.slice/apache2.service
             ├─29435 /usr/sbin/apache2 -k start
             ├─29437 /usr/sbin/apache2 -k start
             └─29438 /usr/sbin/apache2 -k start

Согласно этому выводу сервис успешно запустился. Но лучше ещё запросить страницу Apache, чтобы убедиться, что веб-сервер работает правильно.

Чтобы открыть стандартную посадочную страницу Apache, укажите свой домен. Если у вас нет домена, введите внешний IP-адрес своего сервера. Если вы не знаете свой IP-адрес, вы можете узнать его с помощью команды:

hostname -I

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

Другой вариант — с помощью ресурса Icanhazip, который должен предоставить вам внешний IP-адрес, прочитанный из другого места в Интернете:

curl -4 icanhazip.com

Узнав свой внешний IP-адрес, введите в строку браузера:

http://your_server_ip

Вы увидите стандартную страницу Apache для Ubuntu:

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

4: Управление процессами Apache

Теперь давайте посмотрим, как управлять веб-сервером с помощью systemctl.

Чтобы остановить веб-сервер, введите:

sudo systemctl stop apache2

Запустить его поможет команда:

sudo systemctl start apache2

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

sudo systemctl restart apache2

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

sudo systemctl reload apache2

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

sudo systemctl disable apache2

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

sudo systemctl enable apache2

Теперь Apache будет снова запускаться автоматически.

5: Настройка виртуальных хостов (рекомендуется)

На веб-сервере Apache вы можете использовать виртуальные хосты (в Nginx это блоки server) для изоляции настроек и размещения нескольких доменов на одном сервере. Здесь используется условный домен example.com, который нужно заменить доменом вашего сайта.

В Ubuntu 22.04 веб-сервер Apache по умолчанию предоставляет один включенный виртуальный хост, который обслуживает каталог /var/www/html. Этого хватит для работы одного сайта, но если вы хотите разместить несколько сайтов, вам нужно создать новые виртуальные хосты. Создайте структуру каталогов в /var/www для сайта example.com, а /var/www/html оставьте как каталог по умолчанию, который будет обслуживаться, если запрос клиента не соответствует другим сайтам.

Создайте каталог для your_domain:

sudo mkdir /var/www/your_domain

Затем укажите права на каталог с помощью переменной $USER:

sudo chown -R $USER:$USER /var/www/your_domain

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

sudo chmod -R 755 /var/www/your_domain

Затем создайте образец страницы index.html с помощью nano или другого текстового редактора:

sudo nano /var/www/your_domain/index.html

Добавьте в файл следующий код HTML:

<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain virtual host is working!</h1>
    </body>
</html>

Сохраните и закройте файл.

Нужно создать файл виртуального хоста с правильными директивами, чтобы Apache мог обслуживать этот контент. Чтобы напрямую не изменять файл конфигурации по умолчанию, расположенный в /etc/apache2/sites-available/000-default.conf, мы создадим новый в /etc/apache2/sites-available/your_domain.conf:

sudo nano /etc/apache2/sites-available/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>

Обратите внимание, мы обновили DocumentRoot на наш новый каталог, а ServerAdmin на адрес электронной почты, к которому может получить доступ администратор сайта your_domain. Также мы добавили две директивы: ServerName, которая устанавливает базовый домен, который должен соответствовать этому определению виртуального хоста, и ServerAlias – определяет дополнительные имена, которые должны соответствовать базовому имени.

После того, как закончите, сохраните и закройте файл.

Включим файл с помощью a2ensite:

sudo a2ensite your_domain.conf

Отключите сайт по умолчанию, определенный в 000-default.conf:

sudo a2dissite 000-default.conf

Далее проверим ошибки настроек:

sudo apache2ctl configtest

Вывод должен быть следующим:

Syntax OK

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

sudo systemctl restart apache2

Теперь Apache должен обслуживать ваше доменное имя. Для проверки перейдите по адресу http://your_domain, вы должны увидеть что-то вроде этого:

6: Важные файлы и каталоги 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 определяет, насколько подробную информацию будут содержать журналы ошибок.

Заключение

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

Если вы хотите создать более полный стек приложений, вы можете прочитать эту статью о том, как настроить стек LAMP в Ubuntu.

Tags: Apache, Ubuntu, Ubuntu 22.04

Добавить комментарий