SCRIPT.com.ua
Логин: Пароль:
Регистрация Забыл пароль
МАТЕРИАЛЫ
Поиск
Новости
Материалы
Работа с WDDX в РНР [PHP]
Рецепт по установке web-сервера под Windows [PHP]
Инициализация для Flash Player 8 Beta [Flash]
Криптование [Action Script]
Настрока Homesite под Action Script [Action Script]
Учитесь писать код правильно [PHP]
Пасхальные яйца. [Action Script]
Flash-игры: проще, если знаешь как [Flash]
Установка Ming под win32 Apache+PHP [Action Script]
Wysiwyg HTML Редакторы [DHTML]
Исходники
"Объект" на JavaScript - аналог AsBroadcaster [DHTML]
Запрет кэширования [HTML]
Полупрозрачные картинки, которые 'востанавливаются' при наведении. [DHTML]
Новостная лента v1.2.1 [PHP]
Обход XML-дерева [Action Script]
CDATA и комментарии [XSL]
Кроссразмерный полноэкранный режим [Action Script]
KeyListener [Action Script]
Редирект [HTML]
Текстовый узел [XSL]
Лаборатория
Документация
Файлы
Ссылки
Пользователи
Контакты
Наш выбор
NBA Street: Showdown Sony PSP
Наши партнеры
Вторник, 1 Августа, 2006
Рецепт по установке web-сервера под Windows [PHP]
Введение

Этот материал для тех кто не уверен.

Здесь будут рассмотрены установка и настройка:
- web-сервер Apache2
- интерпретатор PHP
- интерпретатор Perl
- сервер Mysql

Запаситесь терпением и временем.

Подразумевается что используется ОС Windows XP.

Если у вас Windows 2000, учитывайте, что все пути c:\windows, приведенные в этой статье, соответствуют c:\winnt в Windows 2000.
Тоесть путь c:\windows\system32\ для вас будет c:\winnt\system32\

Если у вас Windows 98, учитывайте что вместо пути c:\windows\system32\ у вас будет c:\windows\system.

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

Статья не претендует на исчерпывающее описание и не вызвана заменить документацию от разработчиков.

Интерпретатор PHP


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

PHP существует в версиях совместимых с ветками 4 и 5 - с номерами версий 4.x и 5.x соответственно.
Версия 5.x по сравнению с 4.x расширена и поддерживает больше возможностей.

В этой статье предлагается следующий путь - установка PHP5 в качестве модуля Apache для страниц с раширением .php и PHP4 в качестве CGI программы для страниц с раширением .php4.

Установка PHP5

Загрузите последнюю версию PHP5 (zip или bz2 архив) c www.php.net/downloads.php выбрав соответствующее региональное зеркало.
Распакуйте содержимое архива в каталог c:\php
В результате у вас файл php.exe должен быть внутри каталога c:\php Создайте каталог c:\php\temp

Скопируйте файл c:\php\php.ini-dist в новый файл c:\php\php.ini

Внесите изменения в файл настройки php.ini.
В справочном пособии по PHP описаны все конфигурационные опции.
Для начала достаточно обратить внимания на самые важные из них.

Максимально доступное время выполнения скрипта:

max_execution_time = 60

Ограничение памяти:

memory_limit = 32M

Настройка вывода сообщений об ошибках (все кроме Notice):

error_reporting = E_ALL & ~E_NOTICE

Какой файл использовать как журнал для записи сообщений об ошибках:

error_log = c:\php\errors.log

Автоматическая регистрация глобальных переменных:

register_globals = Off

Лучше register_globals выключить (Off) и сразу забыть о ней. Так будет безопаснее!
Зачем нужны автоматические переменные если они уже есть?
В PHP скриптах все данные отправленные в скрипт легко читаем из суперглобальных массивов:
$_GET[], $_POST[], $_COOKIE[], $_FILES[], $_SERVER[], $_REQUEST[], $_ENV[]

Максимальный объем данных передаваемых через POST:

post_max_size = 8M

"Магические кавычки" - режим автоматического Escape-рования кавычек ' " и символа \ для строк переданных через GET, POST:

magic_quotes_gpc = On
magic_quotes_runtime = Off


Кодировка по умолчанию:

default_charset = "windows-1251"

Каталог, где находятся модули PHP:

extension_dir = "c:\php\ext\"

Разрешить динамическую загрузку модулей (это не работает в PHP-скриптах из-под модуля в Apache2):

enable_dl = On

Разрешить загрузку (через <INPUT type=file>) файлов:

file_uploads = On

Каталог для загрузки файлов через HTTP:

upload_tmp_dir = c:\php\temp

Максимальный размер загружаемых файлов через HTTP:

upload_max_filesize = 8M

Разрешить открывать удаленные файлы (из других серверов) в файловых операциях:

allow_url_fopen = On

Анонимный пароль для функций работы c FTP протоколом:

from="anonymous@example.com"

Для HTTP заголовка User-Agent :

user_agent="PHP"

Для отправки почтовых сообщений - поле From :

sendmail_from = php@example.com

Настройка механизма сессий:

session.save_handler = files
session.save_path = "c:\php\temp"

Важным моментом является наличие каталога c:\php\temp, иначе механихм сессий не будет работать.

Можно включить некоторые дополнительные модули.
Перед включением каждого модуля нужно убедится в его наличии.
Каждый модуль размещен в отдельном DLL файле.
В нашем случае модули размещаются в каталоге c:\php\ext\.
Отсутствующие в стандартом дистрибутиве PHP модули можно найти в коллекции модулей PECL (будет рассмотрено ниже).

База данных Mysql
extension=php_mysql.dll

База данных Mysql (Improved Extension)
extension=php_mysqli.dll

Работа с BZ2 архивами
extension=php_bz2.dll

Работа с ZIP архивами
extension=php_zip.dll

Работа с графикой
extension=php_gd2.dll

Работа с SWF
extension=php_ming.dll

Работа с сокетами
extension=php_sockets.dll

Работа с CURL библиотекой (загрузка файлов)
extension=php_curl.dll

Функции криптования
extension=php_mcrypt.dll
extension=php_mhash.dll


XSLT процессор
extension=php_xsl.dll

База данных SQLite
extension=php_sqlite.dll

Протестируем PHP.
Создаем текстовый файл C:\php\test.php:

<? echo "Hello World!"; ?>

в коммандной консоли выполняем:

cd c:\php
c:\php\php.exe test.php

смотрим как выполняется тестовый скрипт.

Кто не в курсе что такое коммандная консоль - в панели задач Windows выбираем
Пуск -> Стандартные -> Коммандная строка
откроется окно с черным фоном и строкой ввода для комманд.

Установка PHP4

Алгоритм установки такой же как для PHP5, только несколько отличий.
C сайта php.net берем архив с последним дистрибутивом PHP4.x.
Распаковываем уже в другой каталог - c:\php4

Копируем файл php4ts.dll в системный c:\windows\system32\

Копируем файлы из подкаталога dlls\ в системный c:\windows\system32\

Не забудьте произвести настройки в файле php.ini
Для Apache будем использовать PHP4 как CGI версию.

Установка Apache2

Имена хостов, размещенные на сервере где устанавливается Apache указываются в файле hosts.
Файл hosts в Windows системах находится по следующему пути:
c:\windows\system32\drivers\etc\hosts.
Для Windows2000 это будет c:\winnt\system32\drivers\etc\hosts.
для Windows98 - c:\windows\hosts.

Каждый компьютер в сети ссылается на себя самого по имени localhost.
Допустим, пусть мы выбрали имя сервера test.
Пропишем в файле hosts соответсвие этому имени:

127.0.0.1 localhost
127.0.0.1 test


Адрес 127.0.0.1 соответствует специальному loockback-механизму позволяющему серверу обращаться к самому себе.

Загрузите последнюю версию Apache2 с httpd.apache.org выбрав соответствующее региональное зеркало.

Запустите установку.
Появится диалоговое окно настроек, укажите параметры сервера:

Network Domain = имя_сервера (test)
Server Name = имя_сервера (test)
Administrator's Email Address = ваш@e.mail
Install Apache HTTP Server 2 for All Users = yes
Install to:
Apache HTTP Server 2 = c:\
Apache Runtime = c:\www

Важно правильно указать путь к размещению Apache.
В результате установки каталог bin\ должен находится внутри каталога C:\www\
После выполения программы установки, все настройки можно будет изменять в дальнейшем в конфигурационном скрипте.

Идем далее, следует утановка программы Apache.

После установки удаляем из Пуск -> Программы -> Автозагрузка ярлык Monitor Apache Servers,
это если нет необходимости светить значек Apache в системном трее.

Вся настройка сервера сосредоточена в основном конфигурационном скрипте c:\www\conf\httpd.conf
Редактируется любым текстовым редактором.

Каталог сервера:

ServerRoot "C:/www"

Имя сервера (мы вибирали test в этом примере), 80 - это стандартный порт на котором работает HTTP:

