- Хроники. - -
Установка виртуального LAMP сервера на оcнове VirtualBox и Ubuntu
Posted By Ikutsin On 3 декабря 2010 @ 18:41 In Управление и разработка | Comments Disabled
[1]Задача появилась из-за нежелания устанавливать какой-либо WAMP стек. Идея в том, чтобы создать переносимый сервер выполняемый в собственной песочнице. Он должен быть достаточно быстрым в загрузке и не требовать много ресурсов. Нужен был сервер на базе Linux, максимально приближенный к боевым (production) условиям. Так и родилась идея запустить Ubuntu Server на VirtualBox в Headless режиме. Оба продукта Ubuntu Server и VirtualBox довольно мощные и распространяются свободно. Но к сожалению без определенных знании о работе подобного софта неизбежно попадешь на грабли. Надеюсь, данный пост поможет частично обойти это «минное поле». Текущее описание подразумевает, что хостовая машина бегает под Windows, но оно не должно сильно отличатся и для других систем. И еще, описание требует определенных знаний работы с bash — иначе зачем вам вообще консоль?
Если у вас нет VirtualBox [2] или Ubuntu Server [3], качаем их по ссылкам. Ставим VirtualBox со стандартными настройками. Теперь из GUI создаем жесткий диск и систему с OS Ubuntu. В качестве диска используем скаченный ISO образ Ubuntu Server. И устанавливаем сервер как на обычную машину. В общем, все стандартно, за исключением того, что может потребоваться галочка в Система->Процессор->Включить PAE/NX если ее не поставил за вас мастер.
И еще, при установке можно выбрать некоторые серверные приложения — Apache, FTP, SSH и другие — можно поставить их сразу и пропустить часть текущего описания об установке софта. Данный топик для тех кто забыл или просто предпочитает все ставить сам. В итоге мы получаем консоль в окне виртуального сервера и сетевое подключение типа NAT.
Дополнительные модули понадобятся для открытия папок между хостовой и гостевой машинами. А также для удобного фокуса. Дополнения патчат ядро, значит понадобятся дополнительные библиотеки. Войти в систему под своим аккаунтом и выполнить команду:
sudo apt-get install build-essential linux-headers-`uname -r`
Теперь ставим сами дополнения. Вставляем в виртуальный привод «GuestAdditions» из меню виртуальной машины: Устройства->Установить дополнения гостевой ОС… или просто нажав кнопку Host-D (по умолчанию в VirtualBox кнопка Host соответствует правому Control).
Если папка /media/cdrom пуста или ее совсем нет, значит диск нужно монтировать в ручную
mount /dev/cdrom /media/cdrom
В моем случае меня тут ждал облом — /media/cdrom уже был монтирован на пустой /dev/sr0, тогда монтируем cdrom в другое место, например /media/cdrom2
mkdir /media/cdrom2 mount /dev/cdrom /media/cdrom2
из примонтированой папки запускаем
./VBoxLinuxAdditions-x86.run
Единственная ошибка будет выглядеть так
Installing the Window System drivers ...fail! (Could not find the X.org or XFree86 Window System.)
Для нас это бозначает — нету XServer — нету copy/paste между машинами. Если ошибки бесят, можно поставить XServer (пакет на 71+ MB):
sudo apt-get install xserver-xorg xserver-xorg-core 71mb +
Правда в консоли доступ до буфера обмена это все равно не даст (эта проблема будет решена другим способом). Перезагружаемся:
sudo shutdown -r now
И получаем нормальную интеграцию мышки (для MC — об этом позже) и доступ до общих папок. Формат монтирования такой: sudo mount -t vboxsf share ~/host.
Например, добавленный диск «C» в режиме — только чтение из меню Устройства->Общие папки. Можно монтировать следующим образом.
mount -t vboxsf c_drive /media/vbox
Для справки:
Для монтирования при загрузке используется /etc/fstab.
В Ubuntu есть пакет <strong>virtualbox-guest-additions</strong>, он старее чем идет вместе с VirtualBox. Значит даже если он совместим с текущей версией Ubuntu, это не значит что он совместим с версией VirtualBox. Установить ее можно так:
sudo aptitude install virtualbox-guest-additions
NAT для сервера не подойдет из за отсутствия возможности подключения к серверу. По этому я использую сетевой мост. Таки образом сервер получит свой собственный IP внутри локальной сети. Меняем настройки виртуальной машины соответствующим образом и перезагружаем сервер. Тут через раз может ожидать облом — гостевая машина никак не может получить IP с помощью DHCP. С этой проблемой можно биться бесконечно, я даже на время смог его заставить все-таки работать. В помощь гугл, команды ifconfig, route, netstat, /etc/init.d/networking restart и файл настроек /etc/network/interfaces, если проблемы с железяками или модулями ядра, то помогут команды lspci и lsmod.
Но проще (по крайне мере для меня) DHCP отключить, уж много факторов влияет на его исправность. Для этого в /etc/network/interfaces находим наш интерфейс:
auto eth0 iface eth0 inet dhcp
Меняем в моем случае на:
auto eth0 iface eth0 inet static address 192.168.10.100 netmask 255.255.255.0 broadcast 192.168.10.255 network 192.168.10.1 gateway 192.168.10.1
Откуда я взял настройки? Посмотрел их на хостовой машине конечно с помощью команды ipconfig /all
Беспроводное сетевое соединение 2 - Ethernet адаптер: DNS-суффикс этого подключения . . : empire Описание . . . . . . . . . . . . : Адаптеры Broadcom 802.11a/b/g WLAN Физический адрес. . . . . . . . . : 00-1A-73-9C-65-42 Dhcp включен. . . . . . . . . . . : да Автонастройка включена . . . . . : да IP-адрес . . . . . . . . . . . . : 192.168.10.152 Маска подсети . . . . . . . . . . : 255.255.255.0 Основной шлюз . . . . . . . . . . : 192.168.10.1 DHCP-сервер . . . . . . . . . . . : 192.168.10.1 DNS-серверы . . . . . . . . . . . : 192.168.10.1 Аренда получена . . . . . . . . . : 28 ноября 2010 г. 18:59:52 Аренда истекает . . . . . . . . . : 28 ноября 2010 г. 19:59:52
В сопоставить что-куда и какой IP выбрать надеюсь сложностей не возникнет. Теперь, когда сеть сервера настроена и пингуется (ping 192.168.10.100) с хостовой машины, можно начать установку софта.
В первую очередь SSH сервер.
apt-get install ssh openssh-server
После установки к серверу можно будет подключится с помощью putty [4] или winscp [5]. Это решит проблему с буфером обмена, так как теперь используется только хостовый. Можно копировать текст консоли в буфер и вставлять буфер в командную строку.
Далее webmin — это веб интерфейс управления сервером. Правда он и не поддерживается debian и ubuntu, значит его не поставить стандартным способом. К тому-же после установки и использования не гарантируется нормальная работа операционной системы, так что будьте внимательны.
Заходим на Webmin SourceForge Download [6] и ищем последнюю версию webmin (не путать с usermin). На момент написания статьи, это — 1.520. Берем deb пакет:
wget http://sourceforge.net/projects/webadmin/files/webmin/1.520/webmin_1.520_all.deb/download
и устанавливаем:
# ставим зависимости apt-get install perl libnet-ssleay-perl apt-show-versions libapt-pkg-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl # добавляем пакет dpkg -i usermin-webmail_1.450_all.deb # запускаем установку, флаг -f должен помочь до загрузить зависимости, если такие остались. apt-get -f install
Если возникли проблемы, нужно грызть официальный мануал [7]. Или наслаждаемся интерфейсом на https://guest-host:10000 (в качестве guest-host прописываем гостевой IP).
По желанию можно поставить еще кое-что:
apt-get install proftpd #фтп сервер, лучше ставить после установки apache apt-get install mc #midnight commander apt-get install phpmyadmin #phpmyadmin - потребует apache apt-get install ntp ntpdate #демон синхронизации времени apt-get install console-cyrillic
Совет: По возможности с этими дополнениями лучше подождать до установки apache.
Справка:
В качестве клиента для FTP можно использовать fileZilla или FreeCommander
[8]
Я не случайно использую apt-get без sudo. Дело в том, что я открыл учетную запись root (что является небезопасным!), но лишний текст меня утомляет. Следующая команда включит учетную запись root в Ubuntu:
sudo passwd root
Если у вас не настроен собственный DNS сервер. Хосты которые система будет преобразовывать в IP можно в ручную.
В XP файл с хостами находится здесь: C:\WINDOWS\system32\drivers\etc\hosts, для других версий путь может быть другим.
Получаем имя хоста с гостевой машины Ubuntu
hostname #локальное имя hostname -f #полное имя
У меня это vm-ubuntu, а IP был 198.168.10.100 их мы и записываем в файл hosts.
Справка: Для удобства можно использовать молодой проект hostscmd [9], позволяющий работать с хостами из командной строки.
Вот мы и дошли до основной идеи. Можно поставить и сконфигурировать все руками, но я не склонен к мазохизму, по этому я устанавливаю весь стек сразу выбираем один из наборов:
#графический - потребует настройку кодировки в putty в UTF-8) sudo tasksel install lamp-server #обычный sudo apt-get install lamp-server^
Оба поставят стабильные Apacha2, MySQL и PHP5. Если версии имеют значение, то такой сбособ — конечно — не подойдет. Установка на этом закончена.
Будем добавлять новый виртуальный хост с названием test1.com.
Для этого нужно:
Для этих целей у нас есть уже знакомый hostscmd (конфигурация хостовой машины), команда sudo /etc/init.d/apache2 reload (для перезагрузки apache2), и еще a2enmod, a2ensite. Вот что о них пишут:
На самом деле когда мы вызываем команду a2ensite myhost, то происходит просто создание символьной ссылки в папке /etc/apache2/sites-enabled/ на файл myhost в папке /etc/apache2/sites-avaliable/. Так же после запуска команды a2ensite myhost необходимо перегрузить конфиги апача. В debian это делается так: /etc/init.d/apache2 reload А при запуске этой команды апач просто подгружает в качестве конфигов все файлы из папки /etc/apache2/sites-enabled/. И таким образом включаются все ваши виртуальные хосты. Источник [10]
Значит, нам только нужно создать файл с конфигурацией в папке /etc/apache2/sites-available/ и запустить a2ensite.
Создаем файл /etc/apache2/sites-available/test1.com c содержимым:
<VirtualHost>
DocumentRoot /home/ikutsin/test1.com
ServerName test1.com
</VirtualHost>
и выполняем:
a2ensite test1.com
Это все. Если возникли проблемы:
apt-get install php5 s1enmod php5
Headless — это такой режим, когда машина запускается без каких-либо окон. В принципе при текущей настройке Ubuntu Server, лишнее окно терминала только мешает. Запустим наш сервер в этом режиме. Для этого в папке установки VirtualBox есть пара консольных программ: VBoxManage и VBoxHeadless.
запускаем командную строку на хосте и выполняем следующее:
::Добавляем пути для поиска set PATH=%PATH%;C:\Program Files\Oracle\VirtualBox :: Получаем список зарегистрированных машин vboxmanage list vms
В ответ:
Oracle VM VirtualBox Command Line Management Interface Version 3.2.10 (C) 2005-2010 Oracle Corporation All rights reserved. "Ubuntu Server" {e7261990-4df9-4de8-83ae-9053520dd08b}
Теперь этот UUID можно использовать для запуска машины:
:: порт для localhost потключения в windows через RDP vboxheadless --startvm e7261990-4df9-4de8-83ae-9053520dd08b -p 5000 ::запуск без RDP vboxheadless --startvm e7261990-4df9-4de8-83ae-9053520dd08b -v off
Дело в том, что если RDP порт будет оставлен по умолчанию, Windows не разрешит вам подключится «в самого себя» опасаясь рекурсии. А вот localhost:5000 прокатит. После запуска консоль не закрывается (по идее туда должна идти отладочная информация), это не правильно и ошибка, возможно, скоро будет исправлена.
Пока можно воспользоваться прелестями WScript, создав и запустив файл run-vm.vbs со следующим содержимым:
Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run """C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe"" --startvm e7261990-4df9-4de8-83ae-9053520dd08b --vrdp=off", 0
Теперь консоли нет, а VBoxHeadless остался только в менеджере задач.
Справка: Примечательно, что в таком режиме гостевая машина помешается на 30mb ram (и ~100 mb в виртуальной памяти). Недостаток только в давольно большем VDI файле, который больше 1 гигабайта. Но и он пакуется примерно в 4 раза.
Для того чтобы узнать, какие машины работают, используем VBoxManage:
C:\&amp;amp;amp;gt;vboxmanage list runningvms Oracle VM VirtualBox Command Line Management Interface Version 3.2.10 (C) 2005-2010 Oracle Corporation All rights reserved. "Ubuntu Server" {e7261990-4df9-4de8-83ae-9053520dd08b}
Чтобы отклюсить машину, тот же файл:
C:\&amp;amp;amp;gt;vboxmanage controlvm e7261990-4df9-4de8-83ae-9053520dd08b poweroff Oracle VM VirtualBox Command Line Management Interface Version 3.2.10 (C) 2005-2010 Oracle Corporation All rights reserved. 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Справка: Подробней о режиме Headless можно узнать здесь [12] на русском или на официальном сайте [13] — на английском.
Article printed from Хроники.:
URL to article: /1797-ustanovka-virtualnogo-lamp-servera-na-osnove-virtualbox-i-ubuntu
URLs in this post:
[1] Image: /wp-content/uploads/2010/12/2rzdso7.jpg
[2] VirtualBox: http://www.virtualbox.org/wiki/Downloads
[3] Ubuntu Server: http://www.ubuntu.com/server/get-ubuntu/download
[4] putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
[5] winscp: http://winscp.net/eng/download.php
[6] Webmin SourceForge Download: http://sourceforge.net/projects/webadmin/files/
[7] мануал: http://www.webmin.com/udeb.html
[8] Image: /wp-content/uploads/2010/11/Screenshot-28.11.2010-22_48_45.png
[9] hostscmd: http://code.google.com/p/hostscmd/
[10] Источник: http://bestblog.name/2010/07/a2ensite-a2dissite-a2enmod-a2dismod-princip-raboty/
[11] Image: /wp-content/uploads/2010/11/Screenshot-28.11.2010-23_35_22.png
[12] здесь: http://mirspo.narod.ru/vbox/ch07s04.html
[13] официальном сайте: http://www.virtualbox.org/manual/ch08.html
[14] VirtualBox Web Console: http://code.google.com/p/vboxweb/
[15] альтернативный вариант маршрутизации: http://welltemperedstudio.wordpress.com/2009/01/24/378/
Click here to print.
Copyright © 2008 Все, что меня окружает. All rights reserved.