Всего несколько лет назад фраза «развернуть виртуалку Linux внутри облака Microsoft» показалась бы мне оксюмороном. Сегодня же это — абсолютно нормальная рабочая задача. В этой статье мы покажем админам Linux, как внутри облака от Microsoft можно развернуть привычную нам операционку.

 

Почему Azure?

Microsoft Azure — это открытая и гибкая платформа, позволяющая создавать, внедрять, масштабировать приложения и управлять ими. Об этой платформе уже много чего было написано, и особо не хочется повторяться. Все-таки статья должна быть практической, а обсуждение достоинств и недостатков платформы оставлю теоретикам. Если вкратце, то можно выделить следующие преимущества:

  • Надежность и устойчивость — платформа отказоустойчива, SLA составляет 99,95%, и гарантируется безопасное подключение к платформе из любой точки мира.
  • Гибкость и простота — как увидишь, создать и настроить любое количество виртуальных машин для разработки и тестирования приложений в облаке очень просто.
  • Экономия средств — ты платишь только за реально используемые ресурсы (далее будет приведен линк на то, как расшифровывать счета Azure).
  • Экономия времени — тебе не надо ждать поставок оборудования. Нужные ресурсы станут доступны сразу после оплаты.
  • Выбор типа операционки — не стоит думать, что раз Azure — решение от Microsoft, то тебе будут доступны только виртуалки под управлением Windows. Как будет показано далее, можно с легкостью создать Linux-виртуалку.

Все эти преимущества важны для крупных проектов. Да, Azure — небесплатное решение, но в итоге оно экономит твои деньги. Представь, что ты арендуешь физический выделенный сервер. Пока проект развивается, ты платишь за ресурсы, которые не используешь. Когда же проект разрастется и, например, закончится место на дисках, тебе придется ждать поставки нового оборудования, его настройки и так далее. В итоге будет вынужденный простой (хотя если админ расторопный и заранее предусмотрит эту ситуацию, то простой окажется небольшим). А крупные проекты могут потерять много денег и, что еще более важно, постоянных и новых пользователей.

 

Подготовительные работы

А теперь перейдем к практике. Чтобы продолжить, тебе понадобится Azure CLI и учетка Azure. Учетка стоит денег, но бесплатно можно заполучить триал, чтобы понять, нужно ли тебе все это вообще.

Первым делом нужно создать учетку — а вдруг больше шары не будет? 🙂 Поэтому прежде, чем идти дальше, нужно убедиться, что учетка создана. Полностью анонимную учетку создать будет сложно, так как при регистрации указывается твой мобильный номер и данные кредитки — снимать деньги не будут, карточка нужна, только чтобы убедиться, что ты не бот. Довольно странный способ, но все же.

После того, как ты заполучил учетку, нужно установить Azure CLI — командную строку Azure. Этот процесс описывать не буду, есть подробный мануал, к тому же на русском.

Azure CLI можно установить в Windows, Linux и OS X. Другими словами, с твоего Мака можно управлять облачными виртуалками Linux.

 

Издатели, предложения, номера SKU и прочее

На сайте Microsoft я нашел один увлекательный мануал по созданию виртуальной машины с помощью команды azure vm quick-create. Казалось бы, все просто: вводишь команду, она запрашивает дополнительные сведения, и вуаля — виртуалка создана. Но не тут-то было. Нужно сначала разобраться, что вводить в ответ на вопросы этой команды.

Первым делом нужно определиться с образом виртуалки, который ты будешь загружать в Azure. Можно выбрать один из рекомендованных Microsoft образов или же загрузить свой, так называемый нерекомендованный образ. Об этом рассказывается тут.

В Azure поддерживаются дистрибутивы на базе CentOS, а также дистрибутивы Debian, RHEL, openSUSE и SLES, Oracle Linux, Ubuntu. Может быть, о загрузке нерекомендованных образов мы поговорим в следующих статьях, а пока будем разбираться с использованием рекомендованных образов. Каждому образу соответствует номенклатурный номер, или SKU, представляющий собой уникальный системный идентификатор для каждого ресурса Azure. Например, дистрибутиву CentOS соответствует номер 7. Но SKU — это не всегда число. Например, для Ubuntu Server вполне может быть SKU вида 14.04.2-LTS.

Подробно о SKU и прочих непонятных словах можно прочитать здесь. Также там описано, как расшифровать твои счета Azure, когда ты начнешь пользоваться «Азурью» всерьез.

Просмотреть образы (которые ты будешь использовать с командой azure vm quick-create) можно при помощи команды azure vm image list. Этой команде нужно передать регион, имя издателя и предложение (если ты знаешь, как оно называется).

Облачный сервис Azure доступен в 22 регионах и, как написано на сайте Microsoft, скоро станет доступен еще в восьми. Выбрать нужный тебе регион можно тут. Издатель — это имя издателя образа, например Canonical, если ты хочешь использовать образ Ubuntu. Предложение — название группы образов, например UbuntuServer. Впрочем, предложение можно и не вводить, тогда команда выведет все образы от заданного издателя.
Пример:

azure vm image list westus canonical ubuntuserver

Здесь мы выбираем предложения UbuntuServer (регистр не учитывается) от издателя Canonical в солнечной Калифорнии (регион westus).

Вывод будет таким, как показано на рис. 1. Как видишь, тебе на выбор предложены несколько (а именно восемь) образов.

Рис. 1. Вывод команды `azure vm image list westus canonical ubuntuserver`
Рис. 1. Вывод команды `azure vm image list westus canonical ubuntuserver`

Проанализируем вывод. Больше всего нас интересуют столбцы Sku и Urn. Занятно, но оказывается, что Sku — не такой уж и уникальный номер (хотя в Microsoft уверяют в обратном). Перейди по ранее приведенной ссылке, и ты увидишь: хотя нас пытаются убедить, что Sku уникален, но по факту это оказывается не так (рис. 2). Впрочем, можно не забивать себе этим голову. А вот в столбце Urn находится строка, которую можно передать в команду azure vm quick-create для создания виртуальной машины.

Рис. 2. Фрагмент страницы https://azure.microsoft.com/ru-ru/documentation/articles/billing-understand-your-bill
Рис. 2. Фрагмент страницы https://azure.microsoft.com/ru-ru/documentation/articles/billing-understand-your-bill

Обрати внимание: в предыдущей команде мы знали название издателя, но оно не всегда нам знакомо. Предположим, не нравится тебе Ubuntu и ты хочешь Debian. Но как узнать, кто будет издателем для Debian или для того же CentOS? Для этого нужно ввести команду

azure vm image list-publishers

Список издателей очень длинный, поэтому на рис. 3 приводится лишь фрагмент вывода команды.

Рис. 3. Список издателей
Рис. 3. Список издателей

Получив список издателей и их расположения (регионы), можно выяснить список предложений. Для этого введи команду

azure vm image list-offers

Далее тебя попросят указать издателя и регион, после чего ты увидишь список предложений (рис. 4). Он также может быть весьма длинным.

Рис. 4. Список предложений
Рис. 4. Список предложений

Получить идентификаторы SKU можно командой

azure vm image list-skus

Тебя попросят указать регион, издателя и предложение. В итоге ты получишь список образов и сможешь выбрать нужный тебе образ (рис. 5).

Рис. 5. Фрагмент вывода команды `azure vm image list-skus`
Рис. 5. Фрагмент вывода команды `azure vm image list-skus`

Azure и PowerShell

Рекомендую к прочтению отличную статью об управлении ресурсами Azure через PowerShell.

 

Создание виртуальной машины

Вот теперь ты готов ответить на все вопросы команды azure vm quick-create. Введи ее:

azure vm quick-create

Далее команда попросит тебя указать различную инфу — название группы ресурсов, название виртуальной машины, регион, тип ОС, URN образа, имя пользователя виртуальной машины и пароль:

info:    Executing command vm quick-create
Resource group name: myVMGroup
Virtual machine name: ubuntuvm
Location name: westus
Operating system Type [Windows, Linux]: Linux
ImageURN (in the format of "publisherName:offer:skus:version"):     Canonical:UbuntuServer:14.04.4-LTS:latest
User name: den
Password: *******************
Confirm password: *******************

Весь вывод тут показывать не стану, поскольку он довольно длинный. Самая полезная часть этого вывода — практически самая последняя:

data:    Network Profile:
data:      Network Interfaces:
data:        Network Interface #1:
data:          Primary                   :true
data:          MAC Address               :00-0D-3A-33-4C-B2
data:          Provisioning State        :Succeeded
data:          Name                      :ubunt-westu-3894891836-nic
data:          Location                  :westus
data:            Public IP address       :104.40.24.124
data:            FQDN                    :ubunt-westu-3894891836-    pip.westus.cloudapp.azure.com
...
info:    vm quick-create command OK

Разберемся, что есть что. Здесь приводится инфа о сетевом адаптере созданной виртуальной машины: MAC-адрес адаптера, публичный IP-адрес, имя узла, а вывод всей команды завершает строчка с OK в конце, свидетельствующая о том, что выполнение команды прошло успешно.

 

Настройка виртуальной машины

Что делать дальше? А дальше нужно подключиться к виртуальной машине по SSH: ssh <внешний IP>.

Внешний IP-адрес выводится при создании виртуальной машины. Введи имя пользователя и пароль, указанные при создании виртуальной машины, и можешь приступать к настройке Linux. Что именно настраивать, зависит от поставленной задачи. Можно, например, установить панель управления (ту же VestaCP), можно развернуть фреймворк PHP вместе с веб-сервером и сервером БД — все это добро будет использовано для разворачивания какого-нибудь сложного веб-приложения.

Далее будет показан пример настройки обычного веб-сервера с поддержкой PHP и MySQL.