ServerName test:80

Путь к корневому каталогу хоста localhost:

DocumentRoot "C:/www/vhosts/localhost/htdocs"

Включаем некоторые модули:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so


Включаем модуль PHP5 для скритов с расширениями .php, .php5 :

LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php .php5
PHPIniDir "C:/php"


Включаем PHP4 как CGI для скритов с расширениями .php3, php4 :

ScriptAlias /php4/ "c:/php4/"
AddType application/x-httpd-php4  .php3 .php4
Action application/x-httpd-php4 "/php4/php.exe"


Корневой каталог для localhost :

DocumentRoot "C:/www/vhosts/localhost/htdocs"
<Directory "C:/www/vhosts">
    Options Indexes FollowSymLinks Includes MultiViews ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>


Индексные страницы
DirectoryIndex index.php index.html index.htm index.shtml index.pl index.cgi

Если это будет нужно, можно включить журнал для операций модуля Rewrite указав число - уровень отладки:

RewriteLogLevel 9
RewriteLog "C:/www/logs/rewrite.log"


Включаем выполнение SSI :

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml


Секции
<Directory "путь">...</Directory>
служат для указания настроек для определенного каталога сервера

Опция AllowOverride устанавливает возможности файлов .htaccess для каталога в секции Directory
используются значения All, None или комбинации Options FileInfo AuthConfig Limit

Для отдельных каталогов хоста можно указывать собственные настройки в файлах .htaccess

Почему именно .htaccess - потому что опция AccessFileName которая определяет это имя по умолчанию так установлена

Если например запретить .htaccess то пользователь не сможет включать стандартный апачевский механизм HTTP Autorization для каталогов.

Каждая опция применяемая в httpd.conf или же в .htaccess подробно описана в руководстве пользователя Apache. Посмотрите на страницу по адресу http://localhost после установки сервера - вы там найдете ссылку на документацию.

Как использовать сервер

После кажой модификации конфига перезапускайте сервер.
Для этого в панели задач Windows есть ярлык:
Пуск -> Программы -> Apache HTTP Server 2.xx -> Control Apache Server -> Restart

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

Теперь HTTP сервер Apache у вас работает на 80 порту, для этого у вас должен быть запущен процесс Apache.exe
В Windows NT/2000/XP и ежеподобных программа установки Apache установит запуск сервера при помощи сервиса, который будет автоматически загружаться каждый раз при включении вашей системы.

Если все было сделано правильно, вы сможите видеть стартовую страницу Apache по адресу http://localhost

Если в вашей системе используется брэндмауер (сетевой экран, firewall) позаботьтесь об настройке сетевого доступа для Apache. Если вы используете сервер в целах обучения и не собираетесь открывать свой собственный web-сервер, целесообразно закрыть доступ для всех интерфейсов кроме 127.0.0.1. Если вы уверенны что ваша локальная сеть безопасна от вторжений незнакомцев - можите отыть доступ Apache для интерфейсов локальной сети (это адреса 192.168.x.x, 10.x.x.x)

Тестируем работу PHP на сервере Apache.

Создаем файл
C:/www/vhosts/localhost/htdocs/phpinfo.php

со следующей строкой:

<? phpinfo(); ?>

Запускаем в браузере http://localhost/phpinfo.php
если все правильно установлено, видим вывод функции phpinfo с подробной информацией о PHP.
Если PHP на сервер работает нормально, файл с расширением php должен загружаться в вашем браузере как нормальная страница, отображаяя содержимое с HTML кодом, без выдачи запроса на сохранение файла.

Запуск одного и того же сценария на PHP4 и PHP5

Допустим у нас есть сценарий в .php файле script.php, который в нашем случае будет обрабатываться через PHP5, мы хотим проверить как он выполнится через PHP4.
PHP4 мы установили как CGI-версию, и в Apache зарегистировали под него расширения .php4 и .php3.
Создадим в том же каталоге файл script.php4 - с тем же именем что и .php только с раширением .php4 с одной лиш строкой кода:

<? include "script.php"; ?>

Apache обработает такой скрипт направив на выполнение файл программе-интерпретатору который размещен у нас в файле c:\php4\php.exe.

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

Внесите изменения в конфигурационный скрипт c:\www\conf\httpd.conf

NameVirtualHost *:80

Для кажого сайта (хоста) на вашем сервере должна быть соответствующую секция

<VirtualHost *:80>...</VirtualHost>

Этот хост - localhost в нашем примере размещен c:/www/vhosts/localhost/htdocs
обязательный, он заменяет установленный по умолчанию c:\www\htdocs\

<VirtualHost *:80>
 ServerAdmin ax@ukr.net
 DocumentRoot c:/www/vhosts/localhost/htdocs
 ServerName localhost
 ErrorLog logs/localhost.error.log
 CustomLog logs/localhost.access.log common
</VirtualHost>


Не забудьте что система не сможет обратиться к вашим хостам по именах, если не настроить DNS
Для каждого локального сайта вносите соответствующую запись в файле c:\winnt\system32\drivers\etc\hosts

127.0.0.1  доменное_имя

Модули PHP

Загрузить архив с дополнительными PECL-модулями для PHP5 под Windows можно со страницы pecl.php.net

Распакуйте архив и поместите нужные файлы модулей в каталог C:\php\ext\
В файле C:\php\php.ini включите нужные модули строками

extension=файл.dll

Некоторые модули могут иметь зависимости от других DLL библиотек, которые нужно будет поместить в c:\windows\system32
Если библиотека не найдена или не найдена требуемая библиотека, короче она не загружается при загрузке Apache и выдается сообщение could not load ...
В таком случае проверьте подходит ли библиотека для этой версии PHP и Apache и правильно ли размещены все DLL файлы.

Разработчики PHP предоставляют документацию по API для PHP, так что создавать свои модули может каждый, кто освоил системное программирование и знаком с языком C.

Установка PHP в качестве ActiveScript

Скопируйте файл php5activescript.dll в C:\php\ и C:\windows\system32\

Dводите комманды из консоли :
cd C:\php
regsvr32 php5activescript.dll


Если будет выдаваться сообщение

Ошибка при вызове LoadLibrary("php5activescript.dll") - Не найдена указанная процедура

убедитесь что файл php5activescript.dll был правильно скопирован (указано выше)

Продемонстрируем работу сценария ActiveScript
Создаем текстовый файл C:\php\test.wsf:

<job id="test">
  <script language="PHPScript">
     $WScript->Echo("Hello World!");
  </script>
</job>

Следует учесть, что для PHP4 в качетсве идентфикации language используется имя ActivePHP а для PHP5 - PHPScript

Теперь можно запускать этот файл, как самостоятельное приложение, кликнув на нем в проводнике.

При выполнении ActiveScript вместо php.ini используется файл php-activescript.ini

Установка Perl

Перл постарше и местами выгоднее ПхП. Вобщем, ещо говрят - перл незаменим :)
Например, анализатор логов Awstats.
Загрузите последний дистрибутив ActivePerl c www.activestate.com
Запустите инсталяцию.
В процессе установки будет предложено:
- ввести каталог установки (c:\perl\)
- возможность создания ярлыка на документацию по Perl
- добавить путь к интерпретатору Perl (c:\perl\bin\) в переменную окружения PATH
- асоциировать файловые расширения (.pl, .plx) с интерпретатором Perl

В httpd.conf в Apache должно быть следующее:

AddHandler cgi-script .cgi
AddHandler cgi-script .pl


Для каталога в котором должен выполнятся Perl сценарий должно быть установлено право на выполнение CGI:
Options FollowSymLinks ExecCGI

в настройках Apache для этого каталога в соответствующей секции <Directory "путь">...</Directory>
или в файле .htaccess

Perl сценарии создаются в файлах с раширениями cgi и pl

Установка MySQL

Загрузите дистрибутив MySQL для Windows с сайта mysql.com.
Автор использовал версию из ветки MySQL 4.1
На 1 августа 2006 года это был Windows Essentials 4.1.21 (файл mysql-essential-4.1.21-win32.msi размером 15.7Mb)
Итак, выберите ближайшее к вам зеркало по ссылке Pick a mirror и cкачайте пакет для установки.

Установка этого пакета описана в этой статье на сайте mysql.com

Запустите инсталяцию.
В диалоговом окне установки следуйте инструкциям

1. Выбор типа инсталяции
Выберите Custom

2. Путь в файловой системе
Для MySQL Server и Client Prjgrams укажите путь - C:\MySQL\
C Include Files / Lib Files можно не ставить если вы не системный программист.

После нажатия Install программа установки произведет копирование файлов сервера.

Далее запуститься следующее диалогове окно Setup Wizard

1. Можно выбрать создание аккаунта, хотя это не обязательно (Skip Sign-Up)

2. Configure the MySQL Server now

Далее запуститься диалогове окно Configuration Wizard

1. Тип конфигурации (расширенный или стандартный)
Выберите детальный - Detailed Configuration

