Проект разработки HTTP-сервера

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 07.06.2014
Размер файла 105,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

  • Введение
  • Глава 1. Сервер Apache
  • 1.1 Описание и история Apache
  • 1.2 Архитектура Apache
  • 1.3 Функциональные возможности
  • Глава 2. Установка и настройка Apache
  • 2.1 Начальная установка и настройка
  • 2.2 Установка Apache2.2 в картинках
  • 2.3 Создание структуры виртуальных дисков
  • 2.4 Автоматизация запуска и остановки HTTP-сервера Apache
  • Глава 3. PHP, как основной инструмент разработки
  • 3.1 Введение в PHP
  • 3.2 Возможности PHP
  • 3.3 Преимущества PHP
  • 3.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.1 Описание и история Apache

Apache HTTP-сервер (назван именем группы племён североамериканских индейцев апачей; кроме того, является сокращением от англ. a patchy server; среди русских пользователей общепринято искажённое апамч) - свободный веб-сервер.

Apache является кроссплатформенным ПО, поддерживает операционные системы 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 млн сайтов.

1.2 Архитектура Apache

Ядро. Ядро 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-адресе множество сайтов (доменных имён), отображая для каждого из них собственное содержимое.

Для каждого виртуального хоста можно указать собственные настройки ядра и модулей, ограничить доступ ко всему сайту или отдельным файлам. Некоторые MPM, например Apache-ITK позволяют запускать процесс httpd для каждого виртуального хоста с отдельными идентификаторами uid и guid.

Также, существуют модули, позволяющие учитывать и ограничивать ресурсы сервера (CPU, RAM, трафик) для каждого виртуального хоста.

1.3 Функциональные возможности

Интеграция с другим ПО и языками программирования. Существует множество модулей, добавляющих к 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.

Глава 2. Установка и настройка Apache

2.1 Начальная установка и настройка

Распаковываем загруженный с официального сайта архив дистрибутива в каталог 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, добавив ниже следующую строку:

6. PHPIniDir "C:/php"

7. Находим и раскомментируем строку:

8. ServerName www.example.com:80

9. Редактируем ее следующим образом, установив изначальное имя сервера:

10. ServerName localhost:80

11. Находим строку:

12. DocumentRoot "c:/Apache2/htdocs"

13. Назначаем корневую директорию управления сайтами (немного позже мы ее создадим):

14. DocumentRoot "C:/apache"

15. Находим данный блок:

16. <Directory />

17. Options FollowSymLinks

18. AllowOverride None

19. Order deny,allow

20. Deny from all

21. </Directory>

22. И заменяем его на нижеследующий:

23. <Directory />

24. Options Includes Indexes FollowSymLinks

25. AllowOverride All

26. Allow from all

27. </Directory>

28. Удаляем первоначальный блок управления директориями (он нам не понадобится), который без комментариев выглядит примерно так:

29. <Directory "c:/Apache2/htdocs">

30. Options Indexes FollowSymLinks

31. AllowOverride None

32. Order allow,deny

33. Allow from all

34. </Directory>

35. Находим блок:

36. <IfModule dir_module>

37. DirectoryIndex index.html

38. </IfModule>

39. Заменяем его на:

40. <IfModule dir_module>

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

42. </IfModule>

43. Находим строку:

44. ErrorLog "logs/error.log"

45. Заменяем на нижеследующую (в этом случае просматривать глобальный файл ошибок сервера будет удобнее):

46. ErrorLog "C:/apache/error.log"

47. Находим строку:

48. CustomLog "logs/access.log" common

49. Заменяем на:

CustomLog "C:/apache/access.log" common

50. Для работы SSI (включения на стороне сервера) следующие строки, находящийся в блоке <IfModule mime_module>, необходимо найти и раскомментировать:

51. AddType text/html .shtml

52. AddOutputFilter INCLUDES .shtml

53. Добавляем ниже, в тот же блок <IfModule mime_module>, две строки:

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

55. AddType application/x-httpd-php-source .phps

56. И, наконец, находим и раскомментируем строки:

57. Include conf/extra/httpd-mpm.conf

58. Include conf/extra/httpd-autoindex.conf

59. Include conf/extra/httpd-vhosts.conf

60. Include conf/extra/httpd-manual.conf

61. Include conf/extra/httpd-default.conf

Сохраняем изменения.

Теперь открываем файл "C:\Apache2\conf\extra\httpd-vhosts.conf" и производим в нем следующие изменения.

Существующие блоки примеров виртуальных хостов необходимо удалить, и вставить только нижеследующее:

NameVirtualHost *:80

<VirtualHost *:80>

DocumentRoot "C:/apache/localhost/www"

ServerName localhost

ErrorLog "C:/apache/localhost/error.log"

CustomLog "C:/apache/localhost/access.log" common

</VirtualHost>

Сохраняем изменения.

Настройка конфигурационныйх файлов завершена, теперь необходимо установить сервис Apache2.2.

2.2 Установка Apache2.2 в картинках

Рис. 2.1 Команда

Запускаем командную строку и вводим в ней "C:\Apache2\bin\httpd.exe -k install" (см. Рис 2.1).

Рис. 2.2 Результат установки

Вот что мы должны увидеть при успешной установке сервиса Apache2.2 (см. Рис 2.2).

Если все прошло успешно, движемся дальше - устанавливаем ручной запуск сервиса Apache2.2, для чего проходим путь: "Start" ("Пуск") > "Control Panel" ("Панель управления") > "Administrative Tools" ("Администрирование") > "Services" ("Службы"), в открывшемся окне управления служб выбираем строку "Apache2.2" и делаем на ней двойной щелчок, после чего во вкладке "General" ("Общие") выбираем ручной запуск сервиса - "Startup type: Manual" ("Тип запуска: вручную"). Это необходимо сделать для того, чтобы лишние службы не загружали систему. Учитывая, что домашний компьютер используется не только для веб-разработок, но и для многих других нужд, ручной запуск и остановка непостоянно используемых сервисов является наиболее приемлемым.

2.3 Создание структуры виртуальных дисков

apache сервер аутентификация

В корне диска необходимо создать каталог "apache" - в нем будут лежать ваши виртуальные хосты (домены), глобальный файл журнала ошибок "error.log" (создается программой при первом запуске, автоматически), глобальный файл доступа "access.log" (создается автоматически). В каталоге "apache" создаем еще одну пустую папку - "localhost", в которой, в свою очередь, создаем папку "www", именно в последней и надо будет держать наше добро в виде локальных скриптов. Такая, казалось бы, странная структура каталогов продиктована схожей схемой построения каталогов в системах Unix, и призвана упростить в дальнейшем ее понимание и использование.

При необходимости установки собственных виртуальных хостов делаем следующее:

Открываем файл "httpd-vhosts.conf", и создаем в нём блок, примерно, следующего содержания:

<VirtualHost *:80>

# Папка, в которой будет корень вашего хоста.

DocumentRoot "C:/apache/test.ru/www"

# Домен по которому вы сможете обращаться к виртуальному хосту.

ServerName test.ru

# Алиас (добавочное имя) домена.

ServerAlias www.test.ru

# Файл, в который будут записываться ошибки.

ErrorLog "C:/apache/test.ru/error.log"

# Файл журнала доступа к хосту.

CustomLog "C:/apache/test.ru/access.log" common

</VirtualHost>

Затем в каталоге "apache", создаем папку "test.ru" (прямо так, с точкой), в которой, в свою очередь, создаем папку "www".

Следующий шаг создания виртуального хоста - это изменение файла C:\WINDOWS\system32\drivers\etc\hosts операционной системы. Открываем данный файл и добавляем в него две строки:

127.0.0.1 test.ru

127.0.0.1 www.test.ru

Теперь запускаем сервер Apache, выполнив в командной строке "C:\Apache2\bin\httpd.exe -k start", открываем браузер, вводим в адресной строке "test.ru" или "www.test.ru" и оказываемся в своем виртуальном хосте. Только будьте внимательны, теперь вы сможете попасть на оригинальный сайт с именем виртуального хоста ("www.test.ru", если таковой существует), только закомментировав либо удалив строку: "127.0.0.1 www.test.ru", в вышеупомянутом файле "hosts".

Остановить работу Apache можно, выполнив в командной строке "C:\Apache2\bin\httpd.exe -k stop". При необходимости перезагрузить Apache, выполняем в командной строке "C:\Apache2\bin\httpd.exe -k restart".

Установка и настройка веб-сервера Apache завершена.

2.4 Автоматизация запуска и остановки HTTP-сервера Apache

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

При использовании виртуальных хостов необходимо создать в директории C:\apache два файла: vhosts-off.txt - содержащий изначальное содержимое файла "hosts" и vhosts-on.txt - содержащий все виртуальные хосты. Обратите внимание, что при создании новых виртуальных хостов вам необходимо будет добавлять их в файл vhosts-on.txt, а не в C:\WINDOWS\system32\drivers\etc\hosts. Посмотрите на примеры ниже.

Файл vhosts-off.txt (может содержать одну единственную строку):

127.0.0.1 localhost

Пример файла vhosts-on.txt с виртуальными хостами www.test.ru и test.ru:

127.0.0.1 localhost

127.0.0.1 www.test.ru

127.0.0.1 test.ru

В той же директории C:\apache, создаем два пакетных файла: start-webserver.bat - для запуска сервисов и подмены файла "hosts", и stop-webserver.bat - для остановки сервисов и очистки файла "hosts".

Файл запуска start-webserver.bat:

@echo off

echo.

if not exist C:\apache\vhosts-on.txt goto no_vhosts

echo Create virtual hosts:

copy /v /y C:\apache\vhosts-on.txt C:\WINDOWS\system32\drivers\etc\hosts

echo.

:no_vhosts

NET start Apache2.2

NET start MySQL

Файл остановки stop-webserver.bat:

@echo off

echo.

if not exist C:\apache\vhosts-off.txt goto no_vhosts

echo Restore hosts file:

copy /v /y C:\apache\vhosts-off.txt C:\WINDOWS\system32\drivers\etc\hosts

echo.

:no_vhosts

NET stop Apache2.2

NET stop MySQL

В случае, если вы не используете виртуальные хосты или хотите запустить сервисы без подмены файла "hosts", просто уберите из директории C:\apache файлы vhosts-on.txt и vhosts-off.txt.

Одновременно с сервисами удобно запускать программу Apache Monitor, отображающую в системном лотке состояние сервера Apache, для чего можно создать еще один пакетный файл "start-webserver-monitor.bat", содержание которого аналогично файлу "start-webserver.bat" с добавлением в самый конец следующей строки:

start "" "C:\Apache2\bin\ApacheMonitor.exe"

Теперь для запуска всего инструментария вам понадобится запустить файл "start-webserver-monitor.bat", или "start-webserver.bat", а для остановки "stop-webserver.bat". При желании вы можете переименовать эти файлы, переместить их в любое другое место из папки "C:\apache", либо создать на данные файлы ярлыки, например, на рабочий стол.

Глава 3. PHP, как основной инструмент разработки

3.1 Введение в PHP

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

Говоря проще, PHP это язык программирования, специально разработанный для написания web-приложений (сценариев), исполняющихся на Web-сервере.

Аббревиатура PHP означает "Hypertext Preprocessor (Препроцессор Гипертекста)". Синтаксис языка берет начало из C, Java и Perl. PHP достаточно прост для изучения. Преимуществом PHP является предоставление web-разработчикам возможности быстрого создания динамически генерируемых web-страниц.

Важным преимуществом языка PHP перед такими языками, как языков Perl и C заключается в возможности создания HTML документов с внедренными командами PHP.

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

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

PHP прост для освоения, и вместе с тем способен удовлетворить запросы профессиональных программистов.

Язык PHP постоянно совершенствуется, и ему наверняка обеспечено долгое доминирование в области языков web -программирования, по крайней мере, в ближайшее время.

3.2 Возможности PHP

Возможности PHP очень большие. Главным образом, область применения PHP сфокусирована на написание скриптов, работающих на стороне сервера; таким образом, PHP способен выполнять всё то, что выполняет любая другая программа CGI. Например, обрабатывать данных форм, генерировать динамические страницы, отсылать и приниматьcookies. Но PHP способен выполнять и множество других задач.

Существуют три основных области, где используется PHP.

· Создание скриптов для выполнения на стороне сервера. PHP наиболее широко используется именно таким образом. Все, что вам понадобится, это парсер PHP (в виде программы CGI или серверного модуля), вебсервер и браузер. Чтобы Вы могли просматривать результаты выполнения PHP-скриптов в браузере, вам нужен работающий вебсервер и установленный PHP.

