Простой переносной веб сервер

Введение

Часто перед разработчиками и не только встает задача локальной разработки и тестирования веб приложений. И для этого часто приходится искать переносной веб сервер, но решить эту задачу можно очень даже самостоятельно и просто.

Создадим переносной веб сервер с поддержкой php7 apache2 и nginx.

План:

  1. Скачаем необходимый софт
  2. Создадим bat файл для запуска сервера
  3. Протестируем работу сервера

Скачиваем необходимый софт

PHP 7

Ссылка на скачивание

Apache 2

Ссылка на скачивание

Nginx

Ссылка на скачивание

Создаем bat файл для запуска

Я много лет разрабатываю на Windows. Поэтому представляю свой bat скрипт.

Если будет запрос, то напишу аналогичный скрипт под bash или сразу универсальный скрип на python.

Сам код я пояснять не буду, но если у вас возникнут вопросы напишите мне и я на них отвечу. А сами ответы на вопросы добавлю в статью.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
@echo off
cd /d %~dp0

:menu1
if "%in%"=="?" cls
echo. && set in=?
call :items
set /p in="Item: "
if "%in%"=="0" exit /b
cls && call :items
goto menu1

:items
call :status 1
call :startNginx 2
call :stopNginx 3
call :reloadNginx 4
call :quitNginx 5
call :startApache 6
call :stopApache 7
exit /b

:find
set pid=
set cnd=name='%~1'
set get=ProcessId /format:value
set cmd=wmic process where "%cnd%" get %get%
set opt="tokens=2 delims=="
for /f %opt% %%i in ('%cmd%') do set pid=%%i
if not "%pid%"=="" echo %~1 pid=%pid%
exit /b

:init
if "%in%"=="?" (
   echo %1: %~2
   exit /b 1
)
if "%in%"=="%1" (
    echo %~2:
    exit /b 0
)
exit /b 1

:status
call :init %1 "Status"
if errorlevel 1 exit /b
echo Nginx:
call :find nginx.exe
echo Apache:
call :find httpd.exe
exit /b

:startNginx
call :init %1 "Nginx start"
if errorlevel 1 exit /b
call :find nginx.exe
if not "%pid%"=="" exit /b
cd %~dp0nginx & start nginx
exit /b
:stopNginx
call :init %1 "Nginx stop"
if errorlevel 1 exit /b
cd %~dp0nginx & nginx -s stop
exit /b
:reloadNginx
call :init %1 "Nginx reload"
if errorlevel 1 exit /b
cd %~dp0nginx & nginx -s reload
exit /b
:quitNginx
call :init %1 "Nginx quit"
if errorlevel 1 exit /b
cd %~dp0nginx & nginx -s quit
exit /b

:startApache
call :init %1 "Apache start"
if errorlevel 1 exit /b
call :find httpd.exe
if not "%pid%"=="" exit /b
set dir=%~dp0apache2
set SRVROOT=%dir%
set PHPDIR=%~dp0php74
start %dir%\bin\httpd
exit /b
:stopApache
call :init %1 "Apache kill"
if errorlevel 1 exit /b
taskkill /IM httpd.exe /F
exit /b

Тестируем полученный веб сервер

Описание процесса тестирования