# 🚀 vServer - Функциональный веб-сервер на Go > Функциональный веб-сервер с поддержкой HTTP/HTTPS, MySQL, PHP и веб-админкой **👨‍💻 Автор:** Суманеев Роман **🌐 Сайт:** [voxsel.ru](https://voxsel.ru) **📞 Контакт:** [VK](https://vk.com/felias) ## 🎯 Возможности ### 🌐 Веб-сервер - ✅ **HTTP/HTTPS** сервер с поддержкой SSL сертификатов - ✅ **Proxy сервер** для проксирования запросов - ✅ **PHP сервер** со встроенной поддержкой PHP 8 - ✅ **Статический контент** для размещения веб-сайтов ### 🗄️ База данных - ✅ **MySQL сервер** с полной поддержкой ### 🔧 Администрирование - ✅ **Веб-админка** на порту 5555 с мониторингом - ✅ **Консольное управление** через командную строку - ✅ **Логирование** всех операций - ✅ **Конфигурация** через JSON файлы ## 🏗️ Архитектура ``` vServer/ ├── 🎯 main.go # Точка входа │ ├── 🔧 Backend/ # Основная логика │ │ │ ├── admin/ # | 🎛️ Веб-админка (порт 5555) | │ ├── config/ # | 🔧 Конфигурационные файлы Go | │ ├── tools/ # | 🛠️ Утилиты и хелперы | │ └── WebServer/ # | 🌐 Модули веб-сервера | │ ├── 🌐 WebServer/ # Веб-контент и конфигурация │ │ │ ├── cert/ # | 🔐 SSL сертификаты | │ ├── soft/ # | 📦 MySQL и PHP | │ ├── tools/ # | 📊 Логи и инструменты | │ └── www/ # | 🌍 Веб-контент | │ └── 📄 go.mod # Go модули ``` ## 🚀 Установка и запуск ### 🔨 Сборка проекта ```bash go build -o MyApp.exe ``` ### 📦 Подготовка компонентов 1. Распакуйте архив `WebServer/soft/soft.rar` в папку `WebServer/soft/` 2. Запустите скомпилированный файл `MyApp.exe` > 🔑 **Важно:** Пароль MySQL по умолчанию - `root` ### 📦 Готовый проект для пользователя Для работы приложения необходимы только: - 📄 `MyApp.exe` - исполняемый файл - 📁 `WebServer/` - папка с конфигурацией и ресурсами > 💡 Папка `Backend/` и файлы `go.mod`, `main.go` и т.д. нужны только для разработки ## ⚙️ Конфигурация Настройка через `WebServer/config.json`: ```json { "Site_www": [ { "name": "Локальный сайт", "host": "127.0.0.1", "alias": ["localhost"], "status": "active", "root_file": "index.html", "root_file_routing": true } ], "Proxy_Service": [ { "Enable": true, "ExternalDomain": "git.example.ru", "LocalAddress": "127.0.0.1", "LocalPort": "3333", "UseHTTPS": false } ], "Soft_Settings": { "mysql_port": 3306, "mysql_host": "192.168.1.6", "php_port": 8000, "php_host": "localhost", "admin_port": "5555", "admin_host": "localhost" } } ``` **Основные параметры:** - `Site_www` - настройки веб-сайтов - `Proxy_Service` - конфигурация прокси-сервисов - `Soft_Settings` - порты и хосты сервисов (MySQL, PHP, админка) ### 🔄 Прокси-сервер Прокси-сервер позволяет перенаправлять внешние запросы на локальные сервисы. **Параметры Proxy_Service:** - `Enable` - включить/отключить прокси (true/false) - `ExternalDomain` - внешний домен для перехвата запросов - `LocalAddress` - локальный адрес сервиса - `LocalPort` - порт локального сервиса - `UseHTTPS` - использовать HTTPS для локального подключения (true/false) **Пример множественных прокси:** ```json "Proxy_Service": [ { "Enable": true, "ExternalDomain": "git.example.com", "LocalAddress": "127.0.0.1", "LocalPort": "3000", "UseHTTPS": false }, { "Enable": false, "ExternalDomain": "api.example.com", "LocalAddress": "127.0.0.1", "LocalPort": "8080", "UseHTTPS": false } ] ``` **Применение изменений:** - Введите команду `config_reload` в консоли для перезагрузки конфигурации - Изменения применятся к новым запросам без перезапуска сервера ## 📝 Логирование Все логи сохраняются в `WebServer/tools/logs/`: - 🌐 `logs_http.log` - HTTP запросы (включая прокси P-HTTP) - 🔒 `logs_https.log` - HTTPS запросы (включая прокси P-HTTPS) - 🔄 `logs_proxy.log` - Ошибки прокси-сервера - 🗄️ `logs_mysql.log` - MySQL операции - 🐘 `logs_php.log` - PHP ошибки - ⚙️ `logs_config.log` - Конфигурация - 🔒 `logs_vaccess.log` - Контроль доступа ## 🔐 SSL Сертификаты ### Установка сертификата 1. Откройте каталог `WebServer/` 2. Создайте папку `cert/` (если её нет) 3. Создайте папку с именем вашего домена или IP-адреса 4. Поместите в неё файлы сертификатов с **точными** именами: ``` certificate.crt private.key ca_bundle.crt ``` 5. Сертификат будет автоматически загружен при запуске сервера ### 📁 Структура сертификатов ``` WebServer/ └── cert/ ├── example.com/ # Основной домен │ ├── certificate.crt │ ├── private.key │ └── ca_bundle.crt │ └── sub.example.com/ # Поддомен (опционально) ├── certificate.crt ├── private.key └── ca_bundle.crt ``` ### 🎯 Работа с поддоменами **Важно:** Если для поддомена не создана отдельная папка в `cert/`, то автоматически будет использоваться сертификат родительского домена. **Примеры:** - ✅ Запрос к `example.com` → использует сертификат из `cert/example.com/` - ✅ Запрос к `sub.example.com` (папка существует) → использует `cert/sub.example.com/` - ✅ Запрос к `sub.example.com` (папка НЕ существует) → использует `cert/example.com/` **Это удобно для wildcard-сертификатов:** достаточно одного сертификата в папке основного домена для всех поддоменов! 🌟