Установка Apache

advertisement
Нижегородский Государственный Технический Университет
Практическая работа №2
по дисциплине: «Программное обеспечение вычислительных сетей»
Тема: «Http-сервер Apache»
Выполнил студент группы 10-В-1
Сидоренко О.О.
Проверил:
Кочешков А.А.
г. Нижний Новгород
2014г.
Общие сведения
Apache HTTP-сервер— свободный веб-сервер.
Apache является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD,
Mac OS, Microsoft Windows, Novell NetWare, BeOS.
Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он
позволяет подключать внешние модули для предоставления данных, использовать СУБД для
аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает
IPv6.
Ядро
Ядро Apache включает в себя основные функциональные возможности, такие как обработка
конфигурационных файлов, протокол HTTP и система загрузки модулей. Ядро (в отличие от
модулей) полностью разрабатывается Apache Software Foundation, без участия сторонних
программистов.
Теоретически, ядро apache может функционировать в чистом виде, без использования модулей.
Однако, функциональность такого решения крайне ограничена.
Ядро Apache полностью написано на языке программирования C.
Система конфигурации
Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три
условных уровня конфигурации:
 Конфигурация сервера (httpd.conf).
 Конфигурация виртуального хоста (httpd.conf c версии 2.2, extra/httpd-vhosts.conf).
 Конфигурация уровня директории (.htaccess).
Имеет собственный язык конфигурационных файлов, основанный на блоках директив.
Практически все параметры ядра могут быть изменены через конфигурационные файлы, вплоть
до управления MPM. Большая часть модулей имеет собственные параметры.
Часть модулей использует в своей работе конфигурационные файлы операционной системы
(например /etc/passwd и /etc/hosts).
Помимо этого, параметры могут быть заданы через ключи командной строки.
Система модулей
Apache HTTP Server поддерживает модульность. Существует более 500 модулей[5],
выполняющих различные функции. Часть из них разрабатывается командой Apache Software
Foundation, но основное количество — отдельными open source-разработчиками.
Модули могут быть как включены в состав сервера в момент компиляции, так и загружены
динамически, через директивы конфигурационного файла.
В модулях реализуются такие вещи, как:
 Поддержка языков программирования.
 Добавление функций.
 Исправление ошибок или модификация основных функций.
 Усиление безопасности.
Часть веб-приложений, например панели управления ISPmanager и VDSmanager реализованы в
виде модуля Apache.
Механизм виртуальных хостов
Apache имеет встроенный механизм виртуальных хостов. Он позволяет полноценно
обслуживать на одном IP-адресе множество сайтов (доменных имён), отображая для каждого из
них собственное содержимое.
Для каждого виртуального хоста можно указать собственные настройки ядра и модулей,
ограничить доступ ко всему сайту или отдельным файлам. Некоторые MPM, например Apache-
2
ITK позволяют запускать процесс httpd для каждого виртуального хоста с отдельными
идентификаторами uid и guid.
Также, существуют модули, позволяющие учитывать и ограничивать ресурсы сервера (CPU,
RAM, трафик) для каждого виртуального хоста.
Безопасность
Apache имеет различные механизмы обеспечения безопасности и разграничения доступа к
данным. Основными являются:
 Ограничение доступа к определённым директориям или файлам.
 Механизм авторизации пользователей для доступа к директории на основе HTTPаутентификации (mod_auth_basic) и digest-аутентификации (mod_auth_digest).
 Ограничение доступа к определённым директориям или всему серверу, основанное на
IP-адресах пользователей.
 Запрет доступа к определённым типам файлов для всех или части пользователей,
например запрет доступа к конфигурационным файлам и файлам баз данных.
 Существуют модули, реализующие авторизацию через СУБД или PAM.
