Оригинальный httpd.conf
Оригинальный конфигурационный файл httpd.conf, созданный инсталятором Apache, на основе инструкций по инсталяции, приведенных в этой статье, можно скачать тут: httpd.conf.original.
Последнее обновление статьи: 2011/09/08
Серьезная уязвимость Apache (все версии младше 2.2.20) |
Установка и настройка PHP, MySQL и Apavhe |
Конфигурационные директивы Apache файла http.conf |
Русскоязычный перевод комментариев httpd.conf |
PHP — как установить и настроить |
MySQL — как установить и настроить |
Опубликовано: 2011/08/29
HTML-код ссылки на эту страницу:
<a href=»https://petrenco.com/apache.php?txt=84″ target=»_blank»>Apache — установка и настройка.</a>
145582
Свой веб интерфейс к 1С: побеждаем CORS на IIS, сохраняя авторизацию
Если «веб морда» расположена не по тому же адресу, что и публикация 1С (что часто бывает, например, при разработке, публикация 1С на http://localhost/1c, а разрабатываемое веб-приложение на http://localhost:8080) или, например, мы заходим на веб приложение то по ip адресу, то по имени сервера, или просто веб сервер и сервер, на котором опубликована 1С — это разные сервера, то для большинства запросов от браузера к 1С срабатывает политика CORS, которая заключается в том, что браузер сначала посылает запрос OPTIONS, на который сервер должен ответить определенным образом, заголовками, содержащими разрешения, а потом уже (если разрешение есть), браузер посылает основной запрос. В случае, когда в публикации 1С (default.vrd) жестко прописан логин и пароль, разрулить ситуацию можно средствами 1С. В случае же, когда нужно сохранить авторизацию (или используется стандартный интерфейс odata), начинаются проблемы.
Общая структура
Как
уже упоминалось ранее, Apache может быть установлен в различных операционных
системах. Независимо от используемой платформы, размещенный веб-сайт, как правило, имеет четыре основных каталога: htdocs, conf, logs, cgi-bin.
htdocs является каталогом документов веб-сервера Apache по умолчанию, то есть это общедоступный каталог, содержимое которого обычно доступно для клиентов,
подключающихся через Интернет. Он
содержит все статические страницы и динамический контент, которые будут
обслуживаться после получения HTTP-запроса для них. Поскольку
файлы и подкаталоги в htdocs доступны для общественности, правильная обработка
разрешений на файлы имеет большое значение, чтобы не поставить под угрозу
безопасность и безопасность сервера.
conf — это каталог, в котором расположены все файлы конфигурации сервера. Файлы
конфигурации в основном представляют собой текстовые файлы, в которых
добавляются директивы для управления поведением и функциональностью
веб-сервера. Каждая
директива обычно помещается в отдельную строку, а хеш (#) указывает
комментарий, поэтому строка, пройденная им, игнорируется.
logs — это каталог, в котором хранятся журналы сервера, журналы доступа Apache и журналы ошибок. HTTP-сервер
Apache предоставляет множество различных механизмов для регистрации всего, что
происходит на нем, от первоначального запроса через процесс сопоставления
URL-адресов до окончательного разрешения соединения, включая любые ошибки,
которые могли произойти в процессе. В
дополнение к этому сторонние модули могут предоставлять возможности ведения
журнала или вводить записи в существующие файлы журналов, а приложения, такие
как скрипты PHP или другие обработчики, могут отправлять сообщения в журнал
ошибок сервера.
cgi-bin — это каталог, в котором хранятся скрипты CGI. CGI
(Common Gateway Interface) определяет способ взаимодействия веб-сервера с
внешними программами создания контента, которые часто называются
CGI-программами или CGI-скриптами. Это
программы или сценарии оболочки, которые написаны для выполнения Apache от
имени своих клиентов.
Важно
отметить, что вышеупомянутые имена файлов и каталогов (а также местоположения)
могут отличаться от одного сервера к другому в зависимости от установленного
аромата Apache и операционной системы, в которой он работает. Роли, однако, остаются прежними
Настройка ssl сертификата Lets Encrypt в apache
Теперь настроим работу web сервера apache с ssl сертификатом. Хотя если быть точным, то tls сертификатом. Устанавливаем пакет certbot для получения бесплатного ssl сертификата от let’s encrypt. Для этого нам сначала надо подключить репозиторий epel.
# dnf install epel-release # dnf install certbot
После установки пакетов certbot, если его запустить, напишет ошибку, что не может сам настроить apache.
Настроим все сами. Для начала создадим самоподписанный дефолтный сертификат, чтобы apache не ругался на отсутствие файла и смог запуститься.
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/localhost.key -out /etc/ssl/certs/localhost.crt
Все параметры оставляйте дефолтные, не принципиально. Мы этот сертификат использовать не будет. Перезапустите apache.
# apachectl restart
Теперь выпустим сертификат для нашего домена. Имейте ввиду, чтобы получить сертификат у вас должно быть действующее доменное имя, ссылающееся на web сервер, который настраиваете. Let’s Encrypt будет по доменному имени обращаться к серверу, на котором настраиваете сертификат, чтобы проверить домен. В тестовой лаборатории с вымышленным доменным именем получить настоящий ssl сертификат не получится.
# certbot certonly
В качестве способа аутентификации выбирайте
1: Apache Web Server plugin (apache)
Дальше заполняйте в соответствии с вашими названиями. После получения сертификата, укажем его в конфигурации виртуального хоста. В моем случае в файле z.serveradmin.ru.conf. Добавляем туда параметры ssl.
<VirtualHost *:80 *:443> ServerName z.serveradmin.ru ServerAlias www.z.serveradmin.ru DocumentRoot /web/sites/z.serveradmin.ru/www ErrorLog /web/sites/z.serveradmin.ru/log/error.log CustomLog /web/sites/z.serveradmin.ru/log/access.log common SSLEngine on SSLCertificateFile /etc/letsencrypt/live/z.serveradmin.ru/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/z.serveradmin.ru/privkey.pem <Directory /web/sites/z.serveradmin.ru/www> Options FollowSymLinks AllowOverride All Require all granted </Directory> php_admin_value date.timezone 'Europe/Moscow' php_admin_value max_execution_time 60 php_admin_value upload_max_filesize 30M </VirtualHost>
Перезапускайте apache и проверяйте работу сайта по https, зайдя по соответствующему протоколу.
По аналогии делаете с остальными виртуальными хостами, для которых используете бесплатные сертификаты let’s encrypt. Осталось дело за малым — настроить автоматический выпуск новых ssl сертификатов, взамен просроченным. Для этого добавляем в /etc/crontab следующую строку:
# Cert Renewal 30 4 * * * root /usr/bin/certbot renew --post-hook "/usr/sbin/apachectl restart" >> /var/log/le-renew.log
Переадресация с http на https в apache
В настроенном ранее примере https отлично работает, но неудобно, что нет автоматической переадресации с http на https. Чтобы использовать безопасную версию сайта, необходимо вручную в браузере набирать https. Хотя все современные браузеры уже сами умеют проверять версии сайта и если есть защищенная, то они автоматически сами ее выбирают.
Тем не менее, лучше все же добавить редирект с http на https. Его можно сделать двумя различными способами:
- Через файл .htaccess
- С помощью настройки виртуального хоста.
Мне нравится больше второй вариант, поэтому приводим конфиг виртуального хоста к следующему виду.
<VirtualHost *:80> ServerName z.serveradmin.ru ServerAlias www.z.serveradmin.ru Redirect permanent / https://z.serveradmin.ru </VirtualHost> <VirtualHost *:443> ServerName z.serveradmin.ru ServerAlias www.z.serveradmin.ru DocumentRoot /web/sites/z.serveradmin.ru/www ErrorLog /web/sites/z.serveradmin.ru/log/error.log CustomLog /web/sites/z.serveradmin.ru/log/access.log common SSLEngine on SSLCertificateFile /etc/letsencrypt/live/z.serveradmin.ru/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/z.serveradmin.ru/privkey.pem <Directory /web/sites/z.serveradmin.ru/www> Options FollowSymLinks AllowOverride All Require all granted </Directory> php_admin_value date.timezone 'Europe/Moscow' php_admin_value max_execution_time 60 php_admin_value upload_max_filesize 30M </VirtualHost>
Перечитывайте конфиг httpd и проверяйте. Должно работать автоматическое перенаправление на https версию.
Настройка веб-клиента 1С:Предприятие 8.2 под Windows 7 x64 и IIS.
Возникла необходимость отладить небольшую конфигурацию 1С:Предприятие 8.2 под веб-клиентом. Веб сервером был выбран IIS, являющийся самым родным для ОС Windows. Опыт использования этого сервера в Windows XP подсказывал, что с ним будет меньше проблем чем с Apache, но на недавно установленной Windows 7 x64 все оказалось не так просто. Мелкие проблемы начались с момента попытки публикации веб приложения, а после их устранения коснулись уже веб сервера, настройкой которого платформа 1С:Предприятие 8.2 не занимается. Героически победив все свалившиеся напасти, решил скомпоновать и выложить на всеобщее обозрение свои шаги в достижении цели.
Установка php в CentOS 8
Установка php в Centos 8 сильно упростилась по сравнению с предыдущей версией, потому что в базовом репозитории хранится актуальная версия php 7.2, которой можно пользоваться. Пока нет необходимости подключать сторонние репозитории, так как версия 7.2 вполне свежа и актуальна. Если у вас нет необходимости использовать что-то новее, то можно остановиться на этой версии.
Устанавливаем php в CentOS 8, а так же некоторые популярные модули, которые могут пригодиться для того же phpmyadmin.
# dnf install php php-cli php-mysqlnd php-json php-gd php-ldap php-odbc php-pdo php-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip
Выполним перезапуск apache:
# systemctl restart httpd
Создадим файл в директории виртуального хоста и проверим работу php:
# mcedit /web/sites/z.serveradmin.ru/www/index.php
<?php phpinfo(); ?>
# chown apache. /web/sites/z.serveradmin.ru/www/index.php
Заходим по адресу http://z.serveradmin.ru/index.php
Вы должны увидеть вывод информации о php. Если что-то не так, возникли какие-то ошибки, смотрите лог ошибок виртуального хоста, php ошибки будут тоже там. Если вам необходима более свежая версия php, то читайте статью по обновлению php 7.2 до 7.4.
Где лежит php.ini
После установки часто возникает вопрос, а где хранятся настройки php? Традиционно они находятся в едином файле настроек. В CentOS php.ini лежит в /etc, прямо в корне. Там можно редактировать глобальные настройки для всех виртуальных хостов. Персональные настройки каждого сайта можно сделать отдельно в файле конфигурации виртуального хоста, который мы сделали раньше. Давайте добавим туда несколько полезных настроек:
# mcedit /etc/httpd/conf.d/z.serveradmin.ru.conf
Добавляем в самый конец, перед </VirtualHost>
php_admin_value date.timezone 'Europe/Moscow' php_admin_value max_execution_time 60 php_admin_value upload_max_filesize 30M
Для применения настроек нужно сделать restart apache. Если у вас полностью дефолтная установка, как у меня, то скорее всего вы увидите ошибку.
Суть ошибки в том, что у нас не загружен модуль mod_php. Проверим, где он подключается. Это файл /etc/httpd/conf.modules.d/15-php.conf.
<IfModule !mod_php5.c> <IfModule prefork.c> LoadModule php7_module modules/libphp7.so </IfModule> </IfModule>
Тут стоит проверка на запуск модуля. Он загружается только, если у нас загружен модуль prefork. Давайте попробуем его загрузить принудительно. Для этого комментируем все строки, кроме основной.
LoadModule php7_module modules/libphp7.so
Проверяем конфигурацию apache.
# apachectl -t
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.
Получили новую ошибку. Смысл в том, что изначально apache сконфигурирован на работу модуля mpm_event, он подключается в конфиге /etc/httpd/conf.modules.d/00-mpm.conf.
LoadModule mpm_event_module modules/mod_mpm_event.so
Стандартный модуль mod_php скомпилирован с поддержкой модуля mpm_prefork. С другими он работать не будет. Таким образом, чтобы у нас нормально заработал php, нам надо вместо модуля mpm_event подключить модуль mpm_prefork. Для этого в конфиге 00-mpm.conf закомментируем подключение mpm_event_module и раскомментируем prefork.
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
После этого проверяйте конфигурацию и перезапускайте apache. Все должно заработать. Теперь в выводе phpinfo можно увидеть изменение настроек.
Я подробно разобрал эти ошибки, чтобы у вас было понимание, как все устроено и куда смотреть в случае проблем. Более подробно о работе и выборе mpm модулей читайте в официальной документации apache — http://httpd.apache.org/docs/2.4/mpm.html.
Настройка авторизации Apache
Итак, необходимый файл паролей готов. Теперь нужно настроить Apache для проверки этого файла перед обслуживанием закрытого контента. Это можно сделать двумя способами.
Первый способ: отредактировать настойки Apache и добавить сведения о файле паролей в виртуальный хост. Такой способ, как правило, более производительный, поскольку позволяет избежать чтения общих конфигурационных файлов. Если вы используете виртуальные хосты, рекомендуется прибегнуть к этому способу настройки.
Второй способ больше подходит пользователям, которые не имеют возможности редактировать виртуальный хост. В таком случае ограничить доступ к некоторым разделам сайта можно при помощи файла .htaccess. Сервер Apache использует файлы .htaccess для того, чтобы настроить определенные элементы конфигурации в каталоге, хранящем контент. Недостатком такого способа является то, что сервер Apache должен перечитывать все эти файлы при каждом запросе к этому каталогу, что может негативно повлиять на производительность.
Выберите наиболее подходящий способ настройки и следуйте инструкциям соответствующего раздела.
Настройка авторизации через виртуальный хост
Откройте файл виртуального хоста сайта, доступ к которому нужно ограничить. В данном примере используется стандартный файл 000-default.conf, содержащий виртуальный хост по умолчанию.
Раскомментированный файл выглядит так:
Авторизация в Apache настраивается по каталогам. Для этого найдите раздел каталога, к которому нужно ограничить доступ, в блоке <Directory ___>. В данном примере нужно ограничить доступ к document root (при необходимости укажите другой каталог):
В блоке этого каталога нужно указать тип авторизации, в данном случае – Basic. В параметре AuthName укажите имя области данных, которое будет отображаться при запросе. Используйте директиву AuthUserFile, чтобы указать созданный ранее файл паролей. Установите значение valid-user для директивы Require, чтобы разрешить доступ к контенту только тем пользователям, которые могут пройти авторизацию.
Сохраните и закройте файл. Перезапустите Apache, чтобы обновить конфигурации.
Теперь доступ к контенту, находящемуся в этом каталоге, защищён паролем.
Настройка авторизации при помощи файла .htaccess
Для начала нужно настроить Apache для поддержки файлов .htaccess. Откройте конфигурации Apache:
Найдите блок <Directory> каталога /var/www (как вы понимаете, это настройки каталога document root). Включите поддержку файлов .htaccess, заменив значение директивы AllowOverride на All.
Сохраните и закройте файл.
Затем нужно добавить файл .htaccess в каталог, доступ к которому нужно ограничить. Опять же, в примере доступ будет ограничен к каталогу document root, /var/www/html (то есть ко всему сайту). Чтобы ограничить доступ к другому каталогу, внесите в код соответствующие поправки.
В этом файле нужно указать тип авторизации, в данном случае это Basic. В директиве AuthName задайте имя области данных, которое будет отображаться при запросе. В директиве AuthUserFile укажите созданный ранее файл паролей для Apache. Для директивы Require укажите значение valid-user, чтобы открыть доступ к контенту только тем пользователям, которые могут пройти авторизацию.
Сохраните и закройте файл. Перезапустите веб-сервер, чтобы обновить его настройки.
Running Apache as a Console Application
Running Apache as a service is usually the recommended way to
use it, but it is sometimes easier to work from the command line,
especially during initial configuration and testing.
To run Apache from the command line as a console application,
use the following command:
Apache will execute, and will remain running until it is stopped
by pressing Control-C.
You can also run Apache via the shortcut Start Apache in Console
placed to during the installation.
This will open a console window and start Apache inside it. If you
don’t have Apache installed as a service, the window will remain
visible until you stop Apache by pressing Control-C in the console
window where Apache is running in. The server will exit in a few
seconds. However, if you do have Apache installed as a service, the
shortcut starts the service. If the Apache service is running
already, the shortcut doesn’t do anything.
If Apache is running as a service, you can tell it to stop by opening another console
window and entering:
Running as a service should be preferred over running in a
console window because this lets Apache end any current operations
and clean up gracefully.
But if the server is running in a console window, you can
only stop it by pressing Control-C in the same window.
You can also tell Apache to restart. This forces it to reread
the configuration file. Any operations in progress are allowed to
complete without interruption. To restart Apache, either press
Control-Break in the console window you used for starting Apache,
or enter
if the server is running as a service.
Note for people familiar with the Unix version of Apache:
these commands provide a Windows equivalent to and . The
command line option used, , was chosen as a reminder
of the command used on Unix.
If the Apache console window closes immediately or unexpectedly
after startup, open the Command Prompt from the Start Menu —>
Programs. Change to the folder to which you installed Apache, type
the command , and read the error message. Then
change to the logs folder, and review the
file for configuration mistakes. Assuming httpd was installed into
,
you can do the following:
Then wait for Apache to stop, or press Control-C. Then enter the
following:
When working with Apache it is important to know how it will
find the configuration file. You can specify a configuration file
on the command line in two ways:
-
specifies an absolute or relative path to
a particular configuration file:or
-
specifies the installed Apache service
whose configuration file is to be used:
In both of these cases, the proper
should be set in
the configuration file.
If you don’t specify a configuration file with
or , Apache will use the file name compiled into the
server, such as . This built-in path
is relative to the installation directory. You can verify the compiled
file name from a value labelled as when
invoking Apache with the switch, like this:
Apache will then try to determine its by trying the following, in this order:
- A directive
via the command line switch. - The switch on the command line.
- Current working directory.
- A registry entry which was created if you did a binary
installation. - The server root compiled into the server. This is by default, you can verify it by using and looking for a value labelled as
.
If you did not do a binary install, Apache will in some
scenarios complain about the missing registry key. This warning can
be ignored if the server was otherwise able to find its
configuration file.
Распаковка архива 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 [email protected]
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 уже установлена, просто она не может быть запущена, так как имеет ошибки в конфигурации.
Как установить MySQL в Windows
Бесплатная версия MySQL называется MySQL Community Server. Её можно скачать на странице https://dev.mysql.com/downloads/mysql/. На этой же странице есть установщик в виде исполнимого файла, но я рекомендую скачать ZIP-архив.
На странице скачивания нам предлагают зарегистрироваться или войти в существующую учётную запись — но это делать необязательно. Достаточно нажать на ссылку «No thanks, just start my download».
В каталог c:\Server\bin\ распаковываем файлы из только что скаченного архива. Распакованная папка будет называться примерно mysql-8.0.17-winx64 (зависит от версии), переименуйте её в mysql-8.0.
Заходим в эту папку и создаём там файл my.ini. Теперь открываем этот файл любым текстовым редактором и добавьте туда следующие строки:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES datadir="c:/Server/data/DB/data/" default_authentication_plugin=mysql_native_password
Сохраните и закройте его.
Настройка завершена, но нужно ещё выполнить инициализацию и установку, для этого открываем командную строку от имени администратора и последовательно вводим туда:
C:\Server\bin\mysql-8.0\bin\mysqld --initialize-insecure --user=root C:\Server\bin\mysql-8.0\bin\mysqld --install net start mysql
По окончанию этого процесса в каталоге C:\Server\data\DB\data\ должны появиться автоматически сгенерированные файлы.
Теперь служба MySQL будет запускаться при каждом запуске Windows.
Настройка веб-сервера Apache
Выполнив описанные выше шаги, вы готовы к настройке веб-сервера Apache. Файлы конфигурации находятся в, а файлы сайта – в . Во-первых, давайте остановим сервер Apache на время:
Переименуйте файл сайта по умолчанию, используя следующую команду:
Теперь создайте новый файл со следующим содержимым:
Следующие строки должны быть настроены:
это папка, в которой находятся файлы вашего сайта. Индексный файл вашего сайта должен присутствовать в этой папке. Установите предпочитаемый уровень ведения журнала. регистрирует только экстренные сообщения.
Сохранить и выйти. Хотя ваш сайт по умолчанию уже может быть активным, возможно, стоит активировать его снова с помощью следующей команды:
Затем перезапустите сервер Apache:
Теперь вы сможете получить доступ к своему веб-сайту, используя свой IP-адрес.