Содержание
Введение
Глава 1. Сервер Apache
1.1 Описание и история Apache
.2 Архитектура Apache
.3 Функциональные возможности
Глава 2. Установка и настройка Apache
.1 Начальная установка и настройка
.2 Установка Apache2.2 в картинках
.3 Создание структуры виртуальных дисков
.4 Автоматизация запуска и остановки HTTP-сервера Apache
Глава 3. PHP, как основной инструмент разработки
.1 Введение в PHP
.2 Возможности PHP
.3 Преимущества PHP
.4 История развития PHP
Заключение
Список литературы
Введение
Рассмотрим основную терминологию и необходимую классификацию.
Web-технология - набор программ для обеспечения взаимодействия клиент-сервер в сетях Internet или Intranet.
Сервер (англ. server от serve - служить) в информационных технологиях - аппаратный или программный компонент вычислительной системы, выполняющий специализированные функции по запросу клиента, предоставляя ему доступ к определенным ресурсам. Сервер, реализованный в виде программы или программного модуля, обычно выполняет строго определённую задачу и обменивается информацией с клиентом по заранее определённому протоколу. Примерами программных серверов могут служить: файл-сервер, сервер печати, веб-сервер (Apache, IIS), сервер БД, X -сервер, почтовый сервер (Sendmail Postfix), OLE-сервер, ActiveX-сервер и т. п.
Клиент - (в информационных технологиях) это аппаратный или программный компонент вычислительной системы, посылающий запросы серверу. Программа, являющаяся клиентом, взаимодействует с сервером, используя определенный протокол. Она может запрашивать с сервера какие-либо данные, манипулировать данными непосредственно на сервере, запускать на сервере новые процессы и т. п. Полученные от сервера данные клиентская программа может предоставлять пользователю или использовать как-либо иначе, в зависимости от назначения программы. Программа-клиент и программа-сервер могут работать как на одном и том же компьютере, так и на разных.
Internet (интернет) - всемирная система объединённых компьютерных сетей, построенная на использовании протокола IP и маршрутизации пакетов данных. Интернет образует глобальное информационное пространство, часто упоминается как Всемирная сеть и Глобальная сеть. В обиходе иногда говорят Инет.
Intranet (интранет) - корпоративная - локальная или территориально распределенная сеть, закрытая от внешнего доступа из Интернет. Такая сеть, возможно, использует публичные каналы связи, входящие в Интернет, но при этом обеспечивается защита передаваемых данных и меры по пресечению проникновения извне на корпоративные узлы.
Протокол или сетевой протокол в компьютерных сетях - набор правил для специфического типа связи. Типы связи разбиты на уровни. Например, физический уровень (протоколы ISDN, RS-232), канальный уровень (протоколы Ethernet, Token ring, Fibre Channel), сетевой уровень (протоколы ICMP, IP, IPX), транспортный уровень (протоколы SPX, TCP, UDP, RTCP), прикладной уровень (протоколы binkp, DHCP, DNS, Finger, FTP, Gnutella, Gopher, HTTP, HTTPS, IMAP, IRC, Jabber, LDAP, NTP, NNTP, POP3, SSH, SMTP, Telnet).
Веб-браузер (англ. Web Browser) или просто браузер (в ином написании броузер) - специализированная программа для просмотра веб -страниц, созданных с помощью языка гипертекстовой разметки HTML по протоколу HTTP . Практически все браузеры также могут просматривать содержание FTP -архивов (однако это не является обязательным условием).
Веб-страница - документ HTML / XHTML, доступный в интернете через протоколы HTTP /HTTPS. Язык HTML/XHTML позволяет форматировать текст, различать в нём функциональные элементы, создавать гипертекстовые ссылки и вставлять различные внешние объекты в отображаемую страницу: изображения, звукозаписи и другие мультимедийные элементы. Также отображение страницы можно изменить, добавляя в неё таблицы стилей на языке CSS или сценарии на языке JavaScript . Веб-страницы, загруженные по запросу клиента на его компьютер, обрабатываются браузером, и выводятся (обычно отображаются на экран монитора).
Веб-сайт, или кратко сайт (website, от web - паутина, и site - "место") - это совокупность веб-страниц. Все имеющиеся общедоступные веб-сайты составляют Всемирную Паутину. Страницы веб-сайта объединены общим корневым адресом, а также зачастую темой, логической структурой, оформлением или авторством. С ростом Интернета и технологическим улучшением серверов на одном компьютере стало возможно размещение множества сайтов и доменов.
Существует несколько наиболее распространенных способов разработки (установки и настройки) http-сервера:
· Конструкция nginx + php-fpm
· Apache + модули
В данном курсовом проекте я буду рассматривать второй способ, так как он
более распространен, и в сети Интернет имеется большее количество информации по
данному методу.
Глава 1. Сервер Apache
.1 Описание и история Apache
HTTP-сервер (назван именем группы племён североамериканских индейцев апачей; кроме того, является сокращением от англ. a patchy server; среди русских пользователей общепринято искажённое апа́ч) - свободный веб-сервер.является кроссплатформенным ПО, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows,Novell NetWare, BeOS.
Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6.
Сервер был написан в начале 1995 года и считается, что его имя восходит к шуточному названию "a patchy" (англ. "заплаточка"), так как он устранял ошибки популярного тогда сервера Всемирной паутины NCSA HTTPd 1.3. В дальнейшем, с версии 2.х, сервер был переписан заново и теперь не содержит кода NCSA. На данный момент разработка ведётся в ветке 2.4, а в версиях 1.3 и 2.0 производятся лишь исправления ошибок безопасности. На текущий момент последняя версия ветки 2.4 - 2.4.9 (17 марта 2014), 2.2 - 2.2.27 (26 марта 2014), для первой версии это 1.3.42.
Веб-сервер Apache разрабатывается и поддерживается открытым сообществом разработчиков под эгидой Apache Software Foundation и включён во многиепрограммные продукты, среди которых СУБД Oracle и IBM WebSphere.
С апреля 1996 и до настоящего времени является самым популярным HTTP-сервером в Интернете. Статистика Netcraft показывает следующие данные об использовании Apache:
· в августе 2007 года он работал на 51 % всех веб-серверов
· в мае 2009 года - на 46 %
· в январе 2011 года - на 59 %, т.е. более чем на 160 млн сайтов.
Ядро. Ядро 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).
Помимо этого, параметры могут быть заданы через ключи командной строки.
Мультипроцессовые модули (MPM). Для веб-сервера Apache существует множество моделей симметричной мультипроцессорности. Вот основные из них:
· Worker - Гибридная мультипроцессорно-мультипоточная модель. Сохраняя стабильность мультипроцессорных решений, она позволяет обслуживать большое число клиентов с минимальным использованием ресурсов.
· Pre-fork - MPM, основанная на предварительном создании отдельных процессов, не использующая механизм threads.
· Perchild - Гибридная модель, с фиксированным количеством процессов.
· Netware - Мультипоточная модель, оптимизированная для работы в среде NetWare.
· Winnt - Мультипоточная модель, созданная для операционной системы Microsoft Windows.
· Apache-ITK - MPM, основанная на модели prefork. Позволяет запуск каждого виртуального хоста под отдельными uid и gid.
· Peruser - Модель, созданная на базе MPM perchild. Позволяет запуск каждого виртуального хоста под отдельнымиuid и gid. Не использует потоки
Система модулей. Apache HTTP Server поддерживает модульность. Существует более 500 модулей[5], выполняющих различные функции. Часть из них разрабатывается командой Apache Software Foundation, но основное количество - отдельными open source-разработчиками.
Модули могут быть как включены в состав сервера в момент компиляции, так и загружены динамически, через директивы конфигурационного файла.
В модулях реализуются такие вещи, как:
· Поддержка языков программирования.
· Добавление функций.
· Исправление ошибок или модификация основных функций.
· Усиление безопасности.
Часть веб-приложений, например панели управления ISPmanager и VDSmanager реализованы в виде модуля Apache.
Механизм виртуальных хостов. Apache имеет встроенный механизм виртуальных хостов. Он позволяет полноценно обслуживать на одном IP-адресе множество сайтов (доменных имён), отображая для каждого из них собственное содержимое.
Также, существуют модули, позволяющие учитывать и ограничивать ресурсы сервера (CPU, RAM, трафик) для каждого виртуального хоста.
Интеграция с другим ПО и языками программирования. Существует множество модулей, добавляющих к Apache поддержку различных языков программирования и систем разработки.
К ним относятся:
· PHP (mod_php).
· Python (mod python, mod wsgi).
· Ruby (apache-ruby).
· Perl (mod perl).
· ASP (apache-asp).
· Tcl (rivet)
Кроме того, Apache поддерживает механизмы CGI и FastCGI, что позволяет исполнять программы на практически всех языках программирования, в том числе C, C++,Lua, sh, Java.
Безопасность. Apache имеет различные механизмы обеспечения безопасности и разграничения доступа к данным. Основными являются:
Ограничение доступа к определённым директориям или файлам.
Механизм авторизации пользователей для доступа к директории на основе HTTP-аутентификации (mod_auth_basic) и digest-аутентификации (mod_auth_digest).
Ограничение доступа к определённым директориям или всему серверу, основанное на IP-адресах пользователей.
Запрет доступа к определённым типам файлов для всех или части пользователей, например запрет доступа к конфигурационным файлам и файлам баз данных.
Существуют модули, реализующие авторизацию через СУБД или PAM.
В некоторых MPM-модулях присутствует возможность запуска каждого процесса Apache используя различные uid и gid с соответствующими этим пользователям и группам пользователей.
Также, существует механизм suexec, используемый для запуска скриптов и CGI-приложений с правами и идентификационными данными пользователя.
Для реализации шифрования данных, передающихся между клиентом и сервером используется механизм SSL, реализованный через библиотеку OpenSSL. Для удостоверения подлинности веб-сервера используются сертификаты X.509.
Существуют внешние средства обеспечения безопасности, например mod_security.
Интернационализация. Начиная с версии 2.0 появилась возможность определения сервером локали пользователя. Сообщения об ошибках и событиях, посылаемые браузеру, теперь представлены на нескольких языках и используют SSI технологию.
Также, можно реализовать средствами сервера отображение различных страниц для пользователей с различными локалями. Apache поддерживает множество кодировок, в том числе Unicode, что позволяет использовать страницы, созданные в любых кодировках и на любых языках.
Обработка событий. Администратор может установить собственные страницы и обработчики для всех HTTP ошибок и событий, таких как 404 (Not Found) или 403 (Forbidden). В том числе существует возможность запуска скриптов и отображения сообщений на разных языках.
Server Side Includes. В версиях 1.3 и старше был реализован механизм Server Side Includes, позволяющий динамически формировать HTML-документы на стороне сервера.
Управлением SSI занимается модуль mod_include, включённый в базовую поставку Apache.
Распаковываем загруженный с официального сайта архив дистрибутива в каталог C:\Apache2.
Открываем в текстовом редакторе файл "C:\Apache2\conf\httpd.conf", являющийся основным конфигурационным файлом сервера Apache.
Ну а теперь - держитесь. Женщинам, старикам и детям просьба - дальше не читать. За психическое состояние людей, дочитавших курсовой проект до конца - автор ответственности не несет.
Правка файла httpd.conf
1. Для загрузки модуля mod_rewrite находим и и раскомментируем (убираем в начале строки символ "#") данную строку:
2. LoadModule rewrite_module modules/mod_rewrite.so
3. Для загрузки PHP интерпретатора, в конец блока загрузки модулей необходимо добавить строку:
4. LoadModule php5_module "C:/php/php5apache2_2.dll"
5. Определяем каталог, содержащий конфигурационный файл PHP, добавив ниже следующую строку:
. PHPIniDir "C:/php"
. Находим и раскомментируем строку:
. ServerName www.example.com:80
. Редактируем ее следующим образом, установив изначальное имя сервера:
. ServerName localhost:80
. Находим строку:
. DocumentRoot "c:/Apache2/htdocs"
. Назначаем корневую директорию управления сайтами (немного позже мы ее создадим):
. DocumentRoot "C:/apache"
. Находим данный блок:
. <Directory />
. Options FollowSymLinks
. AllowOverride None
. Order deny,allow
. Deny from all
. </Directory>
22. И заменяем его на нижеследующий:
23. <Directory />
. Options Includes Indexes FollowSymLinks
. AllowOverride All
. Allow from all
. </Directory>
28. Удаляем первоначальный блок управления директориями (он нам не понадобится), который без комментариев выглядит примерно так:
29. <Directory "c:/Apache2/htdocs">
. Options Indexes FollowSymLinks
. AllowOverride None
. Order allow,deny
. Allow from all
. </Directory>
35. Находим блок:
. <IfModule dir_module>
. DirectoryIndex index.html
. </IfModule>
39. Заменяем его на:
. <IfModule dir_module>
. DirectoryIndex index.html index.htm index.shtml index.php
43. Находим строку:
. ErrorLog "logs/error.log"
. Заменяем на нижеследующую (в этом случае просматривать глобальный файл ошибок сервера будет удобнее):
46. ErrorLog "C:/apache/error.log"
47. Находим строку:
48. CustomLog "logs/access.log" common
. Заменяем на:
CustomLog "C:/apache/access.log" common
50. Для работы SSI (включения на стороне сервера) следующие строки, находящийся в блоке <IfModule mime_module>, необходимо найти и раскомментировать:
51. AddType text/html .shtml
. AddOutputFilter INCLUDES .shtml
53. Добавляем ниже, в тот же блок <IfModule mime_module>, две строки: