Меню Рубрики

Установка centos на виртуальный сервер

Установка и настройка KVM под управлением CentOS 6

Приветствую вас, Хабражители!

Сегодня хочу поделиться с вами одним из своих наработанных мануалов, который отточен многоразовым применением, про который с уверенностью могу сказать, что «точно работает!» без лишних танцев с бубном.
Ориентирована статья скорее на начинающих системных администраторов, чем на гуру (для них тут ничего нового нет 🙂 ), и в ней я постараюсь раскрыть рабочий и довольно быстрый вариант развертывания сервера виртуальных машин, стараясь при этом охватись как можно больше нюансов и подводных камней.

Однако, буду рад вниманию знающих и опытных админов, которые, возможно, дадут дельные советы и помогут поправить ошибки, если таковые имеются.

Поправьте, если не так, но в поиске я не нашел реализации данной задачи именно на CentOS с подробным описанием всех шагов для новичков.
Хорошая серия статей написана librarian, но они для Debian.
Естественно, для бывалых админов, в этом никакой проблемы нет, но повторюсь, моя задача — описать подробную инструкцию для новичков.

Вопрос: в Интернете есть множество руководств для установки Qemu KVM под CentOS, возразите вы, и чем же данная статья будет интересна?
Ответ: здесь описывается полный цикл установки и настройки необходимых для виртуализации компонентов, установка гостевых виртуальных машин (ВМ), настройка белой и серой сети для ВМ, а также некоторые аспекты, которые помогут упростить управление ВМ, используя проброс графики с удаленного сервера на свой ПК и запуском virt-manager.

Начнем с того, что если Вы читаете это, то у вас уже готова ОС CentOS 6 (я использовал версию 6.3), причем для установки гостевых ВМ разной битности (32 или 64), хост-сервер (физический сервер, на котором и будем устанавливать KVM вместе с ВМ) должен быть именно с 64-битной ОС.
Все действия выполняются из-под пользователя root.

Итак, приступим к руководству.

Проверяем, поддерживает ли CPU аппаратную виртуализацию:

Если вывод не пустой, значит — процессор поддерживает аппаратную виртуализацию.
Кому интересно, все действия выполнялись на конфигурации Intel Xeon Quad Core E3-1230 3.20 GHz / 8GB / 2x 1TB.

Устанавливаем KVM и библиотеки виртуализации:

Смотрим, загружен ли модуль KVM

В данном случае видим, что загружен модуль kvm_intel, так как произволитель CPU — Intel.

Проверка подключения к KVM

2. Шаг — Создание хранилища для виртуальных машин (Storage Pool)

Здесь приводится описание, как настроить хранилище разных видов.
В рассматриваемом же примере описан простой тип хранилища — для каждой ВМ создается свой файл *.img под виртуальный жесткий диск (или диски — если добавить их несколько), размещены они будут в директории /guest_images.
Только у нас эта директория будет точкой монтирования отдельного жесткого диска хост-сервера, специально отведенного для этих нужд.
Безопасность сохранения данных и то, что нужно создавать как минимум зеркальный raid массив, чтобы не потерять данные ВМ в случае сбоя жесткого диска, мы не будем, так как это — отдельная тема.

Просмотрим список физических дисков на хост-сервере:

На жестком диске sda установлена ОС, его не трогаем, а вот на sdb создаем раздел на все свободное место диска с файловой системой ext4:
(более подробно про следующие операции можно почитать здесь)

Выбираем диск для редактирования

Создаем файловую систему ext4 на всем свободном месте диска /dev/sdb

Создаем точку монтирования нашего жесткого диска для файлов виртуальных машин:

Многие советуют отключить вообще Selinux, однако мы выберем иной путь. Мы настроим его правильно.

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

Смонтируем раздел /dev/sdb1 в /guest_images

Отредактируем файл /etc/fstab для того, чтобы при перезагрузке хост-сервера раздел с ВМ монтировался автоматически

Добавляем строку по примеру тех, что уже имеются в файле

Сохраняем файл и продолжаем создание хранилища:

Проверяем, создалось ли оно:

3. Шаг — Настройка сети на хост-сервере

. ВАЖНО.
Перед выполнением этого шага, надо убедиться, что на хост-сервере установлен пакет bridge-utils,

иначе при выполнении операций с сетью вы рискуете потерять связь с сервером, особенно обидно если он удаленный, и физического доступа к нему у вас нет. Если вывод предыдущей команды пустой, то:

Положим, что для выхода «в мир» использовался интерфейс eth0 и он был соответствующим образом настроен.
На нем настроен IP-адрес 10.110.10.15 из /24 сети, маска — 255.255.255.0, шлюз 10.110.10.1.
Продолжаем, создаем сетевой интерфейс типа «bridge» на хост-сервере

Приводим основной сетевой интерфейс, который использовался для выхода в «мир», к виду:

. Важно.
DEVICE=«eth0» Имя интерфейса должно остаться таким, как было в системе. Если у вас для выхода в Интернет использовался интерфейс eth1, тогда редактировать надо его.
HWADDR=«00:2C:C2:85:29:A3» МАС-адрес также должен остаться таким, как был в системе

Когда проверили все, перезагружаем сеть:

Проверяем состояние подключения типа «bridge»:

Получаем что-то вроде этого

Делаем настройки в iptables, чтобы трафик виртуалок «ходил» через соединение типа bridge

Опционально: можно улучшить быстродействие соединения bridge, поправив настройки в /etc/sysctl.conf

4. Шаг — Установка новой виртуальной машины

Установка CentOS на гостевую ВМ:

Примечание 1:
VMName_2 — имя новой виртуальной машины
–ram 1024 — кол-во виртуальной памяти
–arch=x86_64 — архитектура ОС виртуалки
–vcpus=1 — кол-во виртуальных процессоров
–os-type linux — тип ОС
–disk pool=guest_images_dir,size=50 — размещение хранилища, размер вирт. диска
–network=bridge:br0

Примечание 2:
Если на ВМ нужна «белая сеть», тогда ставим
—network=bridge:br0
Если на ВМ требуется «серая сеть», тогда ставим
—network=bridge:virbr0
В этом случае для ВМ будет присвоен серый IP по DHCP от хост-сервера.
—graphics vnc,listen=0.0.0.0,keymap=ru,password=some.password.here
Тут указываем пароль для подключения к ВМ по vnc

Читайте также:  Установка заводских установок на 4 айфоне

Установка Windows на гостевую ВМ:

Примечание:
Параметры такие же, как и в примере с установкой CentOS. Но есть различия.
При установке ОС Windows не увидит виртуального жесткого диска, поэтому надо подгрузить дополнительный виртуальный cdrom с драйверами /iso/virtio-win.iso — расположение файла ISO с драйверами виртуального диска. Взять можно отсюда.

Выполняем команду на установку новой ВМ, затем подключаемся по vnc к хост-серверу для продолжения установки ОС. Для того, чтобы узнать порт для подключения, выполняем:

При установке новой ВМ, порт vnc-сервера увеличится на 1. При удалении ВМ, порт освобождается,
и затем выдается новой ВМ. То есть, номер порта последней ВМ не обязательно самый большой из 590…
Чтобы узнать, на каком порту vnc виртуалка с определенным названием, вводим:

где VMName_1 — имя ВМ, :3 — номер по порядку порта, начиная с 5900, то есть подключаться надо на порт 5903, но в программе UltraVNC сработает и так 10.110.10.15:3

Примечание
Если при создании ВМ вылетает ошибка Permission denied, kvm не может открыть файл диска ВМ *.img,
значит, надо разрешить выполнение действий qemu-kvm из-под root (предполагается, что управление
ВМ производится из-под специально созданного для этих целей пользователя, например, libvirt). Но мы обойдемся и пользователем root.

Находим и раскомментируем в нем строки:

Полезно знать:
Конфиги ВМ находятся здесь /etc/libvirt/qemu/
Для того, чтобы отредактировать параметры (добавить процессор, ОЗУ или еще что-то),
ищем конфиг ВМ с нужным названием, редактируем:

К примеру, можно указать статический порт vnc для конкретной ВМ, чтобы всегда подключаться к нужному порту

