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

February 14th, 2009 2 Comments »

Короткий, но ёмкий пост: чтобы установить сервер для дальнейшей работы, вам нужно прочитать два ранее опубликованных здесь поста, написанные моим коллегой Родионом Быковым. Тогда вы сможете ставить веб-эксперименты прямо на своей рабочей машине.

Итак, читаем по порядку:

  • Знакомство с Apache — начинаем с установки веб-сервера, собственно обрабатывающего запросы, например, от вашего браузера.
  • Установка PHP как модуль Apache — если вам нужно что-то посложнее раздачи статических страничек (динамика), то без PHP не обойтись. Учимся инсталлировать.

Эти шаги надо сделать всего один раз, так что потерпите.

Строим веб-приложение

January 23rd, 2009 1 Comment »

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

  1. рассмотрим, как устроена веб-страница
  2. установим веб-сервер
  3. напишем свою первую страницу на языке PHP
  4. добавим немного интерактива с помощью JavaScript, а также прикрутим AJAX
  5. разберемся, как работать с базой данных
  6. сделаем страницу, доступную только тем, кто знает пароль
  7. выложим это всё куда-нибудь в интернет

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

Итак, какие идеи?

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

June 10th, 2007 1 Comment »

“А что, можно не как модуль ?” спросит пытливый читатель, и будет прав. PHP можно запускать вполне самостоятельно из командной строки, “скармливая” ему php скрипт как параметр:

php.exe test.php

Неудивительно, что результатом работы будет HTML который отобразится в консоли. Само название – PHP – “PHP Hypertext Preprocessor” – говорит о том, что цель существования PHP – обрабатывать скрипты, внедренные в HTML, динамически получая необходимый результат. Как быть при этом запущенным, никто не оговаривает. Поэтому, на заре человечества, PHP запускался, как и все порядочные веб-прибамбасы того времени, через интерфейс CGI. По сути, при такой организации, при каждом вызове веб-страницы веб-сервер запускал как отдельный процесс соответствующий препроцессор, отдавал ему на обработку файл, получал результат и передавал его клиенту. Все как бы неплохо, но в нынешний потребительский век, к веб-сайту люди обращаются не степенно и на Вы, спокойно ожидая своей очереди, а толпами по тысяче человек в день, причем 20-30 особо желающих будут ломится одновременно. Во время неких событий, например чемпионата мира по футболу, нагрузки на некоторые сервера может достигать миллионов обращений в день. С одной стороны – у сервера мозги луженные, работай себе и не жужжи, но нет. Запуск отдельного процесса – удовольствие не из дешевых, даже в современной ситуации копеечных цен на мегагерц и мегабайт. Добавим к расходу процессорного времени утечки памяти (это ситуация, когда память остается занятой даже после окончания работы процесса) оставленные нерадивыми программистами (вероятно они дома тоже не закрывают воду в ванной и не выключают свет в туалете) – и мы получим перерасход ресурсов сервера и необходимость перезагрузить его чтобы продолжить работу. Остановка сервера даже на 5 минут в день – катастрофа. Для серверов с коммерческой нагрузкой – это потерянные клиенты. Кому интересен сайт который недоступен ?

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

Рассматривать установку как CGI приложения я здесь не буду, дабы не засорять ваш мозг. Перейдем к собственно установке. Есть два пути установки PHP – с помощью инсталлятора и ручной. С одной стороны, первый путь проще – так как примерно с 90% вероятности инсталлятор выполнит все процедуры за вас. С другой стороны, нам интересно разобраться как “оно работает” и установка вручную этому очень способствует. Поэтому:

  1. Скачайте последнюю версию PHP с сайта php.net. Сегодня (июнь 2007) это версия 5.2.3. Это должен быть zip архив. Не поддавайтесь искушению, и не скачивайте .msi файл – процесс установки с помощью инсталлятора слишком прост, а это ведет на Темную Сторону Силы.
  2. Разверните архив в папку С:\PHP на вашей машине. Это может быть и другая папка, но для простоты я буду считать что вы прислушались к совету. Кроме того, избегайте папок с пробелами при установке PHP – это создает ненужные сложности.
  3. Откройте на редактирование файл httpd.conf чтобы прописать PHP как модуль Apache (я считаю что вы установили сервер Apache2.2.x)
    LoadModule php5_module c:/php/php5apache2_2.dll
    AddType application/x-httpd-php .php
    PHPIniDir C:/php

    Если у вас установлен Apache 2.0.x – подключать следует библиотеку php5apache2.dll, которая располаается там-же. Если у вас версия Apache 1.3.x – используйте php5apache.dll
    Директива PHPIniDir определена внутри модуля PHP, и поэтому эта строка должна располагаться ниже чем LoadModule – иначе Apache не будет знать что от него хотят и не запустится. Эта директива описывает нахождение файла настроек PHP – php.ini. По умолчанию он расположен в корне PHP – я предполагаю у вас это C:/PHP. Заметьте также, что Apache привык видеть в путях файлов “линуховые” слеши – / (по-английски называемые forward slash), а не “виндовые” слеши – \ (back slash) которые используются для записи путей файлов в Windows. Поэтому везде в httpd.conf нужно указывать пути через forward slash: “С:/php” – хотя это не очевидно для пользователя Windows.

  4. PHP плагины любой версии используют core-библиотеку php5ts.dll и поэтому должны иметь к ней доступ. Сама библиотека лежит в папке C:\PHP, но сходу PHP ее там не найдет (очевидно, правда ? 🙂 ) Чтобы PHP таки нашел свою основную библиотеку нужно либо скопировать ее в папку Apache (например, C:\Program Files\Apache Group\Apache2\bin) – там PHP будет искать ее в первую очередь, либо скопировать ее папку Windows, либо прописать папку C:\PHP в переменную окружения PATH. Последний вариант предпочтительней, поскольку оставляет поле для маневра если вы смените версию PHP или Apache. Чтобы изменить переменную окружения, нажмите правой клавишей на значке Мой Компьютер, выберите пункт выпадающего меню Свойства и в открывшемся окне выберите закладку Дополнительно, а на открывшейся закладе – нажмите кнопку Переменные Среды. Там найдите строку с переменной Path и нажмите кнопку Изменить.

    В открывшемся диалоговом окне добавьте через точку запятой путь C:\PHP – вот так: “;C:\PHP”. Заметьте, что тут слеш уже “обратный”, “виндовый” – поскольку эта настройка к Apache не имеет отношения, а в терминах Windows пути должны записываться именно так.
  5. Сейчас надо перезапустить службу Apache чтобы был заново прочитан httpd.conf и новые настройки возымели силу. Для этого пройдите знакомый путь Панель Управления -> Администрирование -> Службы и в открывшемся окне найдите и выберите Apache и нажмите кнопку Перезапустить.

Чтобы проверить что все прошло гладко – создайте файл phpinfo.php в папке для документов вашего Apache (например C:\Program Files\Apache Group\Apache2\htdocs), внутри этого файла пропишите всего лишь одну строку на языке PHP:

<?php
   phpinfo();
?>

и сохраните файл. После этого, в браузере обратитесь к этому файлу – http://localhost/phpinfo.php – и вы должны увидеть всю информацию о PHP, установленном на вашей машине.

Знакомство с Apache

May 20th, 2007 17 Comments »

Эта первая из серии “админских” статей-руководств по превращению среднестатистической домашней машины в (W/L)AMP-сервер со всеми вытекающими.

Было бы нелогично начать серию с чего-то другого, нежели c рассказа об Apache.

Что есть Apache ?

Apache (тот, который буква A в сокращении LAMP) – это созданный усилиями open-source сообщества популярный бесплатный web-сервер. Он начинался как проект Национального Центра Суперкомпьютерных Вычислений при университете штата Иллинойс, но в последствии код был значительно переработан и передан под управление Apache Software Foundation, который ныне руководит разработкой. Основной задачей фонд ставит создание бесплатного программного обеспечения для реализации стандартных протоколов использующихся в Интернет. Сами протоколы не принадлежат никакой компании и таким-же должно быть и программное обеспечение, решили в фонде. Успешное начинание продолжает свой путь, и сейчас Apache обслуживает более 10 млн. серверов во всем мире.

Итак, Apache – это универсальный, быстрый, легко расширяемый бесплатный web-сервер, доступный для свободного скачивания и установки практически на любой платформе, как в виде бинарных файлов, так и исходных кодов. Apache реализует современные протоколы Интернет, такие как HTTP/1.1 – то есть, говоря по-русски – на его основе можно создавать веб-сайты, и размещать их в интернет.

Домашняя страница проекта: http://httpd.apache.org/ – там можно не только cкачать свежую версию, но и почерпнуть массу полезной информации.

Версионность

