Linux: Полное руководство — страница 63 из 98

Удобной программой для просмотра структуры базы данных является mysqlshow. Введите следующую команду:

$ mysqlshow -p mysql

В ответ вы увидите список таблиц, которые находятся в базе данных mysql.

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


Ключи программы mysqlshow Таблица 17.2

КлючНазначение
--host=имя_узлаЗадает имя узла, где работает сервер MySQL, к которому вы хотите подключиться
--port=номер_портаОпределяет номер порта для сервера MySQL
--socket=сокетУказывает сокет
--user=имя_пользователяУказывает, под каким именем зарегистрироваться на сервере MySQL
-pЗапрашивает ввод пароля

Для самих же операций с данными используется программа 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