Теперь у этой ВМ порт vnc будет — 5914. Не забудьте перезагрузить libvirtd для применения изменений. Саму ВМ тоже следует перезагрузить. Поэтому изменяйте конфигурационный файл ВМ пока она выключена, далее выполняйте service libvirtd reload, затем стартуйте ВМ.

Команды для управления ВМ:

5. Шаг — Настройка сети в случае «серых» IP-адресов в ВМ

Если на 4 шаге вы выбрали серую сеть для новой ВМ (—network=bridge:virbr0), то надо выполнить следующие действия (на хост-сервере!) для проброса трафика на ВМ
Разрешить форвардинг трафика на уровне ядра ОС:

Здесь 10.110.10.15 — белый (внешний) IP хост-сервера. 192.168.122.170 — серый IP-адрес гостевой ОС.

На примере установки ОС CentOS на гостевой машине, когда установка перешла в графический режим, и предлагает подключиться на локальный порт 5901 гостевой ОС.
Подключаемся из ПК, за которым сидите, по vnc к 10.110.10.15:5910 или 10.110.10.15:10 тоже сработает в UltraVNC.

По такому же принципу можно прокинуть порт (стандартный) RDP 3389 или SSH 22 в гостевую ОС.

6. Шаг — Подготовка к управлению виртуальными машинами удаленного сервера с удобным графическим интерфейсом (используя virt-manager)

Есть много способов «прокинуть» графику удаленного сервера на ПК, за которым выполняете действия администрирования. Мы остановимся на ssh-туннелировании.
Положим, что вы выполняете действия с локального ПК под управлением Windows (в операционных системах под управлением Linux сделать это куда легче :), нужно выполнить всего одну команду ssh -X username@12.34.56.78, конечно, с оговоркой, что на удаленном сервере X11 forwarding разрешен и вы сидите за локальным Linux ПК c графической оболочкой), тогда нам необходимо

1. Всем знакомый PuTTY,
2. Порт сервера X для Windows — Xming
3. В настройках PuTTY включить «Enable X11 Forwarding»
Сделать, как показано на картинке:

В момент подключения к удаленному серверу Xming должен быть уже запущен.
На хост-сервере с CentOS для SSH включить X11 Forwarding, для этого отредактируйте файл sshd_config:

Устанавливаем virt-manager на хост-сервере:

Чтобы окна отображались без крякозябр

7. Шаг — Непосредственный запуск virt-manager

После этого надо перезайти по SSH к удаленному серверу. Xming должен быть запущен.
Запускаем графическую утилиту управления виртуальными машинами

Откроется окно virt-manager

Консоль управления ВМ

Конфигурация ВМ и ее изменение

Надеюсь, читателю понравилась статья. Лично я, прочитай бы подобную в своё время, резко сократил бы потраченное время на то, чтобы перелопатить множество мануалов от разных админов, для разных ОС; сохранил бы кучу времени, потраченное на гугление, когда появлялись все новые и новые нюансы.

Буду рад замечаниям, предложениям по данной теме.

источник

Установка и настройка VPS с CentOS 6.x парой команд с VestaCP

Для своего продукта я сделал инсталлятор на чистый VPS с CentOS 6.x и оперативной памятью 512MB+. Это такой VPS, который можно приобрести у DigitalOcean.com за $5 в месяц. Но инсталлятор получился довольно универсальный, и его можно форкнуть с гитхаба, чтобы исключить ненужные вам компоненты.

В качестве панели управления была выбрана VestaCP, о которой я раньше и не слышал, так как несколько лет слепо пользуюсь cPanel/WHM, в последнее время вместе с CloudLinux. Но это платная панель, и CloudLinux тоже платный, и последнее дело просить у пользователей еще за что-то платить, кроме как за продукт.

Познакомившись с VestaCP, мне она очень понравилась, хоть и ее нужно еще дорабатывать. Например, нет никакой документации по консольным командам v-* и приходится методом тыка определять, какие же все таки данные нужно подавать на вход. Иногда это не очевидно по синопсису использования команды, если ее вызвать без параметров.

Читайте также:  Установка кпп уаз буханка одним человеком