На сегодняшний день (май 2007г.) существует три ветки Apache – 1.3.х, 2.0.x и 2.2.х. Первая и вторая версия на данный момент активно используется на многих серверах и пока не собираются сходить со сцены. Версия 2.2 активно развивается и в скором времени вытеснит предыдущие. Для версий 1.3 и 2.0 сейчас выпускаются только security fixes – то есть заплатки безопасности. Все три версии используют разные подходы к реализации API, поэтому все три требуют разные версии модулей расширений. Важно соблюдать версионность Apache и его модулей чтобы на установку сервера не пришлось вызывать шамана с бубном и оленями.

Установка в среде Windows

Почти наверняка, на вашей домашней машине установлена какая-то из версий ОС Windows. Для установки Apache совершенно не требуется установки Linux или особой версии Windows – подойдет любая. Так как на дворе год 2007, наверняка ваша версия – Windows XP. Для начала надо скачать самому или попросить друга скачать последнюю версию Apache с сайта http://httpd.apache.org (опять же, на сегодня это 2.2.4). Для Windows, Apache распространяется в виде .msi-файла (Windows Installer) – если такового нет на вашей Windows-98 или 2000 машине, придется установить его отдельно (goto microsoft.com). После запуска инсталлера вам нужно лишь нажимать кнопку Next – он сделает все за вас. Единственное что потребуется – указать такие вещи, когда инсталлер спросит:

  1. Network domain – домен сети, может быть что угодно, для домашнего компьютера достаточно сказать “home” или чтото вроде.
  2. Server name – имя вашей машины, вы должны знать его если устанавливали Windows сами. Попробуйте нажать на ярлыке Moй Компьютер правой клавишей мыши и выбрать Свойства. В любом случае, это не имеет решающего значения – пусть имя будет “bombusbee”.
  3. Administrator’s email address – емейл админа. Достаточно написать admin@home
  4. For whom to install Apache – вопрос как установить сервер – как службу Windows – то есть как приложение, постоянно загруженное в память комьютера и работающее “в фоне”, или как обычное приложение, которое каждый пользователь будет запускать самостоятельно. Нет особенных причин, по которым вам следует выбирать второй пункт – чтобы не усложнять себе жизнь, выбираете вариант со службой.
  5. The installation type – выбирайте typical
  6. Where to install – опять же, если нет противопоказаний, устанавливайте в каталог по умолчанию (C:\Program Files\Apache Software Foundation\Apache2.2)

После окончания установки файлов, инсталлер сам “пропишет” Apache как службу Windows и запустит его.

Сервис Apache

Также, будут автоматически созданы файлы настроек (самый важный из которых httpd.conf) и тестовые html файлы. Чтобы потестировать свежеустановленный сервер, запустите браузер, наберите в строке адреса либо http://bombusbee/ либо http://localhost/ либо http://127.0.0.1/ Перед вами должна появится тестовая страница Apache. Если так – поздравляю, установка успешно завершена !

Что делать если что-то пошло не так ?

Если на вашей машине уже установлен и запущен web-сервер IIS, который идет в комплекте с Windows, то стандартный порт 80, через который происходит общение клиента (браузера) с web-сервером уже занят. Apache попытается использовать стандартный порт 80, но если он уже занят, Apache не запустится. Чтобы изменить порт который будет “слушать” Apache исправте конфигурационный файл httpd.conf (он лежит в папке conf/ под корнем Apache, см. пункт 6. установки выше) таким образом: найдите поиском строку Listen и напишите свою строку таким образом:

Listen 8080

В строке перед Listen не должно быть других символов. Знак # в httpd.conf означает строку комментария которая игнорируется сервером. После этого потребуется сохранить файл httpd.conf и перезапустить Apache. Для перезапуска откройте Панель Управления -> Администрирование -> Службы. В открывшемся списке служб найдите Apache и нажмите кнопку Перезапустить в панели наверху. Если все удачно, Apache запустится, и будет “слушать” не порт 80, а порт 8080 и к серверу придется образаться как http://bombusbee:8080/ или http://localhost:8080/ или http://127.0.0.1:8080/

Что дальше ?

Сервер “обслуживает” файлы которые находятся в папке htdocs/ под корнем установки Apache. Все файлы помещенные в этот каталог могут быть выданы сервером клиенту (например браузеру). Попробуйте положить текстовый файл, html-файл или картинку в папку htdocs/ и обратиться к этому файлу через браузер, набрав например http://localhost/myfile.txt. Если вы уже создали простейший HTML документ – положите его и потестируйте уже под реальным сервером, которым стал ваш компьютер.