Skip to content

Документация

OSPanel edited this page May 1, 2024 · 941 revisions

О программе

Open Server Panel является продвинутым аналогом таких WAMP сборок как Xampp, Wampserver, Herd, Denwer, Vertrigo и других, схожих с ними, программ. Если ранее вы уже работали с подобным программным обеспечением, то вам не составит труда быстро освоить и Open Server Panel.

Open Server Panel может работать без установки, потребуется лишь предварительная подготовка системы. Это означает, что вы можете спокойно переносить каталог с программой в любое место на диске или даже скопировать его на другой компьютер. В комплект поставки уже включён инструмент для подготовки Windows к работе с Open Server Panel — System Preparation Tool.

Управление программным комплексом может осуществляться через веб-интерфейс (в разработке), интерфейс командной строки (CLI), а также с помощью трей-меню.

Особенности

Open Server Panel 6 представляет собой, по сути, новый программный продукт, исходный код которого был написан нами с нуля без оглядки на старые наработки.

Основные отличия OSPanel 6 от OSPanel 5:

  • Полный доступ пользователя ко всей конфигурации модулей
  • Управление программой в консольном режиме и через веб-интерфейс (в разработке)
  • Полный контроль над процессами (включая мониторинг и восстановление после сбоя)
  • Возможность параллельной работы любых модулей (можно включить все одновременно)
  • Возможность создавать профили настроек модулей (включая файлы конфигурации и данные)
  • Персонализация настроек для каждого домена (от IP до версии PHP)
  • Поддержка SSL и IPv6 без дополнительной настройки
  • Преднастроенная среда для каждого модуля (вплоть до входа в shell/cli одной командой)
  • Возможность быстрой смены текущей среды в консоли одной командой
  • Огромный набор сторонних расширений PHP (более 115!)
  • Встроенный планировщик заданий и SMTP-сервер
  • Корректно работающий Composer во всех модулях PHP
  • 100% стабильность работы без багов/зависаний и проблем с кодировками
  • Публичный доступ ко всем настройкам/шаблонам/языкам/документации на GitHub

Почему оставаться на 5-й версии вредно и небезопасно:

  • Нельзя одновременно использовать разные версии PHP для своих проектов
  • Нет возможности настроить среду окружения модулей и поэтому нет нормальной работы с модулями в консоли
  • Невозможно добавление новых нетипичных модулей (команды запуска вшиты в исходный код программы!)
  • Модули могут не запускаться из-за некорректной кодировки конфигов при определённых настройках в Windows
  • Есть вероятность повреждения баз данных при завершении работы Windows
  • Отсутствие стабильности в работе модулей из-за устаревшего способа их запуска в системе
  • Скудный набор расширений PHP модулей и плохо протестированная конфигурация Apache и PHP
  • Отсутствуют важные проверки файловой системы и системных настроек
  • Бывают сбои при длительной работе планировщика заданий
  • Есть нерешаемые проблемы совместимости с новыми версиями Windows
  • Множество других причин, свойственных устаревшему программному обеспечению...

Системные требования

Тип Описание
Операционная система Windows 10 v1607 / Windows Server 2016 или новее
32-битные системы не поддерживаются
Версий для Linux и MacOS нет
Свободные аппаратные ресурсы от 3 ГБ RAM и от 10 ГБ места на диске
Обязательное ПО MSVC++ 2005-2022 Redistributable Packages (есть в комплекте)
Файловая система NTFS (сетевые диски не поддерживаются)

Может потребоваться ограничение количества одновременно запускаемых модулей в случае, если в вашей системе доступно менее 3 ГБ свободной оперативной памяти. Владельцам малопроизводительных компьютеров рекомендуется запускать не более одного модуля каждого типа одновременно.

Запуск Open Server Panel возможен и на устаревших операционных системах с некоторыми оговорками (не все модули доступны, не поддерживаются пути длиннее 255 символов):

Операционная система (x64) Номер версии Поддержка
Windows 7 SP1 6.1.7601 ограниченная
Windows Server 2008 R2 SP1 6.1.7601 ограниченная
Windows Home Server 2011 6.1.8400 ограниченная
Windows Server 2012 6.2.9200 ограниченная
Windows 8 6.2.9200 ограниченная
Windows 8.1 6.3.9600 ограниченная
Windows Server 2012 R2 6.3.9600 ограниченная
Windows 10 v1507 10.0.10240 ограниченная
Windows 10 v1511 10.0.10586 ограниченная

Начало использования

Рекомендуется использовать систему на базе Windows 10 или более новой версии Windows. При наличии в компьютере SSD-накопителя выполняйте установку Open Server Panel именно на него — это значительно повысит отзывчивость модулей.

Не используйте Open Server Panel на USB-флеш-накопителях (быстрый износ и крайне медленная работа) и на внешних носителях информации со старым интерфейсом USB 2.0 (крайне медленная работа).

Важно! Никогда не запускайте программу с правами администратора, это потенциально небезопасно и не является необходимым условием для работы Open Server Panel. Права администратора будут запрошены только при запуске System Preparation Tool.

Установка

Скачайте дистрибутив и установите его в выбранный каталог (желательно в корень диска). Разрешённые символы в пути до корневого каталога с программой: A-Za-z0-9-+_.\:. Выбирайте портативный вариант установки только в том случае, если вы действительно собираетесь работать с программой на разных компьютерах и выполняете установку на переносной накопитель, во всех других случаях рекомендуется выбрать установку в обычном режиме. По окончанию установки согласитесь на запуск System Preparation Tool и выполните подготовку системы к работе с Open Server Panel. Запуск System Preparation Tool не требуется только в том случае, если программа этой же версии уже была установлена вами ранее и инсталлятор сейчас запущен только для установки отсутствующих модулей.

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

Если файрвол/антивирус не будет правильно настроен, то из-за непрерывного сканирования файлов, к которым обращаются работающие модули, Open Server Panel будет работать заметно медленнее. На устаревших и медленных компьютерах, где вместо SSD-накопителей используются HDD-диски, падение производительности из-за излишней активности антивирусной программы может полностью парализовать нормальную работу Open Server Panel.

Первый запуск

С помощью меню Пуск (либо вручную .\bin\ospanel.exe в случае портативной установки) запустите Open Server Panel и убедитесь в том, что в области уведомлений Windows появилась иконка программы. Если программа не запускается, то изучите содержимое файла .\logs\general.log. Чаще всего ошибки запуска программы связаны с невозможностью запустить встроенный веб-сервер:

Address already in use (#10048 in listen: Bind) — адрес уже используется. Ошибка говорит о том, что пара ip:порт уже используется другой службой или программой в вашей системе. Измените настройки ip/порта в конфиге OSPanel, либо в настройках той службы или программы, которая их занимает.

Permission denied (#10013 in listen: Bind) — в разрешении отказано. Программе было запрещено занять требуемую пару ip:порт. Выполните настройку системного файрвола, чтобы разрешить программе доступ к сети.

После успешного запуска программы запустите CLI-интерфейс с помощью [Меню→Интерфейс командной строки]. Если после запуска CLI-интерфейса в консоль выводится сообщение The system cannot write to the specified device, то установите в настройках консоли шрифт совместимый с кодировкой UTF-8 (например: Consolas) и заново запустите CLI-интерфейс. Выполните в консоли команду osp log general и убедитесь в отсутствии ошибок и предупреждений в журнале программы.

Если во время установки программы вы пропустили создание корневого CA-сертификата, то запустите [Меню→Интерфейс командной строки] и выполните там команду osp cacert init.

Если во время установки программы вы пропустили запуск System Preparation Tool, то запустите [Меню→Интерфейс командной строки] и выполните подготовку системы с помощью команды osp sysprep, обязательно перезагрузив компьютер после окончания процесса подготовки. После перезагрузки компьютера программа Open Server Panel готова к использованию, вы можете активировать необходимые модули.

Готово!

Внимание! Без подготовки системы с помощью System Preparation Tool корректная работа Open Server Panel на вашем компьютере будет невозможна!

Если вы захотите установить дополнительные модули, то вы всегда сможете сделать это запустив инсталлятор Open Server Panel еще раз.

Смена компьютера

Перед началом использования портативной версии программы на новом компьютере вам необходимо установить корневой SSL-сертификат и выполнить подготовку системы. Для этого запустите CLI-интерфейс с помощью [Меню→Интерфейс командной строки] и по очереди выполните команды osp cacert init и osp sysprep.

Структура каталогов

.
├── addons                    # Дополнения
│   └── <имя_дополнения>      # Основной каталог дополнения
│       └── ospanel_data      # Служебные файлы (исходники настроек и конфигов)
├── bin                       # Общие исполняемые файлы
├── config                    # Настройки
│   ├── <имя_модуля>          # Настройки модуля
│   │   ├── default           # Каталог профиля Default
│   │   │   ├── templates     # Шаблоны конфигурации
│   │   │   └── settings.ini  # Настройки модуля для профиля Default
│   │   └── module.ini        # Базовые настройки модуля (вкл/выкл + имя профиля)
│   ├── menu.ini              # Настройки меню
│   └── program.ini           # Настройки программы
├── data                      # Хранилище данных (базы данных и др.)
├── home                      # Пользовательские проекты (домены)
├── licenses                  # Лицензии на компоненты сторонних производителей
├── logs                      # Файлы журналов
│   ├── domains               # Журналы проектов
│   └── mail                  # Хранилище почты
├── modules                   # Модули
│   └── <имя_модуля>          # Основной каталог модуля
│       └── ospanel_data      # Служебные файлы (исходники настроек и конфигов)
├── system                    # Служебный каталог программы
│   └── lang                  # Языковые файлы
├── temp                      # Временные файлы
└── user                      # Пользовательские данные
    └── ssl                   # Пользовательские файлы SSL (ключи, сертификаты и др.)

Работа в консоли

По умолчанию Open Server Panel использует CMD.exe (интерпретатор командной строки). Рекомендуется установить и использовать Windows Terminal — это новое, современное терминальное приложение для пользователей оболочек командной строки, таких как Command Prompt, PowerShell и WSL. Смотрите опцию use_win_terminal.

Внимание! Работа в PowerShell не поддерживается. Не используйте PowerShell для работы с Open Server Panel. При работе в Windows Terminal следует выбирать профиль "Командная строка" вместо "Windows PowerShell".

Управление (CLI)

Использование: osp <команда> [<аргументы>]

Управление средой:

add     <MODULE|ADDON>      Объединить среду указанного модуля или дополнения с текущей средой
info                        Показать информацию о текущей среде
project <DOMAIN>   [start]  Активировать среду проекта и перейти в его корневой каталог
                            Используйте [start] для запуска проекта (если настроено)
reset   [init]              Сбросить текущую среду в консоли (оригинальная среда системы)
                            Используйте [init] для инициализации интерфейса командной строки
use     <MODULE|ADDON>      Применить среду указанного модуля или дополнения
                            Если модуль выключен, то работа с частью его утилит/команд/операций,
                            включая работу с данными (базами данных), может быть недоступна!

Управление модулями:

init    <MODULE> [PROFILE]  Перечитать настройки модуля и пересоздать временные файлы (конфиги)
                            При необходимости укажите новый активный профиль настроек модуля
                            Эта команда недоступна для модулей находящихся в активном состоянии!
                            Примените среду модуля повторно (команда "use" или "add") если она
                            сейчас активна, а настройки или профиль настроек изменились!
off     <MODULE>            Выключить модуль
on      <MODULE> [PROFILE]  Включить модуль (при необходимости укажите новый активный профиль)
restart <MODULE> [PROFILE]  Перезапустить модуль (при необходимости укажите новый активный профиль)
shell   <MODULE>            Запустить shell или интерфейс командной строки модуля (если доступно)
status  <MODULE>            Показать информацию о статусе модуля

Управление Node.js:

node    install <N> [ARCH]  Установить версию Node.js. В качестве номера версии <N> можно указать
                            конкретную версию, "latest" для последней текущей версии, или "lts" для
                            последней версии LTS. Установите параметр [ARCH] равным 32 или 64 для
                            установки 32-х или 64-х разрядной версии (по умолчанию), либо укажите
                            "all", чтобы установить обе версии одновременно. Для работы со средой
                            установленной версии Node.js используйте команды "osp use Node-x.x.x"
                            и "osp add Node-x.x.x", указывая полный номер версии с префиксом.
node    list   [available]  Показать список установленных версий Node.js
                            Используйте флаг [available] для просмотра доступных версий Node.js
node    mode    <N> [ARCH]  Показать текущую разрядность Node.js версии <N>
                            Установите [ARCH] равным 32 или 64 для смены текущей разрядности
node    node_mirror  [URL]  Задать зеркало node. По умолчанию: https://nodejs.org/dist/
                            Оставьте [URL] пустым для установки URL-адреса по умолчанию
node    npm_mirror   [URL]  Задать зеркало npm. По умолчанию: https://github.com/npm/cli/archive/
                            Оставьте [URL] пустым для установки URL-адреса по умолчанию
node    proxy        [URL]  Задать прокси-сервер для использования при загрузке Node.js
                            Оставьте [URL] пустым для просмотра текущего прокси
                            Установите [URL] равным "none" для отключения прокси
node    uninstall <N>       Удаление ранее установленной версии Node.js

Другие команды:

addons                      Показать информацию о дополнениях
cacert  <init|show|deinit>  Сгенерировать и установить|показать|удалить корневой сертификат (ЦС)
                            При установке нового все старые корневые сертификаты (ЦС) будут удалены
convert <DOMAIN>            Конвертировать имя домена из/в Punycode
exit                        Завершить работу программы (текущая среда будет сброшена)
log     <PATTERN> [N]       Показать журналы по фильтру пути к файлу (последние N строк)
                            Используйте регулярное выражение для выбора выводимых журналов
                            Показать все журналы модуля PHP-8.0: osp log php-8\.0
                            Показать все журналы доступа к доменам: osp log domains\\(.+)_access
                            Показать все журналы программы: osp log "\\(general|api|scheduler|smtp)"
                            Показать все доступные журналы (последние 15 строк): osp log . 15
modules                     Показать информацию о модулях
projects                    Показать информацию о проектах
status                      Показать статус всех систем (заданий, доменов, дополнений и модулей)
sysprep [silent|ssd]        Запустить инструмент подготовки операционной системы
                            Добавьте [silent] для запуска подготовки системы в тихом режиме
                            Флаг [ssd] аналогичен [silent] (но с оптимизацией настроек под SSD)
                            Подготовка в тихом режиме происходит автоматически и без отслеживания
                            прогресса, после окончания процедуры будет выполнена перезагрузка!
tasks                       Показать информацию о заданиях планировщика
version                     Показать информацию о версии программы

Примеры использования:

osp exit & ospanel          Перезапуск программы
osp use PostgreSQL-9.6      Применение в консоли среды модуля PostgreSQL-9.6
osp on PHP-8.1 myprofile    Включение модуля PHP-8.1 со сменой профиля настроек на MyProfile
osp restart mysql-8.0       Перезапуск модуля MySQL-8.0 (имя модуля принимается в любом регистре)
osp reset & osp add bind    Объединение системной среды со средой Bind

Вспомогательные утилиты:

aria2c                      Утилита для загрузки файлов по протоколам HTTP(S), (S)FTP и BitTorrent
bat                         Клон cat (linux) с подсветкой синтаксиса и интеграцией Git
brotli                      Утилита для сжатия данных без потерь с открытым исходным кодом
curl                        Инструмент командной строки для передачи данных с помощью URL-адресов
dust                        Утилита похожая на du (linux), но более интуитивная и понятная!
fd                          Простая и быстрая утилита для поиска записей в файловой системе
gzip                        Утилита сжатия и восстановления файлов с помощью алгоритма Deflate
jq                          Лёгкий и гибкий JSON-процессор командной строки
mmdbinspect                 Инструмент для поиска записей в одной или нескольких базах данных .mmdb
sass                        Dart Sass — популярный компилятор SASS/SCSS файлов
sd                          Интуитивно понятная программа для поиска и замены текста в файлах
wget                        Неинтерактивная консольная программа для загрузки файлов по сети
xh                          Удобный и быстрый инструмент для отправки HTTP-запросов

Для команд osp use ..., osp add ..., osp project ..., osp reset и osp reset init можно использовать дополнительный аргумент silent, который подавляет вывод всех информационных сообщений кроме предупреждений и сообщений об ошибках.

Для команды osp reset init третьим аргументом вместо silent можно использовать noprint (не выводить сведения о среде).

Для команд osp init, osp off, osp on, osp restart и osp status вместо имени модуля можно использовать аргумент all. Используйте его только если вы точно уверены в том, что вы делаете.

Работа со средой

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

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

Open Server Panel наследует среду родительского процесса (обычно это explorer.exe, т.е. стандартную системную среду) в момент запуска и хранит её до момента выключения программы. Поэтому все процессы (но не модули), которые запускаются программой с помощью меню, консоли (только для среды "System") или планировщика заданий, также наследуют эту среду. Имейте это ввиду, если в процессе работы с Open Server Panel настройки среды в вашей системе изменились, может потребоваться перезапуск программы.

Модули работают в собственной изолированной среде. Данная среда формируется путём фильтрации системной среды (см. allowed_env_vars), после чего к отфильтрованной среде добавляются переменные из секции environment настроек программы.

Для всех модулей в составе Open Server Panel выполнена предварительная настройка среды, эта среда доступна по команде osp use .... Также для модулей реализована возможность быстрого запуска shell/cli оболочки, если таковая имеется. Чтобы запустить shell/cli оболочку какого-либо модуля не обязательно активировать или присоединять его среду, достаточно использовать команду osp shell ....

Для переключения между проектами в консоли достаточно использовать команду osp project ..., которая сразу активирует среду проекта (PHP/Nginx/Node + модули и дополнения указанные в environment) и выполняет переход в его корневой каталог (см. project_dir).

В процессе работы с консолью текущая среда всегда отображается в заголовке окна (или в названии вкладки), например: PHP-8.0 + MySQL-5.7 | Open Server Panel. Модули разного типа можно легко объединять в одну общую среду командой osp add .... При наличии внутри разных сред переменных с одинаковыми названиями финальным значением переменной становится значение из среды того модуля, который был подключён последним (кроме переменной PATH, значения которой объединяются).

Внимание! Модули PHP являются комбинированными (кроме модулей с приставкой FCGI), они объединяют в себе Apache и PHP.

Пример включения нескольких модулей:

osp on Redis-7.0
osp on MySQL-5.7
osp on PHP-7.4

Для корректной установки пути к каталогу временных файлов (переменные TMP и TEMP) наиболее важный модуль всегда подключайте последним.

Пример комбинации сред этих модулей без изоляции от системной переменной PATH:

osp reset
osp add Redis-7.0
osp add MySQL-5.7
osp add PHP-7.4

Пример комбинации сред этих модулей с изоляцией от системной переменной PATH:

osp use Redis-7.0
osp add MySQL-5.7
osp add PHP-7.4

Вы получите примерно такой вывод в консоль:

Redis-7.0: Рабочий процесс модуля успешно запущен
MySQL-5.7: Рабочий процесс модуля успешно запущен
PHP-7.4: Рабочий процесс модуля успешно запущен
Текущая среда: Redis-7.0
Текущая среда: Redis-7.0 + MySQL-5.7
Текущая среда: Redis-7.0 + MySQL-5.7 + PHP-7.4

Текущая среда позволит вам одновременно работать с PHP-7.4, Apache-2.4, MySQL-5.7 и Redis-7.0, например:

php -v
httpd -V
mysql -V
redis-cli -v

Работа c Composer

Composer установлен и доступен "из коробки", какая-либо настройка не требуется. Для работы с Composer в консоли достаточно активировать среду любого проекта или модуля PHP. Стоит учитывать, что каждый модуль PHP имеет свою собственную версию Composer и отдельный домашний каталог для Composer.

Пример установки Zephir в PHP 7.4 с помощью Composer:

В шаблоне php.ini PHP 7.4 .\config\PHP-7.4\default\templates\php.ini раскомментируем расширение zephir_parser и сохраним изменения. Далее все действия выполним в консоли [Меню→Интерфейс командной строки].

osp restart php-7.4
osp use php-7.4
cd %COMPOSER_HOME%
composer require phalcon/zephir
zephir help

Работа c NVM

Node Version Manager (NVM) включён в дистрибутив Open Server Panel и устанавливается в качестве дополнения. NVM недоступен для пользователя напрямую, всё взаимодействие c ним происходит через специальную прослойку в виде команды osp node ....

Т.к. работа с NVM происходит через прослойку, то пользователю следует принимать к сведению от NVM только сообщения об ошибках. Не воспринимайте и игнорируйте выводимые NVM советы по использованию команд nvm ... - они недоступны. Такое использование NVM является вынужденным, т.к. оригинальный NVM не умеет использовать несколько версий Node.js одновременно и может только переключаться между ними.

Для удобного запуска приложений рекомендуется использовать nodemon (подробнее). Команду запуска приложения можно задать в настройках проекта с помощью опции start_command, например:

start_command = nodemon app.js

Планировщик заданий

Встроенный в программу планировщик заданий работает аналогично демону Cron (компьютерная программа в системах класса UNIX). Регулярные действия описываются заданиями, помещёнными в файл <каталог_проекта>\.osp\tasks.ini.

Внимание! Задания не активируются если проект, к которому они привязаны, находится в статусе "Выключен"" или "Ошибка".

Секция [имя_проекта]

Каждая секция в файле <каталог_проекта>\.osp\tasks.ini описывает отдельный набор заданий планировщика для проекта, который указан в имени секции.

План выполнения задания состоит из 7 колонок, разделяемых пробелами. Колонки задают время выполнения и настроки задания (минута, час, день, месяц, день недели, лимит, выключатель). В первых 5-ти колонках может находиться число, список чисел, разделённых запятыми, диапазон чисел, разделённых дефисом, символы * или /. В колонках 6-7 могут находится только числа и символ *.

Все задания запускаются в базовом каталоге проекта, см. base_dir.

* * * * * * * команда
- - - - - - -
| | | | | | |
| | | | | | ----- включение/выключение задания (* или 1 - включено, 0 - выключено)
| | | | | ------- лимит на количество запусков (* или 0 - безлимитно)
| | | | --------- день недели (1—7)
| | | ----------- месяц (1—12)
| | ------------- день месяца (1—31)
| --------------- час (0—23)
----------------- минута (0—59)

Примеры:

15 14 1 * * * *       # выполнять 1 числа каждого месяца в 14 часов 15 минут
0 22 * * 1-5 * *      # каждый рабочий день в 22:00
23 */2 * * * * *      # выполнять в 0:23, 2:23, 4:23 и т.д.
5 4 * * 7 * *         # выполнять в 4:05 по воскресеньям
15 10,13 * * 1,4 * *  # выполнять в понедельник и четверг в 10:15 и 13:15
* * * * * * *         # выполнять ежеминутно
0-59/2 * * * * * *    # выполнять по чётным минутам
1-59/2 * * * * * *    # выполнять по нечётным минутам
*/5 * * * * * *       # выполнять каждые 5 минут
* * * * * 1 0         # выполнить 1 раз сразу после запуска программы (задание выключено)

Доступны следующие шаблонные переменные:

Переменная Описание
{root_dir} Корневой каталог программы (полный путь)
{root_drive} Диск корневого каталога
{root_path} Путь к корневому каталогу программы
{base_dir} Базовый каталог проекта
{host} Имя домена (для интернационализованных доменов используется формат Punycode)
{host_decoded} Видимое имя домена (для интернационализованных доменов формат Punycode не используется)
{nginx_engine} Nginx-движок проекта
{node_engine} Node-движок проекта
{php_engine} PHP-движок проекта
{project_dir} Корневой каталог проекта
{public_dir} Публичный каталог проекта

Помимо шаблонных переменных вы можете использовать любые переменные среды Windows, например: %SYSTEMDRIVE%, %USERNAME%, %PATH% и т.д.

Пример файла tasks.ini

[example.local]

Launch Node app = * * * * * 1 1 "%COMSPEC%" /c "nodemon app.js"
Backup = */5 * * * * * 1 "%COMSPEC%" /c "tar -czf {base_dir}\.osp\backup\{host_decoded}.tar.gz -C {public_dir} *"

[forum.example.local]

Backup = */5 * * * * * 1 "%COMSPEC%" /c "tar -czf {base_dir}\.osp\backup\{host_decoded}.tar.gz -C {public_dir} *"

Работа с модулями

По умолчанию все модули выключены. Перед началом работы с Open Server Panel убедитесь в том, что вы включили нужные вам модули.

Любые модули могут включаться параллельно и никак не мешают работе друг друга. Каждый модуль запускается в собственной изолированной среде и не конфликтует с другим подобным ПО в вашей системе. Параллельно могут быть включены даже однотипные модули, например: MySQL-5.5 и MySQL-8.0.

Все модули настроены на использование только локальных IP-адресов (кроме Bind и Unbound), стандартных для них портов и стандартных логинов, пароли или какие-либо ограничения по умолчанию не используются. Вы всегда можете самостоятельно изменить эти настройки по своему усмотрению.

Внимание! Запуск модулей PostgreSQL при отключённом контроле учётных записей (UAC) или с правами Администратора невозможен!

Важно! Не запускайте Open Server Panel на публичных IP без дополнительной защиты и предварительной тщательной настройки, это крайне опасно и может привести к несанкционированному доступу к вашему компьютеру, вплоть до полного контроля над системой и потери всех файлов.

Обязательно задайте надёжные пароли для всех пользователей (если модуль имеет такую возможность) и выполните настройку прав удалённого доступа до того, как вы запустите какой-либо модуль на публичном IP (если планируете).

Для всех модулей PHP доступен встроенный в программу почтовый сервер, отправляемые из PHP письма сохраняются в каталог .\logs\mail.

Для FCGI модулей PHP включена поддержка .user.ini-файлов на уровне каталога. В дополнение к основному файлу php.ini PHP ищет .user.ini в каждой директории, начиная с директории запрошенного PHP-файла и продолжает поиск до корневой директории проекта. Только INI-настройки с режимами INI_PERDIR и INI_USER будут распознаны в .user.ini-файлах.

Инициализация

При запуске программы выполняется инициализация всех доступных модулей, в процессе которой происходит проверка их конфигурации и создание временных файлов. Таким образом, вы всегда можете использовать консольные утилиты и команды модуля независимо от того, включён он сейчас или нет, но не стоит забывать о том, что часть утилит и команд может не работать когда модуль выключен. Это может пригодиться при необходимости починить базы данных, обновить хранилище данных до запуска модуля, проверить временный файл конфигурации на корректность, а также во многих других ситуациях.

%%{init: {'theme':'forest'}}%%
graph TD;

      A(Запуск<br>Open Server Panel)-->B(Инициализация модуля);
      B-->|"Провал"| C(Статус<br>'Ошибка');
      B-->|"Успех"| D(Проверка состояния);
      D-->|"Если выключён"| F(Статус<br>'Выключен');
      D-->|"Если включён"| G(Запуск);
      G-->|"Провал"| C;
      G-->|"Успех"| H(Статус<br>'Включён');
      H-->|"Если процесс умер во <br> время испытательного срока"| C;
      H-->|"Если процесс умер"| G;

Подключение

Для подключения к модулям из PHP скриптов и любого стороннего ПО используйте стандартный порт модуля и имя самого модуля в качестве адреса (хоста, сервера), примеры:

Подключение к MySQL-5.7

Хост: MySQL-5.7 (имя хоста можно использовать в любом регистре, например: mysql-5.7 или mysql-5.7.local)
Порт: 3306
Пользователь: root
Пароль: (пустой)

Подключение к PostgreSQL-12

Хост: PostgreSQL-12
Порт: 5432
Пользователь: postgres
Пароль: (пустой)

Подключение к MongoDB-4.4

Хост: MongoDB-4.4
Порт: 27017
Пользователь: (пусто)
Пароль: (пусто)

Подключение к Redis-5.0

Хост: Redis-5.0
Порт: 6379

и так далее...

Для тех скриптов и ПО, которые проверяют корректность доменного имени, в качестве адреса подключения можно использовать доменную зону .local, например: MySQL-5.7.local.

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

Расширения PHP

Мы добавили в дистрибутив более 115-ти расширений PHP, все эти расширения по умолчанию выключены. Чтобы активировать расширение достаточно раскомментировать его в шаблоне конфигурации PHP и перезапустить PHP-модуль.

PHPINFO: PHP 7.2 | PHP 7.3 | PHP 7.4 | PHP 8.0 | PHP 8.1 | PHP 8.2 | PHP 8.3

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

Совместимость расширений

Важно! Не изменяйте порядок подключения расширений в шаблоне конфигурации PHP. Расширения подключаются в порядке зависимости друг от друга и могут не работать в случае изменения очерёдности их активации.

Расширение Зависимость Несовместимость
blackfire opcache, opencensus, pcov, xdebug, xhprof
crypto openssl
ev openssl, sockets
event openssl, sockets
exif mbstring
http curl, intl, propro, psr, raphf, sockets
http_message psr
libevent sockets
mailparse mbstring
memcached igbinare
oauth curl
opcache blackfire
При активации xdebug или pcov отключается Jit компиляция
opencensus blackfire, pcov, xdebug, xhprof
pcov blackfire, opencensus, xdebug, xhprof
phalcon curl, fileinfo, gd2, gettext,
imagick, mbstring, openssl, pdo
rdkafka simple_kafka_client
redis igbinary
simple_kafka_client rdkafka
solr curl
ssh2 openssl
stomp openssl
xdebug blackfire, opencensus, pcov, xhprof
xhprof blackfire, opencensus, pcov, xdebug
yac Одновременная активация в нескольких модулях PHP недопустима!
yar curl

Модули Apache

Модуль Apache
2.4.54/VC15
(PHP 7.2.34)
Apache
2.4.54/VC15
(PHP 7.3.33)
Apache
2.4.54/VC15
(PHP 7.4.33)
Apache
2.4.59/VS17
(PHP 8.0.30)
Apache
2.4.59/VS17
(PHP 8.1.27)
Apache
2.4.59/VS17
(PHP 8.2.15)
Apache
2.4.59/VS17
(PHP 8.3.2)
mod_antiloris 0.6.0 0.6.0 0.6.0 0.6.0 0.6.0 0.6.0 0.6.0
mod_apreq2 2.16 2.16 2.16 2.16 2.16 2.16 2.16
mod_authn_ntlm 1.0.8 1.0.8 1.0.8 1.0.8 1.0.8 1.0.8 1.0.8
mod_fcgid 2.3.10 2.3.10 2.3.10 2.3.10 2.3.10 2.3.10 2.3.10
mod_jk 1.2.46 1.2.46 1.2.46 1.2.48 1.2.48 1.2.48 1.2.48
mod_limitipconn 0.24 0.24 0.24 0.24 0.24 0.24 0.24
mod_log_dbd 1.0.6 1.0.6 1.0.6 1.0.6 1.0.6 1.0.6 1.0.6
mod_log_rotate 1.00a 1.00a 1.00a 1.0.2 1.0.2 1.0.2 1.0.2
mod_maxminddb 1.1.0 1.1.0 1.2.0 1.2.0 1.2.0 1.2.0
mod_perl 2.0.12 2.0.12 2.0.12 2.0.12 2.0.12 2.0.12 2.0.12
mod_vhost_dbd 1.0.6 1.0.6 1.0.6 1.0.6 1.0.6 1.0.6 1.0.6
mod_view 2.2 2.2 2.2 2.2 2.2 2.2 2.2
mod_watch 4.3P 4.3P 4.3P 4.3P 4.3P 4.3P 4.3P
mod_xsendfile 1.0-P1 1.0-P1 1.0-P1 1.0-P1 1.0-P1 1.0-P1 1.0-P1

Модули Nginx

В дистрибутив добавлены следующие модули Nginx (отсутствуют в оригинальном дистрибутиве от разработчиков Nginx): brotli_module, fancyindex_module, http_geoip_module, http_geoip2_module, http_image_filter_module, poll_module, stream_geoip_module, stream_realip_module, stream_ssl_preread_module.

Настройка программы

Настройки программы и модулей (глобальные опции) задаются в файле .\config\program.ini.

Внимание! Для применения изменений необходимо перезапустить программу.

Секция [main]

Секция содержит основные настройки программы.

Параметр Описание
api_domain Локальный домен API и веб-интерфейса.
Если в браузере используется VPN/прокси, то в настройках VPN/прокси необходимо задать исключение для этого домена.

Значение по умолчанию: ospanel
api_ip IPv4-адрес API и веб-интерфейса. Если в браузере используется VPN/прокси, то в настройках VPN/прокси необходимо задать исключение для этого IP.

Значение по умолчанию: 127.127.127.127
api_port Порт API и веб-интерфейса. Запуск программы будет невозможен если такой порт уже используется.

Значение по умолчанию: 80
clear_dns_cache Очищать системный кэш DNS при изменении файла HOSTS (on/off). Отключайте эту опцию только в том случае, если вы вручную внесли изменения в файл HOST, очистили кэш DNS и больше не планируете вносить изменения в настройки программы и модулей. Также эту опцию можно отключить если вы используете единственный домен — localhost.

Значение по умолчанию: on
lang Язык программы. В качестве значения используйте имя любого языкового файла из каталога .\system\lang.

Можно использовать значение auto (по умолчанию), в этом случае будет использован системный язык (при наличии такого языкового файла).
log_max_filesize Максимальный размер журнала (0 — отключает ограничение). Опция задаёт ограничения для следующих журналов: программа, api и почтовый сервер. Если размер какого-либо журнала превысит указанный, то файл такого журнала будет автоматически пересоздан.

Допустимо использование следующих обозначений: B — байты, K — килобайты, M — мегабайты, G — гигабайты, T — терабайты. Для принудительной очистки логов при каждом запуске установите значение равным 1 (к цифрам без обозначений применяются B — байты).
task_scheduler Включить/выключить встроенный планировщик заданий.

Значение по умолчанию: on
terminal_ansi_fix Активация поддержки ANSI-кодов управления цветом в консоли (on/off/auto). По умолчанию используется значение auto:

- Фикс применяется только для систем на базе Windows 7, Windows 8, Windows 10 до версии 1903 (включительно) и не применяется для более новых версий Windows, т.к. они уже имеют поддержку ANSI-кодов.
- Фикс не применяется для некоторых продвинутых эмуляторов терминала: Windows Terminal, ConEmu и Cmder.
update_check Включить проверку обновлений (требуется подключение к сети Интернет)

Значение по умолчанию: on
use_hosts_file Использовать файл HOSTS (on/off).

Если вы находитесь в организации с жёстким регулированием доступа к файлу HOSTS, то вам необходимо предварительно настроить все модули и проекты, с которыми вы собираетесь работать, после чего обратиться к администратору организации с просьбой разблокировать файл HOSTS и зафиксировать его состояние после запуска Open Server Panel (пока программа и необходимые модули запущены). После фиксации администратором организации изменений в файле HOSTS опцию можно отключить. Никогда не выключайте use_hosts_file если вы не уверены в том, что вы делаете.

Значение по умолчанию: on
use_win_terminal Включить использование Windows Terminal. Windows Terminal должен быть штатно установлен в систему и корректно обнаруживаться системной средой.

Значение по умолчанию: off

Секция [menu]

Раздел содержит настройки меню программы. Используйте файл menu.ini для детальной настройки пунктов меню.

Параметр Описание
do_not_group_single_item Не группировать списки из одного элемента (см. show_addons_in_groups, show_modules_in_groups и show_projects_in_groups)

Значение по умолчанию: on
show_icons Показывать иконки в меню программы

Значение по умолчанию: on
show_addons Показывать меню дополнений

Значение по умолчанию: on
show_addons_in_groups Группировать дополнения в меню

Значение по умолчанию: on
show_addons_in_submenu Показывать меню дополнений в отдельном подменю

Значение по умолчанию: on
show_modules Показывать меню управления модулями

Значение по умолчанию: on
show_modules_in_groups Группировать модули в меню

Значение по умолчанию: on
show_modules_in_submenu Показывать меню модулей в отдельном подменю.

Значение по умолчанию: on
show_projects Показывать меню управления проектами

Значение по умолчанию: on
show_projects_in_groups Использовать группировку по доменной зоне в меню проектов

Значение по умолчанию: off
show_projects_in_submenu Показывать меню проектов в отдельном подменю.

Значение по умолчанию: off
show_tray_icon Показывать иконку программы в области уведомлений. Отключите эту опцию в случае, если вы запускаете программу в среде Windows Server Core или планируете использовать тип автозапуска программы который не требует входа пользователя Windows (Планировщик заданий Windows -> Запуск при загрузке компьютера).

Значение по умолчанию: on
show_hr_after_addons Показывать линию после меню дополнений

Значение по умолчанию: on
show_hr_after_modules Показывать линию после меню модулей

Значение по умолчанию: on
show_hr_after_projects Показывать линию после меню проектов

Значение по умолчанию: on

Секция [projects]

Секция содержит глобальные настройки проектов. Они используются в том случае, если в настройках проекта не задано иное значение. Эти значения можно переопределить в файле настроек проектов, см. файл .\config\projects.ini. Подробную информацию о параметрах этой секции смотрите в разделе Настройка проектов.

Секция [modules]

Секция содержит глобальные настройки модулей. Они используются в том случае, если в настройках модуля указано значение auto (по умолчанию). Эти значения можно переопределить в файле настроек модуля, см. файл .\config\<имя_модуля>\<имя_профиля>\settings.ini. Подробную информацию о параметрах этой секции смотрите в разделе Настройка модулей.

Секция [smtp]

Секция содержит настройки встроенного SMTP-сервера.

Параметр Описание
open_email_after_saving Открывать электронные сообщения после их сохранения (необходимо наличие установленного почтового клиента, например Microsoft Outlook).

Используейте эту опцию с осторожностью если вы практикуете локальное тестирование почтовых рассылок.

Значение по умолчанию: off
saved_email_extension Расширение файлов сохраняемых электронных сообщений

Значение по умолчанию: .eml
smtp_port Порт встроенного почтового сервера

Значение по умолчанию: 25
smtp_server Включить/выключить встроенный SMTP-сервер

Значение по умолчанию: on

Секция [environment]

Секция содержит глобальные переменные среды модулей.

Для любого модуля эти переменные можно переопределить/удалить в файле его настроек .\config\<имя_модуля>\<имя_профиля>\settings.ini.

Для удаления переменной из среды задайте пустое значение или используйте специальный фильтр (см. allowed_env_vars).

Доступны следующие шаблонные переменные:

Переменная Описание
{root_dir} Корневой каталог программы (полный путь)
{root_drive} Диск корневого каталога
{root_path} Путь к корневому каталогу программы
{terminal_codepage} Кодировка консоли (см. terminal_codepage)
{time_zone} Часовой пояс в формате Etc/GMT (см. time_zone)

Помимо шаблонных переменных вы можете использовать любые переменные среды Windows, например: %SYSTEMDRIVE%, %USERNAME%, %PATH% и т.д.

Настройка проектов

Проекты и их настройки задаются в файле .\config\projects.ini. Для создания проекта дополните этот файл новой секцией с именем домена и его настройками. Для применения изменений необходимо перезапустить программу или модули PHP/Nginx, которые вы указали в настройках проекта, а также, при необходимости, очистить кэш DNS в браузере. При выборе версий PHP и Nginx с помощью меню управления проектами все нужные перезапуски и инициализации выполняются автоматически.

Важно! Браузеры на движке Chrome (Chrome, Edge, Vivaldi, ЯндексБраузер и т.д.) не видят локальные домены с IPv6-адресами при отсутствии доступа по протоколу IPv6 в глобальную сеть Интернет. Для работы с такими доменами используйте браузер Firefox, либо откажитесь от использования IPv6-адресов для модулей PHP/Nginx и доменов.

Важно! Если вы используете VPN или прокси, то локальные домены могут быть недоступны в вашем браузере. Для доступа к локальным доменам вам необходимо добавить все локальные домены в исключения вашего VPN-клиента.

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

Секция [имя_домена]

Секция содержит основные настройки проекта, все параметры этой секции являются необязательными. Интернационализованные доменные имена можно указывать как в обычном, так и в Punycode представлении. В качестве имени домена запрещено указывать IP-адрес, а если вам требуется прямой доступ к домену по IP, то IP-адрес можно указать в качестве псевдонима (см. aliases).

Параметр Описание
aliases Псевдонимы (алиасы) домена (через пробел). Если псевдоним не содержит точку ., то он считается поддоменом и будет дополнен именем домена, например: www->www.test.local. В качестве псевдонима можно указывать и другие домены, например когда требуется использовать старый домен после переезда сайта на новый.

Важно! Не используйте * в качестве знака подстановки! Алиасы вида *.example.local не поддерживаются в Windows и не будут обработаны программой.

Если параметр не задан, то используется глобальное значение из основных настроек программы. Значение по умолчанию: www
enabled Включение/выключение проекта.

Если параметр не задан, то используется глобальное значение из основных настроек программы. Значение по умолчанию: on
environment Список дополнений и модулей (через пробел), среды которых присоединяются к среде проекта при её активации командой osp project <DOMAIN>. По умолчанию используется значение System, что позволяет использовать установленные в систему программы, например git.exe или ssh.exe. Отключайте System только в тех случаях, если при работе со средой проекта в консоли возникает конфликт с установленным в систему программным обеспечением. Среды модулей заданных в php_engine, nginx_engine и node_engine подключаются всегда и не требуют дополнительного указания в environment.

Если параметр не задан, то используется глобальное значение из основных настроек программы. По умолчанию используется значение System.

Значение System является уникальным и обозначает собой оригинальную среду Windows.
ip IP-адрес домена. Можно задавать несколько IP (через пробел) и IP в формате IPv6. Если вы указываете несколько IP-адресов, то при обновлении файла HOSTS домену будет назначен первый указанный IP. Не назначайте один и тот же IP адрес доменам с неодинаковым значением php_engine или nginx_engine.

Можно использовать пустое значение, в этом случае IP-адрес будет назначен автоматически.

Если параметр не задан, то используется глобальное значение из основных настроек программы. Значение по умолчанию: (пусто)
log_format Формат журналирования

Если параметр не задан, то используется глобальное значение из основных настроек программы. Значение по умолчанию: combined
nginx_engine Модуль Nginx. Указанный движок будет использоваться в качестве веб-сервера для этого домена.

Если параметр задан, то убедитесь в том, что в качестве движка PHP вы выбрали FCGI модуль PHP. Выбирайте обычный модуль PHP (не FCGI) если планируете использовать Nginx как прокси-сервер для Apache. Если параметр задан, но такой модуль Nginx не существует (не установлен), то домен игнорируется.

Если параметр не задан, то используется глобальное значение из основных настроек программы. Значение по умолчанию: (пусто)
node_engine Версия Node.js. Указанный движок будет использоваться для запуска Node-приложений этого домена. Нужную версию Node.js предварительно необходимо установить с помощью дополнения NVM.

Если параметр не задан, то используется глобальное значение из основных настроек программы. Значение по умолчанию: (пусто)
php_engine Модуль PHP. Указанный движок будет использоваться для обработки всех PHP-файлов этого домена. Если модуль PHP указан, но не существует (не установлен), то такой домен игнорируется.

Если параметр не задан, то используется глобальное значение из основных настроек программы. Значение по умолчанию: (пусто)
project_dir Корневой каталог проекта применяемый по команде osp project <DOMAIN>. Если задано пустое значение, то используется значение опции public_dir.

Если параметр не задан, то используется глобальное значение из основных настроек программы. Значение по умолчанию: (пусто)
project_url URL-адрес, по которому будет осуществлён переход при открытии проекта в браузере. В основном эта опция используется для уточнения URL-адреса панели администрирования CMS, чтобы при открытии проекта сразу попадать туда, куда требуется.

Значение по умолчанию: https://{host_decoded}
public_dir Публичный каталог проекта. Можно использовать шаблонные переменные.

Если параметр не задан, то используется глобальное значение из основных настроек программы. Значение по умолчанию: {base_dir}\public_html
ssl Включение/выключение использования SSL. Если SSL выключен, то работа с доменом по протоколу HTTPS будет невозможна.

Если параметр не задан, то используется глобальное значение из основных настроек программы. Значение по умолчанию: on
ssl_cert_file Файл сертификата. Можно использовать шаблонные переменные.

Значение по умолчанию: автоматически сгенерированный сертификат
ssl_key_file Файл ключа. Можно использовать шаблонные переменные.

Значение по умолчанию: автоматически сгенерированный ключ
start_command Команда запуска проекта. Например: nodemon app.js

По умолчанию во время выполнения команд используется кодировка 65001 (UTF-8), её можно изменить командой chcp <КОДИРОВКА>.

Если параметр не задан, то используется глобальное значение из основных настроек программы. Значение по умолчанию: (пусто)
terminal_codepage Кодировка консоли при работе со средой проекта (например 65001 или 1251). Если параметр не задан, то будет использована кодировка заданная для среды модуля PHP.

Если параметр не задан, то используется глобальное значение из основных настроек программы. Значение по умолчанию: (пусто)

Доступны следующие шаблонные переменные:

Переменная Описание
{base_dir} Корневой каталог проекта (местонахождение служебного каталога .osp)
{host} Имя домена (для интернационализованных доменов формат Punycode используется)
{host_decoded} Видимое имя домена (для интернационализованных доменов формат Punycode не используется)
{root_dir} Корневой каталог программы (полный путь)
{root_drive} Диск корневого каталога
{root_path} Путь к корневому каталогу программы

Ручная конфигурация

По умолчанию Open Server Panel использует универсальную конфигурацию домена, для модулей Apache такая конфигурация задаётся с помощью макроса в шаблоне httpd.conf, а для модулей Nginx в файлах virtual_*_host.conf, которые находятся в папке conf модуля.

Способ 1 (полуавтоматический)

Для создания собственной конфигурации домена внутри автоматически сконфигурированного блока <VirtualHost> (Apache) или Server{} (Nginx) необходимо выполнить следующие действия:

  1. Создайте в каталоге .\config\domains подкаталог с именем модуля, который задан в качестве php_engine и/или nginx_engine в настройках выбранного вами домена.
  2. Внутри созданного каталога создайте файл с именем <имя_домена>.conf. Например: .\config\domains\PHP-8.1\example.local.conf. Для интернационализованных доменов следует обязательно использовать формат Punycode!
  3. Добавьте записи описывающие конфигурацию домена в созданный файл.
  4. Перезапустите программу.

Это рекомендуемый способ, который позволяет использовать собственную конфигурацию домена без необходимости детальной настройки основных параметров хоста. Создавая конфигурацию этим способом учитывайте, что вы уже находитесь внутри блока <VirtualHost> (Apache) или Server{} (Nginx), а все основные параметры хоста уже автоматически заданы.

Способ 2 (полный контроль)

Для создания собственной конфигурации домена без автоматической конфигурации блоков <VirtualHost> (Apache) или Server{} (Nginx) необходимо выполнить следующие действия:

  1. Создайте в каталоге .\config\domains подкаталог с именем модуля, который задан в качестве php_engine и/или nginx_engine в настройках выбранного вами домена.
  2. Внутри созданного каталога создайте файл с именем <имя_домена>_custom.conf. Например: .\config\domains\PHP-8.1\example.local.conf. Для интернационализованных доменов следует обязательно использовать формат Punycode!
  3. Добавьте записи целиком описывающие конфигурацию домена вместе с блоками <VirtualHost> (Apache) или Server{} (Nginx) в созданный файл.
  4. Перезапустите программу.

Это НЕрекомендуемый способ создания собственной конфигурацию домена. Он подразумевает создание конфигурации домена с нуля и требует от пользователя продвинутых навыков конфигурации веб-сервера Apache или Nginx.

Настройка меню

C помощью меню программы можно выполнять часть базовых настроек (выбор версии PHP, выбор профиля и др.) и команд (перезапуск модулей, запуск shell и др.).

Внимание! При изменении текущей версии PHP проекта с помощью меню, или текущего профиля настроек модуля с помощью меню, происходит автоматическая инициализация или перезапуск затронутых модулей! Учитывайте это, если в момент изменения настроек на сервере выполняется какая-либо длительная операция.

Конфигурация меню находится в файле .\config\menu.ini, там же можно создать дополнительные пункты меню. Для создания нового пункта меню дополните этот файл новой секцией. Для применения изменений необходимо перезапустить программу.

Секция [ID]

Секция содержит настройки пункта меню, все параметры этой секции являются необязательными. В качестве ID секции необходимо задать любое уникальное значение. Пункты в меню сортируются в том же порядке, в котором расположены описывающие их секции в файле .\config\menu.ini.

Важно! Не используйте одинаковые ID в именах секций, это приведёт к некорректной работе меню!

Параметр Описание
caption Текст пункта меню. В тексте можно использовать языковые константы, например: {lang_xxx}.

Значение по умолчанию: (пусто)
category Категория пункта меню. В названии категории можно использовать языковые константы, например: {lang_xxx}. Вместе с категорией можно задать подкатегорию с уровнем вложенности не более одного, например: Мои Закладки\Работа. Если категория не задана, то пункт будет создан в корне меню.

Также в качестве категории вы можете использовать специальные значения: projects, modules, addons и projects\<имя_домена>, modules\<имя_модуля>, addons\<имя_дополнения>. В первом случае пункт будет добавлен в меню действий над проектами, модулями или дополнениями, а во втором туда же, но только для определённого проекта, модуля или дополнения.

Значение по умолчанию: (пусто)
command Команда, которая будет выполнена при выборе этого пункта меню. Если команда не задана, то пункт меню будет проигнорирован.

Значение по умолчанию: (пусто)
enabled Отображать пункт меню или нет.

Значение по умолчанию: on
hide Скрыть окно вызываемого приложения.

Опция влияет только на вызываемую подпрограмму и никак не влияет на новые процессы создаваемые вызванной подпрограммой.

Опция не работает когда значение для command не задано или является веб-ссылкой.

Значение по умолчанию: off
hr_after Горизонтальный разделитель под пунктом меню.

Значение по умолчанию: off
hr_before Горизонтальный разделитель перед пунктом меню.

Значение по умолчанию: off
icon Имя иконки из набора Font Awesome Free Solid

Значение по умолчанию: (пусто)
need_category Показывать пункт меню только для тех модулей или дополнений, которые соответствуют заданной категории (MySQL, PHP и т.д.), не путайте с категорией пункта меню. Эта опция работает только для категорий меню modules, addons,modules\<имя_модуля>, addons\<имя_дополнения>.

Значение по умолчанию: (пусто)
need_module_shell Показывать пункт меню только когда наличие shell/cli оболочки модуля, обозначенного в родительском пункте меню, или модуля, обозначенного как PHP-движок проекта, соответсвует значению опции. Эта опция работает только для категорий modules или modules\<имя_модуля>.

Значение по умолчанию: (пусто)
Допустимые значения: on off
need_state Показывать пункт меню только когда модуль, обозначенный в родительском пункте меню, или PHP/Nginx(если задан) модуль, обозначенный как движок проекта, находится в нужном состоянии. Эта опция работает только когда имя секции начинается с modules или modules\<имя_модуля>.

Значение по умолчанию: (пусто)
Допустимые значения: on off
need_start_command Показывать пункт меню только когда в настройках проекта задана команда его запуска (см. start_command). Эта опция работает только когда имя секции начинается с projects или projects\<имя_домена>.

Значение по умолчанию: (пусто)
Допустимые значения: on off
work_directory Рабочий каталог, в котором будет выполняться команда (см. command).

Внимание! Во время выполнения некоторых команд (например osp project ...) текущий каталог может меняться и не совпадать со стартовым рабочим каталогом, который указан в work_directory.

Значение по умолчанию: {root_dir}

Для параметров command и work_directory доступны следующие шаблонные переменные:

Переменная Описание
{root_dir} Корневой каталог программы (полный путь)
{root_drive} Диск корневого каталога
{root_path} Путь к корневому каталогу программы
{web_panel_url} URL-адрес веб-интерфейса
Особые переменные Доступны только для категорий projects или projects\<имя_домена>
{host} Имя домена (для интернационализованных доменов используется формат Punycode)
{host_decoded} Видимое имя домена (для интернационализованных доменов формат Punycode не используется)
{nginx_engine} Nginx-движок проекта
{node_engine} Node-движок проекта
{php_engine} PHP-движок проекта
{project_dir} Корневой каталог проекта
{public_dir} Публичный каталог проекта
Особые переменные Доступны только для категорий addons или addons\<имя_дополнения>
{addon_name} Имя дополнения
Особые переменные Доступны только для категорий modules или modules\<имя_модуля>
{module_name} Имя модуля
{profile_name} Имя текущего профиля настроек модуля

Помимо шаблонных переменных для параметров command и work_directory вы можете использовать любые переменные среды Windows, например: %COMSPEC%, %SYSTEMDRIVE%, %USERNAME%, %PATH% и т.д.

Примеры использования

[21]

caption              = Открыть в PHPStrom
category             = projects
command              = "%COMSPEC%" /c "osp project {host} & start "" "C:\Program Files\JetBrains\PhpStorm 2018.2\bin\phpstorm64.exe" "{project_dir}""
hide                 = on
icon                 = code

[22]

caption              = Google
category             = Мои Закладки\Поисковые системы
command              = "%COMSPEC%" /c "start "" "https://google.com""
hide                 = on
icon                 = bookmark

Опции: /c — выполнение команды с завершением работы терминала, /k — выполнение команды с продолжением работы терминала.

Настройка модулей

Настройки любого из модулей в Open Server Panel задаются в файле .\config\<имя_модуля>\<имя_профиля>\settings.ini. По умолчанию используется профиль default. Сменить активный профиль у модуля можно с помощью меню программы.

Резервная копия оригинальных настроек и оригинальных файлов конфигурации модуля хранится в каталоге .\modules\<имя_модуля>\ospanel_data\default. Резервная копия оригинальных файлов данных модуля (если модуль поставляется c начальными данными) находится в каталоге .\modules\<имя_модуля>\ospanel_data\default_data. В будущем все эти данные будут использоваться в панели управления программой для функции восстановления оригинальной конфигурации модуля.

Вы можете самостоятельно создавать дополнительные профили настроек модулей. Для создания нового профиля, например MyProfile, достаточно создать копию любого существующего профиля у выбранного модуля, например скопировав каталог оригинального профиля .\config\<имя_модуля>\Default в .\config\<имя_модуля>\MyProfile. Если модуль работает с данными в каталоге .\data, то вам понадобится создать каталог с данными для нового профиля, например скопировав каталог оригинального профиля .\data\<имя_модуля>\Default в .\data\<имя_модуля>\MyProfile. Вместо копирования существующего профиля вы также можете использовать оригинальное хранилище настроек и данных модуля (.\modules\<имя_модуля>\ospanel_data\default и .\modules\<имя_модуля>\ospanel_data\default_data соответственно).

Допустимые символы в имени профиля: A-Za-z0-9-+_.. Использование дополнительных профилей может быть полезно в ряде случаев, например, когда вам необходимо протестировать новую конфигурацию модуля или вы просто хотите поэкспериментировать.

Внимание! Для применения изменений настроек модуля необходимо перезапустить Open Server Panel. Для применения изменений в шаблонах конфигурации модуля достаточно его перезапустить или переинициализировать.

Важно! Не редактируйте файл базовых настроек модуля .\config\<имя_модуля>\module.ini. Процесс работы с ним полностью автоматизирован и не требует вмешательства пользователя.

Секция [main]

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

Параметр Описание
ip IP-адрес модуля. Можно задавать несколько IP (через пробел) и IP в формате IPv6 в случаях когда модуль это поддерживает. Если вы указываете несколько IP-адресов, то при обновлении файла HOSTS в качестве IP для имени модуля будет использован первый указанный IP. Настройка IP игнорируется для модулей DNS.
port Порт модуля. Настройка порта игнорируется для модулей классов Web Server и DNS.
clean_directories Каталоги очищаемые перед запуском модуля (через пробел). Например: кэш, временные файлы и тому подобное. Можно использовать шаблонные переменные.
log_directory Каталог для хранения собственных журналов модуля. Если каталог не существует, то он будет создан в процессе запуска модуля. Можно использовать шаблонные переменные.
log_level_values Доступные уровни журналирования (принимает разные значения и поддерживается не всеми модулями)
log_level Уровень журналирования (должен быть равен любому значению из log_level_values)
query_log_values Доступные уровни журналирования запросов (принимает разные значения и поддерживается не всеми модулями)
query_log_level Уровень журналирования запросов (должен быть равен любому значению из query_log_values)
shell_command Команда запуска SHELL оболочки или CLI интерфейса модуля. Можно использовать шаблонные переменные.
ssl_auto_cert Автоматическая генерация и использование файлов SSL-сертификата. Значение опции всегда off если для модуля не задан IP-адрес. В сертификат прописываются домен и IP-адрес(а) модуля.

Если ваш браузер не использует хранилище сертификатов Windows (например браузер Firefox), то вам необходимо самостоятельно импортировать в браузер (для Firefox: Настройки->Сертификаты->Просмотр сертификатов…->Вкладка "Центры сертификации"->Импортировать…) корневой сертификат программы: data\ssl\root\cert.crt. Не забывайте делать аналогичный импорт после каждого пересоздания корневого сертификата командой osp cacert init.

Важно! В случае отключения этой опции вам понадобится самостоятельно перенастроить конфиги модуля (отключить SSL или указать свои ключи и сертификаты), иначе модуль может перестать запускаться или корректно работать.
start_command Команда запуска модуля. Можно использовать шаблонные переменные.
start_directory Каталог запуска модуля (каталог должен существовать). Можно использовать шаблонные переменные.
work_directories Каталоги необходимые для работы модуля (через пробел). Если каталог не существует, то он будет создан в процессе запуска модуля. Можно использовать шаблонные переменные.
addons Список дополнений (через пробел), среды которых, если таковые доступны, прозрачно присоединяются к среде модуля. Имейте ввиду, что информационные индикаторы в консоли не сообщают о таких дополнительных средах, которые используются модулем. Не используйте эту опцию, если вы чётко не понимаете что именно вы делаете.
allowed_env_vars Список переменных среды Windows (через пробел) передаваемых в среду модуля. Белый список переменных необходим для фильтрации рабочей среды модулей от среды установленного в систему аналогичного ПО.

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

Можно использовать значение auto, в этом случае будет использовано глобальное значение из основных настроек программы.
log_max_filesize Максимальный размер журнала (0 — отключает ограничение). Если размер какого-либо журнала превысит указанный, то при очередном запуске модуля его файл журнала будет пересоздан.

Можно использовать значение auto, в этом случае будет использовано глобальное значение из основных настроек программы.

Допустимо использование следующих обозначений: B — байты, K — килобайты, M — мегабайты, G — гигабайты, T — терабайты. Для принудительной очистки логов при каждом запуске установите значение равным 1 (к цифрам без обозначений применяются B — байты).
log_write_title Добавлять заголовок в лог модуля при каждом запуске (on/off). Полезно для визуального разграничения рабочих сессий если не используется автоматическая очистка журнала модуля.

Можно использовать значение auto, в этом случае будет использовано глобальное значение из основных настроек программы.
max_probation_fails Максимальное кол-во последовательных (подряд) провалов испытательного срока, после которых модуль перейдёт в состояние "Ошибка" (см. probation).

Можно использовать значение auto, в этом случае будет использовано глобальное значение из основных настроек программы.
max_shutdown_time Максимальное время выключения модуля (0 — отключает ограничение). Если рабочий процесс модуля не успел завершить свою работу за указанное время, то по завершению ожидания он будет принудительно остановлен (терминирован). Недопустимо устанавливать значение равным менее 30 сек. (меньшее значение, кроме ноля, не будет использовано программой).

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

Можно использовать значение auto, в этом случае будет использовано глобальное значение из основных настроек программы.

Допустимо использование следующих обозначений: s — секунды, m — минуты, h — часы, d — дни (к цифрам без обозначений применяются s — секунды).
probation Время проверки работоспособности модуля (испытательный срок). Отсчёт начинается с момента успешного запуска рабочего процесса модуля.

Если в течение испытательного срока рабочий процесс модуля неожиданно завершил свою работу, то он не будет автоматически перезапущен и модуль перейдёт в состояние "Ошибка", ожидая дополнительных действий от пользователя (например исправления файлов конфигурации). Состояние "Ошибка" также будет установлено в том случае, если запускаемый процесс не смог стартовать на системном уровне.

Значение 0 полностью отключает испытательный срок, в случае неожиданного завершения работы процесс будет всегда автоматически перезапускаться, при циклическом сбое — бесконечно. Не рекомендуется устанавливать значение 0 или задавать слишком короткий период проверки (менее 30 сек.).

Можно использовать значение auto, в этом случае будет использовано глобальное значение из основных настроек программы.

Допустимо использование следующих обозначений: s — секунды, m — минуты, h — часы, d — дни (к цифрам без обозначений применяются s — секунды).
silent_mode Тихий режим работы (on/off). В этом режиме не отображаются всплывающие (pop-up) сообщения об ошибках, которые генерирует служба Windows Error Reporting или сам модуль. Отключайте этот режим только тогда, когда вам требуется разобраться с проблемами в работе модуля, в остальное время он должен быть постоянно включён.

Можно использовать значение auto, в этом случае будет использовано глобальное значение из основных настроек программы.
terminal_codepage Кодировка консоли при работе со средой модуля. Можно использовать специальные значения system (системная кодировка) или auto (глобальное значение из основных настроек программы).

Если задать пустое значение или не задавать его вовсе, то кодировка в консоли при активации среды модуля или его SHELL оболочки изменяться не будет (используется текущая активная кодировка).
time_zone Часовой пояс (временная зона). В качестве значения этого параметра необходимо указать часовой пояс в формате Etc/GMT (например: Etc/GMT-3). Можно использовать специальные значения system (системный часовой пояс) или auto (глобальное значение из основных настроек программы).

Внимание! Формат Etc/GMT отличается от UTC обратным порядком, например: Etc/GMT-3 = UTC/GMT+3 = UTC+03:00 = Europe/Moscow.

Доступны следующие шаблонные переменные:

Переменная Описание
{module_name} Имя модуля
{profile_name} Имя текущего профиля настроек модуля
{root_dir} Корневой каталог программы (полный путь)
{root_drive} Диск корневого каталога
{root_path} Путь к корневому каталогу программы

Для параметров cmd и shell секции [main] доступны также следующие шаблонные переменные (если одноимённые параметры заданы в этой же секции):

Переменная Описание
{ip} IP-адрес(а) модуля
{port} Порт модуля
{log_level} Уровень журналирования
{query_log_level} Уровень журналирования запросов
{terminal_codepage} Кодировка консоли
{time_zone} Часовой пояс в формате Etc/GMT

Помимо шаблонных переменных вы можете использовать любые переменные среды Windows, например: %SYSTEMDRIVE%, %USERNAME%, %PATH% и т.д.

Секция [environment]

Секция служит для задания/переопределения переменных среды модуля (поддерживаемые переменные зависят от модуля). Для удаления переменной из среды задайте пустое значение.

Доступны следующие шаблонные переменные:

Переменная Описание
{module_name} Имя модуля
{profile_name} Имя текущего профиля настроек модуля
{root_dir} Корневой каталог программы (полный путь)
{root_drive} Диск корневого каталога
{root_path} Путь к корневому каталогу программы

Доступны также следующие шаблонные переменные, если одноимённые параметры заданы в секции [main]:

Переменная Описание
{ip} IP-адрес(а) модуля
{port} Порт модуля
{log_level} Уровень журналирования
{query_log_level} Уровень журналирования запросов
{terminal_codepage} Кодировка консоли
{time_zone} Часовой пояс в формате Etc/GMT

Помимо шаблонных переменных вы можете использовать любые переменные среды Windows, например: %SYSTEMDRIVE%, %USERNAME%, %PATH% и т.д.

Секция [имя_файла]

Секции этого типа описывают работу с шаблонами файлов конфигурации и с шаблонами других служебных файлов модуля (кол-во секций не ограничено). Шаблоны находятся в каталоге .\config\<имя_модуля>\<имя_профиля>\templates. В процессе инициализации модуля шаблоны, описанные в таких секциях, преобразуются во временные рабочие файлы, которые необходимы для работы модуля.

Параметр Обязательный Описание
comment да Символ комментария для использования в файле конфигурации.
destination да Файл назначения. Это временный файл, он пересоздаётся при каждой инициализации модуля и не подлежит редактированию.
enabled нет Включение/выключение использования этого файла конфигурации. Задайте значение off в том случае, если этот файл временно не требуется для работы модуля (по молчанию on).
encoding нет Кодировка файла конфигурации (по умолчанию UTF8).
Допустимые значения UTF8, ANSI, ASCII.
path_separator да Символ разделителя, используемый в именах путей к нужным ресурсам.
source_dir нет Каталог для поиска исходного файла-шаблона. Если каталог не указан (по умолчанию), то поиск файла-шаблона производится в каталоге .\config\<имя_модуля>\<имя_профиля>\templates.

Доступны следующие шаблонные переменные:

Переменная Описание
{module_name} Имя модуля
{profile_name} Имя текущего профиля настроек модуля
{root_dir} Корневой каталог программы (полный путь)
{root_drive} Диск корневого каталога
{root_path} Путь к корневому каталогу программы

Помимо шаблонных переменных вы можете использовать любые переменные среды Windows, например: %SYSTEMDRIVE%, %USERNAME%, %PATH% и т.д.

В исходном коде файлов-шаблонов, описанных в подобных секциях, вы можете использовать следующие шаблонные переменные:

Переменная Описание
{module_name} Имя модуля
{profile_name} Имя текущего профиля настроек модуля
{root_dir} Корневой каталог программы (полный путь)
{root_drive} Диск корневого каталога
{root_path} Путь к корневому каталогу программы
Особые переменные Доступны только если заданы в секции [main] файла настроек модуля
{ip} IP-адрес(а) модуля
{port} Порт модуля
{log_level} Уровень журналирования
{query_log_level} Уровень журналирования запросов
{shell_command} Команда для запуска shell/cli оболочки модуля
{terminal_codepage} Кодировка консоли
{time_zone} Часовой пояс в формате Etc/GMT
Служебные переменные Только для специалистов по написанию модулей
{apache_hosts} Блок конфигурации хостов для Apache
{api_domain} Домен API
{cmd_api_url} URL-адрес для доступа к API через интерфейс командной строки
{environment} Блок формирования среды модуля (Batch script формат)
{lang_N} Текстовая строка под номером (N) из языкового файла (используемого в данный момент языка)
{nginx_hosts} Блок конфигурации хостов для Nginx
{osp_version} Версия программы
{osp_version_datetime} Дата выхода версии (дата компиляции)
{web_api_url} URL-адрес для доступа к API через веб-интерфейс
{web_panel_url} URL-адрес веб-интерфейса
{windows_environment} Среда Windows (оригинальная, сформированная на момент запуска программы)

Секция [services]

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

Пример заполнения (имя службы = её требуемое состояние):

[services]

Dhcp     = on
EMDMgmt  = off
SysMain  = on

Как создавать модули

Перед тем, как создать свой первый модуль, давайте разберёмся с его предполагаемой структурой. Минимальная файловая структура любого модуля выглядит так:

.
├── data
│   └── <имя_нового_модуля>       # Хранилище данных модуля (необязательный каталог)
└── modules
    └── <имя_нового_модуля>       # Основной каталог модуля
        └── ospanel_data          # Служебные файлы (исходники настроек и конфигов)
            ├── default           # Каталог начального профиля (исходник)
            │   ├── settings.ini  # Файл настроек модуля
            │   └── templates     # Каталог для размещения шаблонов
            ├── default_data      # Каталог с данными начального профиля (если требуется)
            ├── module.dat        # Описательный файл модуля
            ├── menu.ini          # Файл с настройками меню модуля (дополнительные пункты)
            └── lang              # Каталог для размещения языковых файлов (English.ini, Russian.ini и т.д.)

Теперь вы можете создать свой собственный модуль используя приведённый выше пример структуры каталогов.

Языковые файлы могут размещаться в каталоге .\modules\<имя_нового_модуля>\ospanel_data\lang и должны содержать только константы модуля в секции [main]. Если ваш модуль будет включать в себя языковые файлы, то обязательно используйте уникальный префикс в имени всех констант внутри таких файлов, например: mymod_....

Дополнительное меню модуля (если оно необходимо) задаётся в файле .\modules\<имя_нового_модуля>\ospanel_data\menu.ini. ID секций с настройками в этом файле должны быть уникальными и не совпадать с идентификаторами из основного файла настроек меню .\config\menu.ini. При формировании ID рекомендуется использовать уникальный префикс равный имени модуля.

Файл настроек settings.ini необходимо создать в каталоге .\modules\<имя_нового_модуля>\ospanel_data\default, а шаблоны файлов конфигурации необходимо разместить в каталоге .\modules\<имя_нового_модуля>\ospanel_data\default\templates. Начальные данные, если таковые имеются (например базы данных), разместите в каталоге .\modules\<имя_нового_модуля>\ospanel_data\default_data.

Важно! Никогда не используйте каталоги .\modules\<имя_нового_модуля>\ospanel_data\default и .\modules\<имя_нового_модуля>\ospanel_data\default_data для повседневной работы, т.к. это не будет иметь никакого эффекта. Данные каталоги являются хранилищем оригинального профиля и больше никак программой не используются. В будущем они будут использоваться для восстановления оригинального профиля при сбросе настроек модуля.

Также вам необходимо создать и заполнить описательный файл модуля .\modules\<имя_нового_модуля>\ospanel_data\module.dat. Формат файла аналогичен формату .ini-файлов, в нём вам необходимо создать секцию [main] со следующими параметрами:

Переменная Описание
architecture Архитектура модуля: x64 или x86
category Категория модуля (можно использовать категории других модулей или придумать свою)
class Класс модуля (можно использовать классы других модулей или придумать свой)
fast_start Быстрый запуск модуля (без ожидания инициализации консоли процесса)
fast_stop Быстрая остановка модуля (принудительное закрытие процесса)
ipv6_support Поддержка IPv6: yes или no
ip_separator Знак разделителя IP-адресов в конфигах модуля (если поддерживается указание нескольких IP)
kill_names Список процессов для принудитального закрытия когда модуль не умеет самостоятельно их останаливать (например: epmd.exe test.exe)
license Ссылка на лицензию модуля
license_type Обозначение лицензии модуля
min_windows_ver Минимальная версия Windows поддерживаемая модулем (см. список версий ниже)
timestamp Временная метка даты/времени релиза этой версии модуля
version Версия модуля

При заполнении значения переменной min_windows_ver руководствуйтесь следующей таблицей:

Номер версии Привычное обозначение
6.1.7601 Windows 7 SP1
6.2.9200 Windows 8
6.3.9600 Windows 8.1
10.0.10240 Windows 10 1507
10.0.10586 Windows 10 1511
10.0.14393 Windows 10 1607
10.0.15063 Windows 10 1703
10.0.16299 Windows 10 1709
10.0.17134 Windows 10 1803
10.0.17763 Windows 10 1809
10.0.18362 Windows 10 1903
10.0.18363 Windows 10 1909
10.0.19041 Windows 10 2004
10.0.19042 Windows 10 20H2
10.0.19043 Windows 10 21H1
10.0.19044 Windows 10 21H2
10.0.19045 Windows 10 22H2
10.0.22000 Windows 11 21H2
10.0.22621 Windows 11 22H2

Когда всё будет готово, создайте каталог .\config\<имя_нового_модуля>\default и скопируйте туда содержимое каталога .\modules\<имя_нового_модуля>\ospanel_data\default. Если у вашего модуля имеются начальные данные, то создайте каталог .\data\<имя_нового_модуля>\default и скопируйте туда содержимое каталога .\modules\<имя_нового_модуля>\ospanel_data\default_data. Теперь вы можете перезапустить программу для того, чтобы она увидела созданный вами модуль.