7.6 KiB
🚀 vServer - Функциональный веб-сервер на Go
Функциональный веб-сервер с поддержкой HTTP/HTTPS, MySQL, PHP и веб-админкой
👨💻 Автор: Суманеев Роман
🌐 Сайт: voxsel.ru
📞 Контакт: VK
🎯 Возможности
🌐 Веб-сервер
- ✅ 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 модули
🚀 Установка и запуск
🔨 Сборка проекта
go build -o MyApp.exe
📦 Подготовка компонентов
- Распакуйте архив
WebServer/soft/soft.rar
в папкуWebServer/soft/
- Запустите скомпилированный файл
MyApp.exe
🔑 Важно: Пароль MySQL по умолчанию -
root
📦 Готовый проект для пользователя
Для работы приложения необходимы только:
- 📄
MyApp.exe
- исполняемый файл - 📁
WebServer/
- папка с конфигурацией и ресурсами
💡 Папка
Backend/
и файлыgo.mod
,main.go
и т.д. нужны только для разработки
⚙️ Конфигурация
Настройка через WebServer/config.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)
Пример множественных прокси:
"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 Сертификаты
Установка сертификата
- Откройте каталог
WebServer/
- Создайте папку
cert/
(если её нет) - Создайте папку с именем вашего домена или IP-адреса
- Поместите в неё файлы сертификатов с точными именами:
certificate.crt private.key ca_bundle.crt
- Сертификат будет автоматически загружен при запуске сервера
📁 Структура сертификатов
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-сертификатов: достаточно одного сертификата в папке основного домена для всех поддоменов! 🌟