В некоторых MPM-модулях присутствует возможность запуска каждого процесса Apache
используя различные uid и gid с соответствующими этим пользователям и группам
пользователей.
Также, существует механизм suexec, используемый для запуска скриптов и CGI-приложений с
правами и идентификационными данными пользователя.
Для реализации шифрования данных, передающихся между клиентом и сервером используется
механизм SSL, реализованный через библиотеку OpenSSL. Для удостоверения подлинности
веб-сервера используются сертификаты X.509.
Существуют внешние средства обеспечения безопасности, например mod_security.
3
Подготовка к установке
Файлы самого сервера, а также всех его модулей должны находиться в определенном месте
системы. Желательно, чтобы структура расположения файлов имела некоторую логичность, так
будет легче обслуживать сервер любому пользователю.
Создадим папку «Server» в корне диска «D:\» - в ней будет располагаться вся структура.
Создадим 2 подпапки:
D:\Server\web – для компонент и прочих программ.
D:\Server\domains – для сайтов
В папке \web\ создадим еще 3 подпапки для файлов apache, php, mysql с соответствующими
именами:
D:\Server\web\apache\
D:\Server\web\php\
D:\Server\web\mysql\
В папке \domains\ создадим 2 подпапки:
D:\Server\domains\localhost\
D:\Server\domains\phpmyadmin\
Внутри них создадим еще 2 подпапки:
\public_html\ – для файлов сайта;
\logs\ – для логирования работы
После всех операций структура папок для установки сервера выглядит следующим образом:
Помимо этого добавим в системную переменную «PATH» пути к Apache и MySQL. Они
понадобятся для простого запуска сервисов.
;D:\Server\web\apache\bin;D:\Server\web\mysql\bin
4
Установка Apache
Apache распространяется свободно и для установки Apache потребуется скачать архив файлов
с официального сайта (www.apachelounge.com/download/). Также для нормальной работы
требуется «Распространяемый пакет Microsoft Visual C++ 2010 (x64)»(www.microsoft.com/ruru/download/details.aspx?id=14632), он распространяется с программой-установщиком и процесс
установки не вызывает затруднений.
Архив с Apache содержит папку Apache24, файл с ссылкой -- Win64-2.4.9 VC10 – и файл
ReadMe.txt. В последнем описана инструкция по установке и рекомендации.
Распакуем файлы из Apache24 в заготовленную ранее папку D:\Server\web\apache\
Получится следующая структура:
Теперь необходимо настроить сервер.
Файл httpd.conf
Основным конфигурационным файлом Apache является файл httpd.conf. В нем содержатся
настройки WEB-сервера, виртуальных серверов всех его программных модулей.
Файл .htaccess
.htaccess - файл дополнительной конфигурации WEB-сервера. Применяется для управления вебсервером Apache со стороны конечного пользователя хостинга. В этот файл помещаются
директивы, которые веб-сервер воспринимает и обрабатывает, выполняя действия в
соответствии с настройками, которые были сделаны пользователем. Изменения, внесенные в
файл, вступают в силу немедленно. Это связано с тем, что информация из .htaccess
перечитывается при каждом обращении к веб-серверу Apache. Этот файл не доступен
пользователю из браузера, поскольку является скрытым файлом сервера. Он служит для
переопределения директив из файла httpd.conf.
Перейдем в папку D:\Server\web\apache\conf\ и откроем файл конфигурации httpd.conf.
Каждая строка файла содержит параметр настройки Apache, а также комментарий, в основном
пояснение параметра, помеченный #
Приступим к настройке:
5
Основная директория Apache по умолчанию задана структурой из архива, однако у нас другая
структура папок, поэтому заменим параметр на следующий:
ServerRoot “D:/Server/web/apache”
IP-адрес и порт, который «слушает» сервер зададим следующий:
Listen 127.0.0.1:80
Подключим два модуля для сервера:
 mod_rewrite - предназначен для преобразования исходных URL'ов. Его возможности колоссальны, но зачастую он используется для создания ЧПУ (Человеко Понятный УРЛ)
 php5apache2_4.dll - PHP.
