- Попередні установки.
- Установка «Додатків гостьовий ОС».
- Налаштування мережевого підключення
- Софт на сервер
- Налаштовуємо хости для роботи без IP
- установка Apache
- Налаштування віртуальних хостів
- VirtualBox в режимі HeadLess
- В якості висновку.
Наша взаимовыгодная связь https://banwar.org/
Завдання з'явилася через небажання встановлювати будь-якої WAMP стек. Ідея в тому, щоб створити стерпний сервер виконується у власній пісочниці. Він повинен бути досить швидким в завантаженні і не вимагати багато ресурсів. Це мала бути сервер на базі Linux, максимально наближений до бойових (production) умовам. Так і народилася ідея запустити Ubuntu Server на VirtualBox в Headless режимі. Обидва продукти Ubuntu Server і VirtualBox досить потужні і поширюються вільно. Але на жаль без певних знанні про роботу подібного софта неминуче потрапиш на граблі. Сподіваюся, цей пост допоможе частково обійти це «мінне поле». Поточне опис має на увазі, що хостової машина бігає під Windows, але воно не повинно сильно відрізняться і для інших систем. І ще, опис вимагає певних знань роботи з bash - інакше навіщо вам взагалі консоль?
Попередні установки.
Якщо у вас немає VirtualBox або Ubuntu Server , Качаємо їх по посиланнях. Ставимо 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 або winscp . Це вирішить проблему з буфером обміну, так як тепер використовується тільки хостової. Можна копіювати текст консолі в буфер і вставляти буфер в командний рядок.
Далі webmin - це веб інтерфейс управління сервером. Правда він і не підтримується debian і ubuntu, значить його чи не поставити стандартним способом. До того-ж після установки і використання не гарантовано нормальна робота операційної системи, так що будьте уважні.
заходимо на Webmin SourceForge Download і шукаємо останню версію 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
Якщо виникли проблеми, потрібно гризти офіційний мануал . Або насолоджуємося інтерфейсом на 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
Я не випадково використовую apt-get без sudo. Справа в тому, що я відкрив обліковий запис root (що є небезпечним!), Але зайвий текст мене втомлює. Наступна команда включить обліковий запис root в Ubuntu:
sudo passwd root
Налаштовуємо хости для роботи без IP
Якщо у вас не налаштований власний DNS сервер. Хости які система буде перетворювати в IP можна в ручну.
В XP файл з хостами знаходиться тут: C: \ WINDOWS \ system32 \ drivers \ etc \ hosts, для інших версій шлях може бути іншим.
Отримуємо ім'я хоста з гостьової машини Ubuntu
hostname # локальне ім'я hostname -f # повне ім'я
У мене це vm-ubuntu, аIP був 198.168.10.100 їх ми і записуємо в файл hosts.
Довідка: Для зручності можна використовувати молодий проект hostscmd , Що дозволяє працювати з хостами з командного рядка.
установка Apache
Ось ми і дійшли до основної ідеї. Можна поставити і налаштувати все руками, але я не схильний до мазохізму, за цим я встановлюю весь стек відразу вибираємо один з наборів:
# Графічний - зажадає настройку кодування в putty в UTF-8) sudo tasksel install lamp-server # звичайний sudo apt-get install lamp-server ^
Обидва поставлять стабільні Apacha2, MySQL і PHP5. Якщо версії мають значення, то такий сбособ - звичайно - не підійде. Установка на цьому закінчена.
Налаштування віртуальних хостів
Будемо додавати новий віртуальний хост з назвою test1.com.
Для цього потрібно:
- Додати віртуальний домен в конфігурацію apache.
- Прописати домен в хостах основної машини (на якій буде відкритий браузер).
- Перезапустити apache.
Для цих цілей у нас є вже знайомий 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 /. І таким чином включаються всі ваші віртуальні хости. джерело
Значить, нам тільки потрібно створити файл з конфігурацією в папці / 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
Це все. Якщо виникли проблеми:
VirtualBox в режимі HeadLess
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; 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; 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 можна дізнатися тут російською або на офіційному сайті - англійською.
В якості висновку.
- В принципі, нам нічого не заважає керувати всіма аспектами гостьовий машини з браузера. Webmin вже встановлено, залишилося тільки налаштувати VirtualBox Web Console з його чудовим VirtualBox RDP Web Control (по суті RDP клієнт, написаний на Flash).
- Не забувайте запускати apt-get update і apt-get autoupgrate на своєму сервері.
- Даний підхід використовувався для створення маршрутизатора, фільтра повідомлень і firwall-а для Windows за допомогою Linux. Він був описаний в одному з недавніх журналів Хакер. Це доводить цінність даного підходу і незамінність при деяких обставинах.
- Замість настройки мережевого моста можна використовувати альтернативний варіант маршрутизації , Заснований на можливості VirtualBox перекидати порти з хостовой машини на гостьову.
Мітки: Linux , сервіс , OpenSource , PHP , Віртуалізація
І ще, опис вимагає певних знань роботи з bash - інакше навіщо вам взагалі консоль?Звідки я взяв настройки?