Локальний веб-сервер - VirtualBox, Debian, Nginx + php-fpm, MySQL

Є комп'ютер з Windows 10, де встановлений VirtualBox. Створемо віртуальну машину у VirtualBox, встановимо на неї Debian. Застосувавши цю машину веб-сервера та встановивши певний програмний продукт, необхідний для веб-розробки. Додатково налаштуємо свою папку, щоб зручно працювати в ній з сайтами в улюбленому редакторі коду під Windows. Відкриватися сайти теж будуть під Windows.

Віртуалка і Debian

Скачуємо новий образ для установки Debian. Даю посилання на сторінку з образами, призначеними для мережевого встановлення. Вони маленькі, не мають нічого лишнього, добре підходять для веб-сервера. Я використовую 64-бітний образ. 

Створюємо віртуальну машину:

Створення віртуальної машини

Об'єм пам'яті і диска на свій розсуд.

Диск особливо витрачатися не буде, тому що ми будемо працювати з сайтами в загальнодоступному місці, яка буде підключається до Debian як додатковий носій. Тип основного диска за замовчуванням, динамічний.

Створення віртуального жорсткого диску

Машина підготовлена. Поки не включаємо. Заходимо в властивості машини, підключаємо скачаний інсталяційний образ на CD/DVD:

Налаштування віртуальної машини

Пройдемося по іншим налаштуваням.

Число ядер процесора вибирайте самі, в залежності від можливостей і потреб. Обов'язково встановіть позначку «Включити PAE/NX».

Налаштування віртуальної машини

Можна вимкнути різні непотрібні речі, типу віддаленого доступу по RDP, звукової карти, порти USB стандарту 2.0 і т.д.

У мережевих адаптерах вибираємо тип підключення «NAT», нижче тут же натискаємо «Додатково» і заходимо в «Переадресування портів».

Налаштування віртуальної машини

Тут для SSH вказуємо порти 3022 і 22, для http 80 і 80, https 443 і 443. Для панелі VestaCP 8083 і 8083. І для статистики 9191 і 9191.

Налаштування віртуальної машини - переадресування порту

Чому саме «NAT»? Віртуальну машину зможете використовувати тільки ви, вона не буде видна в вашій локальній мережі і ніяк на неї не вплине. Для мене це важливо.

Якщо ви хочете, щоб ваша віртуальна машина повноцінно додавалася в вашу локальну мережу, то вибирайте тип підключення «Мережевий міст». Інші комп'ютери у вашій локальній мережі теж зможуть звертатися до вашої віртуальній машині.

На завершення додаємо загальну папку:

Налаштування віртуальної машини - спільні теки

Виходимо з налаштувань. Запускаємо машину, встановлюємо Debian. Процедура установки Debian нічим особливо непримітна. По ходу вибираємо всякі параметри.

Ближче до кінця установки треба буде вибрати компоненти, які потрібно встановити. Робочий стіл і інше сміття нам на веб-сервері не потрібен, знімаємо всюди позначки. Ми залишаємо тільки SSH-сервер і стандартні системні утиліти.

Пропонований в списку «web server» я теж вважаю за краще не ставити, тому що там буде Apache, який в сучасному світі нафіг не потрібен. Краще встановити потім самому саме ті програми, які потрібні.

Загалом, установка завершується, машина перезапускается.

Входимо під root-ом:

Все ОК? Невелика рекомендація. Робіть «знімки» машини на різних етапах настройки і використання. Це корисно! Якщо в процесі якихось налаштувань або інших дій щось піде не так, то ви зможете відкотитися до попереднього стану.

Щоб вимкнути машину можна написати poweroff, щоб перезапустити - reboot.

Налаштування

Поки продовжуємо працювати з створеної машиною через вікно VirtualBox. До підключення по SSH повернемося трохи пізніше.

В процесі установки Debian, крім root, обов'язково створюється додатковий користувач. Якщо він зовсім вам не потрібен, то його можна видалити:

userdel -r имя_пользователя

Додатковий користувач іноді корисний. Наприклад, коли ви будете працювати з Composer. Цей менеджер пакетів вважає, що робота під root небезпечна і видає попередження, хоча і продовжує справно працювати.

За замовчуванням Debian не дозволяє підключитися по SSH, використовуючи користувача root. Виглядає це так:

login as: root
root@127.0.0.1's password:
Access denied

Додатковим користувачем підключатися можна відразу.

Щоб по SSH можна було зайти root-ом редагуємо файл /etc/ssh/sshd_config.

шукаємо:

PermitRootLogin without-password

Міняємо на:

PermitRootLogin yes

Щоб зміни вступили в силу перезавантажуємо машину.

Для підключень по SSH в Windows зручно використовувати PuTTY. Адреса машини 127.0.0.1, порт 3022:

PyTTY

Тепер уже можна більшу частину часу працювати з віртуальною машиною через SSH. Воно зручніше, ніж через вікно VirtualBox. Вікно PuTTY можна вільно розтягувати і його вміст буде під це підлаштовуватися. У вашому розпорядженні буфер обміну і навіть миша.

Щоб працювала спільна папка потрібно встановити гостьові доповнення ОС.

Для початку підключаємо образ:

Встановлення гостьових доповнень

Тепер монтуємо його:

mount /dev/cdrom /media/cdrom

Попередньо встановлюємо необхідні пакети:

apt-get install build-essential module-assistant

Ще виконуємо:

m-a prepare

Тепер сама установка доповнень:

sh /media/cdrom/VBoxLinuxAdditions.run

Результат успішної установки:

root @ webdev: ~ # sh /media/cdrom/VBoxLinuxAdditions.run
Verifying archive integrity ... All good.
Uncompressing VirtualBox 5.1.2 Guest Additions for Linux ...........
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
vboxadd.sh: Building Guest Additions kernel modules.
update-initramfs: Generating /boot/initrd.img-3.16.0-4-amd64
vboxadd.sh: Starting the VirtualBox Guest Additions.

Could not find the X.Org or XFree86 Window System, skipping.
root @ webdev: ~ #

Перезапускаємо машину і радіємо. Тепер у нас запрацювала загальна папка. У віртуальній машині в моєму випадку це: /media/sf_web. На основний машині вона відповідає: d:\OpenServer\domains\.

Робота із загальною папкою в віртуальній машині здійснюється з під користувальницької групи vboxsf. Це означає, що якщо користувач (під яким ви працюєте) не входить в цю спеціальну групу, то він не зможе записувати в загальну папку. Для нього в папці за умовчанням режим «readonly».

Щоб додати користувача в цю групу виконуємо:

usermod -aG vboxsf имя_пользователя
usermod -aG vboxsf root
usermod -aG vboxsf www-data

Користувач www-data за замовчуванням використовується Nginx.