Шрифт:
Интервал:
Закладка:
Для самих же операций с данными используется программа mysql. Она понимает те же ключи, что и mysqlshow, и много других, среди которых очень полезный ключ -s. Я рекомендую вам всегда его использовать. Этот ключ подавляет большинство ненужных сообщений, выводимых MySQL-клиентом, что существенно повышает производительность на медленных линиях связи.
17.3. Установка PHP и настройка связки Apache+PHP+MySQL
Сейчас мы произведем не только установку PHP, которая не вызывает особых проблем, но и настройку связки Apache+PHP+ MySQL. Эту связку, очень полезную при создании веб-проектов, можно настроить двумя способами. Первый — использование программ, которые входят в состав дистрибутива и, как правило, устанавливаются из пакетов RPM.
Второй способ заключается в загрузке последних версий Apache, MySQL и PHP и в самостоятельной их сборке из исходных текстов. Первый способ я могу порекомендовать начинающим пользователям, так как он проще. Если же вы чувствуете уверенность в своих силах, приступайте сразу к чтению второго способа.
17.3.1. Первый способ: из пакетов RPM
Первую часть связки в дистрибутивах Red Hat выше 7.2 и Mandrake выше 8.1 настраивать не нужно: все настраивается во время установки системы. Поэтому вы можете сразу приступить к тестированию связки Apache+PHP (листинг 17.1).
Убедитесь, что сервер Apache установлен и корректно функционирует:
$ lynx http://localhost
Текстовый браузер lynx должен отобразить стартовую страницу Apache. После успешной проверки работы сервера остановите его командой:
# /etc/init.d/httpd stop
Проверьте наличие библиотеки gd — она необходима для работы с графикой в PHP:
$ rpm -qa | grep gd
$ rpm -ihv gd-1.8.4-4.i386.rpm
Загрузить последнюю версию PHP 5 можно по адресу http://www.php.net/downloads.php.
Скачайте (www.php.net/downloads-php) и установите пакет php, если вы его еще не установили. Вам также понадобится пакет php-mysql, обеспечивающий поддержку сервера MySQL языком PHP, и модуль Apache, обеспечивающий поддержку PHP (пакет mod_php).
Затем в файле httpd.conf раскомментируйте следующую строчку. После этого файлы с расширением .php будут правильно обрабатываться сервером:
AddType application/x-httpd-php4 .php
Теперь можно проверять правильность настройки двух компонент связки: Apache и PHP.
Напомню, что в большинстве современных серверных дистрибутивов сервер Apache уже установлен вместе с модулем mod_php, поэтому выполнять вышеизложенные шаги совсем необязательно, достаточно только проверить корректность работы модуля mod_php.
Для проверки работы модуля mod_php создайте тестовый файл test.php с таким содержимым:
Листинг 17.1. Файл test.php
<?
phpinfo();
?>
Этот файл сохраните в каталоге DocumentRoot сервера Apache. Обычно это каталог /var/www/html. Затем запустите любой браузер и введите адрес http://localhost/test.php. Вы должны увидеть в окне браузера сведения о PHP, сервере Apache и других компонентах и библиотеках (рис. 17.1).
Рис. 17.1. Функция phpinfo()
Функция phpinfo() очень информативна: внимательно изучив информацию, которую она предоставляет, вы много узнаете о своем веб-сервере.
Теперь немного настроим PHP. С помощью функции phpinfo() узнайте, где расположен инициализационный файл PHP. Обычно он называется php.ini и находится в каталоге /etc. Откройте этот файл в любом текстовом редакторе и раскомментируйте следующую строку, убедившись, что в вашей системе есть файл mysql.so (он устанавливается при установке php-mysql):
extension=mysql.so
После этого перейдите в секцию MySQL файла php.ini и установите параметры сервера MySQL по умолчанию:
mysql.default_port =
mysql.default_socket =
mysql.default_host = localhost
mysql.default_user =
mysql.default_password =
Эти параметры будут использоваться при установлении соединения с сервером, если в функциях PHP они не будут явно указаны. Никогда не указывайте пользователя root (а тем более его пароль) в качестве пользователя по умолчанию!
Теперь можно приступить к настройке сервера MySQL. Имеет смысл использовать версию MySQL не ниже 3.23, поскольку в этой версии появилась нормальная поддержка транзакций. Если вы устанавливаете MySQL версии 3.23 или выше, то установите еще пакет mod_auth_mysql, обеспечивающий базовую аутентификацию для сервера Apache с использованием таблиц MySQL.
При добавлении сервера MySQL в сценарии загрузки (/etc/rc.d/) обратите внимание на то, что сервер MySQL должен быть запущен ПЕРЕД сервером Apache.
17.3.2. Тестируем созданную конфигурацию
Теперь можно проверить работу всей связки Apache + PHP+MySQL. С этой целью создайте небольшой тестовый файл mysql_test.php в каталоге DocumentRoot (/var/www/html):
Листинг 17.2. Файл mysql_test.php
<?
// Используется имя пользователя root и пароль password
if(!mysql_connect("localhost","root","password"))
{
echo "He могу соединиться с серверомn";
echo mysql_error();
exit;
}
echo "Работает!"
?>
Как вы уже успели догадаться, если в окне браузера вы увидите слово «Работает!», значит, вы все сделали правильно.
17.3.3. Второй способ: из исходных текстов
У этого способа есть свои преимущества. Во-первых, у вас появится возможность использовать самые последние версии серверов Apache, MySQL и интерпретатора PHP, которых нет в составе даже самого нового дистрибутива Linux. Во-вторых, вы сами сможете контролировать процесс сборки и включать поддержку необходимых вам функций, исключив такую ситуацию, когда, например, разработчики пакетов RPM при сборке интерпретатора PHP забыли включить поддержку сервера MySQL, Мне попадался такой пакет php: функции mysql_connect() в нем просто не было.
Скачайте из Интернета последние версии Apache, MySQL и PHP. Предварительно удалите из системы старые версии, если они были установлены. После загрузки распакуйте исходные тексты в каталог /src.
Сначала установите сервер MySQL. С этой целью перейдите в каталог с исходными текстами MySQL и введите следующие команды (первая команда включает поддержку по умолчанию кодировки koi8-r):
# ./configure --with-charset=koi8_ru
# make
# make install
Затем аналогично установите Apache. Для получения информации обо всех возможных ключах сценария configure введите команду configure --help.
После этого распакуйте PHP и соберите его следующим образом:
# ./configure --with-mysgl --with-apache=../apache_2.0.0 --with-mod_charset
# make
# make install
Первая команда конфигурирует интерпретатор PHP для работы с сервером баз данных MySQL и веб-сервером Apache, Естественно, вы должны правильно указать путь к исходным текстам Apache с помощью ключа --with-apache.
Затем вернитесь в каталог, содержащий исходные тексты Apache, и введите команду:
# ./configure --activate-module=src/modules/php4/libphp4.a
Перед этим нужно убедиться в существовании файла libphp4.a (если php собрался успешно, этот файл должен существовать). Если сценарий configure успешно завершил свою работу, введите команды make и make install.
Проверить, подключился ли модуль libphp, вы можете после установки сервера с помощью команды:
# httpd -l
В списке модулей должен быть модуль libphp4.c, а также модуль mod_charset.c — его вы подключили при первой сборке. После этого можно отредактировать файл /etc/php.ini и установить пароль для пользователя root сервера MySQL (не путайте пользователя root всей системы с пользователем root сервера MySQL!).
Теперь только остается добавить запуск серверов в сценарии автозагрузки системы. Напомню, что сервер MySQL должен запускаться до сервера Apache.
17.4. Защита сервера MySQL
По умолчанию для файла сокета mysql.sock, который используется соединениями сервера MySQL, установлены права доступа 0777. Это означает, что кто угодно может удалить этот файл. Если данный файл будет удален во время работы сервера, то ни один пользователь не сможет подключиться к серверу MySQL. Установите «бит прилипчивости» (sticky-бит) для каталога /var/lib/mysql, чтобы предотвратить удаление файлов из этого каталога:
# chmod +t /var/lib/mysql
Из соображений безопасности рекомендуется удалить базу данных test, которая создается при установке сервера и используется для его проверки:
# mysqladmin drop test -p
Не забудьте также удалить запись, соответствующую базе данных test, из таблицы db базы данных mysql:
# mysql -u root mysql -p
mysql> DELETE * FROM Db WHERE Db="test";
mysql> DELETE * FROM Db WHERE Db="test_%";
- Операционная система UNIX - Андрей Робачевский - Программное обеспечение
- Разработка приложений в среде Linux. Второе издание - Майкл Джонсон - Программное обеспечение
- Искусство программирования для Unix - Эрик Реймонд - Программное обеспечение
- Linux - Алексей Стахнов - Программное обеспечение
- Fedora 8 Руководство пользователя - Денис Колисниченко - Программное обеспечение
- Недокументированные и малоизвестные возможности Windows XP - Роман Клименко - Программное обеспечение
- Изучаем Windows Vista. Начали! - Дмитрий Донцов - Программное обеспечение
- Windows Vista - Виталий Леонтьев - Программное обеспечение
- Архитектура операционной системы UNIX - Морис Бах - Программное обеспечение
- Windows Vista. Трюки и эффекты - Юрий Зозуля - Программное обеспечение