alhimik1986 / NginxTrayRu-server

Универсальный и скоростной веб-сервер, который может работать в качестве службы.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NginxTrayRu-server

Универсальный и скоростной веб-сервер, который может работать как служба. На нем можно делать сборку только из необходимых компонентов. Для управления веб-сервером используется NginxTrayRu.

Устнановка и запуск.

Всем привет. Представляю свой фирменный веб-сервер, который может работать в качестве службы. Он универсален тем, что на нем можно собирать свою сборку (например, apache, php, mysql или nginx, php, mongodb, elastic search) и со своими конфигурациями сервера (например, девелопмент и продакшн).

В базовом комплекте имеются базовые настройки для nginx, php, mysql, elastic search. Правда, сами компоненты сервера отсутствуют. Их можно скачать, запустив файл web-server\vendor\Скачать дистрибутив веб-сервера.bat Далее запускаем файл "Запустить сервер.bat". И вот сервер запущен и работает! Сервер доступен как с внешнего адреса, так и с localhost.

Какие могут возникнуть проблемы при запуске:

1. путь, в котором находится папка сервера, не должен содержать русские символы (не запустится nginx). Например, в windows xp невозможно запустить сервер на рабочем столе (т.к. путь содержит русские буквы "Рабочий стол"). В Windows 7 такой проблемы нет (папка рабочего стола называется Desktop), но могут возникнуть проблемы, если пользователь назван русскими буквами 2. Папка сервера должна иметь права на чтение/запись. Так, например, в Windows 7 на диске D: права на запись отсутствуют по умолчанию, поэтому их нужно предоставить, открыв свойства папки сервера->вкладка "Безопасность" -> кнопка "Изменить"->выбрать "Пользователи (WIN7\Пользователи) -> выбрать флажок "Полный доступ"-> Нажать "ОК".

Сделать сервер службой.

Чтобы сделать сервер службой, заходим в папку "web-server\Сделать сервер службой". Там есть все необходимые файлы для работы со службами. В Windows 7 эти файлы нужно запускать под правами администратора. Работая в виде службы, трей не отображается. Чтобы его отобразить, запустить файл "Запустить сервер.bat" этот файл останавливает службу NginxTrayRu и запускает программу NginxTrayRu, отображающую трей.

Что и как работает.

Окно настройки NginxTrayRu.

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

Также есть текстовое поле для переменных окружения, в котором каждая переменная окружения прописывается в новой строчке. В этом поле уже есть переменная PHP_FCGI_MAX_REQUESTS=0, благодаря которой процесс php-cgi.exe не завершается через после 500 запросов.

Настройка "Добавить в автозагрузку" добавляет ярлык программы NginxTrayRu в папку "Автозагрузка".

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

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

Структура папок в папке web-server:

vendor - в ней хранятся компоненты веб-сервера (apache, php, mysql и т.д.) patches - хранит в себе патчи, которые создают различные конфигурации сервера (development, production и т.д.) trays - содержит NginxTrayRu-треи, каждый из которых запускает различную комбинацию компонентов сервера (apache, php, mysql или nginx, php, mongodb) php_for_patches - содержит php 5.4, в котором выполняются скрипты патчей сделать сервер службой - содержит bat-файлы, которые делают одну из программ NginxTrayRu службой.

Механизм работы файла "Запустить сервер.bat":

Механизм работы прост его без труда можно понять, прочитав содержимое этого файла. Вкратце скажу: При его запуске останавливается служба NginxTrayRu, если она есть; Далее запускается патч, который конфигурирует компоненты веб-сервера; Затем уже запускается программа NginxTrayRu; Напоследок, запускается браузер с адресом http://localhost

Механизм работы патча:

При запуске файла patch.bat программа копирует папки и файлы, содержащиеся в папке templates, вставляет в них значения параметров шаблонных переменных, содержащихся в папке params. Затем она вставляет получившиеся значени в папку vendor. Т.е. для пропатчивания нужных файлов конфигураций структура папок, в папке templates должна быть такой же, как и в папке vendor.

