Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Echo Off
- :: Portable nginx+php5+mysql for Windows
- :: Inquisitor, 2016
- :: nginx 1.11.6
- :: php 5.6.28
- :: mysql 5.5.36
- CD /D "%~dp0"
- :: Лог работы скрипта
- Set LogFile=.\%~n0.log
- :: Формат даты в логе
- Set TimestampFormat=[%%Date%% %%Time:~,8%%]
- :: Периодичность проверки запроса на отключение и перезапуска процессов при падении, секунды
- Set WatcherTimeout=10
- :: Перезапускаем себя как скрытый процесс
- If "%~1"=="" (
- Start "" "%~dp0tools\hidcon" %~nx0 restart_hidden
- Call Echo.>>"%LogFile%"
- Call :Log Loader started
- Exit
- )
- :: Добавляем пути к бинарникам в системный path для этого скрипта и дочерних процессов
- Set Path=%!!%~dp0nginx;%!!%~dp0mysql\bin;%Path%
- :: Добавляем модули
- :: ImageMagick 6.9.3-3
- Set Path=%Path%;%~dp0modules\imagick6
- :: ImageMagick 7.0.5.10
- Set Path=%Path%;%~dp0modules\imagick7
- :: FFMpeg 3.3.1
- Set Path=%Path%;%~dp0modules\ffmpeg
- :: Меняем системный temp на наш
- Set Temp=%~dp0\tmp
- :: Запускаем каждый процесс из его рабочей директории
- :: MySQL
- Call :Log Starting MySQL...
- :start-mysql
- PushD .\mysql\bin
- Start mysqld --defaults-file=my.ini --standalone
- PopD
- If "%1"=="restart" (
- Call :Log MySQL crashed, restarting
- Exit /B
- )
- :: PHP
- Call :Log Starting PHP-FPM...
- :start-php
- PushD .\php-fpm
- Start hidcon php-cgi -b 127.0.0.1:9123 -c ".\php.ini"
- PopD
- If "%1"=="restart" (
- Call :Log PHP-FPM crashed, restarting
- Exit /B
- )
- :: nginx
- Call :Log Starting NginX...
- :start-nginx
- PushD .\nginx
- Start nginx
- PopD
- If "%1"=="restart" (
- Call :Log NginX crashed, restarting
- Exit /B
- )
- :: Убиваем уже не нужные процессы hidcon
- TaskKill /F /IM "hidcon.exe"
- :: Повышаем приоритет для запущенных процессов
- For %%A In ("mysqld.exe", "php-cgi.exe", "nginx.exe") Do (
- wmic process where name="%%~A" CALL setpriority "high priority"
- )
- :: Создаём lock-файл и следим за его наличием
- Set LockFile=.\.%~n0.lock
- Echo.>"%LockFile%"
- :Watcher
- Ping -n %WatcherTimeout% 127.0.0.1>nul 2>nul
- :: Проверяем наличие процессов и перезапускаем в случае падения
- TaskList /FI "imagename EQ php-cgi.exe" /FO:CSV|FindStr /I /C:"php-cgi.exe">nul||Call :start-php restart
- :: Запускаем процесс выключения, если файл удалён
- If Not Exist "%LockFile%" (
- Call :Log Lockfile not found, killing child processes
- rem Останавливаем nginx
- PushD .\nginx
- nginx -s stop
- PopD
- rem Останавливаем MySQL
- mysqladmin -u root shutdown
- rem Останавливаем PHP-CGI
- TaskKill /F /T /IM php-cgi.exe
- Call :Log Loader stopped
- Exit
- )
- GoTo :Watcher
- :Log
- Call Echo %TimestampFormat% %*>>"%LogFile%"
- Exit /B
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement