Select Page

Установка РНР 4 и MySQL

В этой статье я расскажу как запускать РНР в качестве интерпретатора CGI или модуля, как установить Apache, SSL, PHP и MySQL под UNIX и Windows.

Ну обо всём по порядку.

Как запускать РНР в качестве интерпретатора CGI или модуля

РНР — это простой, но мощный встраиваемый в HTML интерпретируемый язык серверной стороны, который позволяет обрабатывать файлы, запускать команды и открывать сетевые соединения. Интерпретатор можно запустить как модуль или как отдельный двоичный файл CGI. В большинстве случаев модульный вариант выбирают из соображений повышения производительности. CGI-версия позволяет пользователям Apache запускать PHP-сценарии с различных страниц под разными идентификаторами. Хотя последний вариант по умолчанию считается менее защищенным, РНР разработан так, что CGI-программы, написанные на нем, все же безопаснее аналогичных программ на языках Perl или С. РНР имеет набор конфигурационных опций, предназначенных для подбора необходимой в каждом конкретном случае комбинации безопасности и удобства использования. Однако тем, кто предпочитает запускать РНР через CGI, следует ознакомиться с советом CERT CA-96.11 (CERT Advisory CA-96.11) по адресу: http://www.cert.org/advisories/CA-96. 11.interpreters_in_cgi_bin_dir.htrol
Установки по умолчанию для CGI требуют, чтобы выполняемый PHP-файл находился на Web-сервере в каталоге cgi-bin, тогда как CERT этот метод критикует. Причиной служит то, что большинство интерпретаторов (но не РНР), доступных в каталоге cgi-bin, позволяют удаленным пользователям запускать любые команды, которыесам интерпретатор способен выполнять на сервере. Тем не менее, РНР не позволяет взломщиками воспользоваться этой брешью. Справиться с этой задачей РНР помогает следующее: РНР отказывается интерпретировать аргументы командной строки, если он ис-
пользуется через CGI и РНР отказывается интерпретировать аргументы командной строки, если он используется через CGI. Однако следует включить опцию — enable-force-cgi-redirect и установить конфигурационные директивы времени выполнения doc_root и user_dir. Разумеется, речь идет о конфигурации по умолчанию. Если используется метод CGI, можно выбрать еще более безопасную возможность — разместить выполняемый PHP-файл за пределами Web-дерева. Типичным положением файла может быть каталог /usr/local/bin под UNIX или с: PHP-DIR под Windows. Обратной стороной медали является то, что строку для запуска интерпретатора РНР потребуется помещать во все CGI-сценарии. Например, на UNIX-машине с интерпретатором РНР в каталоге /usr/local/bin/php первой строкой каждого сценария должна быть строка
#! /usr/local/bin/php
Кроме того, чтобы сделать сценарий запускаемым, необходимо установить соответствующие права доступа. Короче говоря, в случае CGI к PHP-сценарию следует относиться так же, как к сценарию, написанному на Perl. В этой статье рассказано о применении метода модуля для запуска РНР в среде UNIX и метода CGI для запуска в среде Windows.
Ну вот я и рассказал о том как установить РНР в качестве интерпретатора CGI или модуля
Теперь о том как установить Apache, SSL, PHP и MySQL под UNIX и Windows

Как установить Apache, SSL, PHP и MySQL под UNIX и Windows

Начнем с установки Apache, PHP и MySQL в среде UNIX. Вначале необходимо решить, какие дополнительные модули могут потребоваться в дальнейшем. Поскольку некоторые из примеров в этой книге используют безопасный сервер для Web-транзакций, потребуется установить сервер с поддержкой слоя безопасных сокетов (Secure Socket Layer, SSL). Установка РНР здесь будет совпадать с настройкой по умолчанию, но будет рассказано и о подключении следующих дополнительных библиотек в РНР. http://curl.haxx.se/: Функции библиотеки Client URL
• http://pspell.sourceforge.net/: Переносимые библиотеки проверки правописания
(Portable Spell Checker Libraries)
• http://www.pdfljb.com/pdflib/jndex.html: Библиотека для создания документов PDF

Это лишь три из великого множества доступных PHP-библиотек. На примере их подключения вполне можно понять, как следует добавлять дополнительные библиотеки в РНР. До компиляции модуля РНР рекомендуется установить на машине все необходимые библиотеки. Загрузка и установка библиотечных программ уже обсуждались в соответствующих главах, и здесь этому внимание не уделяется. Здесь будет рассказано о том, как подключить их в РНР на этапе компиляции. Инсталляция будет выполняться на сервере под управлением Red Hat Linux 6.2, однако схема является настоль общей, что ее можно применять под любым UNIX-сервером. Итак, вначале перечислим средства, задействованные в процессе установки.

Apache (http://www.apache.org/): Web-сервер
• Mod_SSL (http://www.modssl.org/): Модуль слоя безопасных сокетов
• OpenSSL (http://www.openssl.org/): Open Source Toolkit (необходимый для
Mod_SSL)
• RSARef (http://ftpsearch.lycos.com/): Требуется только тем, кто находится в пре-
делах США
• MySQL (http://www.mysql.com/): Реляционная база данных
• РНР (http://www.php.net/): Интерпретируемый язык серверной стороны
Далее будет предполагаться, что пользователь, производящий инсталляцию, имеет полный (root) доступ к серверу, на котором установлены следующие пакеты: Perl (желательно последней версии)
• gzip или gunzip
• gcc и GNU make

При отсутствии этих инструментальных средств их необходимо установить, иначе все последующие шаги потеряют смысл.
При отсутствии доступа root есть следующие возможности:
• Попросить системного администратора установить РНР
• Установить и запускать механизм РНР в собственном пользовательском ката-
логе cgi-bin
• Запустить собственный Web-сервер с поддержкой РНР на нестандартном порту

Однако, здесь рассматривается случай, когда пользователь имеет доступ root. Когда все готово к инсталляции, следует загрузить все tar-файлы с исходными кодами во временный каталог. Здесь стоит убедиться, что в этом разделе имеется достаточно свободного дискового пространства. В данном случае временным каталогом является /tmp/download. Во избежание проблем с правами доступа к файлам, их необходимо загрузить от имени пользователя root.

Для установки пакетов следует выбрать такие каталоги:
/usr/local/apache
# /usr/local/mysql I
# /usr/local/ssl
Можно использовать и другие каталоги, изменив перед инсталляцией опцию prefix. Итак, инсталляция начинается! Прежде всего, следует зарегистрироваться в системе как пользователь root
$ SU
и ввести пароль. Затем перейти в каталог, содержащий файлы с исходнымкодом, например
# cd /tmp/download/
Развернуть файлы с помощью команды:
# gunzip -с mysql-3.22.xx.tar.gz | tar xvf –
Перейти в каталог, созданный при разархивировании:
# cd mysql-3.22 .хх
Теперь можно начать конфигурирование сервера MySQL. Утилита configure имеет немало опций, просмотреть которые позволяет команда configure —help. Сценарий configure проверяет версии компиляторов и другие системные настройки. Если при запуске он выдает ошибки, их можно просмотреть в файле config.cache.

t ./configure —prefix=/usr/local/mysql
После окончания работы configure можно скомпилировать двоичные файлы, запустив команду (ее выполнение занимает некоторое время):
# make
Теперь все готово для инсталляции двоичных файлов, которую можно произвести(каталог был задан опцией configure —prefix) командой:
# make install
После этого самое время создать таблицы mysql, используемые для определения прав доступа. Строку new-password следует заменить чем-либо, иначе значением new-password
будет текущий пароль пользователя root.
# scripts/mysql_install_db
# cd /usr/local/mysql/bin
# ./safe_mysqld &
# ./mysqladmin -u root password new-password
Проверить работоспособность MySQL можно запуском нескольких простых тестов. При этом вывод на экран должен быть похож на показанный ниже:
# /usr/local/mysql/bin/mysqlshow -p
Введите пароль.
I Databases I
+ ——————- +
I mysql |
+ ——————- +

При инсталляции пакета MySQL автоматически создаются две базы данных. Одна содержит таблицу, управляющую пользователями, хостами и правами доступа к базам данных на реальном сервере. Вторая является тестовой. Проверить базу данных можно,
задав следующую командную строку:
i mysql -u root -p
Введите пароль.
reysql> show databases ;
+ ——————- +
| Database I
| myeql
I test
2 rows in set (0.00 sec)
Теперь пришло время установить РНР. Здесь снова требуются права доступа пользователя root (можно, как и ранее, воспользоваться командой su). РНР требует предварительного конфигурирования Apache, чтобы местонахождение всех элементов было известным. К этому следует вернуться, что и произойдет в разделе, посвященном настройке сервера Apache. Далее необходимо перейти обратно в каталог, содержащий файлы с исходным кодом.

cd /tmp/download
gun zip -с apache_l . 3 . x . tar . gz | tar xf –
cd apache_l .3.x
. /configure —pref ix=/usr/local/apache
cd ..
Итак, можно приступить к установке РНР. Разархивирование файлов с исходным кодом и переход в инсталляционный каталог достигаются командами:
# gun zip -с php-4.0.x. tar.gz | tar xvf –
f cd php-4.0.x
Утилита configure пакета РНР также имеет опции, просмотреть которые можно командой configure —help. В данном случае используются те из них, которые добавляют поддержку MySQL, Apache, PDFLib, cURL и PSPELL.

Обратите внимание, что ниже приведена одна команда. Ее можно разместить в одной строке или, как показано в примере, используя символ продолжения (символ обратной косой черты ()), набрать в нескольких строках, что улучшает читаемость.
f ./configure — with-mysql=/usr/local/myeql
— with-xml — with-apaehe=. ./apache_1.3.x
— with-curl=/usr/local/curl
— with-pspell=/usr/local/pspell
— enable-shared-pdflib — enable- track-vars
После этого (в случае отсутствия ошибок) производится компиляция и установка двоичных файлов:
# make
# make install
Конфигурационный ini-файл необходимо скопировать в каталог lib:
# ср php.ini-dist /usr/local/lib/php.ini

Этот файл можно редактировать, изменяя опции РНР. Например, увеличить время выполнения сценария можно, изменив значение директивы max_execution_time в
файле php.ini следующим образом:
max_execution_time = 60 ;
Apache и mod_SSL
Пришло время сконфигурировать и установить модуль mod_SSL и Apache. Если вы находитесь в пределах США, вам потребуются файлы rsaref-2.0. К сожалению, поскольку их распространением больше не занимается RSA, они не имеют стабильной Web-страницы. Поэтому необходимо воспользоваться поисковым механизмом, например, Lycos http://ftpsearch.lycos.com
или Google

http://www.google.com

для поиска файла rsareflO.tar.Z. Следует убедиться, что найден именно дистрибутив для UNIX.
Для извлечения файлов создается каталог rsaref. Здесь предполагается, что файл находится во временном каталоге, где хранится исходный код.
# mkdir rsaref-2.0
# cd rsaref-2.0
# gunzip -с ../rsaref20.tar.Z | tar xvf –
Теперь следует сконфигурировать и скомпилировать библиотеку OpenSSL, причем пользователям из США ее следует компилировать в сочетании с библиотекой RSAref.
# cd rsaref-2.0
# ср -rp install/unix local
f cd local
# make
# mv rsaref.a librsaref.a
# cd ../..
Далее потребуется настроить OpenSSL. Ниже приведен набор команд для создания временных сертификатов и CSR файлов. Опция —prefix задает каталогдля инсталляции.
ПРИМЕЧАНИЕ
Пользователям в пределах США достаточно воспользоваться лишь командной строкой
с -Lpwd/../rsaref-2.0/local/rsaref -fPlC.
f gunzip c openssl-0.9.x.tar.gz | tar xvf –
# cd openssl-0.9.x
# ./config —prefix=/usr/local/ssl
-LpwdV../rsaref-2.0/local/rsaref –fPIC

Компиляцию, тестирование и установку обеспечивает набор команд:
# make
# make test
# make install
# cd ..
Модуль mod_SSL конфигурируется как загружаемый модуль Apache.
# gunzip -c mod_ssl-2.6.x.tar.gz | tar xvf –
# od mod_ssl-2.5.x-1.3.x
# ./configure —with-apache=../apache_l.3 . x
# od . .

Обратите внимание, что к исходному дереву Apache можно добавлять модули. Дополнительная опция —enable-shared=ssl позволяет скомпилировать mod_SSL как DSO (динамическую библиотеку разделенного доступа), libssl.so. Более подробная информация о поддержке DSO в Apache содержится в документах INSTALL и htdocs/manual/ dso.html в дереве исходного кода Apache. Internet-провайдерам и разработчикам, поддерживающим пакет, рекомендуется использовать DSO для достижения максимальной гибкости от mod_SSL. Следует отметить, что Apache поддерживает DSO не на всех платформах.

# cd apache 1.3.x
# SSL_BASE=~ /openssl-О.Э.х
RSA_BASE=../rsaref-2.0/local
./configure
—enable-module=ssl
—activate-module=src/modules/php4/libphp4.a
—enable-module=php4
—prefix=/usr/local/apache
—enable-shared=ssi
[…здесь можно добавить и другие опции…]
(Переменные SSL_BASE и RSA_BASE можно установить как переменные окружения.)

В заключение выполняется компиляция Apache и сертификатов с последующей их установкой.
# make
Если все прошло успешно, на экран выводится следующее сообщение:
+ ,.
Before you install the package you now should prepare the SSL
certificate system by running the make certificate command.
For different situations the following variants are provided: 1
% make certificate TYPE=dummy (dummy self-signed Snake Oil cert)
% make certificate TYPE=test (test cert signed by Snake Oil CA)
% make certificate TYPE=custom (custom cert signed by own CA)
% make certificate TYPE=existing (existing cert)
CRT=/path/to/your.crt [KEY=/path/to/your.key]
Use TYPE=dummy when youre a vendor package maintainer,
the TYPE=test when youre an admin but want to do tests only,
the TYPE=custom when youre an admin willing to run a real server
and TYPE=existing when youre an admin who upgrades a server.
(The default is TYPE=test)
Additionally add ALGO=RSA (default) or ALGO=DSA to select
the signature algorithm used for the generated certificate.
I Use make certificate VIEW=1 to display the generated data.
| Thanks for using Apache & mod_ssl. Half S. Engelschall I
| rseeengelschall.com — www.engelschall.com I
После этого можно создать индивидуальный сертификат. Эта опция запрашивает расположение, компанию и ряд других элементов.
# make certificate TYPE=custom
Установка Apache осуществляется командой:
# make install
Если вновь все прошло успешно, на экране появится сообщение:
You now have successfully built and installed the
Apache 1.3 HTTP server. To verify that Apache actually
works correctly you now should first check the
(initially created or preserved) configuration files
/usr/local/apache/conf/httpd.conf
and then you should be able to immediately fire up
Apache the first time by running:
/usr/local/apache/bin/apachectl start
Or when you want to run it with SSL enabled use:
/usr/local/apache/bin/apachectl staztssl
Thanks for using Apache. The Apache Group

http://www.apache.org/

Теперь необходимо проверить работоспособность Apache и РНР. Однако до этого следует внести изменения в файлы httpd.conf и srm.conf, добавив тип РНР к конфигурации системы.
После всех предыдущих шагов файл httpd.conf находится в каталоге /usr/local/apache/
conf. В этом файле опция addtype для РНР 4 закомментирована. Комментарий из нее следует убрать.

Фрагменты файла httpd.conf
> # Для РНР 4. х нужно использовать:
> AddType application/x-httpd-php .php
> AddType application/x-httpd-php-source .phps
Все готово к запуску и проверке сервера Apache. Вначале сервер запускается без поддержки SSL, чтобы проверить его работоспособность. После этого проверяется поддержка РНР, затем сервер останавливается и перезапускается уже с SSL. Проверку правильности настройки полной конфигурации осуществляет утилита configtest:
# cd /usr/local/apache/bin
# ./apachectl configtest
Syntax OK
# ./apachectl start
./apachectl start: httpd started
Если все работает правильно, то при соединении с сервером в Web-браузере появляется содержимое, которое подтвердит успех

About The Author

Leave a reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Может быть интересно:

Свежие комментарии