· Создание скриптов для выполнения в командной строке. Вы можете создать PHP-скрипт, способный запускаться вне зависимости от вебсервера и браузера. Все, что вам потребуется - парсер PHP. Такой способ использования PHP идеально подходит для скриптов, которые должны выполняться регулярно, например, с помощью cron (на платформах *nix или Linux) или с помощью планировщика задач (Task Scheduler) на платформах Windows. Эти скрипты также могут быть использованы в задачах простой обработки текстов.

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

PHP доступен для большинства операционных систем, включая Linux, многие модификации Unix (такие, как HP-UX, Solaris и OpenBSD), Microsoft Windows, Mac OS X, RISC OS, и многих других. (Существует даже версия PHP для OS/2. Неизвестно, правда, насколько соответствующая нынешним реалиям). Также в PHP включена поддержка большинства современных вебсерверов, таких, как Apache, Microsoft Internet Information Server, Personal Web Server, серверов Netscape и iPlanet, сервера Oreilly Website Pro, Caudium, Xitami, OmniHTTPd и многих других. Для большинства серверов PHP поставляется в качестве модуля, для других, поддерживающих стандарт CGI, PHP может функционировать в качестве процессора CGI.

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

PHP способен не только выдавать HTML. Возможности PHP включают формирование изображений, файлов PDF и даже роликов Flash (с использованием libswf и Ming), создаваемых "на лету". PHP также способен выдавать любые текстовые данные, такие, как XHTML и другие XML-файлы. PHP способен осуществлять автоматическую генерацию таких файлов и сохранять их в файловой системе вашего сервера, вместо того, чтобы отдавать клиенту, организуя, таким образом, кеш динамического содержания, расположенный на стороне сервера.

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

Также в PHP включена поддержка DBX для работы на абстрактном уровне, так что вы можете работать с любой базой данных, использующих DBX. Кроме того, PHP поддерживает ODBC (Open Database Connection standard), таким образом, вы можете работать с любой базой данных, поддерживающей этот всемирно признанный стандарт.

PHP также поддерживает "общение" с другими сервисами с использованием таких протоколов, как LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (на платформах Windows) и многих других. Кроме того, вы получаете возможность работать с сетевыми сокетами "напрямую". PHP поддерживает стандарт обмена сложными структурами данных WDDX. Обращая внимание на взаимодействие между различными языками, следует упомянуть о поддержке объектов Java и возможности их использования в качестве объектов PHP. Для доступа к удаленным объектам вы можете использовать расширение CORBA.

PHP включает средства обработки текстовой информации, начиная с регулярных выражений Perl или POSIX Extended и заканчивая парсером документов XML. Для парсинга XML используются стандарты SAX и DOM. Для преобразования документов XML вы можете использовать расширение XSLT.

Последним по порядку, но не по значению, является поддержка многих других расширений, таких, как функции поисковой машины mnoGoSearch, функции IRC Gateway, функции для работы со сжатыми файлами (gzip, bz2), функции календарных вычислений, функции перевода и многое другое.

Словом, PHP может предложить вам очень многое!

3.3 Преимущества PHP

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

· традиционностью;

· простотой;

· эффективностью;

· безопасностью;

· гибкостью.

Существует еще одна "характеристика", которая делает РНР особенно привлекательным: он распространяется бесплатно! Причем, с открытыми исходными кодами (Open Source).

Традиционность. Язык РНР будет казаться знакомым программистам, работающим в разных областях. Многие конструкции языка позаимствованы из Си, Perl.

Код РНР очень похож на тот, который встречается в типичных программах на С или Pascal. Это заметно снижает начальные усилия при изучении РНР. PHP - язык, сочетающий достоинства Perl и Си и специально нацеленный на работу в Интернете, язык с универсальным (правда, за некоторыми оговорками) и ясным синтаксисом.

И хотя PHP является довольно молодым языком, он обрел такую популярность среди web-программистов, что на данный момент является чуть ли не самым популярным языком для создания web-приложений (скриптов).

Простота. Сценарий РНР может состоять из 10 000 строк или из одной строки - все зависит от специфики вашей задачи. Вам не придется подгружать библиотеки, указывать специальные параметры компиляции или что-нибудь в этом роде. Механизм РНР просто начинает выполнять код после первой экранирующей последовательности (<?) и продолжает выполнение до того момента, когда он встретит парную экранирующую последовательность (?>). Если код имеет правильный синтаксис, он исполняется в точности так, как указал программист.

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

Большое разнообразие функций PHP избавят вас от написания многострочных пользовательских функций на C или Pascal .

Эффективность. Эффективность является исключительно важным фактором при программировании для многопользовательских сред, к числу которых относится и web.

Очень важное преимущество PHP заключается в его "движке". "Движок" PHP не является ни компилятором, ни интерпретатором. Он является транслирующим интерпретатором. Такое устройство "движка" PHP позволяет обрабатывать сценарии с достаточно высокой скоростью.

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

Безопасность. РНР предоставляет в распоряжение разработчиков и администраторов гибкие и эффективные средства безопасности, которые условно делятся на две категории: средства системного уровня и средства уровня приложения.

1. Средства безопасности системного уровня

В РНР реализованы механизмы безопасности, находящиеся под управлением администраторов; при правильной настройке РНР это обеспечивает максимальную свободу действий и безопасность. РНР может работать в так называемом безопасном режиме (safe mode), который ограничивает возможности применения РНР пользователями по ряду важных показателей. Например, можно ограничить максимальное время выполнения и использование памяти (неконтролируемый расход памяти отрицательно влияет на быстродействие сервера). По аналогии с cgi-bin администратор также может устанавливать ограничения на каталоги, в которых пользователь может просматривать и исполнять сценарии РНР, а также использовать сценарии РНР для просмотра конфиденциальной информации на сервере (например, файла passwd).

2. Средства безопасности уровня приложения

В стандартный набор функций РНР входит ряд надежных механизмов шифрования. РНР также совместим с многими приложениями независимых фирм, что позволяет легко интегрировать его с защищенными технологиями электронной коммерции (e-commerce). Другое преимущество заключается в том, что исходный текст сценариев РНР нельзя просмотреть в браузере, поскольку сценарий компилируется до его отправки по запросу пользователя. Реализация РНР на стороне сервера предотвращает похищение нетривиальных сценариев пользователями, знаний которых хватает хотя бы для выполнения команды View Source.

Гибкость. Поскольку РНР является встраиваемым (embedded) языком, он отличается исключительной гибкостью по отношению к потребностям разработчика. Хотя РНР обычно рекомендуется использовать в сочетании с HTML, он с таким же успехом интегрируется и в JavaScript, WML, XML и другие языки. Кроме того, хорошо структурированные приложения РНР легко расширяются по мере необходимости (впрочем, это относится ко всем основным языкам программирования).

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

Поскольку РНР не содержит кода, ориентированного на конкретный web-сервер, пользователи не ограничиваются определенными серверами (возможно, незнакомыми для них). Apache, Microsoft IIS, Netscape Enterprise Server, Stronghold и Zeus - РНР работает на всех перечисленных серверах. Поскольку эти серверы работают на разных платформах, РНР в целом является платформенно-независимым языком и существует на таких платформах, как UNIX, Solaris, FreeBSD и Windows 95/98/NT/2000/XP/2003.

Наконец, средства РНР позволяют программисту работать с внешними компонентами, такими как Enterprise Java Beans или СОМ-объекты Win32. Благодаря этим новым возможностям РНР занимает достойное место среди современных технологий и обеспечивает масштабирование проектов до необходимых пределов.

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

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

3.4 История развития PHP

PHP прошёл долгий путь за последние несколько лет, становясь одним из наиболее популярных языков web-разработки.

Истоки PHP лежат в старом продукте, имевшем название PHP/FI. PHP/FI был создан Расмусом Лердорфом в 1995 году и представлял собой набор Perl-скриптов для ведения статистики посещений его резюме. Развитие web еще только начиналось, никаких специальных средств для решения этих задач не было, и к автору хлынул поток сообщений с вопросами. Лердорф начал бесплатно раздавать свой инструментарий, названный "Personal Homepages Tools" (PHP) - ("Инструменты для персональных домашних страниц"). Очень скоро потребовалась большая функциональность и Расмус пишет новую, намного более обширную версию на C, работающую с базами данных и позволяющую пользователям разрабатывать простейшие web-приложения. Расмус Лердорф решил выложить исходный код PHP/FI на всеобщее обозрение, исправление ошибок и дополнение.

PHP/FI (Personal Home Page / Forms Interpreter - Персональная Домашняя страница / Интерпретатор Форм) включал в себя базовую функциональность сегодняшнего PHP. Он имел переменные в стиле Perl, автоматическую интерпретацию форм и возможность встраиваться в html-код. Собственно синтаксис языка имел много общего с Perl, хотя и был намного проще и ограниченнее.

В 1997 выходит PHP/FI 2.0. Вторая версия C-имплементации обозначила группу пользователей: несколько тысяч людей по всему миру, с примерно 50,000 доменами, что составляло около 1% всего числа доменов Интернета. Несмотря на то, что разработкой занималось уже несколько людей, PHP/FI 2.0 все еще оставался крупным проектом одного человека.

Официально PHP/FI 2.0 вышел только в ноябре 1997 года, после проведения большей части своей жизни в бета-версиях. Вскоре после выхода его заменили альфа-версии PHP 3.0.

PHP3. PHP 3.0 была первой версией, напоминающей PHP, каким мы знаем его сегодня. В 1997 году Энди Гутманс (Andi Gutmans) и Зив Сураски (Zeev Suraski) переписали код с начала: разработчики сочли PHP/FI 2.0 не пригодным для разработки приложения электронной коммерции, над которым они работали для проекта Университета. Для совместной работы над PHP 3.0 с помощью базы разработчиков PHP/FI 2.0 Энди, Расмус и Зив решили объединиться и объявить PHP 3.0 официальным преемником PHP/FI, разработка же PHP/FI была практически полностью прекращена.

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

Абсолютно новый язык программирования получил новое имя. Разработчики отказались от дополнения о персональном использовании, которое имелось в аббревиатуре PHP/FI. Язык был назван просто 'PHP' -- аббревиатура, содержащая рекурсивный акроним: 'PHP: Hypertext Preprocessor' (PHP: Препроцессор Гипертекста).

Первая статья о PHP была опубликована в чешском варианте 'Computerworld' весной 1998 и освещала PHP 3.0. Как и в случае с книгами, эта была первая в серии статья из множества посвященных PHP и опубликованных в различных известных журналах.

К концу 1998, PHP использовался десятками тысяч пользователей. Сотни тысяч web-сайтов сообщали о том, что они работают с использованием языка. В то время PHP 3.0 был установлен приблизительно на 10% серверах Интернета!

PHP 3.0 был официально выпущен в июне 1998 года после 9 месяцев публичного тестирования.

PHP4. К зиме 1998 года, практически сразу после официального выхода PHP 3.0, Энди Гутманс и Зив Сураски начали переработку ядра PHP. В задачи входило увеличение производительности сложных приложений и улучшение модульности базиса кода PHP. Расширения дали PHP 3.0 возможность успешно работать с набором баз данных и поддерживать большое количество различных API и протоколов, но PHP 3.0 не имел качественной поддержки модулей и приложения работали не эффективно.

Новый движок, названный 'Zend Engine' (www.zend.com) (от имен создателей: Zeev и Andi), успешно справлялся с поставленными задачами и впервые был представлен в середине 1999 года. PHP 4.0, основанный на этом движке и принесший с собой набор дополнительных функций, официально вышел в мае 2000 года, почти через два года после выхода своего предшественника PHP 3.0. В дополнение к улучшению производительности, PHP 4.0 имел еще несколько ключевых нововведений, таких как поддержка сессий, буферизация вывода, более безопасные способы обработки вводимой пользователем информации и несколько новых языковых конструкций.

Сегодня PHP используется сотнями тысяч разработчиков. Миллионы (!) сайтов сообщают о работе с PHP. Эти, а также многие другие факты, позволяют с уверенностью сказать, что PHP является одним из самых популярных языков web-программирования!

Группа разработчиков PHP состоит из множества людей, работающих над ядром и расширениями PHP, и смежными проектами, такими, как PEAR и документации языка.

PHP5. Недавно вышла новая, пятая версия PHP (PHP5). PHP5 использует новую версию "движка" Zend - Zend Engine 2.

В PHP5 объектная модель была значительно переработана. При этом было добавлено много новых возможностей, благодаря которым PHP5 получил некоторые черты таких объектно-ориентированных языков, как C++ и Java. Изменения коснулись производительности встроенных стандартных функций PHP. По некоторым оценкам, скорость работы стандартных функций в PHP5 увеличилась на 40% и более.

Появились новые директивы файла настройки php.ini .Претерпела изменения и поддержка потоков. Были добавлены новые функции, а также функции графической библиотеки GD.

Поддержка XML в версии PHP5 стала полной, поддерживаются новые расширения DOM и XML.

Заключение

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

Значение HTTP-серверов в современной жизни трудно переоценить: социальные сети, развлекательные сервисы и т.п., т.е., практически, все, чем мы пользуемся в повседневном быту, напрямую или косвенно связано с серверами. Вся хранимая информация, базы данных - все это хранится на серверах. Наши фотографии в соц. сетях, рекорды в играх, документы в "облаках" (кои, кстати, являются, непосредственно, серверами для хранения файлов) - опять-таки, хранятся на дисковых пространствах серверов. Всем известные приложения, как, например, Instagram, Vkontakte, Facebook, Twitter, просто немыслимы без использования HTTP-серверов.

Список литературы

1. [Электронный ресурс] // Режим доступа: http://www.php.su/php/

2. [Электронный ресурс] // Режим доступа: http://php-myadmin.ru/learning/instrument-apache.html

3. [Электронный ресурс] // Режим доступа: http://ru.wikipedia.org/wiki/Apache "PHP для чайников" Д. Котеров, 2007

Размещено на Allbest.ru


Подобные документы

  • Робота з програмами FTP та Mail, їх порівняльна характеристика, оцінка переваг та недоліків, функції та можливості. Конфігурування http-серверу Apache, їхнє настроювання. Редагування файлу httpd.conf, файлу srm.conf, та access.conf, сервера inetd.

    реферат [24,1 K], добавлен 26.04.2011

  • Язык разработки PHP: применение, синтаксис, типы данных, суперглобальные массивы, особенности интерпретатора. Apache-HTTP сервер: архитектура, механизм виртуальных хостов, функциональные возможности. Разработка сайта системы диагностики. Бюджет проекта.

    дипломная работа [1,4 M], добавлен 25.11.2012

  • Общее понятие, основные компоненты и функции операционной системы. Порядок установи операционной системы UbuntuLinux. Особенности инсталляции веб-сервера Nginx для передачи данных по протоколу HTTP. Установка системы управления базами данных MongoDB.

    курсовая работа [2,3 M], добавлен 11.06.2014

  • Способы аутентификации пользователей: через протокол SSH, по публичному ключу и паролю. Характеристика сервера телефонии Asterisk, архитектура протокола XMPP. Разработка скрипта, автоматизирующего процесс анализа попыток взлома сервера из внешней сети.

    курсовая работа [341,8 K], добавлен 26.02.2013

  • Установка и настройка локального web–сервера и его компонентов. Конфигурационные файлы сервера Apache и их натройка. Настройка PHP, MySQL и Sendmail. Проверка работоспособности виртуальных серверов. Создание виртуальных хостов. Тест Server Side Includes.

    учебное пособие [6,2 M], добавлен 27.04.2009

  • Программная реализация анонимного форума с использованием PHP 5 и MySQL. Интерактивный интерфейс форума, обмен данными браузера и сервера с применением технологии AJAX. Система аутентификации, состоящая из регистрации и авторизации пользователей.

    курсовая работа [24,4 K], добавлен 12.01.2015

  • Многопоточный веб-сервер с входным и обрабатывающими модулями. HTTP—протокол передачи гипертекста. Установка и настройка локального веб-сервера "OpenServer". Установка phpMyAdmin, конфигурация PHP. Настройка веб-сервера и виртуальных хостов, модулей.

    курсовая работа [3,2 M], добавлен 08.12.2013

  • Основные характеристики и особенности использования прокси-сервера в локальной сети. Способы выхода в Интернет из локальных сетей. Методы аутентификации прокси-сервером пользователя клиента, авторизация клиента для доступа к определенному контенту.

    курсовая работа [887,9 K], добавлен 21.04.2019

  • Функції прикладних програм керування контентом. Apache HTTP-сервер та його архітектура. Файл .htacces та фреймворк Bootstrap. Розробка системи управління контенту, її реалізація на сервері Apache. Пояснення принципу роботи CMS та контрольні приклади.

    курсовая работа [1,1 M], добавлен 11.04.2015

  • Организация офисной сети, настройка шлюза для обеспечения выхода пользователей в "Интернет". Организация DNS+DHCP, файлового сервера FTP/SMB для хранения конфиденциальных и общедоступных данных, защита и информационное обеспечение пользователей.

    курсовая работа [5,6 M], добавлен 18.08.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.