Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Серверы Linux. Часть I. Серверы Apache и Squid

Оригинал: Apache web server
Автор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: А.Панин
Дата перевода: 10 июля 2015 г.

Глава 1. Веб-сервер Apache

В данной главе мы будем учиться настраивать веб-сервер Apache.

В соответствии с данными NetCraft (http://news.netcraft.com/archives/web_server_survey.html), практически на семидесяти процентах всех сетевых серверов используется веб-сервер Apache. Имя данного сервера образовано от неофициального названия "a patchy web server", данного веб-серверу NCSA httpd из-за огромного количества разработанных и доступных для наложения патчей.

В последующих главах мы расширим область рассмотрения данного веб-сервера до стека LAMP (Linux, Apache, MySQL, Perl/PHP/Python).

1.1. Вводная информация о веб-сервере Apache

1.1.1. Установка в дистрибутиве Debian

При рассмотрении приведенного ниже вывода становится ясно, что веб-сервер Apache не установлен в системе и директории для хранения веб-станиц /var/www не существует.

root@debian7:~# ls -l /var/www
ls: невозможно получить доступ к /var/www: Нет такого файла или каталога
root@debian7:~# dpkg -l | grep apache

Для установки веб-сервера Apache в дистрибутиве Debian следует выполнить следующие команды:

root@debian7:~# aptitude install apache2
НОВЫЕ пакеты, которые будут установлены:
  apache2 apache2-mpm-worker{a} apache2-utils{a} apache2.2-bin{a} apache2.2-com\
mon{a} libapr1{a} libaprutil1{a} libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a}\
 ssl-cert{a} 
обновлено 0, установлено 10 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 1,487 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 5,673 kБ.
Хотите продолжить [Д/н]?

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

root@debian7:~# ls -l /var/www
итого 4
-rw-r--r-- 1 root root 177 апр 29 11:55 index.html
root@debian7:~# dpkg -l | grep apache | tr -s ' '
ii apache2 2.2.22-13+deb7u1 amd64 Apache HTTP Server metapackage
ii apache2-mpm-worker 2.2.22-13+deb7u1 amd64 Apache HTTP Server - high speed th\
readed model
ii apache2-utils 2.2.22-13+deb7u1 amd64 utility programs for webservers
ii apache2.2-bin 2.2.22-13+deb7u1 amd64 Apache HTTP Server common binary files
ii apache2.2-common 2.2.22-13+deb7u1 amd64 Apache HTTP Server common files

1.1.2. Установка в дистрибутиве RHEL/CentOS

Помните о том, что в дистрибутиве RedHat и производных дистрибутивах в именем пакета программного обеспечения и бинарного файла веб-сервера Apache является httpd, а не apache.

Для установления того, установлен ли веб-сервер Apache в системе на основе дистрибутива CentOS/RHEL следует выполнить следующие команды:

[root@centos65 ~]# rpm -q httpd
пакет httpd не установлен
[root@centos65 ~]# ls -l /var/www
ls: невозможно получить доступ к /var/www: Нет такого файла или каталога

Для установки веб-сервера Apache в дистрибутиве CentOS следует использовать следующую команду:

[root@centos65 ~]# yum install httpd

После выполнения команды yum install httpd в системе на основе дистрибутива CentOS 6.5 будет установлен веб-сервер Apache и создана директория для хранения веб-страниц /var/www.

[root@centos65 ~]# rpm -q httpd
httpd-2.2.15-30.el6.centos.x86_64
[root@centos65 ~]# ls -l /var/www
итого 16
drwxr-xr-x. 2 root root 4096 апр  3 23:57 cgi-bin
drwxr-xr-x. 3 root root 4096 май  6 13:08 error
drwxr-xr-x. 2 root root 4096 апр  3 23:57 html
drwxr-xr-x. 3 root root 4096 май  6 13:08 icons
[root@centos65 ~]#

1.1.3. Запуск веб-сервера Apache в дистрибутиве Debian

При работе с дистрибутивом Debian веб-сервер Apache (служба apache2) может быть запущен с помощью следующей команды.

root@debian7:~# service apache2 status
Apache2 is NOT running.
root@debian7:~# service apache2 start
Starting web server: apache2apache2: Could not reliably determine the server's \
fully qualified domain name, using 127.0.1.1 for ServerName
.

