Apache & PHP — удобные технологии. Конфигурационный файл Apache

23.04.2019

Веб-сервер – программа, которая запущена на локальной или удаленной машине, и главное её предназначение – позволять пользователю просматривать веб-документы. Когда в адресной строке вводится адрес сайта, при нажатии клавиши Enter браузер формирует некий запрос, направленный удаленному компьютеру - веб-серверу.

Apache HTTP-сервер (сокращение от англ. a patchy server ) – одна из наиболее популярных и распространенных программ, созданных для веб-разработчиков и администраторов интернет-ресурсов. По данным независимых исследователей, Apache установлен на 50% компьютеров всех пользователей HTTP-серверов.

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

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

О том, как установить сервер Apache для операционной системы Windows 7, пойдет речь в данной статье.

Установка Apache

В первую очередь необходимо скачать последнюю версию дистрибутива Apache без поддержки SSL и запустить установку. В приветственном окне нужно кликнуть на «Next », прочесть лицензионное соглашение разработчика и подтвердить свое согласие с ним.

Затем, в окне установки необходимо заполнить поля так, как показано на картинке ниже, а в поле «Administrator’s Email Address » указать адрес своей электронной почты, кликнуть «Next » и установить переключатель в положение «Custom ».




Далее необходимо создать директорию www на диске C и указать её в качестве установочной папки для Apache, кликнуть «Next » в этом и «Install » в следующем окне. Когда установка закончится, нажмите на «Finish ».

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

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

Для того чтобы проверить работает ли установленный сервер Apache, наберите в адресной строке вашего браузера http://localhost

Если появилась страница с воодушевляющей надписью «It works! », значит, установка Apache прошла успешно, и он функционирует правильно.

Базовая настройка веб-сервера

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

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

Что необходимо?

  • Запустить Apache под платформой Windows 7;
  • Хранить в удобной для пользователя директории файлы будущего сайта (например, C:www);
  • Не испытывать проблем с кодировкой, а в частности - с отображением кириллицы;
  • Возможность работать с несколькими сайтами одновременно.

Чтобы успешно решить эти проблемы, зайдите в папку с установленным Apache, найдите и откройте в подпапке conf файл httpd.conf . Обратите внимание, что строки, начинающиеся с «решётки », являются текстовыми комментариями, а в качестве настроек веб-сервера использованы строки, в начале которых значок «решётки » отсутствует.

Для начала нужно выполнить настройку той директории, которая будет использоваться сервером в качестве папки веб-сайта. Найдите в тексте строку, которая начинается с DocumentRoot . Данная директива определяет, какая папка будет являться корневой.

Исправьте её на DocumentRoot “C:/www ”. Следует уточнить, что слэши в этом файле должны быть наклонены вправо, а не влево, как, вероятно, уже привыкли пользователи Windows. После вышеуказанных манипуляций, проблема с месторасположением вашего сайта решена.

Options (определяет, какие серверные функции будут доступны) AllowOverride (определяет, какие директивы из.htaccess могут преобладать над такими же в httpd.conf) Order (устанавливает определенные правила доступа к серверу)

Список используемых параметров:

Options. Возможны следующие варианты:

  • Includes – использование SSI разрешено;
  • IncludesNOEXEC – использование SSI разрешено с ограничениями (не допускаются #include и #exec );
  • Indexes – разрешено использование индексных файлов, и если URL-адрес указывает на директорию сайта (например, www.domain.ru/dir/ ), в которой не существует индексного файла, будет показано содержимое данной директории, а если этой опции нет – выдается оповещение о том, что доступ запрещён;
  • ExecCGI – выполнение скриптов CGI разрешено;
  • FollowSymLinks – сервер следует по имеющимся символическим ссылкам директории (используется в Unix-системах);
  • SymLinksIfOwnerMatch – сервер следует по имеющимся символическим ссылкам директории лишь в том случае, если целевой файл имеет одного владельца со ссылкой;
  • All – все вышеописанное вместе разрешено;
  • None – все вышеописанное вместе запрещено;
  • MultiViews – возможность подбора определенного контента и его выдачи в зависимости от предпочтений браузера (даже если включено все (Options All). Указывается отдельно).

AllowOverride. Варианты:

  • AuthConfig – позволяет использовать директивы для авторизации;
  • FileInfo – разрешает использование директив для работы с различными типами документов;
  • Indexes – разрешает использование директив для работы с файлами индексации;
  • Limit – разрешает использование директив для определения доступа к хосту;
  • Options – разрешает использование директив для работы с определенными специфическими функциями директорий;
  • All – все вышеуказанное вместе;
  • None – ничего из вышеуказанного вместе.

Order. Варианты:

  • Deny, Allow – Deny определяется перед директивой Allow, доступ разрешен по умолчанию, кроме хостов, которые указаны в следующей после Deny from строке;
  • Allow,Deny – Allow определяется перед директивой Deny, доступ запрещен по умолчанию, кроме хостов, которые указаны в следующей после Allow from строке;
  • Mutual-failure – разрешен доступ только таких хостов, которые отсутствуют в Deny и присутствуют в Allow.

На основе всего вышесказанного, попробуйте настроить ваш сервер. В файле httpd.conf директива Directory по умолчанию существует сразу в двух экземплярах - и . Первый вариант трогать не следует, поэтому во втором установите параметры следующим образом:

Options Indexes FollowSymLinks AllowOverride None Order allow, deny Allow from all

Говоря другими словами, для папки C:/www и всех её подпапок выбраны следующие параметры:

  • Из возможной функциональности имеющегося сервера разрешены индексы в директориях и переходы по символическим ссылкам;
  • Возможность параметрического переопределения с помощью файлов.htaccess полностью отсутствует, однако учитывая то, что вы имеете полный доступ к серверу, она не является актуальной – все можно настроить через httpd.conf;
  • Доступ к веб-серверу разрешен со всех хостов.

Теперь, сохраните файл httpd.conf и перезапустите Apache с помощью Apache Monitor либо командой apache –k restart в командной строке. Настройка корневой папки сайта закончена.

Следует проверить, правильно ли вы всё сделали. Создайте простейшую веб-страницу в папке C:www, откройте ваш браузер и введите http://127.0.0.1/ваша_созданная_страница . Страницы должна открыться. В ином случае необходимо тщательно проверить все изменения в файле httpd.conf на правильность.

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

Если пресловутый Internet Explorer в подобных случаях определяет кодировку из самой страницы, то, к примеру, Mozilla Firefox и Opera к подобным действиям склонности совершенно не имеют, и способ выставления кодировки в браузере вручную едва ли можно назвать удобным. Следовательно, необходимо настроить Apache на выдачу по умолчанию необходимой кодировки.

Найдите в файле httpd.conf строку, которая начинается на AddDefaultCharset . Скорее всего, там указана кодировка ISO-8859-1, в которой отсутствуют кириллические символы. Поменяйте ISO-8859-1 на windows-1251 , сохраните файл и перезапустите Apache. Теперь корректное отображение русского языка на вашем сайте будет работать в любом браузере.

В сервере Apache достаточно просто настроить работу с несколькими сайтами. Адреса, которые можно использовать для них - 127.0.0.2, 127.0.0.3 и т.д. При этом по сети виден будет только тот, который является сайтом по умолчанию (127.0.0.1), однако для локальной работы это не является критичным. Раздел файла httpd.conf , в котором производится настройка всего необходимого для этого, находится в самом конце и именуется VirtualHosts .

Конфигурирование Apache

Есть два способа настройки Web-сервера: изменить переменные, отвечающие за функционирование основного сервера, или создать виртуальный сервер. В нашем случае второй способ предпочтительнее. Но об этом немного позже, а пока разберемся с базовыми директивами, управляющими поведением сервера. Основная конфигурация Apache заключена в файле httpd.conf, расположенном в каталоге:

C:\usr\local\apache\conf\

Это обычный текстовый файл, и для его редактирования подойдет любой текстовый редактор - тот же «Блокнот», к примеру. Я не буду подробно рассказывать о каждой строчке в этом файле, а лишь о самых необходимых и нужных нам директивах. Отметьте, что знак ‘#’ является комментарием, и если вы хорошо читаете по-английски, то без труда сможете их разобрать, что, правда, не очень поможет, если у вас нет хотя бы общего представления о принципах функционирования Web-серверов и об Интернете в целом. А потому позвольте мне предложить вам свою помощь в настройке Apache. Вместе у нас получится быстрее и, что самое важное - правильно.

Файл конфигурации Apache состоит из трех больших секций:

  • Global Environment - директивы, управляющие настройками Apache в целом;
  • Main server configuration - директивы, управляющие настройками главного сервера;
  • Virtual Hosts - директивы, управляющие виртуальными серверами.

Секция общих настроек нас не интересует, так как вам вряд ли когда-нибудь придется изменять указанные там значения, а вот два других раздела мы разберем подробнее. Точнее, один из них - я расскажу о полезных директивах, используемых при настройках параметров основного сервера, поскольку при конфигурировании виртуальных хостов используются те же самые команды. С той лишь разницей, что не определенные параметры наследуются из настроек главного сервера. Итак, начнем…

ServerName - имя запущенного Web-сервера. Оно возвращается клиенту в HTTP-заголовке и идентифицирует Web-сервер, выполнивший запрос. При реальной работе сервера в Интернете имя должно уже существовать и быть прописанным в DNS. При локальной установке Web-сервера для отладки и тестирования сайтов это не принципиально - имя может быть любым. Кстати, именно это имя запрашивал инсталлятор перед установкой, так что, если желаете, можете сейчас его отредактировать. Значение параметра должно быть определено как минимум для главного сервера. В противном случае Apache просто не запустится.

ServerAdmin [email protected] - электронный адрес администратора, используемый в некоторых автоматически генерируемых сообщениях об ошибках Web-сервера, таких как отсутствие странички, к примеру. Параметр должен быть определен как минимум для главного сервера, иначе Apache также откажется запускаться.

ServerRoot “c:/usr/local/apache” - каталог, в котором был размещен Apache при установке. Если вы пожелаете переместить его в другое место, то данную строчку нужно будет скорректировать, как, впрочем, и все остальные строчки в файле, указывающие на данный каталог. Если вы установили Apache так, как я описывал выше, то данная строчка уже будет сконфигурирована верно и станет указывать на c:/usr/local/apache.

Port 80 - порт, по которому Apache будет отслеживать HTTP-запросы. По умолчанию он равен стандартному значению для Web-серверов, и у вас вряд ли возникнет необходимость в его изменении.

DocumentRoot “с:/usr/local/apache/htdocs” - адрес каталога, используемого для хранения HTML-страничек. По умолчанию данный параметр указывает на документацию Apache, поставляемую в дистрибутиве и расположенную в вышеуказанном каталоге.

UserDir “c:/usr/local/apache/users/” - каталог, используемый для хранения страничек пользователей, доступ к которым будет возможен по адресу:

Http://www.domain.com/~user/

Поскольку мы ставим Web-сервер для локальной отладки сайтов, а не для реальной работы в Интернете, то данную строчку вам менять не нужно.

DirectoryIndex index.html index.htm - параметр, определяющий имя файла, который будет искать Apache, если указан не полный URL. То есть такой, который заканчивается именем каталога, а не адресом конкретной странички. В том числе это относится и к файлу, который открывается по умолчанию при наборе основного URL. Например, если вы набрали в адресной строке:

Http://www.domain.com/links/,

то на самом деле Apache откроет страничку:

Http://www.domain.com/links/index.htm

Полный список файлов, которые могут быть найдены в директории, как раз и определяется этим параметром. Имена файлов отделяются друг от друга пробелом. При этом имеет значение порядок, в котором перечислены альтернативные имена: если в каталоге есть файлы с именем и index.htm, и index.html, то Apache откроет именно вторую страничку, поскольку в списке index.html стоит раньше, чем index.htm.

Alias /icons/ “c:/usr/local/apache/icons/” - команда создания алиасов, то есть ссылок, для любых каталогов. Например, вышеприведенная команда делает доступным содержимое каталога “c:/usr/local/apache/icons/” по адресу:

Http://www.domain.com/icons/

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

ScriptAlias /cgi-bin/ “c:/usr/local/apache/cgi-bin/” - данная команда аналогична предыдущей с той лишь разницей, что определяет реальное местоположение каталога с выполняемыми CGI-скриптами.

AddType text/html .html .htm - команда, определяющая тип mime для файла с заданным расширением. В данном случае мы присваиваем расширениям.html и.htm тип обычного гипертекста, и Apache будет интерпретировать его как html-код. Точнее, интерпретировать-то придется браузеру - Web-сервер лишь выдаст ему указание о том, что это гипертекст. А вот если этой строчки не будет, то Apache выдаст странички с таким расширением за обычные текстовые файлы.

AddHandler server-parsed .shtml - команда, определяющая обработчик (автоматически запускаемую программу) для файла с указанным расширением. В данном случае мы связываем расширение.shtml со встроенным обработчиком SSI-директив. И следовательно, все файлы, имеющее данное расширение, перед тем, как выдать страничку пользователю, будут проходить предварительную обработку. Если говорить более конкретно, то Apache заменит все SSI-вставки на соответствующие им значения.

ErrorDocument 404 /error404.html - директива, определяющая страничку, которая будет отослана пользователю при возникновении ошибки. В данном случае была определена страничка для самой распространенной 404-й ошибки. Данная директива не обязательна, и в случае ее отсутствия Apache сгенерирует стандартную страничку. Но согласитесь, что определить свою собственную страничку ошибки и, кроме того, сделать ее в едином стиле сайта гораздо привлекательнее. Путь к страничке ошибки может быть указан либо локально (тогда он должен обязательно начинаться от корня сайта), либо с приведением полного URL-странички.

ErrorLog logs/error.log - команда, определяющая имя файла, куда будут записываться все ошибки, возникающие при загрузке страничек или выполнении CGI-скриптов. При локальной отладке Web-сайтов - вещь крайне полезная. Так что если что-либо не ладится - Apache не запускается, Perl-скрипты не работают, графика на страничках не грузится, - этот файл может помочь вам разобраться в проблеме.

CustomLog logs/access.log common - директива, аналогичная предыдущей, но с тем отличием, что используется для протоколирования всех запросов к Web-серверу. На основе его анализа можно получить полный отчет о посещаемости сайта и популярности отдельных разделов.

Теперь разберемся с настройками прав доступа к файлам и каталогам, входящим в структуру Web-сайта. Из соображений безопасности нам необходимо для любого файла или каталога, используемого для хранения страничек или CGI-программ, установить определенный набор прав. Но вначале рассмотрим, каким же образом нам задать папку или файл(ы), которым мы присваиваем права. Делается это при помощи одной из следующих конструкций:

Для каталога:

Здесь перечисляются все директивы, управляющие доступом и опциями каталога

Для файла(ов):

Здесь перечисляются все директивы, управляющие доступом к файлу(ам)

Вместо directory и filename подставляются нужные значения. Возможно использование регулярных выражений, что позволяет задавать права для целой группы файлов и/или каталогов.

Права, определенные для каталога, распространяются и на все подкаталоги, входящие в него, если только для какого-нибудь из подкаталогов права не были переопределены. Сейчас мы рассматриваем способ определения прав в основном конфигурационном файле, но для тех же целей можно использовать и локальные файлы.htaccess, которые размещаются в той папке, для которой требуется ограничить доступ. В ряде случаев это гораздо удобнее. Синтаксис написания команд в файле.htaccess полностью аналогичен синтаксису команд в файле httpd.conf.

Важно отметить, что конфигурирование поведения Web-сервера при помощи.htaccess возможно только в случае, если это разрешено в правах вышестоящего каталога. Но об этом я еще скажу, когда мы дойдем до соответствующей команды. А пока начнем разбирать по порядку все основные директивы, используемые для определения прав:

  • Options option_list - директива, определяющая дополнительные опции для конкретного каталога. Опции отделяются друг от друга пробелами. Основные из них следующие:
  • None - дополнительные опции для данного каталога не определены.
  • All - определены все возможные опции, за исключением MultiViews.
  • Indexes - опция, позволяющая использовать файлы по умолчанию - при неполном наборе адреса. Список файлов по умолчанию задается директивой DirectoryIndex, которая была описана в этой статье несколько выше. При отсутствии в данном каталоге файла по умолчанию Apache выдаст браузеру содержимое каталога.
  • Includes - опция, относящаяся к функционированию SSI и разрешающая использовать директиву Include. Для полноценного функционирования SSI опция должна быть включена.
  • IncludesNOEXEC - опция, подобная предыдущей, но запрещающая использовать во включениях SSI-команды запуска CGI-скрипта и .
  • ExecCGI - опция, разрешающая в данном каталоге запуск CGI-программ.
  • FollowSymLinks - опция, позволяющая Apache переходить по символьным ссылкам в системах UNIX. То есть страничка может находиться вне основного дерева, определенного для хранения html-документов.
  • AllowOverride - директива, разрешающая переопределять параметры доступа для нижележащих каталогов. То, о чем я говорил ранее. После данной команды должен быть указан список директив, разрешенных к переопределению. Например, AllowOverride All - разрешает переопределение любых прав, AllowOverride Options - разрешает переопределение опций для каталога, AllowOverride None - запрещает переопределение прав.
  • Order allow, deny - порядок наложения прав доступа к файлу или каталогу с определенных IP-адресов или доменных имен. Может использоваться маска для отсеивания целых сегментов сети. В данном случае вначале определяются сайты, доступ к которым разрешен, а потом те, к которым запрещен. В случае команды Order deny, allow - все наоборот.
  • Allow from - список IP-адресов или доменных имен, доступ с которых разрешен. Может быть использована маска - для разрешения доступа к сайту целой группе доменов. Например, Allow from .com - разрешает доступ со всех доменов, имеющих окончание.com. Allow from all - разрешает доступ к сайту из любой точки Интернета.
  • Deny from - список IP-адресов или доменных имен, доступ с которых запрещен. Так же, как и в предыдущем случае, может быть указана группа доменов или маска IP-адресов.

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

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

AddType text/html .shtml AddHandler server-parsed .shtml

Добавьте в секцию Document type файла конфигурации две эти строчки (или просто раскомментируйте их) и скорректируйте список файлов по умолчанию, добавив туда имя index.shtml:

DirectoryIndex index.htm index.html index.shtml

Дополнительно нам нужно определить для каталога с документами права на использование SSI-включений в страничках. Для этого необходимо найти и скорректировать секцию, определяющую права для корневого каталога документов. Она должна выглядеть так:

Options Indexes Includes AllowOverride All

Больше для поддержки технологии SSI ничего не требуется, так что перейдем к конфигурированию виртуального сервера.

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

Но перед тем как конфигурировать виртуальный сервер, давайте создадим все необходимые каталоги. Я рекомендую для Интернет-проектов использовать структуру каталогов, представленную ниже. Вы можете в качестве основного выбрать любой другой диск, но я для объяснений по-прежнему буду использовать диск C.

  • c:\web\ - каталог, используемый для Интернет-проектов;
  • c:\web\project\ - каталог для нашего проекта, который мы так и назовем - project;
  • c:\web\project\website\ - здесь будут размещены странички сайта;
  • c:\web\project\cgi-bin\ - здесь могут размещаться CGI-скрипты на Perl;
  • c:\web\project\logs\ - этот каталог будет содержать лог-файлы Web-сервера.

Как уже было сказано выше, директивы, определенные в секции виртуального хоста, переопределяют глобальные значения. Но для начала нужно разобраться, каким образом определить сам виртуальный хост. Это делается при помощи одноименной директивы VirtualHost. Ниже приведен фрагмент, описывающий виртуальный сервер для нашего проекта. Добавьте его в самый конец конфигурационного файла - именно там находится секция для определения виртуальных хостов. А затем я дам подробные разъяснения по каждой строчке:

ServerAdmin [email protected] ServerName project DocumentRoot “c:/web/project/website” ScriptAlias /cgi-bin/ “c:/web/project/cgi-bin/” ErrorLog c:/web/project/logs/error.log CustomLog c:/web/project/logs/access.log common

Сделали? Прекрасно, переходим к комментариям! Итак, в первой строчке я определил IP-адрес, по которому будет осуществляться доступ к виртуальному хосту. Поскольку локальный Web-сервер привязан к IP-адресу 127.0.0.1, то логично для виртуальных хостов воспользоваться следующими по порядку IP-адресами: 127.0.0.2, 127.0.0.3, 127.0.0.4 и т.д.

Во второй и третьей строчках переопределены е-mail администратора и имя сервера. Эти директивы указывать не обязательно, но они позволяют нам более удобно организовать работу с Web-сервером, в частности сделать так, чтобы обращаться к серверу можно было не по IP-адресу, а по определенному в этой секции имени хоста, но об этом я расскажу чуть позже.

Далее следует важная строчка, определяющая местоположение документов для нашего сайта. Формат записи полностью аналогичен базовому серверу. Точно так же переопределены алиасы к CGI-скриптам и пути к лог-файлам. Заметьте, что в качестве значений мы использовали каталоги, которые создали несколькими абзацами выше.

После добавления виртуального хоста Apache необходимо перезапустить - чтобы изменения вступили в силу. Наш виртуальный хост теперь будет доступен по адресу 127.0.0.2. Если что-либо не получается и сервер отказывается запускаться, то посмотрите, что написано в файле error.log. Скорее всего, там будет указано на ошибку в синтаксисе конфигурационного файла.

Помните, я обещал рассказать о том, каким образом сделать так, чтобы можно было обращаться к серверу еще и по имени? Вот и настало время. В конфигурации Web-сервера нам уже ничего менять не нужно, а придется подправить внутренний файл Windows, определяющий соответствие локальных IP-адресов и доменных имен. В зависимости от того, в какой системе вы работаете, этот файл может находиться в разных местах или не существовать вовсе (в этом случае его нужно будет создать вручную). Файл называется hosts и расположен в каталоге:

C:\windows\ - для машин с сиcтемой Win9x/Mе

C:\windows\system32\driver\etc\ - для машин с системой WinNT/2000

В этом каталоге также может находиться файл hosts.sam (расширение от слова sample - «пример»), который можно переименовать в hosts, если последний отсутствует. Файл hosts является обычным текстовым файлом в формате ASCII и имеет очень простой формат: каждая строчка состоит из локального IP-адреса и соответствующего ему доменного имени. Для нашего случая данный файл должен выглядеть следующим образом:

127.0.0.1 localhost apache 127.0.0.2 project

Заметьте, что в первый строчке я определил два имени для одного IP-адреса. Обращение к такому серверу возможно по любому из этих имен. Альтернативные имена должны отделяться друг от друга пробелами.

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

Тестирование технологии SSI

и сохраните его под именем index.shtml. Также создайте файл test.inc со следующим содержимым:

Поздравляю, технология SSI работает!

Перепишите оба файла в каталог с:\web\project\website\, который сконфигурирован как каталог для документов нашего проекта, и наберите в адресной строке браузера:

Http://project/

Если вы увидели в браузере поздравление, то все в порядке: SSI работает, а кроме того, функционирует и новое расширение по умолчанию - index.shtml. Если у вас что-то работает некорректно, еще раз внимательно перечитайте последние несколько абзацев и убедитесь, что вы все сделали правильно.

Apache установлен и настроен - переходим к инсталляции и конфигурированию PHP.

Установка PHP4 под Windows

Устанавливать будем последнюю доступную на момент написания данной статьи версию PHP, а именно PHP4.0.4pl1. Адрес, по которому ее можно скачать, указан в конце данной статьи. Архив с данным дистрибутивом PHP также расположен на компакт-диске, прилагаемом к журналу.

Дистрибутив представляет собой обычный ZIP-архив, и его достаточно распаковать в нужную папку. Руководствуясь теми же соображениями, которые я приводил при создании каталога для установки Apache, распакуем дистрибутив PHP в папку:

C:\usr\local\php4\

Перейдите в указанный каталог, найдите там файл php.ini-dist и, переименовав его в php.ini, скопируйте в корневой каталог Windows (обычно это c:\windows). Данный файл содержит все настройки, управляющие поведением PHP, и представляет собой обычный текстовый файл. Поскольку конфигурация по умолчанию вполне нам подходит, то на данный момент в этом файле ничего исправлять не нужно.

Теперь необходимо настроить Apache и PHP для совместной работы. Есть два основных способа установки PHP - как обычной CGI-программы и как модуля Apache. Мы рассмотрим оба и начнем с конфигурирования PHP как обычной CGI-программы.

Установка PHP как CGI-программы

Основную работу по настройке придется провести над файлом конфигурации Apache. Если вы уже успели закрыть файл httpd.conf, то откройте его снова и добавьте туда несколько строчек, относящихся к функционированию PHP. Вначале нам необходимо определить новый тип файла и сопоставить его с расширениями, используемыми PHP. Для этого добавляем в секцию «Document types» следующую строчку:

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

Options ExecCGI

И наконец, мы добавим в список индексных файлов значение index.php. Для этого найдите и подкорректируйте следующую строчку:

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

Тестирование технологии PHP

и сохраним его под именем test.php в каталоге с:\web\project\website\, который мы ранее определили для хранения HTML-файлов нашего проекта. Теперь, набрав в браузере строчку:

Http://project/test.php

Http://127.0.0.2/test.php,

мы должны увидеть текст поздравления. Если все в порядке, то с конфигурированием PHP можно закончить. В противном случае внимательно проверьте описанные выше директивы в файле httpd.conf. И еще не забудьте перезапустить Apache перед проверкой.

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

Установка PHP как модуля Apache

Первым делом нам необходимо найти скомпилированный модуль PHP для подключения его к Apache. Если вы ставили PHP так, как я описывал ранее, то нужный нам файл расположен по адресу:

C:\usr\local\php4\sapi\php4apache.dll

Скопируйте этот файл уровнем выше - в основной каталог PHP:

C:\usr\local\php4\

Теперь нужно настроить некоторые переменные в конфигурационном файле Apache. Как и при установке PHP в виде CGI-программы, необходимо добавить в секцию Document types определение нового типа документа:

AddType application/x-httpd-php .phtml .php

А также подкорректировать строчку, содержащую список индексных файлов:

DirectoryIndex index.html index.htm index.shtml index.php

Теперь самое важное - конфигурируем загрузку модуля. Найдите в конфигурационном файле секцию “Dynamic Shared Object (DSO) Support” и добавьте в нее следующую строчку:

LoadModule php4_module “с:/usr/local/php4/php4apache.dll”

Конфигурирование можно считать оконченным. Осталось только протестировать работоспособность PHP. Не забудьте только сначала сохранить файл и перезапустить Apache. Для тестирования можно воспользоваться уже написанным ранее скриптом test.php. Наберите в браузере строчку:

Http://project/test.php

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

И небольшое замечание для тех, кто уже конфигурировал PHP как CGI-программу, а теперь пробует установить его как модуль, не забудьте удалить из конфигурационного файла Apache секцию, связывающую обработчик типа файла с CGI-программой. Ведь в данном случае всей обработкой php-файлов занимается уже внешний модуль. Я имею в виду вот этот фрагмент:

ScriptAlias “/__php_dir__/” “c:/usr/local/php4/” Action application/x-httpd-php “/__php_dir__/php.exe” Options ExecCGI

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

КомпьютерПресс 7"2001

Конфигурационные файлы Apache

В большинстве пакетов основной конфигурационный файл Apache носит имя httpd.conf . В зависимости от версии системы этот файл может находиться в разных каталогах, но формат его остается неизменным. В системах Caldera и SuSE файл httpd.conf содержится в каталоге /etc/httpd ; в Debian и Slackware он размещается в /etc/apache (Slackware предоставляет файл-образец /etc/apache/httpd.conf.default ; для обеспечения работы сервера надо лишь переименовать данный файл и внести в него необходимые изменения); в Red Hat и TurboLinux файл httpd.conf размещается в каталоге /etc/httpd/conf/ .

Как обычно, строки файла httpd.conf , начинающиеся с символа # , содержат комментарии. Опции, определяющие конфигурацию сервера, задаются в следующем виде:

Директива Значение

Директива - это имя, с которым может быть связано некоторое значение. Значением может быть число, имя файла или произвольная строка символов. Некоторые директивы позволяют задавать несколько подопции. В этом случае имя директивы помещается в угловые скобки. Пример подобной директивы приведен ниже.

Options FollowSymLinks

AllowOverride None

В последней строке содержится имя той же директивы, которая указана в начале, но для нее не задается никакое значение. Имени директивы, завершающей блок, предшествует косая черта.

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

Access.conf . Ссылка на этот файл формируется с помощью директивы AccessConfig и содержится в файле httpd.conf . В файле access.conf чаще всего задаются директивы , определяющие особенности доступа к указанным в них каталогам. В настоящее время этот файл обычно остается пустым, а иногда в качестве значения AccessConfig задается /dev/null , что запрещает использование access.conf .

Mime.types . Для того чтобы сообщить Web-броузеру о том, как должны обрабатываться данные, Web-сервер использует стандарт MIME (Multipurpose Internet Mail Extensions - многоцелевые почтовые расширений Internet). Например, MIME-тип text/plain означает, что данные представляют собой обычный текст, а image/jpeg определяет графические данные в формате JPEG (Joint Photographic Experts Group - объединенная группа экспертов по обработке фотоснимков). Файл mime.types содержит информацию о соответствии между MIME-типами и расширениями файлов. Например, имена файлов, оканчивающиеся.txt и.asc , связываются с MIME-типом text/plain . Если такое соответствие задано неправильно, Web-броузер будет испытывать затруднения при обработке некоторых типов файлов. Файл, поставляемый в составе пакета, обеспечивает обработку практически любых типов данных, которые могут быть помещены на Web-страницу. Если же вам надо использовать редко встречающиеся типы, вам придется добавить в этот файл новые записи.

Magic . Этот файл также позволяет определять соответствие между MIME-типами и данными. При анализе информации можно обнаружить специфические признаки того или иного типа. Так, например, многие файлы содержат специальные ключи - "магические" байтовые последовательности. Эти последовательности, преобразованные в текстовый вид, указываются в файле magic . Если вы подробно не изучили формат этого файла, вносить изменения в него не рекомендуется. Структура файла magic в данной главе рассматриваться не будет.

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

8.2.2. Основные конфигурационные файлы Если вы прочитали разд. 8.2.1 (или если смотрели файл /etc/inittab), то представляете, что в обычной ситуации процесс init помимо запуска процессов getty выполняет 2 основных действия: запускает скрипт rc.sysinit из каталога /etc/rc.d; запускает скрипт rc

Из книги Linux-сервер своими руками автора

12.5. SSL и Apache 12.5.1. Установка SSL SSL (Secure Sockets Layer) является методом шифрования, разработанным компанией Netscape для обеспечения безопасности в Интернет. Этот метод поддерживает несколько способов шифрования и обеспечивает аутентификацию как на уровне клиента, так и на уровне

Из книги Asterisk™: будущее телефонии Второе издание автора Меггелен Джим Ван

Из книги Сетевые средства Linux автора Смит Родерик В.

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

Конфигурационные файлы DHCP Большинство дистрибутивных пакетов Linux содержит сервер DHCP, разработанный Internet Software Consortium (http://www.isc.org/products/DHCP/). Internet Software Consortium (ISC) в конце 2000 г. выпустил версию 3.0 DHCP, но в начале 2002 г. многие версии Linux все еще поставлялись со старой версией 2.0

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

Из книги Язык Си - руководство для начинающих автора Прата Стивен

Конфигурационные файлы Exim Главный конфигурационный файл Exim называется exim.conf. Обычно он располагается в каталоге /etc. В состав этого файла входят записи, представленные в следующем формате:опция = значениеКак обычно, строки, содержащие комментарии, начинаются с символа #.

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

Из книги Разработка ядра Linux автора Лав Роберт

16.1. Установка Apache В зависимости от дистрибутива, пакет, из которого устанавливается веб-сервер Apache, может называться apache или httpd, а пакет с документацией - apache-docs или httpd-manual соответственно. В первом случае вам понадобится установить еще пакет apache-common, содержащий

Из книги автора

16.2. Настройка Apache. Файлы конфигурации После установки Apache следует отредактировать следующие файлы:? /etc/httpd/conf/httpd.conf - основной файл конфигурации. Для Apache 2.x. этот файл может также называться httpd2.conf;? /etc/logrotate.d/apache или /etc/logrotate.d/httpd (в версии 2.0) - файл ротации

Из книги автора

16.10. SSL и Apache 16.10.1. Установка SSL SSL (Secure Sockets Layer) является методом шифрования, разработанным компанией Netscape для обеспечения безопасности передачи данных. Этот метод поддерживает несколько методов шифрования и обеспечивает аутентификацию как на уровне клиента, так и на

Из книги автора

19.2. Конфигурационные файлы загрузчика В листинге 19.1 приведен основной конфигурационный файл GRUB2 - /boot/grub/grub.cfg. Он не поддается редактированию вручную. Для его создания используется утилита /usr/sbm/grub-mkconfig, которая генерирует этот конфигурационный файл на основе шаблонов,

Из книги автора

26.2.3. Конфигурационные файлы сервера Файлы конфигурации сервера находятся в каталоге /etc/apache2. Основной файл конфигурации называется apache2.conf. По умолчанию его настройки устроят большинство пользователей. Если вы планируете использовать Web-сервер не только локально (для

Из книги автора

Исходные файлы и выполняемые файлы Наша замечательная программа, несмотря на свою лаконичность и простоту, для компьютера является совершенно бессмысленным набором символов, так как он "не понимает" директив типа #include или printf. Он понимает только специальный язык,

Из книги автора

5.3.1. Конфигурационные файлы Все настроечные файлы протокола SSH находятся в директории /etc/ssh. Здесь можно увидеть следующий перечень:? файл конфигурации SSH-сервера - sshd_config;? файл конфигурации SSH-клиента - ssh_config;? файлы ключей для различных

Из книги автора

Конфигурационные параметры отладки ядра Существует несколько конфигурационных параметров, которые помогают в отладке и тестировании кода ядра и которые включаются во время компиляции. Эти параметры доступны в пункте Kernel hacking меню редактора конфигурации ядра. Все эти

andew

2016-07-23T17:54:43+00:00

2017-08-25T04:44:37+00:00

6254

В статье представлен обзор конфигурации web сервера Apache в Ubuntu server при стандартном варианте инсталляции LAMP в Ubuntu. Приведена логика и структура организации конфигурационных файлов веб сервера. Описаны назначения основных конфигов сервера. Даны базовые Linux Ubuntu команды для манипуляции конфигурацией, настройки и управления веб сервером Apache. Рассмотрен сайт по умолчанию, который создается в процессе установки Apache. Статья вам будет полезна при настройке и администрировании своего LAMP сервера.

Как добавить поддержку PHP как обработчика сценариев в Apache на Ubuntu или Windows детально описано в статье Установка PHP7 на Windows в разделе Настройка .

Apache Default WEB Page

В процессе выполнения стандартной инсталляции web сервера Apache в Ubuntu server создается тестовый сайт, который служит для проверки работоспособности веб сервера после его установки. Этот сайт, по умолчанию, сконфигурирован так, что разрешает обращения из браузера только к файлам и каталогам внутри /var/www директории Ubuntu server. Если, по завершению инсталляции Apache , вы откроете в браузере веб страницу по адресу IP вашего web сервера, то увидите стартовую страницу сервера - Apache2 Ubuntu Default Page . Это будет, в первую очередь, говорить о том, что Apache удачно установился и работает. Эта страница физически располагается на сервере в файле /var/www/html/index.html и за ее настройку и вывод в браузере отвечает конфиг виртуального хоста по умолчанию (/etc/apache2/sites-available/000-default.conf ), который определяет виртуальный хост(сайт) для каталога /var/www/html и создается в ходе инсталляции сервера Apache . Соответственно, если вы разместите ваши файлы в этой папке, то они будут обрабатываться web сервером. Также на этой Default Page в секции Configuration Overview вы увидите схематическое представление структуры конфигурационных файлов сервера. Здесь нужно понимать, что структура, названия и расположения конфигов Apache в Ubuntu отличаются от общепринятой схемы, что сделано для удобства управления сервером. Но тут есть один нюанс, который заключается в том, что если вы ранее не были знакомы с организацией каталогов в домашней директории Apache на Ubuntu , то эта схема может вас только запутать, т.к. в ней представлены не все папки, а только каталоги, в которых располагаются символьные ссылки на активированные файлы конфигурации. Поэтому, для более правильного понимания, смотрите полную схему каталогов и фалов домашней директории web сервера Apache расположенную ниже в этой статье. Из ценного в секции веб страницы Apache - это ссылки на man Debian для команд a2enmod , a2dismod , a2ensite , a2dissite , a2enconf , a2disconf , которые используется для активации и деактивации тех или иных видов файлов конфигурации и будут детально описаны . Так же здесь сказано, что для передачи команд web серверу ( started/stopped etc. ) нужно обращаться к /etc/init.d/apache2 или к apache2ctl , что так же является особенностью сервера в Ubuntu. На сервере Ubuntu в файле /usr/share/doc/apache2/README.Debian.gz вы сможете найти полную документацию по Apache .

Домашний каталог Apache в Ubuntu

По умолчанию, домашний каталог web сервера Apache в Ubuntu находиться по /etc/apache2/ пути в файловой системе. В этом каталоге и его подкаталогах располагаются все конфигурационные файлы Apache . Изменить значение пути домашней директории web сервера можно директивой ServerRoot "/etc/apache2" в главном конфиге apache2.conf . Там, по умолчанию, директива ServerRoot закомментирована, что равносильно ее значению как "/etc/apache2" (завершающего слеша не должно быть в этой директиве! ). Значение пути домашней директории Apache (ServerRoot ) необходимо серверу, что бы он знал, в каком месте файловой системы ему следует искать свои конфигурационный файлы. Так же значение ServerRoot может подставляться сервером в некоторых директивах, ожидающих в качестве аргумента путь в файловой системе Ubuntu . Поэтому, в таких случаях, если путь указать без начального слеша, то Apache воспримет это как относительный путь по отношению к своей домашней директории. Так, например, если указать директиву AuthUserFile .htpasswd , то в таком варианте Apache будет интерпретировать указанный путь как относительный и превратит его в /etc/apache2/.htpasswd , подставив спереди значение пути своей домашней директории.

Структура домашней директории Apache в Ubuntu

В процессе стандартной установки WEB сервера Apache в Ubuntu создается следующая структура файлов и каталогов домашней директории веб сервера:

/etc/apache2/ ...............................Домашняя директория Apache в Ubuntu - ServerRoot |-- conf-available ......................директория, содержит разные конфиги | `-- charset.conf ...................файл для указания кодировок | `-- localized-error-pages.conf .....файл для задания страниц ошибок | `-- other-vhosts-access-log.conf ...файл для задания логов виртуальных хостов | `-- security.conf ..................файл для директив безопасности | `-- serve-cgi-bin.conf .............файл для директив конфигурации CGI |-- conf-enabled активированные конфиги из conf-available | `-- @ ..............................ССЫЛКИ на активированные конфиги из conf-available |-- mods-available ......................директория, содержит конфиги установленных модулей Apache | `-- ... ........................доступные конфиги модулей Apache |-- mods-enabled ........................директория, содержит ССЫЛКИ на активированные конфиги модулей из mods-available | `-- @ ..............................ССЫЛКИ на активированные конфиги модулей Apache |-- sites-available .....................директория содержит доступные конфиги виртуальных хостов | `-- 000-default.conf ...............файл виртуального хоста по умолчанию для 80 порта, создан при инсталляции Apache | `-- default-ssl.conf ...............файл виртуального хоста по умолчанию для порта 443, создан при инсталляции Apache |-- sites-enabled .......................директория, содержит ССЫЛКИ на активированные конфиги виртуальных хостов из sites-enabled | `-- @000-default.conf ..............ссылка на активированный конфиг виртуального хоста |-- apache2.conf ........................ГЛАВНЫЙ конфиг web сервера Apache в Ubuntu |-- envvars .............................файл с настройками путей для окружения Apache |-- magic ...............................Файл скриптов для модуля mime_magic (этот модуль не активен по умолчанию) |-- ports.conf ..........................файл для задания портов на которых будет принимать подключения Apache

Приведенные примеры представлены из OS Ubuntu server 16.04 LTS, однако тоже самое будет и в других версиях и дистрибутивах Ubuntu как в сервером варианте, так и в desktop варианте.

Логика организации конфигурации Apache

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

Во-первых , в Ubuntu , конфигурация Apache разбита на множество разных конфигов по их функциональному назначению. Например, директивы, задающие порт для сервера, вынесены в отдельный файл ports.conf . Директивы, ответственные за те или иные параметры безопасности сервера, вынесены в файл security.conf . Тем самым, директивы как бы сгруппированы по своему смыслу в отдельные конфигурационные файлы. Это достаточно логично и удобно при чтении, правке, активации и деактивации конфигов. При таком подходе каждый, отдельно взятый файл, становиться меньше и является узкоспециализированной частью конфигурации. Однако, нужно понимать, что такое дробление сделано исключительно для удобства и автоматизации настройки и технически, если вы захотите, вы можете записать все директивы и настройки в один файл, просто работать с таким файлом будет не так удобно.

Во-вторых : центром всей конфигурации выступает главный конфиг Apache веб сервера - apache2.conf файл. Именно этот файл в первую очередь ищет и читает web сервер Apache при старте или перезагрузке. А уже в этом файле при помощи директив Include , в месте их указания, выполняется подключение и загрузка всех остальных заданных конфигов. Таким образом, все конфигурационные файлы объединяются в единую конфигурацию web сервера и происходит это, когда Apache читает файлы по порядку их подключения, начиная с главного конфига. Из этого следует важное замечание - порядок следования директив в конфигурации Apache и, соответственно, порядок подключения файлов конфигов имеет значение, так как директивы, прочитанные сервером позднее могут переопределять директивы прочитанные им ранее. Об этом нужно помнить при настройке сервера.

В-третьих : если вы посмотрите на структуру каталогов домашней директории Apache , то увидите три пары директорий с названиями вида: префикс_каталога -available/enabled . Такая логическая структура призвана для распределения ваших конфигов на три группы , исходя из префикса названия каталога, где conf-* это каталоги для ваши прочих конфигов, mods-* это каталоги для конфигов модулей Apache и sites-* это каталоги для конфигов ваших виртуальных хостов. Вторая часть имени этих каталогов -available/-enabled логически указывает на доступные вообще и только активные в настоящий момент момент конфиги. Так в директориях *-available хранятся все доступные для использования файлы конфигурации, а уже в директориях вида *-enabled расположены символьные ссылки (ярлыки ) только на те конфиги из *-available директории, которые должны быть прочитаны web сервером при загрузке конфигурации. Apache читает только каталоги вида *-enabled , поэтому применяться только те конфиги, на которые в этих каталогах есть ссылки . Такой подход дает еще дополнительный уровень удобства тем, что позволяет вам хранить все ваши конфиги в каталогах домашней директории сервера, а задействовать только необходимые в текущий монет.

В-четвертых : директивы конфигурации web сервера Apache имеют контекст (), в котором они действуют. Понятие контекст директивы указывает на то, где, на каком уровне и в каком конфиге данная директива может использоваться. Одна и та же директива может быть разрешена к использованию как только в одном виде контекста, так и в нескольких видах контекста. Если директива будет использована/записана в недопустимом для нее виде контекста, то будет ошибка web сервера Apache при загрузке конфигурации, которая приведет к его остановке. Поэтому, при написании ваших директив, всегда обращайте внимание на контекст их применения, который всегда указывается в документации к директиве на сайте Apache.

В-пятых : нужно понимать, что Apache выполняет чтение и применение всех активных конфигов только при старте или перезагрузке. После старта Apache уже более не перечитывает конфигурацию. Исключением служит файл .htaccess , который является локальным файлом уровня каталога сайта и перечитывается при каждом обращении к данному каталогу сайта. Соответственно, если вы сделали изменения параметров конфигурации вне .htaccess файла, то для вступления их в силу необходимо перезагрузить web сервер Apache .

Виды контекста директив:

  • server config - глобальный уровень директивы для применения в файлах общей конфигурации сервера вне и вне контейнеров и вне файла .htaccess ;
  • virtual host - уровень виртуального хоста для применения директивы в контейнере;
  • directory - уровень каталога , директива должна использоваться внутри контейнеров , , , ;
  • .htaccess - уровень локального каталога сайта, директива может применяться в файле .

Команды управления конфигурацией

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

Команды включения/выключения конфигурации

Для активации и деактивации тех или иных конфигов в Ubuntu предоставляются команды помощники созвучные с available /enabled и префиксом каталога. Например, команда a2enconf , которую можно расшифровать как apache2-enable-conf , выполняет активацию указанного в ее аргументе конфигурационного файла из conf-available каталога путем создания на него символьной ссылки в каталоге conf-enabled . Команда a2disconf выполняет обратное действие, т.е. удаляет эту ссылку. Подобная логика применима и к остальным командам: a2enconf /a2disconf , a2enmod /a2dismod , a2ensite /a2dissite . Но вы так же можете и вручную создать/удалить символьные ссылки на нужные вам конфиги в директориях вида *-enabled .

Внимание : для вступления измений конфигов в силу нужно выполнить перезагрузку конфигурации WEB сервера Apache .

a2enconf/a2disconf

Для включения или выключения нужного конфига из каталога conf-available в конфигурацию сервера используйте команды:

Включить конфиг :

sudo a2enconf

Выключить конфиг :

sudo a2disconf

a2enmod/a2dismod

Для активации установленного модуля Apache из каталога mods-available

Включить модуль Apache

sudo a2enmod

Выключить модуль Apache

sudo a2dismod

a2ensite/a2dissite

Для активации конфигурации виртуального хоста из каталога sites-available и деактивации его используйте команды:

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

sudo a2ensite

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

sudo a2dissite

Команды управления Apache

В Ubuntu , благодаря использованию переменных среды, для обращения к демону httpd web сервера можно применять вызовы вида: /etc/init.d/apache2 или apache2ctl или apache2 :

sudo /etc/init.d/apache2 sudo apache2ctl sudo apache2

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

Собственный HTTP: Apache, PHP, MySQL

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

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

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

Бесплатность, простота, надежность отличают линукс-системы и их приложения. Не важно, что использовать: установка и настройка Apache на Ubuntu не намного отличается от CentOs, Debian или FreeBSD. Часто играет роль насыщенность той или иной операционной системы дополнительным программным обеспечением.

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

В реальности для решения конкретной задачи поднять хостинг необходимо определиться с нужным функционалом, требуемой производительностью, концептуальными приоритетами и конкретным выбором представителя Linux, либо же остановиться на Windows Server.

Смещение приоритетов локальной разработки

Трудно оценить роль глобальной сети в развитии программирования, но легко заметить реальное смещение центра тяжести: локальные приложения стало принято исполнять как веб-ресурс. Просто написать программу для локального компьютера - это драйвера, антивирусы, небольшие проекты с простым функционалом. Язык программирования... VBA, хотя можно применить C/C++ или C#.

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

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

При этом локальное может быть распределенным: офисы компании могут находиться где угодно, но это не Интернет, а распределенная локальная сеть компании.

MySQL, PHP, Apache настройка в локальной форме:

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

Если учесть, что MySQL и Apache в среде Windows - это службы, а PHP-код - это обычный текст, обрабатываемый инструментом (интерпретатор PHP), вызываемым в нужный момент времени HTTP-сервером, то уровень изменяемости, мобильности и переносимости кода будет значительно выше, чем у локальных инструментов разработки.

Подготовка к инсталляции Apache

Еще в эпоху «начала начал» операционная система Unix определила негласные принципы лояльности. С тех пор все, что делалось под юниксоподобные системы, автоматически транслировалось на другие платформы. Настройка Apache на Windows выполняется крайне просто, но для решения серьезных задач потребуется хорошая квалификация и детальное представление о конфигурации HTTP-сервера.

Прежде всего нужно скачать последнюю версию сервера (сегодня это версия 2.4.33 от 17.03.2018) с официального сайта в формате zip-архива. Следует иметь в виду изначально, что версии серверов многочисленны и предлагаются на множестве сторонних ресурсов, поэтому важно выбрать официальную реализацию, размещенную на веб-ресурсе, вызывающем доверие.

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

Редактирование файла конфигурации

Конфигурация сервера определяется набором конфигурационных файлов, расположенных в папке conf. Основной файл конфигурации Apache - httpd.conf.

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

Для успешного запуска сервера достаточно внести правку только в одну строку (по порядку - 38-ю) - и настройка Apache завершена.

В предыдущих вариантах конфигурации сервера требовалось вносить многочисленные правки под реальную ситуацию, но теперь есть «универсальная» переменная SRVROOT. Стоит указать ее правильное значение (путь к месту расположения сервера), и все сразу заработает.

Процедура размещения сервера

К расположению сервера нужно отнестись внимательно. Сам по себе Apache интересен, но когда он оснащен PHP и MySQL, он интересен вдвойне. Лучше, когда все, что связано с веб-разработкой, находится в одном месте. Можно согласиться на дефолтные пути, но современное программирование не столь идеально в своей реализации, так что держать руку на пульсе придется однозначно и часто. Кроме того, при выборе удобного места будут доступны все файлы инициализации и конфигурирования, а также логи по работе установленных продуктов.

Скачанный официальный zip-архив Apache нужно развернуть в выбранном месте, разместив раздельно инструмент и работу. В данном примере папка C:\SCiA - это инструмент (Apache24, PHP, MySQL, ...), а папка SCiB - это работа, собственно, сайтов, которые создаются, сопровождаются или модернизируются.

В результате первого этапа работы в папку C:\SCiA\Apache24 попадают только подпапки bin, cgi-bin, conf, error, ... со всем их содержимым.

Редактирование файла hosts

Второй этап состоит в том, чтобы правильно настроить файл hosts - указание на то, какие IP-адреса на данном компьютере сопоставлены с какими именами. Если на компьютере будет вестись разработка или сопровождение только одного сайта, то можно ничего не менять.

Базовый IP - 127.0.0.1 обычно всегда указывает на localhost. Рабочий файл hosts находится по адресу c:\Windows\System32\drivers\etc и выглядит так, как показано ниже.

Чтобы поместить файл hosts в нужное место, нужно воспользоваться командной строкой в режиме администратора. Подготовить правильное содержание файла можно в любом месте файловой системы компьютера, но записать его по адресу c:\Windows\System32\drivers\etc можно только тем инструментом, который обладает правами администратора. Через командную строку это сделать проще всего.

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

Нет ничего проще. Достаточно запустить командную строку от имени администратора и перейти в папку C:\SCiA\Apache24. Поскольку это путь в системе Windows, то используются прямые слэши. В конкретном случае путь может быть иным. Но если с именем папки для размещения святой троицы - Apache, PHP и MySQL - еще можно как-то экспериментировать, то менять имена папок для каждого из них нецелесообразно.

В данном случае архив сервера развернут в папке С:/SCiA/Apache24, следовательно, нужно в папке bin написать команду:

  • httpd.exe -k install

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

Окно (1) командной строки - установка сервиса, окно (2) - список служб, в которых объявился сервер, окно (3) - исходный файл index.html, расположенный по адресу С:/SCiB/localhost/www, окно (4) - результат работы сервера.

В этом примере умышленно была допущена ошибка: вместо установки значения переменной SRVROOT были внесены многочисленные правки «по старинке»: вручную все было изменено. Это не самое лучшее решение. Прежде чем применять знания, следует ознакомиться с текущей версией продукта. Как правило, все быстро меняется, и знания следует применять «со знанием дела и пониманием текущей ситуации».

Практика развертывания zip-архива

Современные сайты далеко не всегда пишутся на системах управления сайтами. Есть много ручного труда. Проблема переноса сайта на другой хостинг обусловила хорошее решение - zip-архив. Свернули контент в одном месте, развернули - в другом.

Наличие инсталлятора - хорошая практика, но динамика современных информационных технологий не дает времени на написание красивых инсталляций. Использовать установку через развертывание zip-архива - современно, практично и удобно. В таком варианте настройка Apache ограничивается изменением файлов конфигурации.

При установке сервера важно указать:

  • где он находится;
  • где находится веб-ресурс (localhost);
  • использование ssl;
  • виртуальные хосты.

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

Джентльменские наборы

Простота развертывания zip-архива очевидна, Apache (установка и настройка) - всего два-три клика. Однако результат, когда были популярны инсталляторы, был эквивалентным. Разработчик просто тратил больше времени на разработку очередной версии своего продукта. Установка сервера, серверного языка и базы данных - это, по сути, просто наборы файлов, запуск сервисов, файл hosts и пути по умолчанию в переменной операционной системы path.

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

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

В большинстве случаев разработка веб-ресурсов - это достаточно длительные процессы, в которых требования к сервисам (Apache, PHP, MySQL, ...) меняются быстро, но всегда есть время на понимание очередной задачи и ее оптимальное решение. Но это не повод идти на поводу джентльменских наборов. Время течет, а джентльмен - не меняется, это гораздо более веский аргумент, чем декларация «денвер» - это просто, быстро и доступно.

Несколько сайтов - один сервер

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

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

Один сервер может поддерживать сколько угодно веб-ресурсов, для этого нужно в файле httpd.conf снять комментарий со строки 501:

  • # Include conf/extra/httpd-vhosts.conf

и описать все необходимые хосты в файле

  • extra\httpd-vhosts.conf.

Может потребоваться уточнить, какие порты и IP слушает сервер, но это отдельная тема, на первое время можно ограничиться тем, что есть.

Следует отметить, что в примере для удобства описания реальных виртуальных веб-ресурсов (а их много) введена переменная (DOCROOT) с путем к общей папке всех веб-ресурсов, доступных через установленный сервер.

Настройка Apache SSL доступна аналогичным образом. В файле httpd.conf нужно просто оставить «как есть» строки с 524 по 531, которые отвечают за работу SSL.

Простота и сложность Apache

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

Три простых действия:

  • развернуть архив;
  • изменить файл конфигурации;
  • инсталлировать сервер.

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

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

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

Профессиональная среда разработчика

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

Эта логика предполагает наличие хотя бы одного сервера в сети на платформе CentOS, Ubuntu, FreeBSD, рабочих станций на Windows. Оптимально иметь два Linux-сервера (основной и вспомогательный), настройку Apache для локального компьютера в среде Windows. В случае вирусной атаки или непредвиденной ситуации вспомогательный сервер станет на замену основному, а основной - на ремонт и восстановление. Заменить локальную установку Apache на рабочей станции (под Windows) можно из архива.

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

Похожие статьи