Создание собственных конфигураций сервера.

Допустим, нам нужен веб-сервер, который бы содержал последние стабильные версии его компонентов (на данный момент: nginx 1.9, php5.6, mysql5.7 и т.д.).

В папке patches создаем папку нашего нового патча, например, patch_php_5.6.production. Копируем в эту папку файлы patch.php и patch.bat. Создаем в ней папку templates и папку params. В папке templates будут содержатся конфигурация компонентов веб-сервера, содержащая шаблонные переменные. В папке params будут содержаться значения этих шаблонных переменных.

Скачаем, например, последние версии php 5.6, nginx и mysql. Распакуем и поместим их в папку vendors. Не советую переименовывать оригинальные названия папок на более простые (вроде php-5.4.45-nts-Win32-VC9-x86 на php5.4). Создаем в папке templates папки с теми же названиями, что и в папке vendor, ложим туда файлы конфигурации. Если файл конфигурации находится внутри других папок, то создаем ту же структуру папок и помещаем туда файл конфигурации.

Вставляем шаблонные переменные в файлы конфигурации: Вместо значений тех или иных параметров в файле конфигурации мы вставляем шаблонные переменные. Называть шаблонные переменные можно как угодно: {base_path} или ${{base_path}}, но лучше в стиле {base_path}.

В папкe params создаем ту же структура папок, что и в папке templates (можно просто копировать содержимое папки templates), но файлы конфигурации нужно переименовать (добавить в имя ".php"). И в них пишем примерно такие строчки

<?php

return [
	'{название_шаблонной_переменной}' => 'значение_шаблонной_переменной',
];

И вот, наш новый патч готов!

Конфигурируем NginxTrayRu:

Переходим в папку trays и копируем файл NginxTrayRu.exe. Переименовываем его в удобное имя, например, NginxTrayRu_modern_web-server.exe. Запускаем его и переходим в настройки. В настройках прописываем относительные пути файлов, которые нужно запускать и параметры запуска. Также прописываем команды для корректного завершения работы этих же компонентов сервера. Помните, что если эти программы корректно не завершатся, то они будут завершены путем насильного завершения процесса.

Конфигурируем файл для запуска серера.

Копируем файл "Запустить сервер.bat". Переименовываем его в удобное нам имя, наподобие: "Запустить современный сервер.bat". В нем же прописываем путь к патчу, который нужно запустить (@cd %~dp0\web-server\patches\patch_php_5.6.production). Прописываем файл программы, который нужно запустить (start NginxTrayRu_modern_web-server.exe).

Создаем службу:

Переходим в папку "web-server\сделать сервер службой", копируем и переименовываем файл "Сделать сервер службой NginxTrayRu.bat". Меняем в нем "NginxTrayRu.exe" на "NginxTrayRu_modern_web-server.exe").

И вот, наша конфигурация готова!

Чистим папку mysql.

Папка mysql обычно имеет размер больше 1 Гб. Чтобы удалить неиспользуемые файлы, можно открыть тот же самый mysql, который находится в OpenServer и оставить только те же папки и файлы. В итоге должно остаться чуть более 200 Мб.

Преимущества и недостатки перед популярными сборками вроде OpenServer.

Из плюсов: NginxTrayRu отличается простотой и быстродействием. Он может работать в качестве службы. Также перезапускается в случае краша хотя бы одного из его компонентов. Можно собрать свою любимую сборку, которая будет занимать минимум места и таскать ее повсюду, можно быстро распаковать и запускать из любого компьютера, имеющего .net Framework 2.0.

Из минусов: NginxTrayRu не обладает богатым набором функционала, как OpenServer (нет cron, набора утилит, конфигуратора виртуальных доменов и прочих плюшек).

В общем хочу сказать, что программа NginxTrayRu не является заменой OpenServer, она лишь является дополнением.

About

Универсальный и скоростной веб-сервер, который может работать в качестве службы.

License:GNU General Public License v3.0


Languages

Language:PHP 61.1%Language:Nginx 26.4%Language:Batchfile 12.6%