Введение
Apache — кроссплатформенный HTTP-сервер, который был создан с учетом ошибок старого web-сервера NCSA HTTPd. На данный момент стабильная версия имеет номер 2.4.63. Основные достоинства Apache — кроссплатформенность и модульная система, позволяющая оптимизировать программное обеспечения для нужд конкретной разработки.
В этой статье рассмотрим установку HTTP-сервера Apache на операционную систему (ОС) Ubuntu. В рамках этой публикации используется релиз Ubuntu 20.04 server и web-сервер Apache версии 2. Система развернута в облачной платформе Selectel. Для тестового сервера используется минимальная конфигурация мощностей — 1 ядро и 1 ГБ оперативной памяти. Для запуска простого ненагруженного приложения этого достаточно.
Настроить виртуальный сервер
Откройте панель управления Selectel и перейдите в раздел Облачная платформа. Нажмите Создать сервер.
Используем минимальную конфигурацию. Не забудьте добавить SSH-ключ, для Ubuntu 24.04 это обязательный шаг.
После создания сервера в панели можно будет посмотреть его IP-адрес.
Теперь можем подключиться к нему по SSH.
Самым простым способом подключения является использование утилиты PuTTY. Эта утилита является кроссплатформенной. Скачать ее можно с официального сайта https://www.chiark.greenend.org.uk/~sgtatham/putty/.
Для подключения в поле Host Name (or IP address) вводим полученный ранее ip-адрес, остальные опции оставляем без изменений.
После нажатия кнопки Open эмулятор терминала произведет подключение к серверу. Потребуется ввести комбинацию логин/пароль. На первоначальном этапе используем логин root и пароль, полученные на этапе создания сервера.
login as: root
root@xx.xx.xx.178's password:
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-51-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
Expanded Security Maintenance for Applications is not enabled.
0 updates can be applied immediately.
Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
root@kassie:~#
Установить Apache
При установке и конфигурации будет использован пользователь, отличный от root, но с правами администратора. Для большинства операций требуются привилегии суперпользователя.
Чтобы повысить привилегии обычного пользователя, используется команда sudo. Первоначально необходимо загрузить информацию об актуальных списках пакетов и зависимостях.
sudo apt update
После этой операции произведем установку пакета Apache2, он располагается в стандартном репозитории, дополнительные добавлять не нужно.
sudo apt install apache2
По окончании демон запускается автоматически, а также попадает в автозагрузку.
Настроить брандмауэр для Apache
Рекомендуем в Ubuntu использовать ufw. Uncomplicated Firewall — утилита для настройки межсетевого экрана. Если настройка происходит на виртуальном сервере, желательно проверить наличие установленной утилиты.
sudo ufw status verbose
В случае отсутствия ее в списке установленных пакетов появится ошибка:
sudo: ufw: command not found
Тогда ее необходимо установить:
sudo apt install ufw
Заново запросим ее статус:
Status: inactive
Это означает, что она деактивирована. Активируем:
sudo ufw enable
Разрешаем HTTP на сервере:
sudo ufw allow http
Очень важно в этом моменте разрешить SSH-доступ. На тестовом сервере SSH на стандартном порту 22.
sudo ufw allow 22/tcp
Обязательно перезапустить процесс:
sudo ufw reload
Проверить базовую настройку Apache
На данный момент сервер доступен из интернета по HTTP. Можно проверить это в браузере по ip-адресу в поисковой строке. Ip-адрес мы уже получили в панели управления сервером.
Появившееся приветствие означает успешную начальную настройку Apache-сервера.
Как запустить Apache и другие полезные команды
В этом разделе будут собраны базовые команды для управления Apache web-сервером. Несмотря на то, что демон запускается самостоятельно, иногда необходимо выключить его или перечитать конфигурацию.
Проверить статуса демона Apache:
sudo systemctl status apache2
В выводе будет указан текущий статус. Возможны два варианта.
Активен:
apache2.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
Active: active (running) since Fri 2025-01-24 10:48:52 UTC; 9min ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 1924 (apache2)
Tasks: 55 (limit: 1119)
Memory: 6.3M (peak: 6.5M)
CPU: 66ms
CGroup: /system.slice/apache2.service
├─1924 /usr/sbin/apache2 -k start
├─1927 /usr/sbin/apache2 -k start
└─1928 /usr/sbin/apache2 -k start
Неактивен:
apache2.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
Active: inactive (dead) since Fri 2025-01-24 10:58:38 UTC; 1s ago
Duration: 9min 45.788s
Docs: https://httpd.apache.org/docs/2.4/
Process: 3709 ExecStop=/usr/sbin/apachectl graceful-stop (code=exited, status=0/SUCCESS)
Main PID: 1924 (code=exited, status=0/SUCCESS)
CPU: 83ms
Иногда возникает ошибка.
apache2.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Fri 2025-01-24 11:01:08 UTC; 2s ago
Duration: 9min 45.788s
Docs: https://httpd.apache.org/docs/2.4/
Process: 3732 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
CPU: 10ms
Jan 24 11:01:08 kassie systemd[1]: Starting apache2.service - The Apache HTTP Server...
Jan 24 11:01:08 kassie apachectl[3734]: AH00526: Syntax error on line 13 of /etc/apache2/sites-enabled/000-default.conf:
Jan 24 11:01:08 kassie apachectl[3734]: Invalid command 'meow', perhaps misspelled or defined by a module not included in the server configuration
Чтобы выйти в консоль из статуса, необходимо использовать клавишу q или комбинацию клавиш Ctrl+С.
Для деактивации:
sudo systemctl stop apache2
Для активации:
sudo systemctl start apache2
Перезапуск:
sudo systemctl restart apache2
При изменении конфигурации Apache возможно ее перечитать без разрыва текущей сессии с хостов:
sudo systemctl reload apache2
Чтобы деактивировать запуск web-сервера при загрузке:
sudo systemctl disable apache2
Активировать автозагрузку:
sudo systemctl enable apache2
Настроить виртуальные хосты Apache
Можно использовать веб-сервер Apache для поддержки одного web-приложения. Но достаточно часто приходится на одном сервере создавать и обслуживать несколько web-ресурсов. В Apache для этих целей используется модуль виртуальных хостов. Он позволяет развернуть несколько web-приложений на одном сервере с использованием одного ip-адреса, но разных доменных имен. Про теорию доменных имен есть хорошие статьи и книги, например, статья о DNS-сервере BIND и книга Крикета Ли, Пола Альбитц «DNS и BIND». Об управлении доменами и ресурсными записями написали в базе знаний Selectel.
Перейдем к настройке виртуального хоста.
В Ubuntu конфигурации виртуальных хостов расположены в директории /etc/apache2/sites-available. Нам необходимо получить директорию для виртуального хоста по умолчанию. Получим root-директорию из файла дефолтной конфигурации:
grep "DocumentRoot" /etc/apache2/sites-available/000-default.conf
Вывод:
DocumentRoot /var/www/html
Создадим новые необходимые директории, не меняя корневой.
sudo mkdir -p /var/www/example.com/html
В стандартном исполнении Apache ищет документ index.htm или index.html
Создадим простой html5-документ:
sudo touch /var/www/example.com/html/index.html
Добавим небольшую структуру документа, открыв его в текстовом редакторе:
sudo nano /var/www/example.com/html/index.html
Вставляем в файл.
<!DOCTYPE html>
<html>
<head>
<title>Hello</title>
<meta charset="utf-8">
</head>
<body>
<h1>Hello Selectel!</h1>
</body>
</html>
Чтобы оставить дефолтную конфигурацию виртуального хоста неизменной, копируем его в созданную ранее директорию настроек нового виртуального хоста.
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
Теперь откроем скопированный файл, рассмотрим основные директивы и внесем необходимые правки. На данном этапе нам будет интересна только строка, в которой указан путь к директории виртуального хоста. Меняем его на путь к директории, созданной специально для него. Чтобы при обращении Аpache мог перенаправить запрос именно к созданному нами виртуальному хосту.
sudo nano /etc/apache2/sites-available/example.com.conf
Файл дефолтного виртуального хоста:
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf</VirtualHost>
<VirtualHost *:80> — в этой строке указываем ip-адрес сервера, а также порт, используемый для этого виртуального хоста. На данный момент мы используем HTTP и один ip-адрес. В связи с этим номер порта 80, адрес не указываем. Настройка HTTPS будет описана ниже.
ServerAdmin webmaster@localhost — строка связи с администратором, необходимо указать активный почтовый адрес отвечающего за обслуживание сервера специалиста. Опционально. Добавим адрес, по которому всегда придут на помощь support@selectel.ru.
DocumentRoot /var/www/html — root-директория или корневой каталог виртуального хоста. Обязательна к применению и настройке. В нашем случае это путь к созданной ранее директории с документом index.html. Вносим изменения:
/var/www/example.com/html
ErrorLog ${APACHE_LOG_DIR}/error.log — путь к файлу с логами сервера. Вносить какие-либо изменения нет необходимости. Здесь будут храниться ошибки запуска демона и ошибки, не относящиеся к клиентам.
CustomLog ${APACHE_LOG_DIR}/access.log combined — это директива для хранения логов клиентского доступа.
Редактирование файла на этом завершается. Это минимальная конфигурация для запуска виртуального хоста на Apache web-сервере. Изменять конфигурацию далее на данном этапе нет необходимости.
Сохраняем и выходим из редактора. Для сохранения используется комбинация Ctrl+o, для выхода Ctrl+x.
Файл с готовой конфигурацией:
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin support@selectel.ru DocumentRoot /var/www/example.com/html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf</VirtualHost>
Для подключения виртуальных хостов, а также модулей в Apache HTTP-сервере используется набор команд:
a2enmod {модуль} — подключение модуля;
a2dismod {модуль} — отключение модуля;
a2ensite {конфиг виртуального хоста} — подключает виртуальный хост;
a2dissite {конфиг виртуального хоста} — отключает виртуальный хост.
Нам потребуется a2ensite для активации созданного хоста:
sudo a2ensite example.com.conf
И a2dissite для деактивации дефолтного:
sudo a2dissite 000-default.conf
После внесенных изменений требуется перечитать конфигурацию сервера:
sudo systemctl reload apache2
Теперь мы можем обратиться с созданному виртуальному хосту по доменному имени.
В этой инструкции мы не используем dns, поэтому для разрешения имени используем файл hosts.
В windows этот файл расположен здесь: C:\Windows\System32\drivers\etc\hosts.
А в linux/mac: /etc/hosts.
Добавим строчку: 94.0.0.0 example.com.
Где 94.0.0.0 — ранее полученный ip-адрес сервера, а example.com — доменное имя виртуального хоста.
Теперь перейдем в браузер и в адресной строке наберем: example.com.
Получим созданное web-приложение:
SSL для Apache
TLS (transport layer security — протокол защиты транспортного уровня) и предыдущая версия защиты SSL (secure sockets layer — слой защищенных сокетов). Это все протоколы криптографии, созданные для защиты передачи данных между узлами в информационной сети.
Оба протокола используют асимметричное шифрование для аутентификации, симметричное шифрование для конфиденциальности и коды аутентичности сообщений. Подробно останавливаться на теории сейчас нет необходимости. На первоначальном этапе достаточно быть в курсе, что эти протоколы отвечают за сохранность конфиденциальности данных в момент обмена данными между клиентом и сервером. Ключи могут быть самозаверяющими, т.е. созданными и подписанными самим web-сервером.
Такие ключи подходят для использования протокола HTTPS и шифрования данных, но не являются доверенными для сети интернет. Также сертификаты бывают выданными центрами сертификации. Они не только шифруют данные, но также web-браузер знает о таком ключе и доверяет ему по-умолчанию. В таком случае сертификаты платные, но имеется возможность использования бесплатного сервиса Let`s encrypt. С использованием сервиса можно создать и заверить ключ.
В этом случае сертификат будет действительным для сети интернет, но бесплатным. В этой инструкции будет настроено простое шифрование с использованием самозаверяющего ключа, созданного на сервере Apache.
Создать SSL-сертификат на сервере
Чтобы создать и подписать сертификат, потребуется пакет OpenSSL. Он есть в системе, не нужно устанавливать. Сейчас будет создан и подписан сертификат, а также закрытый и открытый ключи будут перемещены в необходимые директории.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/server-example.key -out /etc/ssl/certs/server-example.crt
Расшифровка опций из команды:
req -x509 — опция определения стандарта сертификата (-x509 стандарт инфраструктуры открытого ключа).
-nodes — отказаться от защиты сертификата паролем. Если убрать эту опцию, произойдет запрос пароля для ключа, который необходимо вводить при каждом запуске web-сервера (желательно использовать в продакшене).
-days 365 — срок действия сертификата. Обычно срок устанавливается более длительный, но для тестового сервера достаточно. Также необходимо учитывать, что на web-сервере время и дата должны быть верными.
-newkey rsa:2048 — опция указывает на создание нового сертификата и ключа единовременно. Часть rsa:2048 обозначает размер ключа.
-keyout /etc/ssl/private/server-sample.key — обозначает директорию, в которую необходимо поместить закрытый ключ.
-out /etc/ssl/certs/server-sample.crt- — директория местоположения сертификата.
server-sample.key и server-sample.crt — имена ключа и сертификата.
После ввода команды потребуется ответить на некоторые вопросы, разберем список директив:
Country Name (2 letter code) [AU]:RU — указываем страну.
State or Province Name (full name) [Some-State]:LIP — область.
Locality Name (eg, city) []:Lipetsk — город.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Sel — организацию.
Organizational Unit Name (eg, section) []:Sel — отдел.
Common Name (e.g. server FQDN or YOUR name) []:94.255.255.255 — вводим доменное имя или белый адрес сервера.
Email Address []: — адрес для связи с владельцем ключа. Можно оставить пустым или заполнить почту, аналогичную ServerAdmin в конфигурации веб-сервера.
После выполнения операции требуется подключение модуля SSL для Apache HTTP-сервера. Ранее были разобраны команды для этого действия. Вот так выглядит необходимая:
sudo a2enmod ssl
После включения модуля необходимо перезапустить демона Apache.
Переходим к настройке HTTPS для виртуального хоста. Вносим изменения в файл его настройки.
sudo nano /etc/apache2/sites-available/example.com.conf
Во-первых, меняем директиву <VirtualHost *:80>.
Порт изменится на 443 (порт для протокола HTTPS по умолчанию).
Добавляем директиву SSLEngine on после строки DocumentRoot для включения поддержки SSL на web-сервере.
После этого еще две строки, в которых указан путь к ключу и сертификату:
SSLCertificateFile /etc/ssl/certs/server-example.crt
SSLCertificateKeyFile /etc/ssl/private/server-example.key
Теперь файл конфигурации виртуального хоста выглядит следующим образом:
<VirtualHost *:443> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin support@selectel.ru DocumentRoot /var/www/example.com/html SSLEngine on SSLCertificateFile /etc/ssl/certs/server-example.crt SSLCertificateKeyFile /etc/ssl/private/server-example.key # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf</VirtualHost>
Перед проверкой по web добавим разрешающее правило безопасности:
sudo ufw allow https
А также перечитаем конфигурацию web-сервера Apache:
sudo systemctl reload apache2
Теперь при запросе сервера по HTTPS:example.com браузер выдаст оповещение о небезопасном сертификате. Проигнорировав его, будет отображено созданное ранее web-приложение.
На этом настройка SSL закончена.
Конфигурационные файлы и директории web-сервера Apache
Приведенные файлы и директории используются для настройки Apache-сервера. В данном документе уникальных настроек не приводится. Этот раздел создан для ознакомительных целей.
/etc/apache2 — директория конфигурационных файлов Apache.
/etc/apache2/apache2.conf — основной файл конфигурации сервера. Он отвечает за множество настроек сервера. Например, включить чтение файла .htaccess необходимо именно здесь.
/etc/apache2/envvars — файл значения переменных среды для Apache.
/etc/apache2/magic — отображает инструкции для определения типа файла на сервере и клиенте.
/etc/apache2/ports.conf — настройка слушающих портов по умолчанию.
/etc/apache2/sites-available/ — директория конфигураций виртуальных хостов.
/etc/apache2/sites-enabled/ — здесь хранится информация об активных виртуальных хостах.
/etc/apache2/conf-available/ — директория настроек хостов, не относящихся к виртуальным.
/etc/apache2/conf-enabled/ — ссылки на включенные хосты, не относящиеся к виртуальным.
/etc/apache2/mods-available/ и /etc/apache2/mods-enabled/ — директории модулей. Модули, а также их настройки расположены здесь.
/var/www — директория для хранения web-приложений. Обычно виртуальные хосты тоже хранят здесь. Может быть изменена.
/var/log/apache2 — директория файлов логирования, содержит в себе два файла, ранее в этой инструкции было описано какой из них за что отвечает.
Безопасность web-сервера Apache
Сервер, который смотрит в интернет, вне зависимости от задач на него возложенных, находится в опасности. Он может быть атакован злоумышленниками с последующим вмешательством в его функциональность. Рассмотрим защиту от доступа неблагонадежных пользователей к серверу по протоколу SSH.
В Linux-системах отличным решением является утилита Fail2ban. Принцип ее работы основан на отслеживании файлов логирования доступа к серверу. По заданному количеству попыток обращений создается правило блокировки ip-адреса, с которого предположительно происходит вторжение.
Установка и настройка Fail2ban
sudo apt-get install fail2ban -y
Утилита из коробки включает защиту от перебора паролей. Но в нашем случае перед включением будут внесены несколько изменений.
/etc/fail2ban/jail.conf — отвечает за настройки безопасности конкретных сервисов.
Вносить изменения в него не рекомендуется, поэтому создадим новый файл с расширением .local. Эти файлы имеют приоритет выше, чем файл .conf для Fail2ban.
sudo nano /etc/fail2ban/jail.local
Внесем настройки для защиты SSH:
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 4
bantime = 60
Построчно:
Директива [sshd] отвечает за защиту доступа по SSH при отказе в авторизации;
enabled = true — состояние;
port = 22 — номер порта;
filter = sshd — имя, по которому идет поиск в логах сервиса;
logpath = /var/log/auth.log — файл журнала, из которого будут взяты результаты поиска по фильтру;
maxretry = 4 — количество неудачных попыток;
bantime = 60 — время блокировки в секундах. Сейчас эта секция добавлена для тестовой инструкции, в продакшене обычно время блокировки больше.
С настройкой закончили, добавим демона fail2ban в загрузку и запустим, а потом проверим его работу.
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Как мы видим, доступ заблокирован после превышения попыток авторизации.
Через 60 секунд доступ появится.
Для того, чтобы разблокировать доступ, принудительно используется команда:
sudo fail2ban-client set sshd unbanip ip_add
ip_add — заблокированный адрес.
Установка и настройка Apache на Windows Server
Рассмотрим также установку HTTP-сервера Apache на операционную систему Windows. В примере будем использовать Microsoft® Windows Server 2019 Standard.
Подготовка системы
Предположим, что операционная система уже установлена на сервер, а также имеется общедоступный IP‑адрес.
Для работы веб-сервера Apache в системе должен быть установлен пакет Microsoft Visual C++ Redistributable, который необходим для запуска приложений, созданных в Microsoft Visual Studio. Подробная информация и ссылки для скачивания различных версий можно найти на странице Microsoft. Мы воспользуемся последним выпуском для платформы x64, ссылку на который копируем в буфер обмена.
Переходим к работе с сервером. В нашем случае он называется Wendy.
Почти вся дальнейшая работа будет выполняться в консоли панели управления. Взаимодействие с операционной системой Windows Server осуществляется через графический интерфейс. Наиболее удобный способ дистанционно работать с ОС Windows — воспользоваться одной из программ, предназначенных для обмена данными по протоколу RDP.
RDP (Remote Desktop Protocol) — это протокол удаленного доступа, разработанный Microsoft. Он позволяет подключаться к другому компьютеру через сетевое соединение, видеть его экран и взаимодействовать с ним через интерфейс программы.
В операционных системах от Microsoft уже встроена утилита «Подключение к удаленному рабочему столу». Также существуют RDP-клиенты для macOS, Linux, Android и iOS.
Использование дополнительного необязательного ПО выходит за рамки данной инструкции, поэтому мы прибегнем к минималистичному, хоть и не самому удобному способу — будем взаимодействовать с сервером через браузер. Для удобства его рабочий стол можно развернуть во весь экран.
Запускаем Internet Explorer и вставляем в адресную строку скопированную ранее ссылку на последнюю версию Visual C++ Redistributable, сохраняем пакет и запускаем установщик.
Установка Apache
На официальной странице веб‑сервера Apache сказано, что для систем Microsoft готовые сборки не поддерживаются. Однако предоставляется список доверенных сайтов, где готовую сборку можно взять. Мы воспользуемся самым первым — apachelounge.com.
Выбирая место на диске для размещения Apache, следует иметь в виду один нюанс. Пакет сконфигурирован так, что без дополнительных действий он будет работать только при установке в корневую папку директории C:\, то есть главный исполняемый файл httpd.exe оказывается в каталоге C:\Apache24\bin. В противном случае, в файле Apache24\conf\httpd.conf необходимо переопределить переменную SRVROOT: изменить значение по умолчанию «c:/Apache24» на актуальный путь файлов веб‑сервера.
Define SRVROOT "c:/Apache24"
Обратите внимание, что для обозначения пути используется слэш, а не обратный слэш!
Мы не рассматриваем в статье глубокую настройку Apache, такую как разрешение выполнять скрипты Perl и CGI. Необходимую информацию можно найти в документации.
Продолжим работу в консоли. Проверим работоспособность веб-сервера. Перейдем в каталог, где находится файлы Apache (по умолчанию, это C: \Apache24) и запустим приложение:
> cd C:\Apache24
> .\httpd.exe
Обратите внимание на точку в начале команды — она задает текущий каталог явно!
Открываем Internet Explorer и ввводим в адресную строку localhost. Должна отобразиться надпись It works.
Покинем временно консоль в панели управления и воспользуемся браузером, который используем в повседневные жизни. Введем в его адресную строку IP-адрес хоста, на котором запущен Apache. В нашем случае — это 5.159.102.111. Страница окажется недоступной — брандмауэр Windows блокирует доступ к серверу.
Настройка правил брандмауэра
Чтобы к Apache можно было достучаться из публичной сети, необходимо добавить правило для межсетевого экрана. Открываем меню Пуск и в строке поиска вводим firewall:
Переходим в раздел углубленных настроек:
Далее в разделе входящих соединений создаем правило для программы, где указываем путь к исполняемого файлу Apache — httpd.exe:
Путь к файлу программы удобнее всего задать, воспользовавшись кнопкой Browse:
На следующем шаге разрешаем соединения:
Убеждаемся, что все галочки выставлены:
Скриншот последнего шага приводить не будем — он очень прост: необходимо придумать произвольное имя для созданного правила.
Вновь покидаем панель управления и возвращаемся к обычному браузеру. Видим, что наш веб-сервер работает и доступен из интернета:
Способы запуска
Обычно сервер выполняется в системе в качестве службы. Для этого можно использовать следующие команды, открыв ту же консоль CMD или powershell:
- httpd.exe -k start — для запуска,
- httpd.exe -k stop — для остановки,
- httpd.exe -k restart — для перезапуска.
Обратите внимание, консоль должна открываться от имени администратора — в противном случае для управления процессом не хватит прав.
Заключение
На этом инструкция по настройке web-сервера Apache завершена. Подведем итог: мы настроили один из самых популярных web-серверов и доступ к нему по протоколу HTTPS , изучили возможность настройки виртуальных хостов и обезопасили сервер от злоумышленников. На данном этапе администратор может самостоятельно обслуживать и настраивать Apache web-сервер на linux.
Другие материалы по работе с Apache
Все способы:
- Шаг 1: Скачивание и распаковка файлов
- Шаг 2: Изменение конфигурационного файла
- Шаг 3: Первый запуск локального веб-сервера
- Вопросы и ответы: 17
В этой статье мы разберем только основные принципы установки и первого запуска веб-сервера Apache на компьютере под управлением Windows. Учитывайте, что все остальные действия, такие как: установка PHP, подключение MySQL, добавление других необходимых компонентов для локального сервера, придется выполнять вручную, из-за чего могут изменяться настройки Apache. Если во время редактирования глобальных параметров возникнут проблемы, не стесняйтесь обращаться к официальной документации и искать в поисковике решение ошибок по их кодам.
Шаг 1: Скачивание и распаковка файлов
Apache для Windows распространяется в виде ZIP-архива, в котором находятся все нужные файлы. Установка через Терминал, как это осуществляется в дистрибутивах Linux, в этом случае недоступна, поэтому для получения файлов выполните следующие действия:
Скачать Apache с официального сайта
- Кликните по кнопке выше, чтобы перейти на официальный сайт веб-сервера, где нажмите по ссылке с названием последней доступной версии Apache.
- Вы окажетесь на странице описания версии, после чего выберите «Files for Microsoft Windows».
- В разделе «Downloading Apache for Windows» нажмите на ссылку «Apache Lounge».
- Выберите версию для разрядности своей операционной системы и начните загрузку.
- Пока файлы скачиваются, создайте папку, куда будут помещены все элементы, связанные с веб-сервером. Мы выбрали для этого системный раздел жесткого диска, создали папку «Server», а в ней — «Bin». Это стандартные названия каталогов, поэтому при редактировании конфигурационного файла будем учитывать именно данное расположение.
- Перетащите папку «Apache24» из скачанного архива в созданный ранее каталог «Bin».
Шаг 2: Изменение конфигурационного файла
Конфигурация локального веб-сервера, установленная по умолчанию, не подходит для его нормального запуска, чтобы проверить работу и подключить остальные компоненты. Связано это с изменением пути расположения файлов и другими параметрами, влияющими на старт программы. Измените их, выполнив представленные далее шаги.
- Перейдите по пути
C:\Server\bin\Apache24\conf\
. - Дважды кликните по файлу «httpd.conf» для его открытия.
- Если у вас есть продвинутый текстовый редактор, выберите его для просмотра файла конфигурации. В противном случае используйте стандартный «Блокнот».
- В документе найдите строку
Define SRVROOT "c:/Apache24"
. - Замените ее на
Define SRVROOT "c:/Server/bin/Apache24"
, чтобы указать новый путь к файлам. Учитывайте, что в строке мы указали созданный ранее путь. Если у вас он отличается, поменяйте выражение в кавычках. - Далее найдите строку
#ServerName www.example.com:80
, которая по умолчанию заключена в комментарий и неактивна. - Измените ее на
ServerName localhost
, указав тем самым локальный адрес, который в дальнейшем и будет использоваться для проверки веб-сервера. - Отыщите строки
DocumentRoot "${SRVROOT}/htdocs"
и<Directory "${SRVROOT}/htdocs">
, которые отвечают за расположение связанных с сервером файлов. - Замените их на
DocumentRoot "c:/Server/data/htdocs"
и<Directory "c:/Server/data/htdocs">
. - Сейчас параметр
DirectoryIndex
имеет только значениеindex.html
, поэтому его тоже нужно найти и отредактировать. - Добавьте еще несколько доступных форматов файлов, чтобы в итоге строка обрела вид
DirectoryIndex index.php index.html index.htm
. - Для строки
AllowOverride None
поменяйте состояние наAll
, удалив предыдущее выражение. - Осталось только найти
#LoadModule rewrite_module modules/mod_rewrite.so
и убрать значок #, активировав тем самым строку. - В итоге она должна отображаться так, как это показано на следующем скриншоте.
- Если с поиском конкретных строк у вас возникают проблемы, используйте сочетание клавиш Ctrl + F, чтобы вызвать инструмент «Найти» и вписать там необходимое выражение.
- Перед выходом не забудьте сохранить изменения в конфигурационном файле.
Шаг 3: Первый запуск локального веб-сервера
Приступим к первому запуску локального веб-сервера Apache для проверки его работоспособности. Надо это для того, чтобы при дальнейшей настройке у вас не возникло серьезных неполадок, на решение которых потратится много времени.
- Щелкните правой кнопкой мыши по меню «Пуск» и из появившегося меню выберите пункт «Windows PowerShell (администратор)».
- Введите команду
c:\Server\bin\Apache24\bin\httpd.exe -k install
и нажмите Enter для ее активации. Она установит компоненты Apache и подготовит их к работе. - После получения информации об успешной установке сервисов переходите к следующему шагу.
- Запуск веб-сервера осуществляется через команду c
:\Server\bin\Apache24\bin\httpd.exe -k start
. - Появится оповещение Безопасности Windows, которое следует подтвердить, нажав «Разрешить доступ».
- Откройте любой браузер и перейдите по адресу
http://localhost/
. Если на странице появилась надпись «Index of /», значит, все действия выполнены правильно. - При получении ошибки в консоли, свидетельствующей об отсутствии необходимых папок, перейдите в каталог «Server», создайте там директорию «data» с подпапкой «htdocs».
Наша группа в TelegramПолезные советы и помощь
Время на прочтение8 мин
Количество просмотров277K
Доброго времени суток, уважаемые читатели. В этой статье я хочу поделиться с вами личным опытом настройки Apache под Windows 8.1 x64.
Было время – установил я себе Windows 8.1 и думаю, раз уж пошло на то, «дай ка» Я и Apache подниму! И как обычно меня он очень порадовал (табличка: «Сарказм»). Пришлось повозиться почти целую ночь, чтобы поднять сервер. И мне это удалось! После этого я решил тем самым написать небольшую статью по настройке Apache, чтобы другой человек не тратил на это столько же времени, сколько Я.
После нескольких минут раздумий, решил написать пошаговую инструкцию, которая будет состоять из нескольких разделов:
- Подготовка папок
- Настройка Apache
- Настройка PHP
- Настройка MySQL
- Устанавливаем phpMyAdmin
Ну что ж, приступим.
Подготовка папок
Я очень не люблю, чтобы у меня все валялось, где попало, так что для начала создадим папки, где у нас будут располагаться программы и сайты.
Создадим на диске «C:\» (или где вам удобней) папку «Server»:
C:\Server\
В ней создадим 2 папки:
C:\Server\web
– это папка в которой у нас будут лежать программы
C:\Server\domains
– а в этой папке будут лежать наши сайты
Итак, в папке \web\ мы создадим 3 папки для apache, php, mysql:
C:\Server\web\apache\
C:\Server\web\php\
C:\Server\web\mysql\
Далее перейдем в папку domains и создадим папку \localhost\
C:\Server\domains\localhost\
Внутри папки у нас будет 2 подпапки: public_html – для файлов сайта; logs – для текстовых файлов, в которых записывается «кто» получал доступ к сайту и какие ошибки в работе сайта появлялись.
C:\Server\domains\localhost\public_html\
C:\Server\domains\localhost\logs\
На этом структура папок заканчивается, переходим к настройке Apache.
Настройка Apache
Для установки Apache нам понадобиться сам Apache (Кэп). Так как у нас Windows 8.1 x64, то устанавливать будем Apache x64.
Для скачивания перейдем по ссылке:
www.apachelounge.com/download/win64
и скачиваем «httpd-2.4.6-win64.zip». Так же нам понадобиться для нормальной работы «Распространяемый пакет Microsoft Visual C++ 2010 (x64)». Для этого скачаем его по этой ссылке:
www.microsoft.com/ru-ru/download/details.aspx?id=14632
и устанавливаем.
После того как скачался наш архив с Apache, откроем его. Открыв архив, мы увидим папку «Apache24», зайдем в нее. Появиться множество папок и файлов программы, все распаковываем в заготовленную ранее папку:
C:\Server\web\apache\
Должно получиться так:
C:\Server\web\apache\bin\
C:\Server\web\apache\cgi-bin\
C:\Server\web\apache\conf\
C:\Server\web\apache\error\
C:\Server\web\apache\htdocs\
C:\Server\web\apache\icons\
C:\Server\web\apache\include\
C:\Server\web\apache\lib\
C:\Server\web\apache\logs\
C:\Server\web\apache\manual\
C:\Server\web\apache\modules\
Папки, такие как \cgi-bin\, \htdocs\, \icons\ и \manual\ нам не нужны – можете их удалить.
Перейдем в папку:
C:\Server\web\apache\conf\
И откроем файл конфигурации Apache – «httpd.conf» любым текстовым редактором. В этом файле каждая строка содержит директивы для настройки Apache, а строки, начинающиеся со знака # (решетка) – комментарий и пояснение. Приступим к настройке:
Файл конфигурации Apache
# директива Apache
ServerRoot “C:/Server/web/apache”
# Слушаем на локальном IP порт (80 по стандарту)
Listen 127.0.0.1:80
# далее подключим библиотеки расширений для Apache
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module "C:/Server/web/php/php5apache2_4.dll"
# указываем Apache, что файлы с расширением php, нужно воспринимать как php-скрипты
AddHandler application/x-httpd-php .php
# укажем расположение файла настроек php
PHPIniDir “C:/Server/web/php”
# изменим имя сервера
ServerName 127.0.0.1:80
# изменим доступ к директории
<Directory />
Options Includes Indexes FollowSymLinks
AllowOverride All
Allow from all
# директория с нашими сайтами
DocumentRoot “C:/Server/domains”
# индексные файлы, по приоритету.
<IfModule dir_module>
DirectoryIndex index.php index.html index.htm index.shtml
# папка для log-файлов
ErrorLog “C:/Server/domains/logs/error.log”
CustomLog “C:/Server/domains/logs/access.log”
# добавим alias для phpMyAdmin, и поправим alias для cgi
<IfModule alias_module>
Alias /pma “C:/Server/domains/phpMyAdmin”
ScriptAlias /cgi-bin/ “C:/Server/web/apache/cgi-bin/”
# правим путь для cgi
<Directory “C:/Server/web/apache/cgi-bin”>
AllowOverride None
Options None
Require all granted
# типы файлов
<IfModule mime_module>
…
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# Другие конфиги:
Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-manual.conf
Include conf/extra/httpd-default.conf
<IfModule setenvif_module>
BrowserMatch "MSIE 10.0;" bad_DNT
<IfModule headers_module>
RequestHeader unset DNT env=bad_DNT
На этом заканчивается настройка httpd.conf.
В конфигурационном файле Apache httpd.conf были подключены дополнительные конфиги:
Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-manual.conf
Include conf/extra/httpd-default.conf
Откроем файл «C:\Server\web\apache\conf\extra\httpd-mpm.conf» и быстро пробежимся по нему.
# указываем, где у нас будет храниться pid-файл:
<IfModule !mpm_netware_module>
PidFile “C:/Server/web/apache/logs/httpd.pid”
Остальные параметры оставляем без изменений. Откроем файл «httpd-autoindex.conf», изменим там только строки с путем:
Alias /icons/ "c:/Server/web/apache/icons/"
<Directory "C:/Server/web/apache/icons">
Options Indexes MultiViews
AllowOverride None
Require all granted
Далее переходим к файлу «httpd-vhosts.conf», удаляем его содержимое. После того, как мы это сделали, начинаем наполнять его заново:
Файл хостов Apache
# на примере доменная localhost
<VirtualHost localhost:80>
DocumentRoot "C:/Server/domains/localhost/public_html"
ServerName localhost
ErrorLog "C:/Server/domains/localhost/logs/error.log"
CustomLog "C:/Server/domains/localhost/logs/access.log" common
# добавим для будущего phpMyAdmin (не забываем создать папку)
<VirtualHost phpmyadmin:80>
DocumentRoot "C:/Server/domains/phpmyadmin/public_html"
ServerName localhost
ErrorLog "C:/Server/domains/phpmyadmin/logs/error.log"
CustomLog "C:/Server/domains/phpmyadmin/logs/access.log" common
На этом редактирование файла заканчивается. Далее в оставшихся файлах правим только пути:
Файл «httpd-manual.conf»:
AliasMatch ^/manual(?:/(?:da|de|en|es|fr|ja|ko|pt-br|ru|tr|zh-cn))?(/.*)?$ "C:/Server/web/apache/manual$1"
<Directory "C:/Server/web/apache/manual">
В файле «httpd-default.conf» никаких изменений не производиться. На этом настройка конфигурации Apache завершается.
Настройка PHP
Раз у нас Windows 8.1 x64 и Apache x64 установлен и настроен, то и php должно быть x64.
Идем на сайт:
www.anindya.com/tag/php
и скачиваем архив php последней версии. Нам нужен php как модуль, т.е. для этого скачиваем Thread Safe. После того как архив скачался, открываем его и переносим содержимое в папку «C:\Server\web\php\». Создадим две пустые папки «tmp» и «upload». Далее в этой папке ищем файл «php.ini-development» и переименовываем его в «php.ini». Открываем файл в текстовом редакторе и изменяем директивы (комментирования строк в файле начинается с точки с запятой).
Настройка php.ini
short_open_tag = On
zlib.output_compression = On
post_max_size = 64M
include_path = ".;С:\Server\web\php\includes"
extension_dir = "C:/Server/web/php/ext"
upload_tmp_dir = "C:/Server/web/php/upload"
upload_max_filesize = 64M
extension=php_bz2.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_sockets.dll
extension=php_sqlite3.dll
; в секции [Date] указываем временную зону нашего сервера (http://php.net/date.timezone)
date.timezone = "Asia/Yekaterinburg"
session.save_path = "С:/Server/web/php/tmp/"
На этом настройка php заканчивается.
Настройка MySQL
Ставим MySQL x64 как сокет под windows. Скачиваем архив с последней версией MySQL x64:
dev.mysql.com/downloads/mysql
В низу страницы находим Windows (x86, 64-bit), ZIP Archive и жмем на кнопку «Download». Вам перекинет на страницу регистрации на сайте. Нажимаем внизу страницы «No thanks, just start my download», запуститься скачивание архива MySQL. После того как скачался архив откроем его и перенесем все содержимое папки в «C:\Server\web\mysql\»
Теперь открываем файл настроек MySQL – «C:\Server\web\mysql\my-default.ini». Удаляем все его содержимое и вносим туда свои данные.
[client]
port=3306
host=127.0.0.1
[mysqld]
port=3306
bind-address=127.0.0.1
enable-named-pipe
basedir="C:/Server/web/mysql/"
datadir="C:/Server/web/mysql/data/"
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Вот и всё. В конфигурационном файле мы указали, что скрипты могут обращаться к серверу и по локальному IP, и по сокет-соединению.
Осталось дело за малым. Добавим в системную переменную «PATH» пути к Apache и MySQL, для этого:
- Перетащите курсор мыши в правый нижний угол экрана
- Щелкните на значке «Поиск» и введите: панель управления
- Выберите System (Система)-> Advanced (Дополнительные параметры системы)
- Выберите Environment Variables (Переменные среды), в меню System Variables (Системные переменные), найдите переменную PATH и щелкните на ней.
- Пропишите пути к Apache и MySQL:
;C:\Server\web\apache\bin;C:\Server\web\mysql\bin
Далее установим службы Apache и MySQL. Для этого воспользуемся сочетанием клавиш «Win+X», появиться выпадающее меню в левом нижнем углу. Выберем «Командная строка (администратор)».
В командной строке вводим, для установки Apache:
httpd –k install
для установки MySQL:
mysqld.exe --install MySQL --defaults-file=”C:\Server\web\mysql\my-default.ini”
Установим пароль для MySQL-пользователя. Для этого запустим службу MySQL командой:
NET start MySQL
После того как служба запустилась, установим пароль:
mysqladmin –u root password ВашПароль
В файл «httpd-vhosts.conf» мы прописали два сайта, для того чтобы браузер мог их увидеть, названия сайтов нужно добавить в файла «hosts». Перейдем в папку:
C:\Windows\System32\Drivers\etc\
откроем файл «hosts» любым текстовым редактором (запустить от имени администратора) и в конец файла добавим:
127.0.0.1 localhost
127.0.0.1 phpmyadmin
Сохраняем файл.
Для удобства запуска и остановки служб Apache и MySQL создадим файлы start-server.bat и stop-server.bat.
Для этого перейдем в папку «C:\Server\» и создадим два этих файла.
Содержание «start-server.bat»:
@echo off
NET start Apache2.4
NET start MySQL
Содержание «stop-server.bat»:
@echo off
NET stop Apache2.4
NET stop MySQL
Настройка Apache, PHP и MySQL на этом закончена. Для того чтобы протестировать сервер, давайте в папке «C:\Server\domains\localhost\public_html» создадим файл «index.php» с содержимым:
<?php
echo phpinfo();
Далее запустим наш сервер, для этого запустите «start-server.bat» от имени администратора. После того как сервер запустился, откройте браузер и введите в адресной строке «localhost».
Должна отобразиться страница с информацией о PHP.
Устанавливаем PhpMyAdmin
Скачиваем последнюю версию PhpMyAdmin отсюда:
www.phpmyadmin.net/home_page/index.php
Открываем скаченный архив и переносим содержимое его папки в папку для нашего домена «C:\Server\domains\phpmyadmin\public_html\».
Находим файл «config.sample.inc.php», делаем его копию и переименовываем копию в «config.inc.php». Открываем файл текстовым редактором и меняем данные:
<?php
// Желательно сменить секретный код
$cfg['blowfish_secret'] = 'a8b7c6d';
$i = 0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
?>
Сохраняем и закрываем файл. Открываем в браузере сайт «http://phpmyadmin» и наслаждаемся.
Статья получилась объемная, но надеюсь полезная.
Apache HTTP-сервер представляет из себя кроссплатформенное программное обеспечение, назначение которого прежде всего это – размещение сайтов. Веб-сервер Apache поддерживает различные операционные системы, в том числе и Windows. Здесь разберём, как установить и настроить Apache для работы веб-страницы на Windows Server. В качестве примера будем использовать виртуальный выделенный сервер под управлением Windows Server 2022.
Предварительные работы
Перед тем, как приступить непосредственно к настройке веб-сервера, необходимо установить пакет Visual C++, содержащий компоненты среды, необходимые для запуска приложений C++, а именно, Visual C++ Redistributable for Visual Studio 2015. Данный пакет требуется для запуска Apache. Чтобы получить дистрибутив, перейдите по ссылке, где кликните Download
.
В следующем окне отметьте 64-х разрядную версию дистрибутива и ещё раз нажмите Download
.
После чего запустите на выполнение загруженный установщик, где активируйте согласие с условиями соглашения, затем нажмите Install
.
Загрузка и установка веб-сервера
Теперь можно обратиться к установке непосредственно веб-сервера. Zip-архив Apache доступен на его странице загрузки. Перейдите на неё и кликните в строку, содержащую 64-х битную версию веб-сервера.
По окончании загрузки архива извлеките из него каталог Apache24
. В нашем примере мы сохраняем его на диске C:
. Таким образом, файлы веб-сервера будут располагаться в папке C:\Apache24\
. При этом вы можете сохранить каталог в любое другое удобное для вас место и даже переименовать его по вашему усмотрению.
Настройка веб-сервера
Далее, переходим к настройке конфигурации Apache. Для этого необходимо внести изменения в конфигурационный файл httpd.conf
, который расположен в папке conf
каталога веб-сервера. Откройте файл для редактирования и прежде всего найдите строку Define SRVROOT "C:/Apache24"
. После чего приведите её в соответствие с тем, куда вы разместили и как переименовали каталог Apache24
. В нашем примере изменять данную строку необходимости нет.
Если в установленной версии конфигурационного файла отсутствует параметр Define SRVROOT
, то имя каталога необходимо прописать в следующих строках, заменив значение ${SRVROOT}
на путь к директории веб-сервера:
ServerRoot "${SRVROOT}"
DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">
ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
Затем найдите строку, которая содержит Options Indexes FollowSymLinks
, и дополните её ещё одним значением, чтобы строка выглядела следующим образом:
Options Indexes FollowSymLinks ExecCGI
Далее, необходимо разрешить веб-серверу выполнять файлы .cgi
и .pl
. Это должно позволить запускать CGI- и Perl-скрипты вне директории cgi-bin
. Для этого отыщите следующую строку:
#AddHandler cgi-script .cgi
И в начале строки удалите символ #
, тем самым актировав данную настройку. Следующей строкой добавьте ещё одну:
AddHandler cgi-script .pl
Кроме того, в самый конец конфигурационного файла добавьте строку, определяющую расположение Perl из системного реестра:
ScriptInterpreterSource Registry
Для применения внесённых изменений сохраните файл httpd.conf
.
Запуск веб-сервера
На следующем шаге мы попробуем запустить веб-сервер. Сделать это можно из командной строки или из оболочки PowerShell. В первом случае откройте командную строку, для чего используйте комбинацию клавиш Win
R
, либо строку поиска, где наберите cmd
.
В открывшейся командной строке запустите исполняемый файл httpd.exe
из директории bin
, расположенной в каталоге веб-сервера:
C:\Apache24\bin\httpd.exe
Запуск командной оболочки PowerShell так же производится при помощи клавиш Win
R
или строки поиска, где следует набрать powershell. Активация веб-сервера производится командой:
& "C:\Apache24\bin\httpd.exe"
Чтобы убедиться, что веб-сервер работает, откройте на вашем VPS браузер и перейдите в нём по адресу http://localhost
:
Настройка брандмауэра
На этом этапе страница, запущенная на нашем веб-сервере, работает исключительно при доступе с VDS. При этом доступ к странице извне закрыт брандмауэром виртуальной машины. Для того, чтобы это исправить, необходимо добавить в брандмауэр разрешающее правило для Apache.
Запуск брандмауэра осуществляется с использованием опять же комбинации Win
R
, где следует набрать firewall.cpl
. После открытия окна Windows Defender Firewall кликните в строку Advanced settings
.
В открывшемся окне перейдите в Inbound Rules
и кликните в New Rule
.
В стартовом окне мастера активируйте строку Program
и нажмите Next
.
Затем при помощи кнопки Browse
выберите файл httpd.exe
из каталога bin
, после чего нажмите Next
.
В следующем окне отметьте все чекбоксы и снова нажмите Next
.
И наконец, в строке Name
укажите название нового правила и для его сохранения кликните Finish
.
Теперь ваша веб-страница будет доступна из сети в том числе и с вашей локальной рабочей станции. Чтобы перейти к ней наберите в адресной строке браузера IP-адрес вашего удалённого сервера или имя домена, A-запись которого настроена на этот IP-адрес.
Запуск Apache как службы
На данном этапе необходимо произвести запуск веб-сервера так, чтобы он функционировал как служба. Это позволит отказаться от использования командной строки и оболочки PowerShell для запуска Apache, поскольку веб-сервер будет работать в фоновом режиме. Для этого откройте командную строку, перейдите в каталог bin
и запустите файл httpd.exe
со следующими параметрами:
httpd.exe -k install
Таким образом, Apache теперь будет работать как служба и проверить это можно в менеджере служб. Чтобы это сделать используйте комбинацию клавиш Win
R
, где введите services.msc
. В списке найдите службу Apache2.4, откройте её и убедитесь, что служба запущена. Если это не так, нажмите Start
.
В предыдущем материале, Что необходимо для установки веб-сервера, мы занимались поиском и скачиванием необходимых версий дистрибутивов для того, что бы установить на домашний компьютер локальный веб-сервер Apache.
В моем случае, я буду разворачивать локальный веб-сервер на базе 64-разрядной операционной системе Microsoft Windows 7.
Для этого с ресурса apachehaus.com мной был скачен архив Apache 2.4.12 (httpd-2.4.12-x64-vc11.zip) и по ссылки http://www.microsoft.com/en-us/download/details.aspx?id=30679 пакет Microsoft Visual C++ 2012.
Скачивание и установка пакета Visual C++
Первым делом устанавливаем пакет Microsoft Visual C++ 2012.
Если у Вас возникли проблемы с выбором и скачиванием пакета Visual C++, найдите в архиве Apache файл с ознакомительными сведения (файл readme). В нем должна быть ссылка на скачивание пакета Visual C++ c сайта www.microsoft.com. Скачайте и установите пакет Visual C++.
скачивание и установка пакета Visual C++
Распаковка архива Apache
Открываем скаченный с веб-сервером архив и распаковываем (копируем) директорию «Apache24» в корень локального диска C:
Для базовой настройки веб-сервера Apache перейдем в директорию «C:\Apache24\conf\» и найдем файл «httpd.conf». Откроем данный файл в текстовом редакторе, просмотрим его и по необходимости внесем изменения. Большая часть файла состоит из комментарий и пояснений, начинающихся со знака # (решетка). В качестве текстового редактора могу посоветовать Notepad++.
Конфигурационный файл httpd.conf
httpd.conf — главный файл конфигурации веб-сервера Apache, содержащий директивы, управляющие работой веб-сервера.
Notepad++ — свободный текстовый процессор (текстовый редактор) с открытым исходным кодом для Windows с подсветкой синтаксиса большого количества языков программирования и разметки.
Изменим значения основных директив конфигурационного файла httpd.conf
ServerRoot "С:/Apache24"
каталог, в котором расположен веб-сервер
Listen 80
номер порта для веб-сервера
LoadModule rewrite_module modules/mod_rewrite.so
Для загрузки модуля mod_rewrite раскомментируем строку
AddDefaultCharset utf-8
значение кодировки по умолчанию
ServerAdmin admin@example.com
Email адрес администратора веб-сервера
ServerName localhost:80
определяет имя и порт, который используется сервером для идентификации себя.
DocumentRoot "C:/Apache24/htdocs"
Назначаем корневую директорию управления сайтами
ErrorLog "logs/error.log"
расположение файла журнала ошибок.
LogLevel warn
уровень ошибок
CustomLog "logs/access.log" common
Установка сервиса (службы) Apache
Далее необходимо установить сервис Apache как службу. Для этого нам понадобится командная строка. Командная строка должна быть запущена от имени администратора.
Командная строка — позволяет вводить и выполнять команды операционной системы MS-DOS и другие компьютерные команды. Вводя команды, вы можете выполнять на компьютере различные задачи, не пользуясь мышью или сенсорным вводом.
Для того чтобы запустить командную строку необходимо нажать на кнопку «Пуск». В поле поиска введите «cmd» или «Командная строка», затем в списке результатов поиска наведите мышкой на найденный пункт («cmd» или «Командная строка»), щелкните по нему правой кнопкой мыши и выберите пункт «Запуск от имени администратора».
Перед нами появится окно консоли.
C:\Windows\system32>
Теперь необходимо перейти в директорию веб-сервера «bin» где находится файл «httpd.exe». Для этого используем команду «cd» и указываем полный путь до директории где находится файл «httpd.exe».
C:\Windows\system32>cd C:\Apache24\bin C:\Apache24\bin>
Для того, что бы установить сервис Apache как службу, необходимо выполнить команду
C:\Apache24\bin>httpd.exe -k install
При удачном выполнение установки получаем примерно такой ответ:
Installing the Apache2.4 service The Apache2.4 service is successfully installed. Testing httpd.conf.... Errors reported here must be corrected before the service can be started.
Перевод:
Установка службы Apache2.4
Служба Apache2.4 успешно установлен.
Тестирование httpd.conf ….
Ошибки, описанные здесь, должны быть исправлены и услуга может быть запущена.
Строка «The Apache2.4 service is successfully installed» означает, что служба установлена.
Если после строки «Errors reported here must be corrected before the service can be started» нет никаких сообщений, это означает, что в конфигурационных файлах не найдено критических ошибок и служба Apache24 запущена. Проверить ее работу можно открыв в браузере страницу localhost или страницу 127.0.0.1. Если страница по данным адресам открывается, то Вы добились желаемого, веб-сервер Apache установлен.
В случае, если после строки «Errors reported here must be …» присутствуют сообщения, то необходимо их исправить и перезапустить службу Apache. Обращаю Ваше на фразу «перезапустить», а не установить, ведь служба Apache24 уже установлена, просто она не может быть запущена, так как имеет ошибки в конфигурации.
Рассмотрим возможные ошибки при выполнении команды установки службы Apache24
... Failed to open the Windows service manager, perhaps you forgot to log in as Administrator?
Перевод: Не удалось открыть менеджер службы Windows, возможно, вы забыли войти как администратор?
Решение: Откройте командную строку от имени администратора
... Syntax error on line N of C:/Apache24/conf/httpd.conf: ...
Перевод: Синтаксическая ошибка в строке номер N в файле httpd.conf
... Service is already installed.
Перевод: сервис уже установлен (услуга уже установлена)
Управление службой Apache
Для управления запуском и остановкой сервиса Apache можно использовать «ApacheMonitor». Откройте директорию веб-сервера bin («C:\Apache24\bin») и запустите файл: ApacheMonitor.exe. В системном трее появится значок Apache, с помощью которого можно быстро запускать/останавливать службу Apache.
А также, так как сервис Apache устанавливается как служба, после его установки, управлять его запуском/остановкой можно в окне списка служб («Пуск» → пункт «Панель управления» → «Администрирование» → «Службы»)
При установки Apache, служба, по умолчанию получает имя «Apache» или «Apache24». Если, в силу каких либо причин, имя службы нас не устраивает, есть возможность задать собственное имя, используя в командной строке параметр «-n» c указанием имени службы через пробел. (Если в имени службы содержится пробел необходимо обернуть его в кавычки, т. е. «name service»). Рассмотрим дополнительно команды для управления сервисом Apache:
устанавливаем службу
C:\Apache24\bin\httpd.exe -k install или C:\Apache24\bin\httpd.exe -k install -n name_service C:\Apache24\bin\httpd.exe -k install -n "name service"
запускаем службу
C:\Apache24\bin\httpd.exe -k start или C:\Apache24\bin\httpd.exe -k start -n name_service C:\Apache24\bin\httpd.exe -k start -n "name service"
останавливаем службу
C:\Apache24\bin\httpd.exe -k stop или C:\Apache24\bin\httpd.exe -k stop -n name_service C:\Apache24\bin\httpd.exe -k stop -n "name service"
удаляем службу
C:\Apache24\bin\httpd.exe -k uninstall или C:\Apache24\bin\httpd.exe -k uninstall -n name_service C:\Apache24\bin\httpd.exe -k uninstall -n "name service"
получаем информации о версии службы
C:\Apache24\bin\httpd.exe -V
получаем конфигурацию службы
C:\Apache24\bin\httpd.exe -k config или C:\Apache24\bin\httpd.exe -k config -n name_service C:\Apache24\bin\httpd.exe -k config -n "name service"
Данная команда тестирует конфигурационный файл httpd.conf и отображает ошибки
Управлять службами также можно, используя в командной строке команду «net». Рассмотрим несколько примеров.
получаем список служб
C:\Windows\system32>net start
запускаем службу
C:\Windows\system32>net start Apache2.4 или C:\Windows\system32>net start "name service"
останавливаем службу
C:\Windows\system32>net stop Apache2.4 или C:\Windows\system32>net stop "name service"
Удаление службы используя командную строку
На моей практике был случай, когда я удалил файлы веб-сервера, забыв перед этим остановить службу и удалить ее. Соответственно служба не работала, так как файлы были удалены, но висела в списках. При развертывании нового веб-сервера, а именно при попытки установить службу, консоль ругалась, что данная служба уже установлена.
Для решения данной проблемы пришлось удалить службу, выполнив в командной строке следующую команду:
C:\Windows\system32>sc delete ServiceName или C:\Windows\system32>sc delete "Service Name"
где ServiceName или «Service Name» имя удаляемой службы
По итогам изучения данного материала мы рассмотрели процесс установки локального веб-сервера, познакомились с главным конфигурационным файлом httpd.conf и его основными директивами. Так же мы рассмотрели механизмы управления службой Apache, такие как: запуск, остановка, удаление, просмотр версии.
На следующем шаге мы подключим модуль интерпретатора языка программирование PHP к установленному веб-серверу, и тем самым укажем веб-серверу, что он должен исполнять php скрипты.