Open Server: полное руководство по настройке серверной сборки
Основные этапы настройки Open Server
Open Server представляет собой портативную серверную среду для Windows, включающую Apache, Nginx, MySQL, MariaDB, PHP и другие компоненты. Установка заключается в распаковке архива в любую папку, например C:\OSPanel. После распаковки запускается исполняемый файл Open Server.exe от имени администратора. В трее появляется зелёный флажок, означающий успешный запуск всех служб. Для начала работы достаточно поместить файлы проекта в папку domains\localhost и открыть в браузере адрес http://localhost.
При первом запуске может потребоваться установка библиотек Microsoft Visual C++ и включение виртуализации Hyper-V, если используется версия Open Server с поддержкой Docker. Все настройки хранятся в папке userdata\config. Рекомендуется сразу проверить, что в Windows отключён служба IIS, занимающая порт 80, иначе сервер не запустится. Для этого в командной строке с правами администратора выполняется команда net stop w3svc и отключается служба в оснастке services.msc.
Типичная ошибка: порт 80 занят
Если после запуска Open Server горит красный флажок, необходимо открыть меню Настройки → Сервер и изменить порт HTTP на любой другой, например 8080. Также можно завершить процесс, занимающий порт, с помощью утилиты netstat -ano и найти PID программы. В случае, когда порт занят службой SQL Server Reporting Services, её следует остановить.
Как настроить несколько версий PHP в Open Server?
Open Server позволяет переключаться между разными версиями PHP (5.x, 7.x, 8.x) через меню в трее. Для этого в трее выбирается пункт PHP → Версия и отмечается нужная. После переключения сервер автоматически перезапускается. Однако для постоянной работы проекта под конкретной версией можно задать её через файл .htaccess в корне домена. Пример настройки:
AddHandler application/x-httpd-php7 .php
Action application/x-httpd-php7 /cgi-bin/php7.cgiопен сервер php (настройка и установка open server)
Если требуется использовать разные версии для разных доменов, редактируется конфигурация Apache для каждого виртуального хоста. В файле userdata\config\apache\httpd-vhosts.conf добавляется директива PHPIniDir. Пример:
<VirtualHost *:80>
DocumentRoot "E:/OSPanel/domains/site2"
ServerName site2.local
PHPIniDir "E:/OSPanel/userdata/config/php/php-8.1/php.ini"
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
</VirtualHost>После изменений в конфигурации Apache обязательно перезапускается Open Server из меню трея (Перезапустить сервер).
Ошибка: PHP не распознаётся
Если после переключения версии скрипты не выполняются, следует проверить, что в системной переменной PATH отсутствуют пути к другим интерпретаторам PHP. Также нужно убедиться, что установлен модуль mod_fcgid или mod_php в конфигурации Apache. В Open Server модули обычно уже включены, но при ручном редактировании httpd.conf можно случайно их отключить.
Как создать виртуальный хост с собственным доменом?
Для разработки удобно использовать локальные домены вида mysite.local. Для этого в файл C:\Windows\System32\drivers\etc\hosts добавляется строка:
127.0.0.1 mysite.localЗатем в Open Server открывается меню Настройки → Домены и нажимается кнопка Добавить. Указывается имя домена (mysite.local) и путь к папке проекта. Альтернативный метод – ручное редактирование файла userdata\config\apache\httpd-vhosts.conf. Пример готовой записи:
<VirtualHost *:80>
DocumentRoot "E:/OSPanel/domains/mysite"
ServerName mysite.local
ServerAlias www.mysite.local
<Directory "E:/OSPanel/domains/mysite">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>После сохранения файла сервер перезапускается. Чтобы изменения в hosts вступили в силу, может потребоваться очистка кэша DNS командой ipconfig /flushdns.
Проблема: домен не открывается
Самая частая причина – отсутствие записи в файле hosts или опечатка в домене. Также проверяется, что папка проекта существует и содержит хотя бы index.php. Если используется протокол HTTPS, необходимо настроить SSL-сертификат (самоподписанный) и добавить VirtualHost на порт 443.
Как включить поддержку SSL на локальном сервере?
Open Server поставляется с самоподписанным сертификатом, хранящимся в папке userdata\config\ssl. Для использования HTTPS достаточно в меню Настройки → Сервер включить опцию Использовать SSL и задать пути к файлам сертификата. Если требуется собственный сертификат, его можно сгенерировать с помощью OpenSSL. Пример команды для создания сертификата для домена mysite.local:
openssl req -new -x509 -days 365 -nodes -out mysite.crt -keyout mysite.key -subj "/CN=mysite.local"Полученные файлы mysite.crt и mysite.key помещаются в папку ssl. В конфигурации виртуального хоста (httpd-vhosts.conf) добавляется секция для порта 443:
<VirtualHost *:443>
DocumentRoot "E:/OSPanel/domains/mysite"
ServerName mysite.local
SSLEngine on
SSLCertificateFile "E:/OSPanel/userdata/config/ssl/mysite.crt"
SSLCertificateKeyFile "E:/OSPanel/userdata/config/ssl/mysite.key"
<Directory "E:/OSPanel/domains/mysite">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>После перезапуска сервера сайт будет доступен по https://mysite.local. Браузер выдаст предупреждение о небезопасном соединении, так как сертификат самоподписанный, но для разработки это допустимо.
Ошибка: ERR_SSL_PROTOCOL_ERROR
Возникает, если файлы сертификата не найдены или указаны неверные пути. Также нужно убедиться, что модуль mod_ssl включён в Apache (проверяется в файле httpd.conf строка LoadModule ssl_module modules/mod_ssl.so).
Расширенные примеры настройки Open Server
Пример 1. Полная конфигурация виртуального хоста с rewrite и ограничением доступа
В данном примере создаётся домен test.local, который поддерживает ЧПУ через модуль mod_rewrite, а также ограничивает доступ к папке admin по IP-адресу. Конфигурация добавляется в httpd-vhosts.conf:
<VirtualHost *:80>
DocumentRoot "E:/OSPanel/domains/test"
ServerName test.local
<Directory "E:/OSPanel/domains/test">
AllowOverride All
Require all granted
</Directory>
<Directory "E:/OSPanel/domains/test/admin">
Require ip 192.168.1.100
Require ip 127.0.0.1
</Directory>
RewriteEngine On
RewriteRule ^news/([0-9]+)$ /news.php?id=$1 [L]
</VirtualHost>Результат: при переходе на http://test.local/news/123 будет вызван скрипт news.php с параметром id=123. Доступ к админке разрешён только с локального компьютера и IP 192.168.1.100.
Пример 2. Настройка переменных окружения для разных сред
Для разграничения конфигураций (development, staging, production) можно задать переменные окружения через файл .htaccess или в конфигурации виртуального хоста. Пример задания переменной в httpd-vhosts.conf:
<VirtualHost *:80>
DocumentRoot "E:/OSPanel/domains/app"
ServerName app.local
SetEnv APP_ENV development
SetEnv DB_HOST localhost
SetEnv DB_NAME myapp_db
</VirtualHost>В PHP доступ к этим переменным осуществляется через getenv('APP_ENV') или $_SERVER['APP_ENV']. Вывод кода PHP:
<?php
echo 'Текущая среда: ' . getenv('APP_ENV');
?>Результат в браузере:
Текущая среда: development
Пример 3. Подключение расширений PHP через php.ini
Для активации, например, модуля imagick или xdebug необходимо редактировать соответствующий php.ini. В Open Server для каждой версии PHP есть отдельный конфигурационный файл в папке userdata\config\php\php-8.1\php.ini. Пример строк для включения xdebug:
zend_extension = xdebug
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003После внесения изменений сервер перезапускается. Проверка загрузки модуля выполняется через phpinfo():
<?php phpinfo(); ?>На странице в разделе xdebug отображаются все настройки. Если модуль не появляется, следует убедиться, что файл расширения (php_xdebug.dll) присутствует в папке ext соответствующей версии PHP.
Пример 4. Использование альтернативного веб-сервера Nginx
Open Server позволяет переключиться с Apache на Nginx через меню Настройки → Сервер → Тип сервера. Для Nginx конфигурация виртуальных хостов хранится в папке userdata\config\nginx. Пример конфига для домена site.local:
server {
listen 80;
server_name site.local;
root "E:/OSPanel/domains/site";
index index.php index.html;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}После сохранения файла сервер перезапускается. Важно помнить, что для Nginx используется FastCGI, поэтому PHP должен быть настроен как FastCGI-сервер. В настройках Open Server это включается автоматически при выборе Nginx.