Помимо этого в файле конфигурации заранее прописаны подключения для более чем сотни
модулей.
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module "D:/Server/web/php/php5apache2_4.dll"
Укажем Apache, что файлы с расширением php, нужно воспринимать как php-скрипты добавив
следующий параметр:
AddHandler application/x-httpd-php .php
Укажем расположение файла настроек php
PHPIniDir “D:/Server/web/php”
Далее можно указать электронный адрес администратора сервера и имя сервера. Изменим имя:
ServerName 127.0.0.1:80
Секция <Directory /> определяет доступ к файловой системе сервера. Откроем её для всех:
Options Includes Indexes FollowSymLinks - разрешает формировать страницу
содержимого каталога с символьными ссылками
AllowOverride All - сервер будет допускать все директивы .htaccess файла.
Allow from all
Закроем секцию - </Directory>
Зададим директорию с сайтами
DocumentRoot “D:/Server/domains”
Секция <Directory " D:/Server/domains "> определяет доступ сайтам:
Options Indexes FollowSymLinks
AllowOverride None - сервер не читает файл .htaccess.
Require all granted - Все запросы разрешены.
Расставим индексные файлы по приоритету. Т.е. сервер сначала будет искать первые файлы,
постепенно переходя далее, если файл не найден.
<IfModule dir_module>
DirectoryIndex index.php index.html index.htm index.shtml
</IfModule>
Определим папки для log-файлов
ErrorLog “C:/Server/domains/logs/error.log” – Ошибки сервера
CustomLog “C:/Server/domains/logs/access.log” – Логгирование посещений
Добавим alias для phpMyAdmin, и поправим alias для cgi. Common Gateway Interface является
стандартом интерфейса, который служит для связи внешней программы с веб-сервером.
Программу, которая работает по такому интерфейсу совместно с веб-сервером, принято
называть шлюзом.
<IfModule alias_module>
6
Alias /pma “D:/Server/domains/phpMyAdmin”
ScriptAlias /cgi-bin/ “D:/Server/web/apache/cgi-bin/”
</IfModule>
Исправим путь и доступ для cgi
<Directory “D:/Server/web/apache/cgi-bin”>
AllowOverride None
Options None
Require all granted
</Directory>
Определим приложения для открытия типов файлов
<IfModule mime_module>
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
Подключим дополнительные конфигурационные файлы. Они хранят специальные настройки
отдельных систем сервера – виртуальные хосты, мультипроцессорная обработка и пр.
Include
Include
Include
Include
Include
conf/extra/httpd-mpm.conf
conf/extra/httpd-autoindex.conf
conf/extra/httpd-vhosts.conf
conf/extra/httpd-manual.conf
conf/extra/httpd-default.conf
На этом заканчивается настройка httpd.conf.
Подключенные новые файлы конфигурации в основном уже содержат настройки по
умолчанию, но некоторые стоит изменить.
Откроем файл D:\Server\web\apache\conf\extra\httpd-mpm.conf и укажем место хранение pidфайла:
<IfModule !mpm_netware_module>
PidFile “D:/Server/web/apache/logs/httpd.pid”
</IfModule>
В него записывается процесс идентификации номера во время запуска сервера.
Откроем файл httpd-autoindex.conf, изменим строки пути для загрузки иконок:
Alias /icons/ "D:/Server/web/apache/icons/"
<Directory "D:/Server/web/apache/icons">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
Откроем httpd-vhosts.conf и обозначим виртуальные хосты:
Для localhost
<VirtualHost localhost:80>
DocumentRoot "D:/Server/domains/localhost/public_html"
ServerName localhost
ErrorLog "D:/Server/domains/localhost/logs/error.log"
CustomLog "D:/Server/domains/localhost/logs/access.log" common
</VirtualHost>
Для phpMyAdmin
<VirtualHost phpmyadmin:80>
DocumentRoot "D:/Server/domains/phpmyadmin/public_html"
ServerName localhost
7
ErrorLog "D:/Server/domains/phpmyadmin/logs/error.log"
CustomLog "D:/Server/domains/phpmyadmin/logs/access.log" common
</VirtualHost>
В httpd-manual.conf исправим только пути:
AliasMatch ^/manual(?:/(?:da|de|en|es|fr|ja|ko|pt-br|ru|tr|zh-cn))?(/.*)?$
"D:/Server/web/apache/manual$1"
<Directory "D:/Server/web/apache/manual">
В httpd-default.conf никаких изменений производить не требуется.
Теперь можно начать установку.
В командной строке от имени администратора введём, для установки Apache:
>httpd –k install
Запустится установщик файлов и сообщит, что установка успешно завершена
8
Установка PHP
Модуль PHP также распространяется свободно, архив можно скачать с (anindya.com/tag/php/).
Т.к. нужен php как модуль - скачиваем Thread Safe.
Содержимое архива переносим в папку D:\Server\web\php\. В архиве есть и инструкция по
установке в файле install.txt.
Создадим две пустые папки D:\Server\web\php\tmp\ и D:\Server\web\php\upload\.
В папке \php\ найдем файл php.ini-development и переименовываем его в php.ini.
В корне установки есть два файла php.ini-development и php.ini-production. Эти файлы содержат
базовые настройки. Первый файл оптимизирован для разработчиков, второй для рабочих
систем. Основное отличие - в настройках для разработчиков разрешен вывод на экран ошибок,
тогда как для рабочих систем вывод ошибок запрещен из соображений безопасности.
Файл конфигурации (php.ini) считывается при запуске PHP. Для версий серверных модулей
PHP это происходит только один раз при запуске веб сервера. Для CGI и CLI версиий это
происходит при каждом вызове. Он содержит параметры в виде ключей. Каждый параметр
описан в комментариях, начинающихся с «;». Файл также разделен на несколько разделов, имя
которых указывается в квадратных скобках.
Настроим параметры:
Настройка php.ini
short_open_tag = On - Определяет, разрешается ли короткая форма записи (<? ?>) тегов PHP
zlib.output_compression = On - Следует ли сжимать страницы
post_max_size = 64M - Устанавливает максимально допустимый размер данных,
отправляемых методом POST. Это значение также влияет на загрузку файлов.
include_path = ".;D:\Server\web\php\includes" - Указывает список директорий, в
которых функции ищут файлы.
extension_dir = "D:/Server/web/php/ext" - В какой директории PHP должен искать
динамически загружаемые расширения
upload_tmp_dir = "D:/Server/web/php/upload" - Временная директория, используемая для
хранения файлов во время закачивания.
upload_max_filesize = 64M - Максимальный размер закачиваемого файла.
extension=php_bz2.dll - Функции сжатия bzip2
extension=php_curl.dll - Функции библиотеки CURL
extension=php_gd2.dll - Библиотека функциий обработки изображений GD
extension=php_mbstring.dll - Функции для работы с многобайтовыми (Multi-Byte) строками
extension=php_mysql.dll - Функции MySQL
extension=php_mysqli.dll - Функции MySQLi
extension=php_pdo_mysql.dll - Объекты данных PHP Для mysql
extension=php_sockets.dll - Функции для работы с сокетами
extension=php_sqlite3.dll - Функции sqlite3
date.timezone = "Europe/Moskow" - Временная зона, используемая по умолчанию всеми
функциями даты/времени.
session.save_path = "D:/Server/web/php/tmp/" - определяет аргумент, который
передается в обработчик сохранения. При установленном по умолчанию обработчике files,
аргумент содержит путь, где будут создаваться файлы
9
Установка MySQL
Установим MySQL как сокет под windows. Архив можно скачать с
dev.mysql.com/downloads/mysql/.
Содержимое архива перенесем в «D:\Server\web\mysql\»
Теперь откроем файл настроек MySQL – «D:\Server\web\mysql\my-default.ini» и установим
следующие параметры:
[client]
port=3306
host=127.0.0.1
[mysqld]
port=3306
bind-address=127.0.0.1
enable-named-pipe
basedir="D:/Server/web/mysql/"
datadir="D:/Server/web/mysql/data/"
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Теперь скрипты могут обращаться к серверу и по локальному IP, и по сокет-соединению.
Для установки MySQL:
>mysqld.exe --install MySQL --defaults-file=”D:\Server\web\mysql\my-default.ini”
Установщик также скажет, что установка прошла успешно.
Установим пароль для MySQL-пользователя. Для этого запустим службу MySQL:
>NET start MySQL
После того как служба запустилась, установим пароль. Выполним
mysqladmin –u root password
И введем новый пароль.
10
Установка phpMyAdmin
PHPMyAdmin — веб-приложение, представляющее собой веб-интерфейс для
администрирования СУБД MySQL. PHPMyAdmin позволяет через браузер осуществлять
администрирование сервера MySQL, запускать команды SQL и просматривать содержимое
таблиц и баз данных.
Скачать последнюю версию PhpMyAdmin можно с phpmyadmin.net/home_page/index.php
Перенесем содержимое архива в папку
D:\Server\domains\phpmyadmin\public_html\.
Найдём файл config.sample.inc.php, переименуем его в config.inc.php и добавимв него
следующий скрипт:
<?php
$cfg['blowfish_secret'] = 'uxo53tr';
$i = 0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
?>
Теперь страница PHPMyAdmin откроется при заходе на домен http://phpmyadmin.
11
Проверка работоспособности
Нужно проверить, работает ли сервер, позволяет ли загружать страницы.
Запустим Apache. В командной строке выполним:
>net start Apache2.4
Запустим MySQL:
>net start MySQL
Обе службы успешно запустились.
Теперь можно проверить, работают ли системы, перейдя на адрес http://phpmyadmin.
PHPMyAdmin работает на PHP и работает с MySQL, значит он отлично подходит для
тестирования.
Перед этим необходимо добавить в системный файл host строку, позволяющую использовать
это имя:
127.0.0.1 phpmyadmin
Откроем в браузере ссылку, появится окно приветствия и просьба ввести логин пароль.
Также можно создать файд index.php в папке D:\Server\domains\localhost\public_html, внутри
написать следующий код:
<?php phpinfo(); ?>
Тогда при переходе на http://localhost будет выведена информация о php и многая другая
информация, включая информацию о сервере, который был настроен. Если посмотреть, то
некоторые пути совпадают с теми, что мы вводили при настройке сервера, а значит информация
верна. Т.е. все работает
12
13
Download