Установка 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.