В данном примере будет проводиться установка «классической» сборкиApache + mpm_prefork + mod_php.
Что такое MPM — можно почитать тут>>>.
Статья была обновлена 02.08.2012 (год после первой публикации:-)) — добавлено несколько полезных замечаний и уточнений.
Обновмляем коллекцию портов.
При первом обновлении необходимо выполнить следующие команды:
# portsnap fetch && portsnap extract
При последующих обновлениях:
# portsnap fetch update
Пример:
# cd /usr/ports/
# portsnap fetch && portsnap extract
Более подробно тут.
Перейдем непосредственно к установке LAMP.
Для начала — веб-сервер Apache:
# cd /usr/ports/www/apache22
# make install clean
В файле /usr/local/etc/apache22/httpd.conf находим строку:
#ServerName www.example.com:80
Раскомментируем, и заменим на имя хоста, например:
ServerName setevoy.kiev.ua:80
В строке:
ServerAdmin [email protected]
укажем свой почтовый ящик.
После установки запустим его:
# apachectl start
Проверим:
# /usr/local/etc/rc.d/apache22 onestatus
apache22 is running as pid 929.
Apache завелся — все нормально. Добавим его в автозапуск при старте сервера — в /etc/rc.confдобавим строку:
# apache22_enable=»YES»
Переходим к MySQL:
# cd /usr/ports/databases/mysql55-server
# make install clean
Запускаем сервер:
# /usr/local/etc/rc.d/mysql-server onestart
Проверяем:
# /usr/local/etc/rc.d/mysql-server onestatus
mysql is running as pid 1006.
Если ошибок не выдал — значит все нормально, добавляем его в автозапуск при старте сервера — в/etc/rc.conf добавим строку:
mysql_enable=»YES»
Устанавливаем пароль для пользователя root сервера MySQL:
# /usr/local/bin/mysqladmin -u root password ‘new-password’
где new-password — пароль.
Сразу же проверим, что все правильно указали:
# mysql -u root -p
Enter password:
…
mysql>
Все ОК.
В каталоге /usr/local/bin запускаем:
# mysql_secure_installation
Сначала — вводим пароль root:
Enter current password for root (enter for none):
Нам предложат не менять его:
You already have a root password set, so you can safely answer ‘n’.
Change the root password? [Y/n]
жмем n.
Далее — удаляем пользователя anonymous:
Remove anonymous users? [Y/n] Y
Запретить удаленное подключение пользователю root? У меня доступ из-вне вообще будет запрещен:
Disallow root login remotely? [Y/n] Y
Удалить базу test и доступ к ней?
Remove test database and access to it? [Y/n] Y
Обновить таблицу привилегий? Да.
Reload privilege tables now? [Y/n] Y
Thanks for using MySQL!
При желании — можете сразу настроить логгирование. Для этого создадим собственный файл конфигурации, взяв уже готовый:
# cp /var/db/mysql/my-medium.cnf /etc/my.cnf
И в нём, в блоке [mysqld] добавим строку:
log = /var/log/mysql.log
Обратите внимание, что в каталоге /var/db/mysql/ лежат несколько готовых файлов для серверов с разным уровнем предполагаемой нагрузки:
-rw-r—r— 1 root wheel 4675 Apr 8 11:03 my-huge.cnf
-rw-r—r— 1 root wheel 4649 Apr 8 11:03 my-large.cnf
-rw-r—r— 1 root wheel 4660 Apr 8 11:03 my-medium.cnf
-rw-r—r— 1 root wheel 2824 Apr 8 11:03 my-small.cnf
Создадим сам лог-файл:
# touch /var/log/mysql.log
Установим пользователя:
chown mysql:mysql /var/log/mysql.log
Перезапустим MySQL:
# /usr/local/etc/rc.d/mysql-server restart
Stopping mysql.
Waiting for PIDS: 39932.
Starting mysql.
И посмотрим лог:
# cat /var/log/mysql.log
/usr/local/libexec/mysqld, Version: 5.5.25-log (Source distribution). started with:
Tcp port: 0 Unix socket: (null)
Time Id Command Argument
На этом настройка MySQL завершена.
Далее устанавливаем РНР.
ВАЖНО: обратите внимание на версию — на момент написания статьи актуальной была 5.2, поэтому порт — php52!:
# cd /usr/ports/lang/php52
# make install clean
ВАЖНО: установка пакетом, через
# pkg_add -r php52
в этом варианте не подойдет, т.к. РНР установится без модуля для Apache.
Во время установки отметьте для установки модуль Apache:
│ │ [*] APACHE Build Apache module │ │
Устанавливаем расширения РНР :
# cd /usr/ports/lang/php52-extensions/
# make install clean
В окне первом конфигурирования не забываем установить:
| │ [*] MYSQL MySQL database support │ │
│ │ [*] MYSQLI MySQLi database support │ │
Редактируем файл конфигурации Apache:
# ee /usr/local/etc/apache22/httpd.conf
находим строки с надписями AddType и дописываем туда:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Далее находим:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
И меняем их на:
<IfModule dir_module>
DirectoryIndex index.html index.shtml index.htm index.php
</IfModule>
Для проверки — создадим файл index.php:
# ee /usr/local/www/apache22/data/index.php
В него вставим строки:
<?php
phpinfo( );
?>
Удалим index.html:
# rm /usr/local/www/apache22/data/index.html
И пробуем через браузер открыть страничку, например:
В результате — должна открыться страница с описанием конфигурации Apache и PHP. Если вместо этого предлагает сохранить файл, или открывается страница с кодом — что-то сделано не так, проверяйте.
Перезапускаем Apache:
# apachectl restart
В целях безопасности — не рекомендуется оставлять файл index.php в таком виде в открытом доступе.
Если все прошло нормально — можно почти расслабиться. Остался последний пункт.
Установка phpMyAdmin:
# cd /usr/ports/databases/phpmyadmin
# make install clean
После установки он выдаст нам сообщение примерно такого плана:
phpMyAdmin-3.4.3.2 has been installed into:
/usr/local/www/phpMyAdmin
Please edit config.inc.php to suit your needs.
To make phpMyAdmin available through your web site, I suggest
that you add something like the following to httpd.conf:
Alias /phpmyadmin/ «/usr/local/www/phpMyAdmin/»
<Directory «/usr/local/www/phpMyAdmin/»>
Options none
AllowOverride Limit
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 .example.com
</Directory>
Опять открываем httpd.conf для редактирования:
# ee /usr/local/etc/apache22/httpd.conf
и добавляем туда alias и настройки для доступа к phpMyAdmin из браузера.
Alias /phpmyadmin/ «/usr/local/www/phpMyAdmin/»
<Directory «/usr/local/www/phpMyAdmin/»>
Options none
AllowOverride Limit
Order Allow,Deny
Allow from all
</Directory>
В указанном выше примере — доступ к phpMyAdmin разрешен с любого адреса. Что бы разрешить доступ только с определнных IP — указываем так:
<Directory «/usr/local/www/phpMyAdmin/»>
Options none
AllowOverride Limit
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 192.168.0.2 [перечисляем IP через пробел]
</Directory>
Ещё раз перезагрузим Apache:
# apachectl restart
Теперь переходим на страницу http://ваш_домен/phpmyadmin/setup/и видим предложение провести конфигурирование phpMyAdmin для работы с нашим сервером MySQL. В принципе, можно поступить проще — вручную отредактировать файл /usr/local/www/phpMyAdmin/config.inc.php, а можно посмотреть что предлагает сам phpMyAdmin.
Перейдем в каталог с установленным phpMyAdmin:
# cd /usr/local/www/phpMyAdmin/
Создадим каталог config:
# mkdir config
Дадим права всем на запись в каталог:
# chmod 777 config
Скопируем в него файл конфигурации
# cp config.inc.php config
Установим права на запись всем на этот файл:
# chmod 777 config/config.inc.php
Переходим на страницу http://ваш_домен/phpmyadmin/setup/ и проводим установку. Тут для каждого поля есть подсказки — так что проблем не возникло.
Вкратце — нажимаем кнопку «Новый сервер«, во вкладке Идентификация выбираем тип авторизации (у меня cookie), внизу нажимаем «Сохранить«, и возвращаемся на предыдщую страницу, где внизу ещё раз нажимаем «Сохранить» — теперь конфигурация сохранена в файл /config/config.inc.php.
Перемещаем файл конфигурации назад, в каталог phpMyAdmin:
# mv config/config.inc.php .
Меняем права доступа:
# chmod 640 config.inc.php
Если после изменения прав доступа в phpMyAdmin появляется ошибка:
Existing configuration file (./config.inc.php) is not readable.
то проверяем владельцев файла config.inc.php в каталоге /usr/local/www/phpMyAdmin:
# ls -la | grep config.inc.php
-rw-r—— 1 root wheel 759 Aug 2 21:16 config.inc.php
-rw-r—— 1 root www 374 Aug 2 21:15 config.inc.php.sample
Меняем группу:
# chgrp www config.inc.php
и перезагружаем страницу с phpMyAdmin.
Удаляем каталог:
# rm -rf config
Переходим на страницу http://ваш_домен/phpmyadmin/, вводим логин-пароль — профит!
Содержимое файла конфигурации у меня получилось таким:
<?php
/*
* Generated configuration file
* Generated by: phpMyAdmin 3.4.3.2 setup script
* Date: Tue, 16 Aug 2011 19:28:05 +0000
*/
/* Servers configuration */
$i = 0;
/* Server: localhost [1] */
$i++;
$cfg[‘Servers’][$i][‘verbose’] = »;
$cfg[‘Servers’][$i][‘host’] = ‘localhost’;
$cfg[‘Servers’][$i][‘port’] = »;
$cfg[‘Servers’][$i][‘socket’] = »;
$cfg[‘Servers’][$i][‘connect_type’] = ‘tcp’;
$cfg[‘Servers’][$i][‘extension’] = ‘mysqli’;
$cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’;
$cfg[‘Servers’][$i][‘user’] = ‘root’;
$cfg[‘Servers’][$i][‘password’] = ‘passwd‘;
/* End of servers configuration */
$cfg[‘blowfish_secret’] = ‘циферки_буковки‘;
$cfg[‘DefaultLang’] = ‘en’;
$cfg[‘ServerDefault’] = 1;
$cfg[‘UploadDir’] = »;
$cfg[‘SaveDir’] = »;
?>
Собственно, на этом — все. Можно перезапустить сервер, что бы проверить все ли нормально поднимется при перезагрузке:
# reboot
или
# shutdown -r now
P.S. Многие ругают phpMyAdmin за его «дырявость», поэтому как альтернативу можно попробовать такую утилиту как MySQL GUI Tools.