Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: [HOWTO] Рабочее место PHP-developer (Ubuntu+FreeBSD+Apache+MySQL+PHP)  (Прочитано 4398 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bogong

  • Автор темы
  • Участник
  • *
  • Сообщений: 214
    • Просмотр профиля
Данная статья рассчитана на тех кто переходит с Windows на Linux и тратит огромное количество времени на подбор решений. Занимаюсь внедрением Ubuntu в различных организациях, и практически каждый день сталкиваюсь с нехваткой комплексных решений ... Данная статья не является единственно верным решением. Это то на чем я остановился после 4 месяцев экспериментов. Дополнения, замечания, комментарии принимаются с большим удовольствием, желательно по существу ... Готов к саморазвитию и самопознанию ...

Задача: нужно было сделать рабочее место PHP-developera с полной эмуляцией удаленного сервера на FreeBSD (почему не использовать LAMP на Ubuntu??? - не всегда это корректно, т.к. при тонкой настройке проектов может выползти много проблем из небольшого отличия LInux и FreeBSD, а проект будет крутиться в конечном итоге на FreeBSD ... Хотя это дело вкуса, на вкус и цвет - виноват сам.)

Описание используемого софта:
Ubuntu 10.4.2 LTS - взято из-за длительности официальной поддержки
Oracle VM VirtualBox - взято с официального сайта последняя версия, на данный момент 4.0.10, т.к. в репозитории почему-то гораздо более поздняя версия
Oracle VM VirtualBox Extension Pack - взято там же
NetBeans 7.0 - взято с официального сайта, по причине той же - в репозитории более поздняя.
(Кроме NetBeans кроме можно использовать: Aptana http://www.aptana.com/, Eclipse http://www.eclipse.org/, ZendStudio http://www.zend.com/en/products/studio/)
FreeBSD 7.2 - опять же с официального сайта
Apache+MySQL+PHP - из ports во FreeBSD

Итак поехали ...

1. Получение и установка Ubuntu.
На этом пункте, останавливать не буду. Очень много информации по этому есть на данном сайте. У каждого своя метода.

2. Установка VirtualBox.
Скачиваете deb-пакет в зависимости от вашей системы http://www.virtualbox.org/wiki/Linux_Downloads и устанавливаете его, там же скачиваете Extension Pack (особенно нужен при работе с USB 2.0). Скачивание можно производить либо через броузер, либо командой в терминале wget http://download.virtualbox.org/virtualbox/4.0.10/virtualbox-4.0_4.0.10-72479~Ubuntu~lucid_i386.deb для основного пакета и для расширения wget http://download.virtualbox.org/virtualbox/4.0.10/Oracle_VM_VirtualBox_Extension_Pack-4.0.10-72436.vbox-extpack. Внимание!!! Данные ссылки для Ubuntu 10.04.2 LTS i386, если у вас другая ОС выбирайте другой дистрибутив. Дополнительных "рукоблудных" настроек данный пакет не потребовал.
3.Установка NetBeans
Скачиваете дистрибутив с официального сайта http://netbeans.org/downloads/index.html, выбираете необходимый вам. Запускаете менеджер пакетов Synaptic (Система > Администрирование > Менеджер пакетов Synaptic), в поиске вводите слово netbeans, он вам выдаст пакет только более старой версии. Отмечаете установить. После этого он автоматом потянет все что необходимо для него. После того как все отмечено автоматически, снимаете отметку установки с самого пакета NetBeans, т.к. он более поздней версии из репозитория. Устанавливаете все что было притянуто. Данный изврат был необходим чтоб сократить время на конфигурационные действия связанный со связанными пакетами. После того как все зависимое было установлено, меняете в свойствах скачанного файла атрибут исполнения - делаете его исполняемым, и запускаете его. Я это делал через нажатие правой кнопки в Nautilus. Он благополучно устанавливается. Запускаете NetBeans и скачиваете все необходимые плагины PHP через меню Сервис >> Подключаемые модули.
4. Установка FreeBSD во VirtualBox
На данном моменте останавливаться тоже сильно не буду, уж очень много информации об этом на различных сайтах. Перед установкой у меня было включено в разделе сеть, для виртуальной машины два сетевых интерфейса:

Адаптер 1 (для независимой эмуляции удаленного сервера):
Intel PRO/1000 T Server (Виртуальный адаптер хоста, 'vboxnet0')
Адаптер 2 (для выхота в интернет):
Intel PRO/1000 T Server (NAT)

Сделано было так чтоб проще было настраивать firewall. При необходимости просто включается/выключается интерфейс который смотрит наружу, а правила firewall остаются неизменными.
И обязательно включить NFS-client, все это делается в режиме стандартной инсталляции.

5. Настройка сети для VirtualBox и FreeBSD.
Запускаете виртуальную машину FreeBSD. Запускаете терминал в Ubuntu и пишете одну из команд: ifconfig или ip addr show .

В первом случае (ifconfig) листинг будет таким (думаю понятно что он разнится от настроек вашего компьютера и сетевых интерфейсов):

eth0      Link encap:Ethernet  HWaddr 00:15:17:a3:07:40  
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::215:17ff:fea3:740/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:18468 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17082 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:14105124 (14.1 MB)  TX bytes:2394159 (2.3 MB)
          Память:c0a20000-c0a40000

eth1      Link encap:Ethernet  HWaddr 00:15:17:a3:07:41  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Память:c0a00000-c0a20000

lo        Link encap:Локальная петля (Loopback)  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:120 errors:0 dropped:0 overruns:0 frame:0
          TX packets:120 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:9812 (9.8 KB)  TX bytes:9812 (9.8 KB)

vboxnet0  Link encap:Ethernet  HWaddr 0a:00:27:00:00:00  
          inet addr:192.168.56.1  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:79 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:7380 (7.3 KB)


Во втором случае (ip addr show) таким:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 100
    link/ether 00:15:17:a3:07:40 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0
    inet6 fe80::215:17ff:fea3:740/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
    link/ether 00:15:17:a3:07:41 brd ff:ff:ff:ff:ff:ff
4: vboxnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc vboxnetflt state UNKNOWN qlen 1000
    link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.1/24 brd 192.168.56.255 scope global vboxnet0
    inet6 fe80::800:27ff:fe00:0/64 scope link
       valid_lft forever preferred_lft forever


В обоих случаях нас интересует только тот интерфейс который называется vboxnet0. Это тот ip-адрес  который потом нужен будет при настройках FreeBSD, в моем случае он 192.168.56.1. Данный адрес был выставлен автоматически дефолтными настройками VirtualBox-а. Кому не нравиться данный адрес можете это поменять в настройках VirtualBox-а. Как и где пока не разбирался, если кто знает напишите в личку, дополню данный пост.
После того как выяснили настройки сетевого интерфейса vboxusers0, заходим в консоль FreeBSD и пишем команд:

#sysinstall

после чего выскакивает незатейливое и не обремененное GUI меню, нас интересует раздел меню Configure >> Networking >> Interfaces >> em0 и em1
для настройки данных интерфейсов нам необходима информация о том какие сетевые интерфейсы были назначены и для чего при инсталяции FreeBSD в VirtualBox-е, это:

em0 Адаптер 1 (для независимой эмуляции удаленного сервера):
Intel PRO/1000 T Server (Виртуальный адаптер хоста, 'vboxnet0')
em1 Адаптер 2 (для выхота в интернет):
Intel PRO/1000 T Server (NAT)

для em0 прописываем 192.168.56.2, отключаем DHCP, для разработчика Apache c плавающим ip как-то странным будет
для em1 включаем DHCP и ipV6 ... и на этом заканчиваются все действия, пусть живет своей жизнью, он на самом деле нужен временно мне только на момент инсталляции, после был отключен в настройках VirtualBox-а. И тут все может еще зависеть от того кто у вас провайдер и как он вас подключает. Я был подключен через Ethernet (домашняя сеть).

после чего выходим из инсталлятора и проверяем содеянное командой в консоли FreeBSD:

#ifconfig

результат должен быть примерно таким:

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
   options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
   ether 08:00:27:54:b7:b5
   inet6 fe80::a00:27ff:fe54:b7b5%em0 prefixlen 64 scopeid 0x1
   inet 192.168.56.2 netmask 0xffffff00 broadcast 192.168.56.255
   media: Ethernet autoselect (1000baseTX <full-duplex>)
   status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
   options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
   ether 08:00:27:6e:a3:b1
   inet6 fe80::a00:27ff:fe6e:a3b1%em1 prefixlen 64 scopeid 0x2
   inet 10.0.3.15 netmask 0xffffff00 broadcast 10.0.3.255
   media: Ethernet autoselect (1000baseTX <full-duplex>)
   status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
   inet6 ::1 prefixlen 128
   inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
   inet 127.0.0.1 netmask 0xff000000

Для проверки можно пропинговать из FreeBSD (192.168.56.2) в Ubuntu (192.168.56.1) или наоборот, и ip адреса установлены для моих настроек, у вас они могут отличаться. #ping 192.168.56.1 или #ping 192.168.56.2. И так же для проверки какой-нибудь внешний адрес, я взял ya.ru и пинговал из FreeBSD

и результат данной команд примерно следующий:

#ping 192.168.56.2
PING 192.168.56.2 (192.168.56.2) 56(84) bytes of data.
64 bytes from 192.168.56.2: icmp_seq=1 ttl=64 time=10.9 ms
64 bytes from 192.168.56.2: icmp_seq=2 ttl=64 time=0.195 ms
64 bytes from 192.168.56.2: icmp_seq=3 ttl=64 time=0.194 ms
64 bytes from 192.168.56.2: icmp_seq=4 ttl=64 time=0.125 ms
64 bytes from 192.168.56.2: icmp_seq=5 ttl=64 time=0.187 ms
64 bytes from 192.168.56.2: icmp_seq=6 ttl=64 time=0.125 ms
^C
--- 192.168.56.2 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 4998ms
rtt min/avg/max/mdev = 0.125/1.964/10.962/4.024 ms

#ping ya.ru
PING ya.ru (77.88.21.3): 56 data bytes
64 bytes from 77.88.21.3: icmp_seq=0 ttl=63 time=64.835 ms
64 bytes from 77.88.21.3: icmp_seq=1 ttl=63 time=65.443 ms
64 bytes from 77.88.21.3: icmp_seq=2 ttl=63 time=65.515 ms

--- ya.ru ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 64.835/65.264/65.515/0.305 ms

То у вас все хорошо ... Можно двигаться дальше ...

Для любителей постучать по клавиатуре: присвоение свойств сетевым интерфейсам можно сделать и при помощи консоли но это более муторно ...

6. Установка FAMP (FreeBSD+Apache+MySQL+PHP)
Возвращаемся в консоль FreeBSD и начинаем с обновления ports. Это необходимо для того чтоб взято было все самое исправленное и свежее ...
Выполняем следующие команды:

#portsnap fetch && portsnap extract

для проверки правильности сделанного вводим команду:

#portsnap update

если результат такой:

Ports tree is already up to date.

Вы на верном пути и не забрели в дебри ...

Установка MySQL (я использовал версию 5.1, есть и более поздние и более ранние выбирайте сами в каталоге /usr/ports/databases). Для неё необходимо выполнить следующие комманды:

Непосредственно установка из ports
# cd /usr/ports/databases/mysql51-server
# make config && make install clean

Обновляем системные пути
# rehash
Устанавливаем начальные базы данных, необходимые для работы MySQL
# mysql_install_db --user=mysql
Устанавливаем конфиг
# cp /usr/local/share/mysql/my-medium.cnf /usr/local/etc/my.cnf
Включаем демона MySQL для запуска при загрузке
# echo 'mysql_enable="YES"' >> /etc/rc.conf
Стартуем MySQL
# /usr/local/etc/rc.d/mysql-server start

Установка Apache

Непосредственно установка из ports
# cd /usr/ports/www/apache22
Установка преконфигурации на инсталляцию, укажите включение модуля для MySQL
# make config
Инсталляция
# make install clean
Включаем демона Apache для запуска при загрузке
# echo 'apache22_enable="YES"' >> /etc/rc.conf

Установка PHP

Непосредственно установка PHP из ports
# cd /usr/ports/lang/php5
Установка преконфигурации на инсталляцию, укажите модуль к Apache
# make config
Инсталляция
# make install clean

Установка PHP-Extentions

Непосредственно установка PHP из ports
# cd /usr/ports/lang/php5-extensions
Установка преконфигурации на инсталляцию, выбирайте модули которые вам нужны
# make config
Инсталляция
# make install clean
Инсталляция конфигурации PHP
# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini

Дополнительно настраиваем Apache, для решение проблем связанных с PHP-Extensions

# echo '000.000.000.000  localhost localhost.hostname' >> /etc/hosts (000.000.000.000 - ip-адрес хоста и hostname - имя хоста)
# echo 'apache22_http_accept_enable="YES"' >> /etc/rc.conf

# ee /usr/local/etc/apache22/httpd.conf

правим в этом файле:
- закомментировать строку LoadModule unique_id_module libexec/apache22/mod_unique_id.so
- раскомментировать ServerName *:80

# ee /boot/default/loader.conf

правим в этом файле:
- в строчке accf_data_load="NO" меняем NO на YES
- в строчке accf_http_load="NO" меняем NO на YES

7. Настройка NFS
Она была сделана с целью обеспечить связку: Написал в Ubuntu >> Протестировал во FreeBSD >> закачал на удаленный сервер. Все реализовано на одном каталоге.
Выбрал папку, настроил Ubuntu NFS-Server для этой папки, настроил NFS-Client для FreeBSD, прописал в Apache VirtualHosts в этой папке, настроил cron для автоматической заливки написанного и протестированного. По данному пункту на этом сайте очень большое количество статей, останавливаться подробно не вижу необходимости. Во FreeBSD настраивается так же как и в Ubuntu через fstab

Вот пожалуй и все ...
В оконцовке делаем:

# reboot

Дожидаемся загрузки системы и возвращаемся в Ubuntu ...
Запускаем броузер и в строке пишем 192.168.56.2 и если вы увидели надпись "It Works" Значит Apache работает.

Вроде ничего не забыл ...


« Последнее редактирование: 16 Июля 2011, 16:12:29 от bogong »

Go0dWin

  • Гость
Re: [HOWTO] Рабочее место PHP-developer
« Ответ #1 : 11 Июля 2011, 04:09:29 »
bogong вы конечно молодец howto написали.
Но у меня возникает один вопрос -  и? в чем смысл данного howto?
все пункты которые вы собираетесь написать легко гуглятся.
вам нужен freebsd, мне допустим linux(не дай Бог сервер на windows будет)
значит нужно расширять статью
-> она превратится в монстра, которого никто не будет читать.

Оффлайн bogong

  • Автор темы
  • Участник
  • *
  • Сообщений: 214
    • Просмотр профиля
Re: [HOWTO] Рабочее место PHP-developer
« Ответ #2 : 11 Июля 2011, 04:12:17 »
bogong вы конечно молодец howto написали.
Но у меня возникает один вопрос -  и? в чем смысл данного howto?
все пункты которые вы собираетесь написать легко гуглятся.
вам нужен freebsd, мне допустим linux(не дай Бог сервер на windows будет)
значит нужно расширять статью
-> она превратится в монстра, которого никто не будет читать.


Статья еще не дописана я её еще пишу ..., а при переходе с Windows на Linux мне не хватало статей описывающих не детали а решение ... На тему всех и никого я бы не стал говорить ...

Go0dWin

  • Гость
Re: [HOWTO] Рабочее место PHP-developer
« Ответ #3 : 11 Июля 2011, 04:16:05 »
Цитировать
На тему всех и никого я бы не стал говорить ...
Данная фраза взрывает мой мозг.
Если целью статьи ставится систематизация своих знаний, то да она вполне имеет право на жизнь.

Оффлайн PeoneEr

  • Любитель
  • *
  • Сообщений: 91
  • О_О
    • Просмотр профиля
Я не пойму, зачем так усложнять жизнь?
Поднимать в виртуалбоксе фряху, там ставить связку apaceh2+mysql+php, когда все это можно сделать на локальной машине + прописать виртуальные хосты для этого? Все это делается в 5 минут.
Далее, выбор netbeans _имхо_ не оправдан. Зачем навязывать конкретно его? На мой взгляд netbeans - это возможность стрелять из танка по мухам. В этом пункте, опять же _имхо_ лучше указать перечень IDE и редакторов php.
И да, синаптик нынче не идет в стандартной комплектации, лучше бы описали тогда установку из ubuntu software center. И желательно со скриншотами.
« Последнее редактирование: 11 Июля 2011, 17:54:00 от PeoneEr »

Оффлайн bogong

  • Автор темы
  • Участник
  • *
  • Сообщений: 214
    • Просмотр профиля
Я не пойму, зачем так усложнять жизнь?
Поднимать в виртуалбоксе фряху, там ставить связку apaceh2+mysql+php, когда все это можно сделать на локальной машине + прописать виртуальные хосты для этого? Все это делается в 5 минут.
Далее, выбор netbeans _имхо_ не оправдан. Зачем навязывать конкретно его? На мой взгляд netbeans - это возможность стрелять из танка по мухам. В этом пункте, опять же _имхо_ лучше указать перечень IDE и редакторов php.
И да, синаптик нынче не идет в стандартной комплектации, лучше бы описали тогда установку из ubuntu software center. И желательно со скриншотами.

Я не навязываю ..., в начале статьи написано что это не единственный вариант ..., это тот вариант на котором остановился я ...
По поводу локальной машины - у меня нет лишних денег чтоб ставить еще одну машину ...
По поводу стрелять из танка по мухам ..., у меня задачи такие что танком бы справиться ...
« Последнее редактирование: 11 Июля 2011, 19:05:49 от bogong »

Оффлайн ArtPro

  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
    • Форум Веб-Разработчиков
Цитата: bogong
По поводу локальной машины - у меня нет лишних денег чтоб ставить еще одну машину ...
Зачем деньги чтоб установить связку apaceh2+mysql+php и прописать хосты, у себя на локальной машине ?
По мне просто было, установить на локальной машине сервер, чем еще усложнять себе работу в установке VirtualBox... и так далее..

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: [HOWTO] Рабочее место PHP-developer (Ubuntu+FreeBSD+Apache+MySQL+PHP)
« Ответ #7 : 01 Августа 2011, 00:56:57 »
http://ubuntu-favorite-os.blogspot.com/2010/10/apache-php-mysql-ubuntu1010.html
Надеюсь, не найдётся дураков, пожелающих последовать этим советам.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.067 секунд. Запросов: 25.