Виртуальный Linux веб-сервер на Windows-компьютере

Опубликовал slava - 19 мая 2016

Иногда при работе на Windows-компьютере возникает необходимость протестировать поведение сайта на сервере на базе Linux. Самым быстрым и простым решением в таком случае является создание виртуальной linux машины и тестирование сайта на ней.

Для начала скачиваем, устанавливаем и запускаем VirtualBox for Windows hosts.

Нажимаем кнопку создания новой виртуальной машины с 1024МБ памяти - машина у нас будет без графического интерфейса, и такого объёма памяти ей должно быть достаточно. В качестве названия указываем ubuntu и смотрим, есть ли в выпадающем списке ниже ubuntu x64, или единственная доступная опция - ubuntu x32.

Creating a new virtual machine with VirtualBox

Теперь скачиваем образ последней Ubuntu Server (на момент написания статьи - 16.04). В зависимости от того, какая версия была выбрана при создании виртуальной машины, выбираем либо 32-bit, либо 64-bit образ.

В настройках виртуальной машины (иконка шестерёнки) выбираем скаченный образ в качестве диска в CD/DVD-приводе:

Выбор образа Ubuntu Server в качестве диска в VirtualBox

Запускаем виртуальную машину, выбираем язык и устанавливаем Install Ubuntu Server из скаченного образа. В процессе установки для большинства параметров выбираем значения по-умолчанию, а в качестве языка - en_US.UTF-8 (если не нужен русский язык).

Когда дело дойдёт до выбора пакетов, выбираем "OpenSSH server", "LAMP server" и "standard system utilities":

Selecting Ubuntu Server packages

В процессе установки откроется окно задания пароля для MySQL - оставлять здесь поле для ввода пароля пустым нельзя, иначе в дальнейшем могут быть проблемы с подключением к MySQL серверу.

Теперь обеспечим доступ к виртуальной машине из Windows-компьютера.

В настройках виртуальной машины, на закладке Network, убеждаемся, что в качестве типа адаптера выбран "Nat", после чего раскрываем секцию Advanced и настраиваем "Port forwarding" таким образом, чтобы все TCP соединения на 8080 порт локального Windows-компьютера (127.0.0.1) шли в виртуальную машину на порт 80 (HTTP), а с порта 22 локального компьютера - на порт 22 виртуальной машины (SSH).

Forwarding HTTP and SSH ports from the host OS to the virtual machine

Перезапускаем виртуальную машину и проверяем, что теперь открытие в Windows-браузере адреса http://127.0.0.1:8080/ показывает стандартное приветствие Apache, а выполнение команды "ssh username@127.0.0.1" (где "username" - Ваше имя пользователя виртуальной машины) в консоли git bash устанавливает соединение с виртуальной машиной. Если git bash не установлен, то вместо консольной команды ssh можно использовать программу putty.

Редактируем в режиме администратора файл C:\Windows\System32\drivers\etc\hosts и добавляем туда строку "127.0.0.1 matrix" (вместо "matrix" можно использовать любое другое имя). После этого сайт, развернутый на виртуальной машине, можно будет открыть по адресу "http://matrix:8080/".

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

  1. Через SSH консоль на виртуальной машине создать директорию .ssh:
    mkdir ~/.ssh;
  2. Через git bash на Windows-компьютере сгенерировать SSH ключи (если ранее такие ключи уже создавались для других серверов, то этот шаг нужно пропустить):
    ssh-keygen -t rsa -b 2048
  3. Через git bash скопировать эти ключи на виртуальную машину (замените "username" и "matrix" на Ваши имя пользователя и имя сервера):
    cat ~/.ssh/id_rsa.pub | ssh username@matrix "cat >> ~/.ssh/authorized_keys"

Copying SSH keys to the virtual machine

Для быстрого копирования файлов на виртуальную машину и обратно можно использовать любой FTP-клиент с поддержкой протокола SFTP (например, FileZilla) - достаточно установить SFTP соединение с сервером 127.0.0.1 и паролем Вашего пользователя виртуальной машины.

По-умолчанию все файлы веб-сервера на виртуальной машине принадлежат пользователю root. Это не очень удобно, так как работа через SSH консоль идёт от имени Вашего пользователя. Поэтому упростим себе жизнь, выполнив следующие команды на виртуальной машине (замените "username" на Ваше имя пользователя):

sudo adduser username www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rwX /var/www

Заодно установим composer и расширения PHP, которые наверняка понадобятся в работе:

sudo apt install zip unzip php-zip composer php-gd php-imagick php-xml php-curl

Теперь включим mod_rewrite: 

  1. Заменить в файле конфигурации Apache (sudo vim /etc/apache2/apache2.conf) строку "AllowOverride None" на "AllowOverride All" для директории /var/www/
  2. Активировать модуль mod_rewrite: sudo a2enmod rewrite
  3. Перезапустить Apache: sudo service apache2 restart

Виртуальный веб-сервер готов!

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Web page addresses and email addresses turn into links automatically.
Отправляя эту форму, Вы соглашаетесь с политикой приватности Mollom.