Итак, представим что у нас чистый VPS, от DigitalOcean, FirstVDS или Linode. Про FirstVDS хочу сразу оговориться, что лучше выбирать их пакет с виртуализацией KVM, так как технология OpenVZ (которая самая дешевая у FirstVDS) не позволяет включать swap-файлы, и насколько я читал, swap выставляется на уровне менеджера виртуальных машин OpenVZ, но FirstVDS в документации явно указывают, что у них нет никакого swap, и что если приложению кратковременно потребуется больше памяти, чем выделено физически, оно будет прибито и сервер может зависнуть.

Чтобы начать установку, заходим по SSH на сервер, и выполняем команду:

Эта команда скачает конфигуратор, спросит вас имя хоста, e-mail на который будет отправлены данные доступа к VestaCP, имя домена, который будет создан автоматически для пользователя admin, а также IP для этого домена. Кроме этого будет спрошено имя БД, пользователя и пароль, которые также будут созданы в процессе инсталляции для пользователя admin.

После этого будут установлены репозитории EPEL и RPMForge, и произведено обновление системы, а также установлены wget, htop, mc, а также группа “Development Tools”.

Кроме этого будет создан swap-файл /swapfile на 512MB и включен временно, без прописывания в /etc/fstab. Дальнейшие шаги для swap-файла вы можете найти в статье на DigitalOcean.

Далее будет удален httpd, если он есть. В некоторых образах, которые используют VPS-провайдеры, он установлен по умолчанию.

В конце шага 1 будет установлена контрольная панель VestaCP, и вы увидите данные доступа к ней в консоли. А также получите их на e-mail.

По умолчанию VestaCP устанавливает PHP 5.4.x, Apache 2.2.x, MySQL 5.5.x, Nginx как прокси. Если у вас сервер с 1GB+ RAM, то также будут установлены SpamAssassin и ClamAV, а также будет установлен FGCID для Apache, и добавлен соответствующий шаблон для Apache.

В моем репозитории есть специальный шаг publigator-fcgid-install.sh, который не используется по умолчанию, но который вы можете использовать, если форкните репозиторий. Он позволяет установить fgcid и шаблон с настройками тайм-аутов и ресурсов, а также устанавливает оптимизированный fcgid-starter для серверов с малым количеством памяти, в частности параметр PHP_FCGI_CHILDREN экспортируется без значения, как советуется на странице mod_fcgid.

Далее приступаем к шагу 2:

По умолчанию на этом шаге будут сделаны следующие действия:

  • Устанавливает пакет mysqlnd для PHP вместо обычного php-mysql. Может вам это и не нужно, но в моем случае Yii2 на данный момент работает некорректно с обычным libmysql драйвером, в части получения значений из полей типа BIT. Yii2 ожидает уже преобразованное значение 0 или 1, которые соответствуют ord(48) и ord(49), а libmysql возвращает RAW битовое значение, которое соответствует ord(0) и ord(1) соответственно. Возникает непонимание.
  • Устанавливает последний IonCube Loader.
  • Обновляет библиотеку ICU до версии 54.1
  • Устанавливает обновленный php-intl версии 3.0 из PECL, чтобы поддерживать новый ICU (чего можно достигнуть перекомпиляцией PHP, но в данном случае PHP установлен пакетом и проще обновить intl из PECL).
  • Устанавливает расширения PHP из PECL: oauth, igbinary, pecl_http, imagick, geoip. Скачивает и устанавливает зависимости.
  • Компилирует и устанавливает PHP-расширение opendkim, которое может использоваться в swiftmailer.
  • Изменяет настройки /etc/php.ini:
    • realpath_cache_size = 1M
    • realpath_cache_ttl = 120
    • max_execution_time = 300
    • post_max_size = 32M
    • default_charset = UTF-8
    • display_errors = On
    • max_input_vars = 10000
    • upload_max_filesize = 32M

  • Изменяет настройки /etc/my.cnf:
    • wait_timeout=1800
    • interactive_timeout=1800

  • Создает дополнительные конфигурационные файлы NGINX для домена, в которых прописываются увеличенные таймауты.
  • Скачивает, компилирует и устанавливает SuPHP 0.7.2 и зависимости для компилирования. Добавляет шаблоны для Apache и Nginx под это дело и добавляет хостинг-пакет с названием suphp.
  • Увеличивает таймаут в /etc/httpd/conf/httpd.conf

