Установка Apache, MySQL, PHP и phpMyAdmin

Установка Apache, MySQL, PHP и phpMyAdmin

Автор: Fomalhaut.

Заметка сделана для себя (вечно какая-то важная мелочь забывается 🙂 и молодого коллеги, дабы давать на изучение и приучение к FreeBSD. 🙂

Описываемое актуально для FreeBSD 9.0, Apache 2.2, MySQL 5.5, PHP 5.4 и phpMyAdmin 3.5.

ОГЛАВЛЕНИЕ

Установка web-сервера Apache

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

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

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

Последние штрихи

МЕЛОЧИ

Мелочь №1: Сброс забытого пароля пользователя root для MySQL

Установка web-сервера Apache

Здесь всё про: главное – установить поддержку MySQL в конфигурации порта:

$ cd /usr/ports/www/apache22

$ make install clean

В файл /etc/rc.conf прописываем для автозапуска:

apache22_enable=”YES”

В конфигурационный файл /usr/local/etc/apache22/httpd.conf прописываем имя сервера и адрес админа:

ServerAdmin admin@mydomain.su

ServerName mydomain.su:80

В файл конфигурации загрузчика /boot/loader.conf добавляем строку:

accf_http_load=”YES”

Запускаем наш Apache:

$ apachectl start

Если ошибок не появилось, значит всё нормально и сервер запустился.

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

Устанавливаем MySQL:

$ cd /usr/ports/databases/mysql55-server/

$ make install clean

Создаём необходимые системные таблицы и устанавливаем права:

$ /usr/local/bin/mysql_install_db

$ chown -R mysql:mysql /var/db/mysql

Создаём файл логов и права на него:

$ touch /var/log/mysql.log

$ chown mysql:mysql /var/log/mysql.log

Добавляем в /etc/rc.conf строку автозапуска:

mysql_enable=”YES”

Запускам сервер MySQL:

$ /usr/local/etc/rc.d/mysql-server start

Задаём пароль администратора и делаем необходимые настройки безопасности (на более старых версиях MySQL для этого приходилось ставить отдельно порт скриптов, например, /usr/ports/databases/mysql51-scripts/):

$ cd /usr/local/ # (или /usr/local/bin)

$ mysql_secure_installation

Создаём конфигурационный файл /usr/local/etc/my.cfg с одним параметром (для начала):

[mysqld]

log = /var/log/mysql.log

Установка PHP

Ставил сам PHP, не забывая указать в конфигурации сборки поддержку MySQL и Apache:

$ cd /usr/ports/lang/php5/

$ make install clean

В конфигурационный файл Apache /usr/local/etc/apache22/httpd.conf добавляем параметр DirectoryIndex в блок <Directory />, чтобы получилось следующее:

<Directory />

    DirectoryIndex index.php index.html

    AllowOverride None

    Order deny,allow

    Deny from all

</Directory>

Теперь надо PHP “активировать” в Apache. Для этого добавим две строчки в /usr/local/etc/apache22/httpd.conf в блоке <IfModule mime_module>:

    AddType application/x-httpd-php .php

    AddType application/x-httpd-php-source .phps

Так же создадим файл cat /usr/local/etc/php.ini на основе /usr/local/etc/php.ini-production, удалив комментарии:

$ cat php.ini-production | grep -v “;” > php.ini

и добавим в него в блок [Date] параметр временной зоны:

[Date]

date.timezone = Europe/Moscow

Перезапустим Apache:

$ apachectl restart

Для проверки нормальных подключения и работы модуля поддержки PHP можно открыть в браузре по ссылке http://xxx.xxx.xxx.xxx/index.php предварительно созданный файл /usr/local/www/apache22/data/index.php следующего содержания:

<?php

    phpinfo( );

?>

Для работы phpMyAdmin ещё понадобятся расширения PHP (php5-extensions), но ставить их отдельно смысла особого нет: она будут установлены, как необходимая зависимость для phpMyAdmin.

Установка phpMyAdmin

Устанавливаем порт:

$ cd /usr/ports/databases/phpmyadmin/

$ make install clean

В конфигурационный файл Apache /usr/local/etc/apache22/httpd.conf добавляем:

Alias /phpmyadmin/ “/usr/local/www/phpMyAdmin/”

<Directory “/usr/local/www/phpMyAdmin/”>

DirectoryIndex index.php

Options none

AllowOverride Limit

Order Deny,Allow

Deny from all

Allow from 127.0.0.1 192.168.1.2 192.168.1.3   # Разрешаем только доверенным

</Directory>

Открываем конфигурационный файл /usr/local/www/phpMyAdmin/config.inc.php и прописываем следущее:

<?php

    $i = 0;

    $i++;

    $cfg[‘Servers’][$i][‘host’] = ‘localhost’;

    $cfg[‘Servers’][$i][‘extension’] = ‘mysqli’;

    $cfg[‘Servers’][$i][‘connect_type’] = ‘tcp’;

    $cfg[‘Servers’][$i][‘compress’] = false;

    $cfg[‘Servers’][$i][‘auth_type’] = ‘config’;

    $cfg[‘Servers’][$i][‘user’] = ‘root’;

    $cfg[‘Servers’][$i][‘password’] = ‘<пароль_root-а>’;

    $cfg[‘blowfish_secret’]=’gh7ThGrf6J’; // Любая фраза

?>

Заходим на страницу phpMyAdmin по ссылке:

http://<наш_сервер>/phpmyadmin/

Видим внизу надпись:

Дополнительные возможности phpMyAdmin не настроены в полной мере, некоторые функции были отключены. Для определения причины нажмите здесь.

И начинаем делать то, что написано в “здесь”.

Создадим необходимые таблицы указанным скриптом create_tables.sql и обновим созданные структуры скриптом upgrade_tables_mysql_4_1_2+.sql (т.к. у нас более новая версия MySQL сервера):

$ cd /usr/local/www/phpMyAdmin/examples

$ cat create_tables.sql upgrade_tables_mysql_4_1_2+.sql | mysql -u root -p

Переоткроем страницу phpMyAdmin, чтобы изменения считались (иногда требует перезапуска браузера: может не отображаться, например, пункт меню “Пользователи”).

Следующим шагом необходимо создать специального пользователя с именем “pma” и наделить его соответствующими правами, для чего нажмите “Privileges” (“Привилегии”), на открывшейся странице нажмите ссылку “Add a new User” (“Добавить нового пользователя”), в разделе “Login Information” (“Информация учетной записи”) заполните поля следующим образом:

User name (Имя пользователя): pma

Host (Хост): localhost

Password (Пароль): <пароль_для_pma>

Нажмите кнопку “Go” (“OK”).

На открывшейся странице, в разделе “Database-specific privileges” (“Привилегии уровня базы данных”) из ниспадающего меню “Add privileges on the following database:” (“Добавить привилегии на следующую базу”) выберите “phpmyadmin”. Откроется следующая страница, где в разделе “Databasespecific privileges” (“Привилегии уровня базы данных”), в блоке “Data” (“Данные”), поставьте галочки рядом с опциями: SELECT, INSERT, UPDATE, DELETE и нажмите “Go” (“OK”).

Снова открываем конфигурационный файл /usr/local/www/phpMyAdmin/config.inc.php и к ранее прописанному добавляем:

    $cfg[‘Servers’][$i][‘controlhost’] = ‘localhost’;

    $cfg[‘Servers’][$i][‘controluser’] = ‘pma’;

    $cfg[‘Servers’][$i][‘controlpass’] = ‘<пароль_для_pma>’;

    $cfg[‘Servers’][$i][‘pmadb’] = ‘phpmyadmin’;

    $cfg[‘Servers’][$i][‘bookmarktable’] = ‘pma_bookmark’;

    $cfg[‘Servers’][$i][‘relation’] = ‘pma_relation’;

    $cfg[‘Servers’][$i][‘table_info’] = ‘pma_table_info’;

    $cfg[‘Servers’][$i][‘table_coords’] = ‘pma_table_coords’;

    $cfg[‘Servers’][$i][‘pdf_pages’] = ‘pma_pdf_pages’;

    $cfg[‘Servers’][$i][‘column_info’] = ‘pma_column_info’;

    $cfg[‘Servers’][$i][‘history’] = ‘pma_history’;

    $cfg[‘Servers’][$i][‘tracking’] = ‘pma_tracking’;

    $cfg[‘Servers’][$i][‘designer_coords’] = ‘pma_designer_coords’;

    $cfg[‘Servers’][$i][‘userconfig’] = ‘pma_userconfig’;

    $cfg[‘Servers’][$i][‘recent’] = ‘pma_recent’;

    $cfg[‘Servers’][$i][‘table_uiprefs’] = ‘pma_table_uiprefs’;

И последнее: необходимо защитить этой конфигурационный файл от изменений:

$ chmod 640 config.inc.php

и запретить к нему достуа по web, создав в каталоге /usr/local/www/phpMyAdmin файл .htaccess с таким содержимым:

order deny,allow         # разрешение доступа только с указанных IP

deny from all

allow from 192.168.1.2 192.168.1.3

<Files config.inc.php>   # запрет доступа к config.inc.php

    order deny,allow

    deny from all

</Files>

Всё, настройка (базовая) закончена: переоткрыв страницу с phpMyAdmin (или перезапустив браузер) получаем полный доступ. Правда, чтобы получить некоторые дополнительные возможности программы придётся ещё немного его настроить.

Последние штрихи

Чтобы не засорять систему, для логов Apache и MySQL настроим ежедневную ротацию с глубиной хранения 31 день, добавив в файл /etc/newsyslog.conf три строчки:

/var/log/httpd-access.log               640  31    *    @T00  C

/var/log/httpd-error.log                640  31    *    @T00  C

/var/log/mysql.log                      640  31    *    @T00  C

МЕЛОЧИ

Мелочь №1: Сброс забытого пароля пользователя root для MySQL

Остановим MySQL сервер:

$ /usr/local/etc/rc.d/mysql-server stop

Stopping mysql.

Waiting for PIDS: 1022.

Запустим сервер MySQL, но уже в “защищённом режиме”:

$ mysqld_safe –skip-grant-tables –user=root &

Войдём под пользователей root, но без пароля:

$ mysql -u root

mysql> use mysql;

mysql> update user set password=PASSWORD(“<новый_пароль>”)

       where User=’root’;

mysql> flush privileges;

mysql> quit

Остановим сервер MySQL:

$ /usr/usr/local/etc/rc.d/mysql-server stop

mysql not running? (check /var/db/mysql/fbsd9zfs.homed.local.pid).

Запустим сервер MySQL в обычном режиме:

$ /usr/local/etc/rc.d/mysql-server start

Starting mysql.

и проверим наш новый пароль:

$ mysql -u root -p

Enter password: 

mysql> quit

Полезное: ссылка1, ссылка2, ссылка3.