Для того, чтобы убедиться в корректности запуска веб-сервера следует снова выполнить команду service apache2 status или воспользоваться утилитой ps.

root@debian7:~# service apache2 status
Apache2 is running (pid 3680).
root@debian7:~# ps -C apache2
  PID TTY          TIME CMD
 3680 ?        00:00:00 apache2
 3683 ?        00:00:00 apache2
 3684 ?        00:00:00 apache2
 3685 ?        00:00:00 apache2
root@debian7:~#

Кроме того, вы можете использовать комбинацию утилит wget и file для проверки корректности передачи документов HTML веб-сервером.

root@debian7:~# wget 127.0.0.1
--2014-05-06 13:27:02--  http://127.0.0.1/
Подключение к 127.0.0.1:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 177 [text/html]
Сохранение в: `index.html'

100%[==================================================>] 177    --.-K/s   за 0s

2014-05-06 13:27:02 (15.8 MB/s) - `index.html' сохранён [177/177]

root@debian7:~# file index.html
index.html: HTML document, ASCII text
root@debian7:~#

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

Для того, чтобы предотвратить вывод сообщения о невозможности точного установления полностью определенного доменного имени сервера 'could not reliably determine the fqdn' при перезапуске Apache, вы можете прибегнуть к следующей команде.

root@debian7:~# echo ServerName Debian7 >> /etc/apache2/apache2.conf
root@debian7:~# service apache2 restart
Restarting web server: apache2 ... waiting .
root@debian7:~#

1.1.4. Запуск веб-сервера Apache в дистрибутиве CentOS

Запуск веб-сервера Apache (служба httpd) в дистрибутиве RHEL/CentOS осуществляется с помощью утилиты service.

[root@centos65 ~]# service httpd status
httpd is stopped
[root@centos65 ~]# service httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualifie\
d domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]
[root@centos65 ~]#

Для проверки корректности запуска Apache следует использовать утилиту ps или снова выполнить команду service httpd status.

[root@centos65 ~]# service httpd status
httpd (pid  2410) is running...
[root@centos65 ~]# ps -C httpd
  PID TTY          TIME CMD
 2410 ?        00:00:00 httpd
 2412 ?        00:00:00 httpd
 2413 ?        00:00:00 httpd
 2414 ?        00:00:00 httpd
 2415 ?        00:00:00 httpd
 2416 ?        00:00:00 httpd
 2417 ?        00:00:00 httpd
 2418 ?        00:00:00 httpd
 2419 ?        00:00:00 httpd
[root@centos65 ~]#

Для предотвращения вывода сообщения о невозможности установления полностью определенного доменного имени сервера 'Could not reliably determine the fqdn' следует выполнить следующую команду.

[root@centos65 ~]# echo ServerName Centos65 >> /etc/httpd/conf/httpd.conf
[root@centos65 ~]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
[root@centos65 ~]#

1.1.5. Индексная страница веб-сервера в дистрибутиве CentOS

В составе дистрибутива CentOS не поставляется стандартного файла индексной страницы веб-сервера index.html или index.php. При использовании утилиты wget будет выведено сообщение об ошибке.

[root@centos65 ~]# wget 127.0.0.1
--2014-05-06 15:10:22--  http://127.0.0.1/
Подключение к 127.0.0.1:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 403 Forbidden
2014-05-06 15:10:22 ОШИБКА 403: Forbidden.

В случае ввода IP-адреса вашего сервера в адресную строку веб-браузера будет отображена страница noindex.html. Вы можете проверить это с помощью утилиты wget.

[root@centos65 ~]# wget http://127.0.0.1/error/noindex.html
--2014-05-06 15:16:05--  http://127.0.0.1/error/noindex.html
Подключение к 127.0.0.1:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 5039 (4.9K) [text/html]
Сохранение в:  noindex.html 

100%[=============================================>] 5,039       --.-K/s   за 0s

2014-05-06 15:16:05 (289 MB/s) -  noindex.html  сохранён [5039/5039]

[root@centos65 ~]# file noindex.html
noindex.html: HTML document text
[root@centos65 ~]#

Любой пользовательский файл с именем index.html сразу же после копирования в директорию /var/www/html будет использоваться в качестве индексной страницы данного веб-сервера.

[root@centos65 ~]# echo 'Добро пожаловать на мой веб-сайт' > /var/www/html/index.html
[root@centos65 ~]# wget http://127.0.0.1
--2014-05-06 15:19:16--  http://127.0.0.1/
Подключение к 127.0.0.1:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 60 [text/html]
Сохранение в:  index.html 