После этого идет шаг подготовки к установке моего скрипта «Publigator», но опять же вы можете форкнуть репозиторий и переделать под себя. Также в этом шаге:

  • Включается пакет suphp для пользователя admin, и также включается использование nginx для домена, с шаблоном suphp.
  • Удаляется default.domain для пользователя admin
  • Удаляются хостинг-пакеты palegreen, gainsboro, slategrey, которые VestaCP ставит по умолчанию.

После выполнения команд вы имеете VPS с CentOS 6.x, VestaCP в качестве панели управления, Apache 2.2.x, PHP 5.4.x, Nginx в качестве прокси, SuPHP в качестве режима работы PHP, обновленный ICU и php-intl, а также установленные PECL-пакеты oauth, igbinary, pecl_http, imagick, geoip и PHP-расширение opendkim, и немного настроенный php.ini.

Если вы будете форкать репозиторий, то обратите внимание на переменную WEBSOURCE в файлах publigator-config-tpl.sh и publigator-install-step1.sh — она должна ссылаться на ваш репозиторий.

Также шаг установки publigator-suphp-0.7.2-install.sh можно заменить шагом publigator-fcgid-install.sh.

Я планирую развивать репозиторий и добавить поддержку Debian и Ubuntu. Вопросы вы можете задавать в комментариях или в Issues на гитхабе.

UPD 20/12/2014

Установку SuPHP я убрал из стандартного шага, т.е. остается mod_ruid2, который устанавливает VestaCP. Вместо этого я сделал несколько вариантов шага 2:

Это соответственно названию вариант с SuPHP.

Компилируется и устанавливается SuPHP 0.7.2. Добавляется хостинг-пакет suphp и добавляются шаблоны suphp для Apache и Nginx. Добавляется конфиг для SuPHP: /etc/suphp.conf и добавляется конфиг для Apache: /etc/httpd/conf.d/php.suphp.conf

Для пользователя admin изменяется хостинг-пакет на suphp, добавляется поддержка Nginx для созданного домена, и выставляются шаблоны suphp для Apache и Nginx для созданного домена.

источник

Установка и настройка гипервизора KVM на CentOS

В данной статье мы рассмотрим установку и базовую настройку гипервизора KVM на сервере под управлением Linux CentOS. Покажем, как создать виртуальную машину в KVM, изменить ее настройки, установить гостевую операционную систему и основные команды управления ВМ.

KVM (Kernel-based Virtual Machine) средство виртуализации в среде Linux, которое использует аппаратную виртуализацию на базе Intel VT или AMD SVM. С помощью KVM вы можете создавать изолированные виртуальные машины с собственным виртуальным аппаратным обеспечением: сетевыми картами, дисками, видеокартами и другими устройствами. На виртуальные машины можно уставить любую ОС (не только Linux).

Установка KVM в CentOS

При настройке KVM на сервере, нужно начать с проверки вашего процессора. Нужно узнать, поддерживает ли аппаратную виртуализацию CPU, установленный на вашем сервере. Из консоли сервера, выполните команду:

# cat /proc/cpuinfo | egrep «(vmx|svm)»

Если ваш процессор поддерживает технологию VT-x, у вас должен быть примерно такой вывод:

Если же команда ничего не выдала, но ваш процессор точно поддерживает виртуализацию, проверьте, вохможно данная опция отключена в BIOS сервера. Ищите параметры “Intel Virtualization Technology” или “SVM MODE”.

На моем сервере поддержка данной технологии включена, поэтому можно приступать к установке необходимых компонентов в CentOS через пакетный менеджер yum/dnf:

# yum install libvirt libvirt-python libguestfs-tools qemu-kvm virt-install –y

  • qemu-kvm – сам гипервизор KVM;
  • libvirt – библиотеки управления вирилизацией;
  • virt-install – команды для управления виртуальными машинами KVM.

На сервер будет установлено большое количество пакетов, следите, чтобы у вас не возникло ошибок в процессе установки.

Теперь нужно добавить сервис libvirtd в автозагрузку и запустить его:

# systemctl enable libvirtd
# systemctl start libvirtd

Проверьте, загрузились ли модули ядра kvm_intel и kvm:

[root@localhost /]# lsmod | grep kvm