2. Тип сервера
Выберите тип для разработчика - Developer Machine

3. Тип использования
Выберите многофункциональный - Multifunctional Database

4. Указание пути к хранению InnoDB таблиц
Можно оставить как есть - Installation Path

5. Ограничение сервера на количество одновременных соединений
Для наших задач это не особо важно - можно оставить 15

6. Включить работу через сетевой интерфес по TCP/IP
Указываем порт 3306

7. Кодировка по умолчанию
Выбираем utf8 - Best Support for Multilingualism

8. Установить как сервис в Windows (запускать в виде демона при старте системы)
Выбираем все галочки и указываем имя сервиса (несуществующее)

9. Пароль суперпользователя (root)
Можно указывать, можно сделать анонимного, но учтите - если оставить возможность входа это может быть небезопасно в вашей сети.

По нажатию Execute все изменения вступят в силу и сохранятся в конфигурационном файле c:\MySQL\my.ini

Настройка и использование MySQL

После установки программу конфигурации можно вызвать повторно через ярлык в меню
Start > All Programs > MySQL > MySQL Server 4.1 > MySQL Server Instance Config Wizard

MySQL сервер работает в запущенном процессе C:\MySQL\bin\mysqld-nt.exe

Отсанавливать/запускать сервис можно из диалого управления сервисами Windows,
кликнув правой кнопкой на сервисе и выбирая Остановить/Запустить (Stop/Start)

Для внесения изменений в настройки редактируйте файл c:\MySQL\my.ini текстовым редактором

В секции [client] должны быть следующие опции:

port=3306
character-sets-dir=c:/MySQL/share/charsets/
default-character-set=cp1251


В секции [mysql] :

default-character-set=cp1251

В секции [mysqld] должны присутствовать следующие опции:

character-sets-dir=c:/MySQL/share/charsets/
default-character-set=cp1251

Напишем простейший PHP скрипт для тестирования работы с БД.
Скрипт конектится к базе с именем test, создает таблицу tb1 и производит вставку, модификацию и выборку данных.
База test существует по умолчанию сразу после установки MySQL.

Ниже готовый исходный код скрипта:

<?
//здесь следует правильно указать: "хост", "логин", "пароль"
if(mysql_connect("localhost""root""")) {
  
//работаем с базой test
  
if(mysql_select_db("test")) { 
    
  
//mysql_query("SET NAMES cp1251"); 
    
  //удаляем таблицу если существует
  
mysql_query("drop table if exists tb1");
  
  
//создаем таблицу
  
mysql_query("create table tb1(".
  
"id int(10) unsigned not null auto_increment,".
  
"name varchar(100), primary key (id))");
  
  
//вставляем записи
  
mysql_query("insert tb1 values(1,'Бобы')");
  
mysql_query("insert tb1 values(2,'Орки')");
  
mysql_query("insert tb1 values(3,'Импы')");
  
  
//читаем записи
  
echo "table tb1:<br>";
  
$r=mysql_query("select * from tb1");
  while (
$d=mysql_fetch_assoc($r)) {
   echo 
"ROW DATA: {$d['id']} = {$d['name']}<br>";
  }
  
//изменяем данные
  
echo "modify tb1<br>";
  
mysql_query("update tb1 set name='Бобры' where id=1");
  
$r=mysql_query("select * from tb1 order by name");
  
//читаем
  
while ($d=mysql_fetch_assoc($r)) {
   echo 
"ROW DATA: {$d['id']} = {$d['name']}<br>";
  }
 }else{
  echo 
"Error, can't select db<br>";
 }
}else{
 echo 
"Error, can't connect<br>";
}
?>


В случае если вместо русско-украинских символов видны сплошные символы вопросов ?????
необходимо после соединения с базой mysql_connect и mysql_select_db, самым первым запросом к БД выполнить смену кодировки следующим запросом:
mysql_query("SET NAMES cp1251");

Создание резервной копии БД

Для этого можно сделать следующий сценарий и поместить его в .bat файл:

C:\MySQL\bin\mysqldump.exe --comments=0 --default-character-set=cp1251 --compatible=mysql40 > db.sql

Эта команада вызовет стандартную утилиту mysqldump, входящую в дистрибутив MySQL, которая сохранит содержимое базы данных в текущем каталоге в файле db.sql


--------
Пока это все, будет еще - добавим... А вам - удачи в начинаниях.

Опубликовал: Alexander (1:57) | комментарии [0]
< назад
Вверх © Copyright 2004-2014 Script.com.ua



Версия для печати