Максим Гришков
Настраиваем связку Apache + PHP + MySQL
на базе ОС OpenBSD 4.3
Предположим, у вас возникла необходимость в развертывании веб-сервера с поддержкой PHP и MySQL. Данную задачу просто решить, имея под рукой свежий дистрибутив ОС OpenBSD 4.3, поскольку базовая установка данной ОС уже содержит настроенный и готовый к работе веб-сервер Apache версии 1.3. Остается только прикрутить к нему PHP и MySQL.
Статья была задумана как пошаговое руководство, но вместе с тем не является единственно правильным решением данной задачи.
Установка СУБД MySQL
Устанавливаем пакет mysql-server:
# pkg_add -v mysql-server
parsing mysql-server-5.0.51a
<--- --->
mysql-server-5.0.51a: complete
--- mysql-server-5.0.51a -------------------
You can find detailed instructions on how to install a database
in /usr/local/share/doc/mysql/README.OpenBSD.
Using MySQL in an OpenBSD environment
If you are installing MySQL for the first time, you have to create
a default database first. In order to create the database, please run
/usr/local/bin/mysql_install_db
|
Следуя совету, создаем системные таблицы в служебной БД:
# /usr/local/bin/mysql_install_db
Installing MySQL system tables...
OK
Filling help tables...
OK
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/local/bin/mysqladmin -u root password 'new-password'
/usr/local/bin/mysqladmin -u root -h bsd.my.domain password 'new-password'
Alternatively you can run:
/usr/local/bin/mysql_secure_installation
|
Настраиваем безопасность с помощью скрипта mysql_secure_installation, для этого запускаем СУБД:
# /usr/local/bin/mysqld_safe &
Запускаем скрипт настройки безопасности:
# /usr/local/bin/mysql_secure_installation
Вводим пустой пароль пользователя root:
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
|
Соглашаемся установить пароль для пользователя root и вводим пароль:
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
|
Удаляем анонимного пользователя:
Remove anonymous users? [Y/n] y
... Success! |
Соглашаемся, что пользователю root можно заходить только с localhost:
Disallow root login remotely? [Y/n] y
... Success!
|
Удаляем тестовую БД:
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
|
Соглашаемся перезагрузить таблицу привилегий, для того чтобы изменения вступили в силу:
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
|
Настройка безопасности закончена.
Поскольку в OpenBSD Аpache сконфигурирован для работы в chroot-окружении в директории /var/www, а сокет MySQL находится по адресу /var/run/mysql/mysql.sock, возникает проблема – Apache «не видит» директорию /var/run и сокет MySQL.
Решить проблему можно, создав жесткую ссылку на файл MySQL сокета mysql.sock:
# mkdir -p /var/www/var/run/mysql
# ln -f /var/run/mysql/mysql.sock
/var/www/var/run/mysql/mysql.sock
Для того чтобы активировать запуск СУБД MySQL во время загрузки, необходимо добавить следующую строчку в файл /etc/rc.conf.local:
mysqld=YES
После этого добавляем скрипт для запуска mysqld в файл /etc/rc.local после строки «starting local daemons» перед строкой «echo '.'»:
if [ X"${mysqld}" == X"YES" -a -x /usr/local/bin/mysqld_safe ]; then
echo -n " mysqld"; /usr/local/bin/mysqld_safe --user=_mysql --log --open-files-limit=256 &
for i in 1 2 3 4 5 6; do
if [ -S /var/run/mysql/mysql.sock ]; then
break
else
sleep 1
echo -n "."
fi
done
#
# Создаем MySQL-сокет в chroot-окружении Apache
mkdir -p /var/www/var/run/mysql
sleep 2
ln -f /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock
fi
Установка и настройка СУБД MySQL закончена.
Установка PHP
# pkg_add -v php5-core
<--- --->
php5-core-5.2.5p2: complete
--- php5-core-5.2.5p2 -------------------
To enable the php5 module please create a symbolic
link from /var/www/conf/modules.sample/php5.conf
to /var/www/conf/modules/php5.conf.
ln -s /var/www/conf/modules.sample/php5.conf /var/www/conf/modules
The recommended php configuration has been installed
to /var/www/conf/php.ini.
Don't forget that the default OpenBSD httpd is chrooted
into /var/www by default, so you may need to create support
directories such as /var/www/tmp for PHP to work correctly.
|
Следуя полученным советам, активируем модуль php5 путем создания символической ссылки:
# ln -s /var/www/conf/modules.sample/php5.conf /var/www/conf/modules
А также создаем директорию /var/www/tmp, принадлежащую пользователю www из группы www (apache), необходимую для корректной работы РНР в chroot-окружении:
#mkdir /var/www/tmp
#chown www:www /var/www/tmp
Устанавливаем модуль php5-mysql
# pkg_add -v php5-mysql
<--- --->
php5-mysql-5.2.5: complete
--- php5-mysql-5.2.5 -------------------
You can enable this module by creating a symbolic
link from /var/www/conf/php5.sample/mysql.ini to
/var/www/conf/php5/mysql.ini.
ln -fs /var/www/conf/php5.sample/mysql.ini /var/www/conf/php5/mysql.ini
|
Следуя полученному совету, активируем модуль php5-mysql путем создания символической ссылки:
# ln -fs /var/www/conf/php5.sample/mysql.ini /var/www/conf/php5/mysql.ini
Замечание: почему-то был создан пустой файл /var/www/conf/php5.sample/mysql.ini, исправим это:
cat extension=mysql.so > /var/www/conf/php5.sample/mysql.ini
Добавляем другие необходимые модули РНР, например, MCRYPT, GD, MHASH:
# pkg_add -v php5-mcrypt
<--- --->
php5-mcrypt-5.2.5: complete
--- php5-mcrypt-5.2.5 -------------------
You can enable this module by creating a symbolic
link from /var/www/conf/php5.sample/mcrypt.ini to
/var/www/conf/php5/mcrypt.ini.
ln -fs /var/www/conf/php5.sample/mcrypt.ini /var/www/conf/php5/mcrypt.ini
|
Активируем модуль php5-mcrypt путем создания символической ссылки:
# ln -fs /var/www/conf/php5.sample/mcrypt.ini /var/www/conf/php5/mcrypt.ini
Устанавливаем модуль php5-mhash:
# pkg_add -v php5-mhash
Далее аналогично php5-mcrypt.
Замечание: если во время установки системы вы не устанавливали компонент xbase43.tgz (базовая установка X11), то необходимо устанавливать пакет php5-gd-5.2.5-no_x11, в остальных случаях – php5-gd-5.2.5. Делается это при помощи параметра -i утилиты pkg_add:
# /usr/local/bin/mysql_install_db
Ambiguous: choose package for php5-gd
0: <None>
1: php5-gd-5.2.5
2: php5-gd-5.2.5-no_x11 |
Вводим с клавиатуры «2» и жмем клавишу <Enter>.
Далее аналогично php5-mcrypt.
Настройка автозапуска Apache
Для того чтобы активировать запуск веб-сервера Apache во время загрузки, необходимо изменить значение флага httpd_flags в файле /etc/rc.conf.local:
httpd_flags=""
# for normal use: "" (or "-DSSL" after reading ssl(8))
Заключение
Потратив в результате выполнения вышеперечисленных несложных операций около 15 минут времени, имеем рабочую связку Apache+PHP+MySQL. Преимуществами такого подхода являются простота реализации, изначальная ориентированность ОС на обеспечение наивысшего уровня безопасности, а недостатком, на мой взгляд, не самая свежая версия веб-сервера Apache.
Удачи!
Приложение
OpenBSD
В мае этого года команда разработчиков OpenBSD объявила о выходе очередного релиза этой операционной системы под номером 4.3 (подробности см. на стр. 28-30). Операционная система OpenBSD берет начало от программной платформы Berkeley Software Distribution (BSD), разрабатывавшейся специалистами Калифорнийского университета в Беркли. Проект OpenBSD был основан Тео де Раадтом, одним из главных разработчиков NetBSD. В конце 1995 года в результате раскола в команде NetBSD Раадт был вынужден прекратить работы над этой операционной системой и заняться собственным делом. Основное внимание при разработке OpenBSD уделяется безопасности. Участники проекта подчеркивают, что за более чем десятилетнюю историю OpenBSD в базовых версиях операционной системы были выявлены только две уязвимости, допускающие удаленную эксплуатацию.
- Вышла операционная система OpenBSD 4.3 – http://www.astera.ru/software/?id=57346.
- How-to: OpenBSD 3.8+Apache+PHP+MySQL – http://www.freeyourbox.org/tutorials/bsd/obsd3.8_apache_php_mysql.html.
- Установка OpenBSD 4.2 – http://www.lissyara.su/?id=1589.
- Package Management – http://www.openbsd.org/faq/faq15.html.