Собираем виртуалку с phpdaemon'ном на Ubuntu 10.10

Вступление


Добрый день, всем читателям Хабры. Я бы хотел рассказать всем вам очень простой и быстрый способ собрать виртуалочку с пхп-демоном и при этом не перенапрячь свой отдыхающий и празднующий мозг. Зачастую на рабочих или домашних компьютерах по тем или иным, религиозным или политическим причинам установлен Windows. Ставить на него php или nginx дело неблагодарное и уж если есть необходимость работать с phpdaemon'ом то вариантов и вовсе не остается. Необходима nix система.

В данной статье не рассматриваются вопросы почему я выбрал Ubuntu, а не Debian, зачем использовать phpdaemon а не php-fpm и т.п. Возможно, что кому-то придется столкнуться с подобной проблемой и если эта статья позволит Вам сэкономить драгоценное время и провести его с семьей или за работой — значит моя задача выполнена успешно.

Поехали!


  • 1. Ставим на нашу систему VirtualBox, думаю тут проблем ни у кого не возникнет (качать тут).
  • 2. Скачиваем свеженький образ Ubuntu (выбираем тут)
  • 3. В VirtualBox создаем виртуалку для Ubuntu и ставим туда систему

Итак, первоначальный этап завершен, к этому моменту у нас на компьютере должен быть VirtualBox c виртуалкой Ubuntu 10.10.

Небольшой тюнинг Ubuntu


Мне в работе совершенно не нужен Гном, поэтому можно отключить графическую оболочку Ubuntu, дабы она не кушала ресурсы нашего компьютера. Наверняка существует множество способов это сделать, я воспользовался таким:

sudo nano /etc/init/gdm.conf

далее комментируем строчки

#start on (filesystem
# and started hal
# and tty-device-added KERNEL=tty7
# and (graphics-device-added or stopped udevtrigger))


CTRL + O сохранит изменения в файле. CTRL + X выйдет из него.

После перезагрузки виртуалной машины Гном не стартанет. Но при желании его можно запустить командой startx.

Следующим шагом разумно задать пароль для рута, чтобы каждый раз не пользоваться sudo.

sudo passwd root

Ставим phpdaemon


Устанавливаем php, libevent и pear:
apt-get install php5-cli php5-dev
apt-get install libevent-dev
apt-get install php-pear


Теперь надо поставить 2 pecl-овских расширения. Ставиться по командам они откажутся, сославшись на отсутствие stable версий. Поэтому просто копируем ту ссылку, которую они сами предложат вместо название пакета.

pecl install libevent (pecl install channel://....)
pecl install proctitle (pecl install channel://....)


Ставим Git, он будет нужен для вытягивания свежего ранкита и пхпдемона.
apt-get install git-core

Вытягиваем, ставим и собиаем runkit.
cd /opt
git clone git://github.com/zenovich/runkit.git
cd runkit
phpize
./configure --enable-runkit --enable-modify
make
make install


Теперь сконфигурируем php:
nano /etc/php5/cli/conf.d/phpdaemon.ini

extension=/usr/lib/php5/20090626+lfs/libevent.so
extension=/usr/lib/php5/20090626+lfs/proctitle.so
extension=runkit.so
runkit.internal_override=1


Обратите внимание, что libevent.so и proctitle.so будут лежать там, где автоматом не найдутся, так что придется указать полный путь до soшек.

Теперь осталось только поставить сам phpdaemon:
cd /opt
git clone git://github.com/kakserpom/phpdaemon.git
ln -s /opt/phpdaemon/bin/phpdaemon /usr/bin/phpd


Симлинк был создан исключительно для удобства. Ну и осталось маленькая деталь — выставить права на выполнение.

chmod +x /opt/phpdaemon/bin/phpdaemon

Теперь можно попробовать стартануть демон.

phpd start
Демон скажет что-то вроде [PHPD] FastCGI up. Это означает что Вы не пропустили ни одной строчки и с точностью выполнили все указания. Мои поздравления.

Совершенству нет предела


В такой конфигурации не очень удобно работать, я предпочитаю общаться с серверами, пусть и виртуальными через putty. Для этой цели надо расшарить виртуалку в сеть. Самый простой способ это сделать:
Заходим в сетевые адаптеры нашей виртуальной машины и меняем тип подключения на сетевой мост с нашей реальной сетевой картой. Таким образом Виртуалка получит ip-адрес от Вашего dhcp сервера и к ней можно обращаться по вполне реальному ip адресу.

Посмотреть какой адрес выдался виртуалке можно командой:
ifconfig eth0

Для того чтобы заходить на виртуалку по ssh не забываем поставить openssh-server:
apt-get install openssh-server

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 11

    +1
    Недавно для runkit'а мантейнер ввел версионность и генерирует периодически downloads, так что runkit теперь тоже можно ставить прямо через pecl
    pecl install github.com/downloads/zenovich/runkit/runkit-1.0.2.tar

    ну и, по-моему, раз не нужен gui, то проще поставить ubuntu server :)

    для поклонников gentoo можно воспользоваться репозиторием github.com/silentroach/layman-phpdaemon, где уже все есть.
      0
      Про установку runkit через pecl не знал.
      А про gui, он может внезапно понадобится если потребуется что-то подебажить из под браузеров работающих прямо из убунты, так что я выбрал именно такой вариант. А вообще каждый волен поставить то что его душе угодно, я лишь предложил один из вариантов, но спасибо за конструктивный комментарий :)
      +2
      Зачем ставить ubuntu desctop и отключать загрузку Gnome, когда можно поставить ubuntu server?
        +1
        Как я уже ответил выше, может потребоваться дебажить что либо из под браузеров установленных прямо в убунте, так что иметь возможность включить gui для меня важно.
          0
          windows головного мозга привычка, видимо
            0
            упс, disregard that
          0
          «сетевой мост с нашей реальной сетевой картой. Таким образом Виртуалка получит ip-адрес от Вашего dhcp сервера и к ней можно обращаться по вполне реальному ip адресу»

          А вот не прокатывает сетевой мост в городских сетях, где провайдер IP-адрес пользователя привязывает к MAK-адресу сетевой карты. Не выдаёт он виртуалке IP.
          Поэтому надо использовать команды VirtualBox:

          VBoxManage setextradata «Ubuntu Server 10» «VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort» 2222
          VBoxManage setextradata «Ubuntu Server 10» «VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort» 22
          VBoxManage setextradata «Ubuntu Server 10» «VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol» TCP
            0
            Вы все правильно сказали, под локалкой я подразумевал сеть Вашего роутера или подобную. Кстати есть команда намного корче:
            VBoxManage modifyvm «VMNAME» --natpf1 «guestssh,tcp,127.0.0.1,2222,,22»
            0
            Можно же выбрать не сетевой мост, а виртуальный адаптер хоста, и тогда виртуалка будет в сети что-то вроде 192.168.56.х, а хост 192.168.56.1. А для доступа из-под виртуалки в интернет настроить второй адаптер как NAT
              0
              параметр конфига сборки runkit-а должен быть не --enable-modify, а --enable-runkit-modify (видимо изменился с момента публикации)

              И скрипт запуска демона теперь переименован — /opt/phpdaemon/phpd
                0
                Для тех, кто при попытке выполнить часть с pecl install libevent (pecl install channel://....)
                Получает сообщение:
                ...
                checking for libevent headers in default path... not found
                configure: error: Cannot find libevent headers
                ...

                Установите libevent-dev / libevent-devel

                Ubuntu: sudo apt-get install libevent-dev
                или
                CentOS: yum install libevent-devel

                Only users with full accounts can post comments. Log in, please.