Category Archives: php

Deploy nginx & php on windows

Установка БД MySQL, либо любой другой, никак не связанно с nginx и PHP, но сам PHP, легко настраивается под любую БД. Поэтому, тут не будет про вопросы, связанные со связкой с БД.

 

Скачать nginx и PHP, для Windows

Nginx: https://nginx.org/ru/download.html

PHP: https://windows.php.net/download

Расположить распакованные файлы по путям

D:\nginx и D:\php

 

Создать bat-файлы, чтобы было легко запускать

Создать папку D:\bin и сохранить там следующие bat-файлы:

start.bat

@ECHO OFF
:: Start Nginx
tasklist /FI "IMAGENAME eq nginx.exe" 2>NUL | find /I /N "nginx.exe">NUL
IF NOT "%ERRORLEVEL%"=="0" (
   :: Nginx is NOT running, so start it
   d:
   cd \nginx
   start nginx.exe
   ECHO Nginx started.
) else (
   ECHO Nginx is already running.
)

:: Start php
tasklist /FI "IMAGENAME eq php-cgi.exe" 2>NUL | find /I /N "php-cgi.exe">NUL
IF NOT "%ERRORLEVEL%"=="0" (
   :: PHP is NOT running, so start it
   d:
   cd \php
   start php-cgi.exe -b 127.0.0.1:9000
   ECHO PHP started.
) else (
   ECHO PHP is already running.
)

d:
cd \bin

 

stop.bat

@ECHO OFF
:: Stop Nginx
tasklist /FI "IMAGENAME eq nginx.exe" 2>NUL | find /I /N "nginx.exe">NUL
IF NOT "%ERRORLEVEL%"=="0" (
   ECHO Nginx is not running.
) else (
   ECHO Nginx is shutting down...
   Taskkill /f /im nginx.exe
   ECHO Nginx is stopped.
)

:: stop php
tasklist /FI "IMAGENAME eq php-cgi.exe" 2>NUL | find /I /N "php-cgi.exe">NUL
IF NOT "%ERRORLEVEL%"=="0" (
   ECHO PHP is not running.
) else (
   ECHO PHP is shutting down...
   Taskkill /f /im php-cgi.exe
   ECHO PHP is stopped.
)

 

start_nginx.bat

@ECHO OFF
:: Start Nginx
tasklist /FI "IMAGENAME eq nginx.exe" 2>NUL | find /I /N "nginx.exe">NUL
IF NOT "%ERRORLEVEL%"=="0" (
   :: Nginx is NOT running, so start it
   d:
   cd \nginx
   start nginx.exe
   ECHO Nginx started.
   
   cd ..
   cd \bin
) else (
   ECHO Nginx is already running.
)

 

stop_nginx.bat

@ECHO OFF
:: Stop Nginx
tasklist /FI "IMAGENAME eq nginx.exe" 2>NUL | find /I /N "nginx.exe">NUL
IF NOT "%ERRORLEVEL%"=="0" (
   ECHO Nginx is not running.
) else (
   ECHO Nginx is shutting down...
   Taskkill /f /im nginx.exe
   ECHO Nginx is stopped.
)

 

Конфигурация nginx

В файле D:\nginx\conf\nginx.conf добавляем строчку

include    vhosts/*.conf;

перед закрывающей скобкой блока http

В папке D:\nginx\conf создаём папку vhosts

В папке D:\nginx\conf\vhosts создаём конфиги локальных сайтов по следующему примеру

my-site.local.conf

server {
        listen       80;
        server_name  my-site.local;

        root D:/www/my-site;
        index  index.php index.html index.htm;

        location / {
            # Redirect everything that isn't a real file to index.php
            try_files $uri $uri/ /index.php$is_args$args;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #include        fastcgi_params;
            include        fastcgi.conf;
            try_files $uri =404;
        }
}

 

Создаём общую папку для веб-сайтов D:\www

Для приведённого конфига сайта my-site.local, создаём отдельную папку с веб-документами и скриптами:

D:\www\my-site

Кладём туда проект, либо создаём в нём новые скрипты

 

Запуск и остановка nginx и PHP

Открываем в файловом менеджере, либо Проводнике, либо в консоли windows, папку D:\bin

Запускаем start.bat

Для остановки, запускаем stop.bat

Если нужно работать только с nginx, то пользуемся файлами start_nginx.bat и stop_nginx.bat

Ну и не забываем, прописать локальные домены в файл C:\Windows\System32\drivers\etc\hosts

Всё.