В данном руководстве я расскажу как установить VirtualBox с нуля, создать в нём виртуальную машину и подготовить её к дальнейшей работе, а также дам несколько советов по удобной работе.
Установка VirtualBox
Необходимо скачать и установить VirtualBox for Windows hosts.
Скачать BitrixVM для VirtualBox, распаковать из архива.
Открыть VirtualBox, в меню Файл
выбрать Импорт конфигураций
. Выбрать распакованный OVA-файл (расширение - ova
). В свойствах можно изменить число процессоров (по умолчанию - 1) - лучше увеличить до 4, и изменить объём оперативной памяти (по умолчанию 2048Мб) - лучше уменьшить до 1024Мб (чтобы писать код, не требовательный к памяти). Также можно изменить название (поле Имя
) - например, Dev.Pro
. Запустить импорт.
После импорта в левой части окна VirtualBox появится новая виртуальная машина - с указанным при импорте названием (напр., Dev.Pro
).
Базовая настройка виртуальной машины
Открыть настройки виртуальной машины - для этого выделить виртуальную машину и нажать кнопку Настроить
. В целом, дефолтные настройки, сделанные специалистами Битрикс, оптимальны. Настроить необходимо только параметры сети.
Адаптер 1 должен быть настроен на тип Виртуальный адаптер хоста
с выбранным адаптером Intel PRO/1000 MT Desktop (82540EM)
и опцией Разрешить всё
. Он будет использован для доступа к виртуальной машине по локальной сети. Адаптер 2 должен быть настроен на тип NAT
с выбранным адаптером PCnet-FAST III (Am79C973)
. Остальные адаптеры должны быть выключены.
Сохранить настройки. Запустить виртуальную машину. Дождаться окончания загрузки (предложения ввести логин).
Вводим логин root
. Нажимаем Enter. Пароль - bitrix
. Появится запрос на изменение этого дефолтного пароля. Сначала вводим текущий пароль - bitrix
, затем вводим новый пароль (два раза). После этого появится запрос на установку пароля пользователя bitrix
. Для простоты можно задать тот же пароль, что для пользователя root
.
После этого появляется запрос на создание пула. Нужно выбрать первый пункт - Create management pool on the master
- для этого просто нажимаем 1 и Enter. Появится запрос на выбор сетевого адаптера. Нужен виртуальный адаптер хоста, мы его настраивали первым, поэтому нужно указать первый (IP-адрес 192.168.56.1) - скорее всего, это будет enp0s3
. Пропишите эти символы и нажмите Enter. Появляется запрос на установку имени текущего хоста, вводим dev.pro
. Нажимаем Enter - после этого появляется сообщение что пул создан. Виртуальная машина настроена. Можно переходить к установке сайта, но предварительно выполним некоторые дополнительные действия.
Пересоздание главного сайта
Рекомендую пересоздать главный сайт (тот что в /home/bitrix/www), но это для перфекционистов - чтобы дать базе данных нормальное имя вместо sitemanager
. Всё что нужно - зайти в меню виртуальной машины (если вышли - набрать команду ./menu.sh
), выбрать пункт 6. Configure pool sites
, затем 2. Delete a site
. Теперь нужно набрать или скопировать путь /home/bitrix/www
, нажать Enter, и немного подождать.
Затем необходимо здесь же создать новый сайт в режиме мастера (потребуется указать настройки самостоятельно - в том числе логин/пароль для полключения, путь к папке /home/bitrix/www
и т.п.).
Подготовка к настройке подключения по SSH
Использовать виртуальную машину гораздо удобнее по SSH чем напрямую в VirtualBox. Поэтому необходимо настроить подключение к SSH, для этого необходим статический IP-адрес виртуальной машины. В меню настроек, появившемся после окончания предыдущих действий нажимаем 0 и Enter для выхода.
Пишем команду nmtui
, открывается псевдографический интерфейс настройки сетевых подключений. Здесь достаточно специфическое управление с клавиатуры, нужно привыкнуть. Действуют клавиши стрелок (влево/вправо, вверх/вниз) и Tab для перемещения по меню, Enter для нажатия кнопок, и пробел для выбора флажков. Выбираем Edit a connection
. Переходим в редактированию первого подключения (напр., это Wired connection 2
. Устанавливаем Profile name
в зависимости от кода адаптера. Если это enp0s8, указываем NAT
, если enp0s3 указываем LAN
(можно указывать свои имена, это всё для удобства). Далее настраиваем в зависимости от типа адаптера.
LAN
Переходим в IPv4 Configuration
. Меняем Automatic
на Manual
, открываем Show
, указываем IP-адрес 192.168.56.200
, Gateway - 192.168.56.1
, и ниже отмечаем флаг Require IPv4 addressing for this connection
.
Переходим в IPv6 Configuration
. Меняем Automatic
на Ignore
.
В форме настроек нажимаем OK.
NAT
Переходим в IPv6 Configuration
. Меняем Automatic
на Ignore
.
В форме настроек нажимаем OK.
Применение сетевых настроек
В форме со списком сетевых адаптеров выбираем Back
, и в главном окне программы nmtui
- OK
. Остаётся перезапустить сервер для применения настроек.
reboot
После перезагрузки в окне приветствия Bitrix VM appliance
будет указан статический IP-адрес - 192.168.56.200
.
Настройка домена dev.pro
По IP-адресу 192.168.56.200
уже можно подключаться к этой виртуальной машине. Однако с сайтом будет удобнее работать не по IP-адресу, а по домену dev.pro
. Поэтому необходимо настроить работу домена dev.pro
на данную виртуальную машину.
В Windows необходимо открыть файл C:\Windows\System32\drivers\etc\hosts в текстовом редакторе. Данный файл по умолчанию может быть сохранён только с административными правами, нужно это учитывать при открытии файла.
В файле следует добавить всего лишь одну новую строку: 192.168.56.200 dev.pro www.dev.pro
И сохранить. Теперь все обращения к сайту dev.pro на компьютере будут идти к виртуальной машине.
Настройка подключения по SSH
Теперь можно нормально подключиться к серверу по SSH. Для этого удобно использовать, например, Kitty, при подключении необходимо использовать следующие данные:
- Host Name: root@dev.pro
- Port: 22
При подключении принять запрос о ключе хоста. Затем ввести пароль для root (Kitty можно настроить на хранение пароля). После авторизации видим то же меню, что и в окне VirtualBox.
Кроме подключения по SSH необходимо подключиться к серверу по SFTP, таким образом гораздо удобнее редактировать файлы, лучше использовать WinSCP - все данные для подключения те же что и для SSH.
При этом важно понимать, что для конфигурации сервера необходимо использовать аккаунт root
, а для повседневной работы с сайтом - bitrix
.
Запуск виртуальной машины без окна VirtualBox
Теперь, имея SSH-доступ к виртуальной машине, нет смысла запуска виртуальную машину с окном, достаточно будет запускать её в фоне. Из окна VirtualBox это можно сделать, если нажать правую кнопку и выбрать пункт Запустить в фоновом режиме
. Однако это можно сделать удобнее, даже на запуская VirtualBox. Следует использовать команду запуска:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm "Dev.Pro" --type headless
Это можно сделать любым удобным способом: через командную строку, через ярлык, через горячие клавиши, и т.д.
После запуска остаётся немного подождать и можно подключаться по SSH.
Чтобы остановить виртуальную машину, нужно выполнить команду:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm "Dev.Pro" acpipowerbutton
Для удобного запуска советую использовать AutoHotKey - это фантастически мощное приложение для автоматизации, которое умеет делать всё, что может понадобиться, даже имеет свой встроенный язык программирования. У меня эта программа используется по максимуму, в т.ч. настроен запуск виртуальной машины по горячей клавише Ctrl-Alt-Shift-PgUp
и остановка по Ctrl-Alt-Shift-PgDown
.
Настройки гостевой Linux
Настройки хостов
Теперь следует выполнить некоторые важные настройки гостевой операционной системы Linux. Прежде всего, нужно подключиться к серверу через SFTP, открыть файл /etc/hosts и в конце первой строки 127.0.0.1
после перечисления хостов добавить (через пробел) домен dev.pro
, сохранить. Таким образом система будет знать, что dev.pro
находится на этом же сервере.
Настройки SSH
Важно настроить SSH, иначе при длительном отсутствии доступа к интернету подключиться к виртуальной машине будет невозможно. Открываем файл /etc/ssh/sshd_config
, устанавливаем параметры (они уже есть в файле, их нужно найти, изменить значения, и если в начале строки есть символ решётки - убрать его):
- UseDNS no
- GSSAPIAuthentication no
- GSSAPICleanupCredentials yes
Настройки логирования
Теперь изменим настройки логирования, чтобы в системе было меньше мусора. Чтобы лог /var/log/messages
содержал только важную информацию, открываем файл /etc/systemd/system.conf
и устанавливаем параметр:
LogLevel=warning
Чтобы отключить логирование запуска cron, и чтобы отключить хранение писем с ошибками, открываем файл /etc/rsyslog.conf
и комментируем (добавляем символ решётки в начале строки) каждую из этих строк: cron.*
, mail.*
Обновление системы
Теперь можно обновить систему. Используем для этого команду
yum -y update
Во время обновления могут быть различные запросы, например запросы на перезапись некоторых конфигов - нужно внимательно изучать каждый случай, и выбирать подходящий вариант.
Установка дополнительных программ
Теперь необходимо установить дополнительные программы на сервере:
- mc (файловый менеджер)
- nano (редактор файлов)
- htop (менеджер процессов)
Для этого выполняем команду:
yum -y install mc nano htop
Ускорение запуска виртуальной машины
В целом, загрузка системы происходит очень быстро, однако можно ускорить её загрузку на 5 секунд (для тех, кто совсем не любит ждать). Дело в том, что при запуске система даёт 5 секунд на выбор версии операционной системы, нам это никогда не нужно, поэтому можно сократить время до нуля. Для этого необходимо редактировать конфиг grub. Открываем файл /etc/default/grub
, устанавливаем параметр (первый нужно только изменить, второй - создать):
- GRUB_TIMEOUT=0
- GRUB_HIDDEN_TIMEOUT=0
Теперь открываем файл /etc/grub2.cfg
, находим два вхождения строки set timeout=5
и меняет их на set timeout=0
.
Перезагрузка
Теперь самое время чтобы перезапустить сервер, в том числе для того, чтобы применились сделанные ранее настройки.
Удаление лишних ядер
Для Linux периодически выходят обновления ядра, а старые нужно удалять, т.к. они занимают лишнее место (примерно по 64Мб). Команда для просмотра списка ядер:
rpm -q kernel
Пример вывода команды:
kernel-3.10.0-1160.el7.x86_64
kernel-3.10.0-1160.62.1.el7.x86_64
kernel-3.10.0-1160.83.1.el7.x86_64
Удалить нужно все кроме последнего (его не получится удалить даже при желании), для этого используем команду yum remove с перечислением ненужных ядер:
yum remove kernel-3.10.0-1160.el7.x86_64 kernel-3.10.0-1160.62.1.el7.x86_64
Настройка отправки почты
Отправка почты с сайта - отдельная большая тема. Но это если дело касается production-сервера. Если это локальный dev-сервер, то смело можно использовать любой удобный вариант. Советую в файле /home/bitrix/.msmtp указать такой конфиг:
# smtp account configuration for default
account default
logfile /home/bitrix/msmtp_default.log
host smtp.yandex.ru
port 587
from my_address@yandex.ru
keepbcc on
auth on
user my_address@yandex.ru
password My_password_here
tls on
tls_starttls on
tls_certcheck off
Этот конфиг заставит почту отправляться не с локального сервера, а через Яндекс (по протоколу SMTP), что является одним из оптимальных вариантов.
При этом важно чтобы права на файл были 600
, владельцем был пользователь bitrix
.
Настройка SSL для домена dev.pro
Для сайта на виртуальной машине возможно использовать SSL, т.е. можно обеспечить открытие сайтов по https так, что браузер будет считать сайт безопасным. Сделать это достаточно несложно.
Генерация сертификата
Прежде всего необходимо выпустить сертификат:
mkdir /etc/nginx/ssl/dev.pro && openssl req -x509 -nodes -sha256 -days 3650 -newkey rsa:2048 -keyout /etc/nginx/ssl/dev.pro/dev.pro.key -new -out /etc/nginx/ssl/dev.pro/dev.pro.crt -subj /C=RU/ST=Krasnodar/L=Krasnodar/O="Denis"/OU="Denis"/CN=*.dev.pro -reqexts SAN -extensions SAN -config <(cat /etc/pki/tls/openssl.cnf <(printf '[ SAN ]\nsubjectAltName=DNS:dev.pro,DNS:dev.pro,DNS:*.dev.pro')) && ln -s /etc/nginx/ssl/dev.pro/dev.pro.crt /etc/pki/ca-trust/source/anchors/dev.pro.crt && update-ca-trust
Эта команда создаёт сертификат (и файл ключа), который нужно прописать в конфиге nginx и который нужно будет установить в своей операционной системе.
Также, эта команда создаёт в папке /etc/pki/ca-trust/source/anchors
символическую ссылку на созданный сертификат и запускает обновление корневых сертификатов.
Конфигурация nginx
В конфиг nginx для нужного сайта добавить две строки (всё другое, связанное с SSL - закомментировать или удалить):
ssl_certificate /etc/nginx/ssl/dev.pro/dev.pro.crt;
ssl_certificate_key /etc/nginx/ssl/dev.pro/dev.pro.key;
После этого перезапустить nginx:
service nginx restart
Добавление сертификата для PHP
Для корректности https-запросов к данному сайту необходимо добавить в конце файла /etc/php.d/bitrixenv.ini
эту строку:
openssl.cafile = "/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt"
Вероятно, запросы должны корректно работать без этого, но почему-то не работают, поэтому данная строка обязательно. Если найду способ решения - дополню статью.
И после этого перезапустить httpd:
service httpd restart
Установка сертификата в Windows
Необходимо скачать себе этот сертификат /etc/nginx/ssl/dev.pro/dev.pro.crt
себе на Windows, открыть его стандартным средством Битрикс, и затем выполнить шаги по установке:
- нажать кнопку
Установить сертификат
- выбрать
Текущий пользователь
- выбрать
Поместить все сертификаты в следующее хранилище
, а затем -Доверенные корневые центры сертификации
- нажать
Готово
, подтвердить добавление сертификата
Теперь сайт должен корректно открываться по протоколу https://.
Подключить сайт как папку на компьютере
При локальной разработке на Windows удобно иметь доступ к файлам в нативном интерфейсе, для этого существует много программ, одна из наиболее удобных - SFTPDrive. Она позволяет подключить любую папку на сервере в качестве отдельного диска (или папки) на компьютере. Это позволяет работать с файлами сайта как с обычными файлами компьютера. Это может быть крайне удобно при использовании поиска по файлам, сравнения файлов, создания бэкапов и т.д.
Также, используя AutoHotKey, можно настроить автоматическое подключение папки сайта после запуска виртуальной машины (с задержкой), и автоматическое отключение перед её выключением. Пример конфига для AutoHotKey:
+^!PgUp::{
Run '"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm "Dev.Pro" --type headless'
Sleep 30000
Run '"C:\Program Files\nsoftware\SFTP Drive V2\SFTPDrive.exe" /start uimin'
}
+^!PgDn::{
Run '"C:\Program Files\nsoftware\SFTP Drive V2\SFTPDrive.exe" /stop'
Sleep 2000
Run '"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm "Dev.Pro" acpipowerbutton'
}
Таким образом, AutoHotKey позволяет одной горячей клавишей подготовить окружение к работе, и в конце рабочего дня другой горячей клавишей закрыть это окружение (не рекомендую оставлять виртуальную машину включённой при выключении и перезагрузке компьютера, при этом при переводе в режим сна и гибернации проблем нет).
Подготовка Git
Подготовка Git включает в себя установку глобальных параметров:
git config --global color.ui auto
git config --global push.default simple
git config --global credential.helper store
git config --global user.name "Ivan Ivanov"
git config --global user.email "ivan@mail.ru"
Первая строка активирует задаёт цветной режим текста в терминале - без этого работать крайне неудобно.
Вторая строка устанавливает дефолтный режим для push (подробнее).
Третья строка включает хранение пароля.
Четвёртая и пятая строки задают данные текущего пользователя
Оптимизация занятого места в виртуальной машине
Существует один не очень приятный для перфекционистов момент - со временем виртуальная машина занимает всё больше памяти на диске, даже если общий размер файлов остаётся неизменным. В общем случае этого избежать невозможно, система может со временем занимать всё больше места.
Но речь про другое. Пример: если виртуальная машина занимает, например, 10Гб места, затем создать бэкап сайта, виртуальная машина будет занимать, например, 12Гб места, затем удалить этот бэкап - размер виртуальной машины так и останется 12Гб.
Для оптимизации места можно использовать программу zerofree
, но она должна запускаться не из этой системы. Её можно использовать, например, если запустить виртуальную машину с LiveCD - один из наиболее удобных примеров это SystemRescueCD, в новых версиях которой после запуска достаточно выполнить одну команду:
zerofree /dev/sda3
Увеличение размера диска
Размер диска по умолчанию - 20Гб (при этом файл виртуальной машины может занимать намного меньше - например, 1Гб). Но часто бывает что этого недостаточно. В таком случае необходимо зайти в меню Файл
- Инструменты
- Менеджер виртуальных носителей
, найдите в списке нужный диск, и увеличьте его размер (уменьшение размера не поддерживается).
При этом, после увеличения размера операционная система продолжит считать что размер диска 20Гб, необходимо будет расширить диск, например с помощью fdisk
(подробнее).
Резервные копии виртуальной машины
Один из важных вопросов при использовании виртуальных машин - их резервной копирование и востановление. Для создания бэкапа виртуальная машина должна быть выключена. Нажмите правой кнопкой на ней, выберите Экспортировать в OCI
, выберите формат (рекомендую Открытый формат виртуализации 2.0
), укажите файл и запустите процесс.
Процесс восстановления выполняется точно так же, как установка виртуальной машины из образа OVA.
Рекомендую создать бэкап сразу после настройки.
Дальнейшие действия
На этом настройка виртуальной машины завершена. Далее остаётся установить Битрикс (или восстановить сайт из резервной копии), затем через меню виртуальной машины повысить PHP до версии 8.1 (если устанавливаете новый сайт - это нужно делать только после установки).