Первым делом обновляем apt-get (рис. 6):

sudo apt-get upgrade
Рис. 6. Команда `sudo apt-get upgrade`
Рис. 6. Команда `sudo apt-get upgrade`

После этого можно приступить к установке софта. Ставим Apache, затем MySQL и PHP:

sudo apt-get install apache2
sudo apt-get install mysql-server php5-mysql
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

Рис. 7. Установка Apache
Рис. 7. Установка Apache

Рис. 8. Установка MySQL и PHP
Рис. 8. Установка MySQL и PHP

Третья команда устанавливает дополнительные пакеты, относящиеся к PHP, в частности пакет, обеспечивающий поддержку PHP веб-сервером Apache (libapache2-mod-php5). Вполне возможно, что придется установить дополнительные библиотеки вроде GD (пакет php5-gd), но все это зависит от твоего приложения.

При установке сервера MySQL тебя попросят ввести пароль пользователя root. Это пользователь MySQL, а не системный пользователь, но все равно постарайся придумать сложный пароль и не забыть его.

После этого настроим MySQL. Первая команда создает структуру каталогов базы данных, а вторая делает настройки сервера БД более безопасными:

sudo mysql_install_db
sudo mysql_secure_installation
Рис. 9. Настройка MySQL
Рис. 9. Настройка MySQL

Осталось запустить Apache и MySQL:

sudo service apache2 restart
sudo service mysql restart
Рис. 10. Перезапуск серверов Apache/MySQL
Рис. 10. Перезапуск серверов Apache/MySQL

Ну вот и все. У тебя есть готовый веб-сервер, который ты можешь использовать для разворачивания собственных приложений.

 

Установка WordPress

Я обещал рассмотреть пример установки веб-приложения, а именно WordPress. Что ж, поехали. Первым делом скачаем сам WordPress:

wget https://ru.wordpress.org/wordpress-4.5.1-ru_RU.zip

Для распаковки архива установим unzip и выполним его распаковку в каталог /var/www/html:

sudo apt-get install unzip
unzip wordpress-4.5.1-ru_RU.zip
cd wordpress
sudo cp -R * /var/www/html
sudo rm /var/www/html/index.html
Рис. 11. Загрузка WordPress
Рис. 11. Загрузка WordPress

Первая команда устанавливает unzip, вторая распаковывает архив, третья изменяет текущий каталог, а четвертая копирует содержимое папки wordpress в /var/www/html — это DocumentRoot для конфигурации Apache по умолчанию. Пятая команда удаляет index.html — это стандартный файл, созданный при установке Apache. После того как все настроишь, не забудь удалить папку wordpress!

Подготовим WordPress к запуску:

cd /var/www/html
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php

Последняя команда запускает редактирование файла wp-config.php. В нем нужно прописать имя пользователя MySQL, пароль и имя базы данных. Вот только одна незадача: мы забыли создать базу данных и пользователя. Сейчас мы это исправим. Введи команды:

mysql -u root -p
mysql> CREATE DATABASE wp;

Первую команду ты вводишь в консоли Linux (после чего нужно указать пароль root), а вторую — уже в приглашении программы mysql (это клиент для MySQL). Вторая команда создает базу данных с именем wp.

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

mysql> GRANT ALL PRIVILEGES ON wp.* TO wpuser@localhost IDENTIFIED BY '123';

Мы создаем нового юзера — wpuser с паролем 123 и предоставляем ему все права для работы с БД wp. Для выхода из утилиты mysql введи команду quit:

mysql> quit

Рис. 12. Настройка MySQL
Рис. 12. Настройка MySQL

Рис. 13. Редактирование wp-config.php. Да, с кодировкой не сложилось!
Рис. 13. Редактирование wp-config.php. Да, с кодировкой не сложилось!

Теперь ты знаешь, что прописать в wp-config.php. После редактирования файла конфигурации WordPress открой браузер и введи в него URL http://имя_виртуальной_машины/wp-admin/install.php (рис. 14).

Рис. 14. Установка WordPress
Рис. 14. Установка WordPress

Дальше все просто: нужно ввести название блога, задать имя юзера (админа блога), ввести пароль и так далее. Думаю, с установкой WordPress ты справишься сам, а если нет, то Google тебе в помощь. После установки WordPress зайди на свой сайт по URL http://имя_виртуальной_машины/ (рис. 16).

Рис. 15. Блог установлен
Рис. 15. Блог установлен

Рис. 16. WordPress готов к использованию!
Рис. 16. WordPress готов к использованию!

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

WWW


Заинтересовавшимся предоставляю ссылки на дополнительные мануалы:

Первая ссылка — настройка виртуальной машины с нуля
Вторая ссылка — развертывание виртуальных машин и управление ими с помощью шаблонов диспетчера ресурсов Azure

Спецпроект с компанией Microsoft

1 комментарий

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

А ты знал? 10 фактов о Python

Python — язык программирования с достаточно низким порогом вхождения, поэтому его часто вы…