Установка и настройка Apache + MySQL-Server + PHP5 в OpenBSD

Чегото захотелось мне посмотреть как будет работать Drupal на OpenBSD. Даже незнаю с чего бы это … но всеже! Захотелось так захотелось. Темболее что задача нетакая уж сложная 🙂  Итак, вперед в консоль и с песней в колонках!

Для начала надо настроить apache потом php5, потом mysql-server ну и потом уже поставить Drupal на всю эту связку.

Начнем сначала:

apache — версия 1.3 поставляется с OpenBSD по дефолту, тоесть в системе он уже есть, надо только уговорить его запускаться. Для этого добавляем запись такого вида в /etc/rc.conf.local:

root@openek:~# echo 'httpd_flags=""' >> /etc/rc.conf.local
root@openek:~#

Все! При следующей загрузке у нас стартонет apache автоматом. Имейте также в виду что по умолчанию он будет chroot-иться в /var/www — не забывайте что мы попали в консоль системы где все секюрно от рождения. Главное не нарушить гармонию безопасности этого точно слаженного организма своими шальными рученками 😉 . Едем дальше!

php5 — можно поставить из пакетов или собрать самому. Машинка мне для экспериментов перепала неособо шустрая — поэтому решил ставить из пакетов (чтобы полдня не ждать пока соберется 🙂 ) Сделал вот так:

root@openek:~# pkg_add php5-core

В ответ на это через минуту получил ответ что мол пакет установлен, а для того чтобы php5 заработал в apache2 надо создать такой вот симлинк (я сделал именно так):

root@openek:~# ln -sf /var/www/conf/modules.sample/php5.conf /var/www/conf/modules/php5.conf

Учитывая что apache у нас работает в chroot /var/www и то что для работы с upload фалами PHP нужна директория tmp нужно ее создать. Делается очень просто:

root@openek:~# mkdir /var/www/tmp

И роздаем права 777 на нее:

root@openek:~# chmod 777 /var/www/tmp

В итоге после перезагрузки получил работающие apache и php5 🙂 В чем убедился используя простенький php скриптик который сделал вот так:

root@openek:~# echo '<?php phpinfo(); ?>' > /var/www/htdocs/test.php

После чего перешел браузером lynx по ссылке http://127.0.0.1/test.php вот так:

root@openek:~# lynx http://127.0.0.1/test.php

и увидел кучу инфы про php и apache. Короче работает! Совсем же просто 🙂 Аж поражает 😀

Дальше занялся базой данных.

mysql-server — поставил тоже из пакетов командочкой:

root@openek:~# pkg_add -v -i mysql-server

Рекомендации о том что делать после установки даны в файле /usr/local/share/doc/mysql/README.OpenBSD

Я не особый спец по части баз данных — поэтому сделал как там написано. Сначала утсановил дефолтную базу выполнив:

root@openek:~# /usr/local/bin/mysql_install_db

После этого рекомендуют настроить mysql — и главный конфиг для этого дела /etc/my.cnf Я там особо ничего не трогал — только поправил чтобы mysqld слушал подключения на 127.0.0.1 и путь к сокету 🙂
Важно!!!
Если хотим чтобы apache так и запускался в chroot /var/www то нужно изменить путь к сокету mysql-server (не исключаю возможность отделаться sym/hard линком — но у меня этот трюк не получился).
Для этого исправил вот этот кусочек в файле /etc/my.cnf :

# The MySQL server
[mysqld]
port            = 3306
socket          = /var/run/mysql/mysql.sock

на вот такое …. точнее добавил четкое указание где слушать подключения (bind-address) и поменял путь к сокету для того чтобы apache мог спокойно работать в chroot напару с mysql-server

# The MySQL server
[mysqld]
bind-address  = 127.0.0.1
port          = 3306
socket        = /var/www/var/run/mysql/mysql.sock

Дальше (опять же все по доке) добавил в конец файла /etc/login.conf такие строчки:

mysql:\
    :openfiles-cur=1024:\
    :openfiles-max=2048:\
    :tc=daemon:

После этого выполнил от рута:

root@openek:~# cap_mkdb /etc/login.conf

И, наконец, добавил такие строчки в /etc/rc.local для автозапуска mysql-server при загрузке системы:

if [ -x /usr/local/bin/mysqld_safe ] ; then
 su -c mysql root -c '/usr/local/bin/mysqld_safe > /dev/null 2>&1 &'
 echo -n ' mysql-server'
fi

Ну и для того чтобы связать php5 и MySQL конечно же нужен пакетик php5-mysql. Ставим из пакетов:

root@openek:~# pkg_add -v -i php5-mysql
parsing php5-mysql-5.2.10
Dependencies for php5-mysql-5.2.10 resolve to: mysql-client-5.0.83, php5-core-5.2.10
found libspec lib/mysql/mysqlclient.19.0 in package mysql-client-5.0.83
found libspec m.5.0 in /usr/lib
found libspec stdc++.47.0 in /usr/lib
php5-mysql-5.2.10: complete
--- php5-mysql-5.2.10 -------------------
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

root@openek:~#

И для того чтобы заставить работать php5-mysql делаем как нас просят:

root@openek:~# ln -fs /var/www/conf/php5.sample/mysql.ini /var/www/conf/php5/mysql.ini

После этого я перезагрузил машинку командой

root@openek:~# shutdown -r now

Ну вот связка Apache + PHP5 + MySQL готова принимать мой любимый CMS Drupal 🙂

В процессе установки Drupal-овский интсаллер порекомендовал поставить еще и php5-mbstring. Опять же поставил без особых трудностей из пакетов. Вот так:

root@openek:~# pkg_add -v -i php5-mbstring

Потом сделал симлинк для того чтобы включить модуль в PHP5

root@openek:~# ln -fs /var/www/conf/php5.sample/mbstring.ini /var/www/conf/php5/mbstring.ini

И наконец, перегрузил apache для того чтобы применить изминения 🙂

root@openek:~# apachectl restart

Дальше можно просто устанавливать Drupal. Как это делается — прекрасно описано в INSTALL.txt файле который есть в архиве с Drupal — такчто розписывать установку самомго CMS — нету смысла.

P.S. Данная статья сгодится также любому кто захочет подготовить сервер к установке таких web-движков как WordPress, Joomla, DLE и тд.

Дерзайте! Всем удачи 🙂

    • nerve
    • Октябрь 18th, 2010 3:30пп

    без
    #chown _mysql:_mysql /var/www/var/run/mysql
    не работает

    • admin
    • Октябрь 21st, 2010 2:56пп

    Не припоминаю чтобы делал такое 🙁 И все работает досих пор 🙂

  1. Трэкбэков пока нет.

Why ask?