Как настроить веб-сервер Apache
Научитесь размещать свой собственный веб-сайт с помощью Apache, надежного, известного и простого в настройке веб-сервера.
Я уже много лет веду свои собственные сайты. С момента перехода с OS/2 на Linux более 20 лет назад я использовал Apache в качестве серверного программного обеспечения. Apache надежен, хорошо известен и довольно прост в настройке для базовой установки. На самом деле не так уж и сложно настроить более сложную настройку, например несколько веб-сайтов.
Установка и настройка веб-сервера Apache должны выполняться с правами root. Настройку брандмауэра также необходимо выполнять от имени пользователя root. Использование браузера для просмотра результатов этой работы должно осуществляться от имени пользователя без полномочий root. (Я использую пользователя student
на своем виртуальном хосте.)
Монтаж
Примечание. Эта статья была обновлена с использованием Fedora 33 с Apache 2.4.46. Если вы используете другой дистрибутив или другую версию Fedora, ваши команды, расположение и содержимое файлов конфигурации могут отличаться. Однако строки конфигурации, которые необходимо изменить, одинаковы независимо от дистрибутива.
Веб-сервер Apache легко установить. Одной командой вы можете установить его и все необходимые зависимости:
$ dnf install httpd
Все файлы конфигурации Apache расположены в папках /etc/httpd/conf
и /etc/httpd/conf.d
. Данные для веб-сайтов, которые вы будете запускать с помощью Apache, по умолчанию расположены в /var/www
, но вы можете изменить это, если хотите.
Конфигурация
Основной файл конфигурации Apache — /etc/httpd/conf/httpd.conf
. Он содержит множество операторов конфигурации, которые не нужно изменять при базовой установке. Фактически, в этот файл необходимо внести лишь несколько изменений, чтобы запустить базовый веб-сайт. Файл очень большой, поэтому, чтобы не загромождать эту статью множеством ненужных вещей, я покажу только те директивы, которые вам нужно изменить.
Сначала потратьте немного времени и просмотрите файл httpd.conf
, чтобы ознакомиться с ним. Что мне нравится в версиях большинства файлов конфигурации Red Hat, так это количество комментариев, описывающих различные разделы и директивы конфигурации в файлах. Файл httpd.conf
не является исключением, поскольку он достаточно хорошо прокомментирован. Используйте эти комментарии, чтобы понять, что настраивает файл.
Первый элемент, который нужно изменить, — это оператор Listen
, который определяет IP-адрес и порт, на котором Apache должен прослушивать запросы страниц. Прямо сейчас вам просто нужно сделать этот веб-сайт доступным для локального компьютера, поэтому используйте адрес localhost
. Когда вы закончите, строка должна выглядеть так:
Listen 127.0.0.1:80
Если для этой директивы задан IP-адрес localhost
, Apache будет прослушивать только соединения с локального хоста. Если вы хотите, чтобы веб-сервер прослушивал соединения с удаленных хостов, вам следует использовать внешний IP-адрес хоста.
Директива DocumentRoot
определяет расположение HTML-файлов, составляющих страницы веб-сайта. Эту линию менять не нужно, поскольку она уже указывает на стандартное местоположение. Строка должна выглядеть так:
DocumentRoot "/var/www/html"
RPM установки Apache создает дерево каталогов /var/www
. Если вы хотите изменить место хранения файлов веб-сайта, для этого используется этот элемент конфигурации. Например, вы можете использовать другое имя для подкаталога www
, чтобы сделать идентификацию веб-сайта более явной. Это может выглядеть так:
DocumentRoot "/var/mywebsite/html"
Это единственные изменения конфигурации Apache, необходимые для создания простого веб-сайта. В этом небольшом упражнении в файл httpd.conf
было внесено только одно изменение — директива Listen
. Все остальное уже настроено для создания рабочего веб-сервера.
Однако необходимо еще одно изменение: открытие порта 80 в нашем брандмауэре. Я использую iptables в качестве брандмауэра, поэтому меняю /etc/sysconfig/iptables
, добавляя оператор, разрешающий протокол HTTP. Весь файл выглядит так:
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Добавленная мной строка — третья снизу, которая разрешает входящий трафик на порт 80. Теперь я перезагружаю измененную конфигурацию iptables.
[root@testvm1 ~]# cd /etc/sysconfig/ ; iptables-restore iptables
Создайте файл index.html.
Файл index.html
— это файл по умолчанию, который веб-сервер будет обслуживать, когда вы заходите на веб-сайт, используя только имя домена, а не конкретное имя HTML-файла. В каталоге /var/www/html
создайте файл с именем index.html
. Добавьте контент Hello World
. Чтобы это работало, вам не нужно добавлять какую-либо HTML-разметку. Единственная задача веб-сервера — обслуживать поток текстовых данных, и сервер понятия не имеет, что это за дата и как ее отображать. Он просто передает поток данных запрашивающему хосту.
После сохранения файла установите право собственности на apache.apache
.
[root@testvm1 html]# chown apache.apache index.html
Запустить Апач
Apache очень легко запустить. Текущие версии Fedora используют systemd
. Выполните следующие команды, чтобы запустить его, а затем проверить состояние сервера:
[root@testvm1 ~]# systemctl start httpd
[root@testvm1 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2018-02-08 13:18:54 EST; 5s ago
Docs: man:httpd.service(8)
Main PID: 27107 (httpd)
Status: "Processing requests..."
Tasks: 213 (limit: 4915)
CGroup: /system.slice/httpd.service
├─27107 /usr/sbin/httpd -DFOREGROUND
├─27108 /usr/sbin/httpd -DFOREGROUND
├─27109 /usr/sbin/httpd -DFOREGROUND
├─27110 /usr/sbin/httpd -DFOREGROUND
└─27111 /usr/sbin/httpd -DFOREGROUND
Feb 08 13:18:54 testvm1 systemd[1]: Starting The Apache HTTP Server...
Feb 08 13:18:54 testvm1 systemd[1]: Started The Apache HTTP Server.
На вашем сервере команды могут отличаться. В системах Linux, использующих стартовые сценарии SystemV, команды будут такими:
[root@testvm1 ~]# service httpd start
Starting httpd: [Fri Feb 09 08:18:07 2018] [ OK ]
[root@testvm1 ~]# service httpd status
httpd (pid 14649) is running...
Если на вашем хосте установлен веб-браузер, такой как Firefox или Chrome, вы можете использовать URL-адрес localhost
в строке URL-адреса браузера для отображения вашей веб-страницы, какой бы простой она ни была. Вы также можете использовать веб-браузер с текстовым режимом, например Lynx, для просмотра веб-страницы. Сначала установите Lynx (если он еще не установлен).
[root@testvm1 ~]# dnf -y install lynx
Затем используйте следующую команду для отображения веб-страницы.
[root@testvm1 ~]# lynx localhost
Результат выглядит так в моей терминальной сессии. Я удалил много пустого места на странице.
Hello World
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
Затем отредактируйте файл index.html
и добавьте немного HTML-разметки, чтобы он выглядел следующим образом:
<h1>Hello World</h1>
Теперь обновите браузер. Для Lynx используйте комбинацию клавиш Ctrl+R. Результаты выглядят немного иначе. Текст цветной, именно так Lynx отображает заголовки, если ваш терминал поддерживает цвет, и теперь он центрирован. В браузере с графическим интерфейсом текст будет набран крупным шрифтом.
Hello World
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
Прощальные мысли
Как вы можете видеть из этого небольшого упражнения, настроить веб-сервер Apache несложно. Подробности будут различаться в зависимости от вашего дистрибутива и версии Apache, поставляемой в этом дистрибутиве. В моем окружении это было довольно тривиальным упражнением.
Но это еще не все, потому что Apache очень гибкий и мощный. В следующем месяце я расскажу о хостинге нескольких веб-сайтов с использованием одного экземпляра Apache.
Эта статья была первоначально опубликована в 2018 году и обновлена редактором.