100%[=============================================>] 60          --.-K/s   за 0s

2014-05-06 15:19:16 (1.95 MB/s) -  index.html  сохранён [60/60]

[root@centos65 ~]# cat index.html
Добро пожаловать на мой веб-сайт

1.1.6. Стандартный путь к директории с данными веб-сайта

Изменить стандартный путь к директории с данными веб-сайта после установки веб-сервера Apache в систему достаточно просто. Все что вам требуется сделать (или изменить) - это указать путь к директории с файлом индексной страницы с именем index.html в конфигурационном файле веб-сервера с помощью директивы DocumentRoot.

Для получения текущего значения директивы DocumentRoot в дистрибутиве Debian следует использовать следующую команду:

root@debian7:~# grep DocumentRoot /etc/apache2/sites-available/default
        DocumentRoot /var/www

Это значит, что в качестве индексной страницы основного веб-сайта сервера будет использоваться файл /var/www/index.html.

root@debian7:~# cat /var/www/index.html
<html><body><h1>Работает!</h1>
<p>Это индексная страница данного веб-сервера.</p>
<p>Веб-сервер корректно функционирует, но данные веб-сайта пока не были загружены на сервер.</p>
</body></html>
root@debian7:~#

Ниже показан способ получения текущего значения директивы DocumentRoot в дистрибутиве RHEL/CentOS.

[root@centos65 ~]# grep ^DocumentRoot /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html"

Дистрибутив RHEL/CentOS не предоставляет стандартной индексной страницы веб-сервера (хотя и предоставляет страницу с информацией об ошибке noindex.html, упомянутую ранее). Несмотря на это файл с именем index.html, созданный в директории /var/www/html/ будет автоматически использоваться в качестве стандартной индексной страницы.

[root@centos65 ~]# echo '<html><head><title>Стандартный веб-сайт</title></head><body\
><p>Новая веб-страница</p></body></html>' > /var/www/html/index.html
[root@centos65 ~]# cat /var/www/html/index.html
<html><head><title>Стандартный веб-сайт</title></head><body><p>Новая веб-страница</p></b\
ody></html>
[root@centos65 ~]#

1.1.7. Настройка веб-сервера Apache

Процесс настройки веб-сервера Apache при работе с дистрибутивами Debian и CentOS во многом схож, но имеет и некоторые отличия. Мы обсудим процесс настройки веб-сервера с учетом особенностей каждого из семейств дистрибутивов и рассмотрим примеры в соответствующих разделах.

Все файлы конфигурации веб-сервера находятся в директории /etc/httpd в случае использования дистрибутива RHEL/CentOS.

[root@centos65 ~]# ls -l /etc/httpd/
итого 8
drwxr-xr-x. 2 root root 4096 май  6 13:08 conf
drwxr-xr-x. 2 root root 4096 май  6 13:08 conf.d
lrwxrwxrwx. 1 root root   19 май  6 13:08 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root   29 май  6 13:08 modules -> ../../usr/lib64/httpd/modu\
les
lrwxrwxrwx. 1 root root   19 май  6 13:08 run -> ../../var/run/httpd
[root@centos65 ~]#

В дистрибутиве Debian (а также производных дистрибутивах Ubuntu/Mint/...) для хранения файлов конфигурации веб-сервера используется директория /etc/apache2.

root@debian7:~# ls -l /etc/apache2/
итого 72
-rw-r--r-- 1 root root  9659 май  6 14:23 apache2.conf
drwxr-xr-x 2 root root  4096 май  6 13:19 conf.d
-rw-r--r-- 1 root root  1465 янв 31 18:35 envvars
-rw-r--r-- 1 root root 31063 июл 20  2013 magic
drwxr-xr-x 2 root root  4096 май  6 13:19 mods-available
drwxr-xr-x 2 root root  4096 май  6 13:19 mods-enabled
-rw-r--r-- 1 root root   750 янв 26 12:13 ports.conf
drwxr-xr-x 2 root root  4096 май  6 13:19 sites-available
drwxr-xr-x 2 root root  4096 май  6 13:19 sites-enabled
root@debian7:~#

Предыдущий раздел: Оглавление Следующий раздел:
  Виртуальные серверы для заданных номеров портов