Если у вас ничего не выводится, перезагрузите сервер и проверьте повторно.

Настройка сети в KVM

Теперь создадим каталоги, в которых будут храниться диски виртуальных машин и iso образы:

Чтобы созданные виртуальные машины имели доступ в интернет, нам нужно настроить сеть через bridge. Для этого потребуется пакет bridge-utils, проверьте установлен ли он в Linux командой:

Если нужно, установите его:

# yum install bridge-utils -y

После установки пакетов для KVM, в системе появился сетевой интерфейс virbr0:

Чтобы создать сетевой мост(bridge), нужно настроить файл конфигурации для сетевого интерфейса сервера:

# cp /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 /etc/sysconfig/network-scripts/ifcfg-enp1s0f0_bak – делаем бэкап файла

# nano /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 — открываем для редактирования

Удалите все содержимое и замените на следующее:

В вашем случае, имя интерфейса может отличаться (смотрите через команду ip a).

Где укажите свои данные: IP-адрес сервера и основной шлюз. После правки конфигурационных файлов сетевых интерфейсов нужно перезапустить есервис:

Чтобы проверить состояние bridge, используйте команду:

Последним шагом нужно настроить перенаправление сетевого трафика:

# echo -e «net.ipv4.ip_forward=1» >> /etc/sysctl.conf && sysctl -p

Теперь перезапустите сервис libvirtd:

На этом базовая настройка KVM закончена, можно создать виртуальную машину.

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

Перед созданием виртуальной машины, я скачал образ CentOS 8 с официального зеркала в директорию /vz/iso:

# cd /vz/iso && wget https://mirror.yandex.ru/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso

Чтобы создать новую виртуалную машину KVM, выполните:

virt-install -n test-centos \
—noautoconsole \
—network=bridge:br0 \
—ram 2048 —arch=x86_64 \
—vcpus=4 —cpu host —check-cpu \
—disk path=/vz/disk/test-centos.img,size=32 \
—cdrom /vz/iso/CentOS-8.1.1911-x86_64-dvd1.iso \
—graphics vnc,listen=IP,password=123456789 \
—os-type linux —os-variant=rhel7 —boot cdrom,hd,menu=on

  • test-centos — имя ВМ;
  • noautoconsole – после создания не нужно подключаться к консоли виртуальной машины автоматически;
  • network – тип сети(в нашем случае bridge);
  • ram — количество оперативной памяти в ВМ;
  • vcpus – количество ядер процессора (настройка vCPU в KVM);
  • disk – виртуальный диск, path – путь до диска. size – объем (в дальнейшем его можно расширить/уменьшить);
  • сdrom – виртуальный cdrom, в который монтируется iso образ для установки гостевой ОС;
  • graphics — параметры подключения к машине с помощью графической консоли. Мы подключаемся через VNC, поэтому в listen указывает IP сервера, где создали ВМ и пароль для подключения в консоли виртуальной машины (password).

Чтобы ВМ загружалась автоматически, выполните:

# virsh autostart test-centos

Подключение к ВМ на KVM через VNC, установка ОС

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

[root@local vz]# virsh vncdisplay test-centos

означает, что порт для подключения по VNC 5900, если у вас будет другой результат, просто прибавляйте к 5900 цифру, которую выдаст вам команда.

Для подключения по VNC к серверам, я использую утилиту TightVNC. Запустите ее и укажите IP-адрес сервера и VNC порт, который мы узнали ранее (через двойное двоеточие).

Нажмите “Connect”, в открывшемся окне укажите пароль, который задали при создании ВМ. Если все сделали верно, у вас откроется консоль сервера, на которой запущена установка CentOS (или другой ОС, образ которой вы смонтировали).

Если у вас на сервере установлен файервол, откройте сетевые порты для VNC 5900-5910 в firewalld/iptables, этого количества должно хватить. После установки гостевой ОС на виртуальную машину, запустите ВМ с консоли сервера:

Чтобы выключить виртуальную машину KVM, используйте команду:

# virsh shutdown test-centos

Чтобы вывести список всех зарегистрированных виртуальных машин KVM:

Если вы предпочитаете графической управление, можете испольховат графическую консоль KVM — virt-manager.

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

источник

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

Adblock
detector