Как запустить nginx на windows

Версия nginx под Windows использует “родной” Win32 API (не эмуляцию Cygwin).
В настоящий момент в качестве методов обработки соединений используются
select() и poll() (1.15.9),
поэтому не стоит ожидать высокой производительности и масштабируемости.
В силу этого и ряда других известных проблем версия nginx под Windows
рассматривается пока как бета-версия.
На данный момент в ней доступна практически вся функциональность, что и
в версии nginx под UNIX, за исключением
XSLT-фильтра, фильтра изображений, модуля GeoIP и встроенного языка Perl.

Чтобы установить nginx/Windows, скачайте
дистрибутив последней основной версии (1.27.5),
поскольку основная ветвь nginx содержит все известные исправления.
Затем распакуйте дистрибутив, перейдите в каталог
nginx-1.27.5
и запустите nginx.
Вот пример для корневого каталога на диске C:

cd c:\
unzip nginx-1.27.5.zip
cd nginx-1.27.5
start nginx

Чтобы увидеть процессы nginx, запустите утилиту командной строки
tasklist:

C:\nginx-1.27.5>tasklist /fi "imagename eq nginx.exe"

Image Name           PID Session Name     Session#    Mem Usage
=============== ======== ============== ========== ============
nginx.exe            652 Console                 0      2 780 K
nginx.exe           1332 Console                 0      3 112 K

Один из процессов главный, другой — рабочий.
Если nginx не запускается, нужно искать причину в
в файле лога ошибок logs\error.log.
Если же лог-файл не создался, то причину этого следует искать
в Windows Event Log.
Если вместо ожидаемой страницы выводится страница с ошибкой, нужно также
искать причины ошибки в файле logs\error.log.

nginx/Windows использует каталог, в котором он был запущен, в качестве
префикса для относительных путей в конфигурации.
В вышеприведённом примере префиксом является
C:\nginx-1.27.5\.
Пути в конфигурационном файле должны задаваться в UNIX-стиле с использованием
прямых слэшей:

access_log   logs/site.log;
root         C:/web/html;

nginx/Windows работает как стандартное консольное приложение (не сервис)
и управляется при помощи следующих команд:

nginx -s stop быстрое завершение
nginx -s quit плавное завершение
nginx -s reload изменение конфигурации,
запуск новых рабочих процессов с новой конфигурацией,
плавное завершение старых рабочих процессов
nginx -s reopen переоткрытие лог-файлов

Известные проблемы

  • Хоть и возможен запуск нескольких рабочих процессов, только один из них
    реально работает.
  • UDP (и, как следствие, QUIC) не поддерживается.

Возможные усовершенствования в будущем

  • Запуск в виде сервиса.
  • Использование портов завершения ввода-вывода (I/O completion ports)
    в качестве метода обработки соединений.
  • Использование нескольких рабочих нитей внутри одного рабочего процесса.

Nginx — веб-сервер с открытым исходным кодом, разработанный Игорем Сысоевым в 2004 году. Nginx стал очень популярным, потому что он быстр, универсален и может использоваться в качестве веб-сервера и обратного прокси-сервера.

Одной из ключевых целей разработки Nginx является обеспечение высокой производительности и обработка большого количества одновременных подключений с минимальным использованием ресурсов. Nginx достигает этого за счет использования архитектуры, управляемой событиями, которая позволяет ему эффективно управлять подключениями без необходимости в большом количестве выделенных рабочих процессов. Кроме всего прочего, Nginx служит отличным выбором для отображения статического контента, а также изображений и других медиафайлов.

Nginx поддерживает широкий спектр протоколов, включая HTTP, HTTPS, WebSocket и другие. Такая гибкость позволяет использовать данный веб-сервер в самых разных приложениях, от обслуживания традиционного веб-контента до управления взаимодействием в режиме реального времени между клиентами и серверами.

В данном руководстве рассмотрим процесс установки и запуска веб-сервера Nginx на VDS, работающем под управлением Windows Server 2016.

Для установки Nginx перейдите на страницу загрузок и выберите либо актуальную стабильную, либо актуальную основную версию веб-сервера.

Страница загрузки Nginx

После окончания загрузки распакуйте архив, например, в каталог C:\nginx. Затем откройте командную строку и перейдите в этот каталог.

cd C:\nginx

Далее, запустите Nginx при помощи следующей команды:

start nginx

Чтобы проверить работоспособность веб-сервера, откройте браузер и перейдите на страницу http://localhost. При этом вы должны будете увидеть стартовую страницу Nginx. Если это так, значит, ваш веб-сервер работает.

Стартовая страница веб-сервера Nginx

Запуск Nginx как службы

По умолчанию, веб-сервер Nginx не функционирует в операционной системе как служба. Это означает, что при перезагрузке вашего VPS веб-сервер не запустится автоматически. Для запуска Nginx как службы необходимо будет воспользоваться сторонним ресурсом NSSM (Non-Sucking Service Manager).

Дистрибутив NSSM доступен по ссылке на странице загрузки.

Страница загрузки NSSM

Загруженный архив распакуйте, например, в каталог nssm на диске C:\ виртуального сервера. После чего откройте командную строку и перейдите в каталог, в котором расположен файл nssm.exe:

cd C:\nssm\win64

Затем установите Nginx в качестве сервиса при помощи следующей команды:

nssm install nginx C:\nginx\nginx.exe

После чего запустите установленный сервис:

nssm start nginx

Запуск Nginx как службы

Подключение к веб-серверу удалённо

Если вам нужно, чтобы веб-страница, запущенная с помощью Nginx открывалась не только с локального хоста, но и с любого другого узла, имеющего доступ в интернет, необходимо на виртуальном сервере добавить соответствующее правило в брандмауэр Windows. Для того, чтобы войти в настройки брандмауэра, в строке поиска наберите firewall и запустите Windows Firewall with Advanced Security.

В открывшемся окне брандмауэра перейдите в Inbound Rules, затем кликните в New Rule... После чего укажите тип создаваемого правила Program и нажмите Next.

Создание нового правила - Как запустить Nginx на Windows Server

Далее, в строке This program path при помощи кнопки Browse выберите файл nginx.exe, после чего нажмите Next.

Выбор программы - Как запустить Nginx на Windows Server

В следующем окне укажите Allow the connection и нажмите Next.

Allow the connection - Как запустить Nginx на Windows Server

Затем снова нажмите Next перед этим отметив галочками все опции.

Применение правила - Как запустить Nginx на Windows Server

В строке Name укажите имя создаваемого правила. В нашем примере мы назвали его Nginx web-server. И для того, чтобы закончить настройку, нажмите Finish.

Завершение создания правила

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

Брандмауэр Windows

Теперь вы сможете открыть вашу веб-страницу с любого компьютера, который имеет выход в интернет. Для этого достаточно набрать в браузере IP-адрес вашего VPS.

Do you need to get the Nginx web server up and running on your Windows server? As it turns out, getting Nginx installed and running on the Windows server platform is easier than ever. Here’s how to get it working on your system.

Head to the official download page to get Ngnix on your Windows Server. Once there, select the latest Windows version, and download it to your server. The download should be quick as it is not very large.

When the download is complete, open up Windows Explorer, and select the “Downloads” folder. Then, move the ZIP archive file into the “C:/” drive. Once the file is placed, open up the Powershell application. Powershell is required to configure the software.

Inside the Powershell app, install the “Expand-Archive” tool in Powershell with the following command.

Get-Command Expand-Archive

After installing Expand-Archive, extract the Nginx file you placed in “C:/.”

Expand-Archive -Path C:\nginx-1.23.2.zip -DestinationPath C:\ -Verbose

The extraction process should happen fast. When the process is complete, run the clear command to clear the prompt of all other commands. You can then run the cd command to move into the “nginx-1.23.2” folder.

clear
cd .\nginx-1.23.2\

Once inside of the folder, run the ls command to view all of the contents of the Nginx folder on the “C:/” drive on Windows Server. Nginx.exe should now be running in the background on Windows Server. You can check this with the GUI task manager included with Windows Server or the ps command in Powershell.

How to configure Nginx web server on Windows Server

The Nginx web server doesn’t require much configuration out of the box in Windows Server. However, we’ll still need to go over the basics (where the web server data is placed, etc.)

Nginx on Windows works a little differently than on Linux. Instead of the /var/www/ folder, Nginx sets itself up where it was initially launched. So, as Nginx was launched from C:\nginx-1.23.2\, the “HTML” folder in which web pages are served is located in:

C:\nginx-1.23.2\html\

Similarly, the configuration file folder for Nginx is located in C:\nginx-1.23.2\conf\, the log files are stored in C:\nginx-1.23.2\logs\, etc. To access these files for modification purposes, open Windows Explorer, select “C:\nginx-1.23.2\” and go from there.

How to manage Nginx on Windows Server

You will need to know a few commands to manage the Nginx web server on Windows Server. To start, open up the Windows Explorer app and navigate to “C:\nginx-1.23.2”

Once you’ve accessed the folder, hold down the Shift key, and right-click on a blank space. Then, select “Open PowerShell window here.” Once Powershell is open, you can use the following commands to control Nginx.

./nginx.exe -s stop : Shut down the server fast.
./nginx.exe -s quit : Shut down the server "gracefully."
./nginx.exe -s reload : Change configuration, start a new process, etc.
./nginx.exe -s reopen : Run this to re-open log files.

How to edit the Nginx homepage on Windows Server

Like every web server, the Nginx web server provides a default “index.html” file. You can access this file at localhost/index.html. This file is the default page shown in the web directory when the address is specified.

For example, if you navigated to https://your-windows-server/somefolder/, it would automatically show you the “index.html” or “index.htm” file in that folder. If you’d like to customize the index.html file, do the following.

First, open Powershell. Then, use the cd command to access the Nginx folder on the “C:/” drive in Windows Server.

cd C:/nginx-1.23.2/

After accessing the Nginx folder on the “C:/” drive, you will need to load up the “html” folder. To do this, run the cd command again in the Powershell window.

cd html

You can open the “index.html” file inside the Notepad app for editing purposes. Once it is open, you can delete what Nginx puts and make your own custom page for your web server.

notepad index.html

Once you’ve finished editing your files in Notepad, you can save them by pressing Ctrl + S on the keyboard. This keyboard combination should save your edits to the “index.html” file.

When you’ve saved your edits, open a web browser and navigate to the following URL to view your handiwork.

http://your-windows-server-ip/

How to uninstall Nginx from your Windows Server

To uninstall Nginx from Windows Server, ensure that “nginx.exe” is no longer running. Once it is shut down, you can delete the Nginx folder in the “C:/” drive. However, ensure all data and configuration files are backed up before deleting them in case you wish to redeploy your web server later.

default avatar image

  1. Скачиваем отсюда https://nginx.org/ru/download.html и распаковываем куда-нибудь.

  2. Дальше читаем тут https://nginx.org/ru/docs/windows.html
    ВНИМАНИЕ: команду start nginx обязательно даем прямо из каталога, в котором лежит nginx.exe, в противном случае при дальнейшей работе будут ошибки (все пути в конфигурации прописаны как относительные, только поменяв их все, можно запускать откуда угодно).
    Вообще рекомендуется держать консоль открытой в этом каталоге до самого конца выполнения инструкций, однако для работы nginx это необязательно — если её закрыть, он продолжит работать.

  3. Открываем http://localhost/ — должно заработать.

Установка PHP

  1. Скачиваем с https://windows.php.net/download (ZIP-архив Non Thread Safe x64), замечаем номер в «VC(число)» — понадобится на следующем шаге.
    Прописываем каталог в PATH.

  2. Открываем командную строку, запускаем php -v.
    Должно выскочить окно с надписью «The program can’t start because VCRUNTIME140.dll».
    Если запуск прошел без ошибок, пропускаем следующий пункт.

  3. Ищем на странице загрузки из п.1 в левой колонке ссылку на VC нужного номера. Скачиваем x64.exe, устанавливаем.
    После этого возвращаемся на предыдущий пункт. На этот раз команда должна показать версию php.

Конфигурация локального сайта в nginx

  1. Выбираем локальное имя хоста (как localhost, только какое-то другое, например, mysite) и каталог, где будут находиться его файлы (например, D:\sites\mysite).

  2. В конец файла (каталог nginx)/nginx.conf перед последней закрывающей скобкой добавляем раздел:

    server {
        listen       80;
        server_name  mysite;
        root D:\sites\mysite;
    }
    
  3. В консоли, находясь в каталоге nginx.exe, даем команду nginx -s reload, чтобы nginx перечитал конфигурацию.

  4. Открываем файл C:\Windows\System32\Drivers\etc\hosts, добавляем строчку

    127.0.0.1	mysite
    

    Файл защищен системой ото всех пользователей, кроме администратора, поэтому перед записью понадобится открыть его свойства и дать там нужные права и потом вернуть, как было.

  5. Открываем в браузере ссылку http://mysite/ (обязательно с http://, иначе браузер станет отправлять в поисковые системы). Должна отобразиться страница 404 от nginx.

Налаживание взаимодействия nginx и PHP

  1. В раздел server конфигурации добавляем такие строки:

    location ~\.php$ {
        fastcgi_pass 127.0.0.1:9123;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    

    (9123 — номер порта, можно выбрать какой-нибудь другой)

    Из консоли даем команду nginx -s reload.

  2. В консоли переходим в каталог, куда распакован PHP. Даем команду

    php-cgi.exe -b 127.0.0.1:9123
    

    Закрывать окно консоли нельзя, иначе интерпретатор PHP перестанет работать.

    Можно прописать путь к каталогу PHP в системной переменной PATH и запускать его без указания полного пути.

  3. Создаем файл D:\sites\mysite\test.php со следующим содержимым:

    <?php echo "This is PHP script on mysite";
    

    Открываем http://mysite/test.php — текст должен отображаться.

Взаимодействие налажено!

См. также https://www.nginx.com/resources/wiki/start/topics/examples/phpfastcgionwindows/

PHP: ini-файл и модули расширений

Вышеуказанные процедуры позволяют успешно запустить и использовать PHP, однако он будет «голым» — без расширений (в т.ч. таких необходимых, как mysqli, mbstring и др.) и без настроек, т.к. он не прочитает ни одного ini-файла.

PHP может автоматически загрузить файл php.ini из нескольких каталогов. Первое место, где он станет его искать — рядом с php.exe. В пакете есть файл php.ini-development. Нужно создать рядом его копию с именем php.ini, открыть и внести следующие изменения:

  1. Раскомментировать строку extension_dir = "ext" — в результате PHP станет искать модули расширений в подкаталоге ext рядом с php.exe
    (относительный путь интерпретируется именно от exe-, а не от самого ini-файла)

    Проверяем, подключился ли файл, с помощью команды php --ini. Результат должен быть примерно следующим:

    Configuration File (php.ini) Path: C:\Windows
    Loaded Configuration File:         {каталог с дистрибутивом PHP}\php.ini
    Scan for additional .ini files in: (none)
    Additional .ini files parsed:      (none)
    

    Вторая строчка говорит о том, что ini-файл успешно загрузился.

    На первую строчку (про С:\Windows) внимания обращать не следует, т.к. ini-файла по указанном адресу нет.

  2. Найти нужные расширения и раскомментировать строки, где они подключаются. Например, extension=mysqli и т.д.

    Все расширения перечислены рядом, и найти нужные среди них несложно. Рекомендуется включить следующие:

    • curl
    • fileinfo
    • gd
    • mbstring
    • exif
    • mysqli
    • soap

    Просмотреть список подключенных расширений можно, дав команду php -m. Непустой изначально список после вышеописанной манипуляции пополнится.

PHP загружает расширения при запуске exe-файла интерпретатора. Если нужно подключить новое, следует остановить php-cgi.exe (или php.exe соответственно) и запустить его заново.

PHP и MySQL

Чтобы установить связь между PHP и MySQL, не требуется никаких специальных действий, кроме собственно создания соединения (разумеется, должен быть включен соответствующий модуль, например, mysqli).

Проверить соединение можно так:

echo "Connecting to MySQL server... ";

// $host = 'localhost'; // если соединяемся через named pipe (аналог Unix-сокета),
$host = ".";            // то в качестве хоста указываем "."
$user = "someone";
$password = "a password";
$mysqli = new mysqli($host, $user, $password);

if ($mysqli->connect_error)
	echo $mysqli->connect_error;
else
	echo "Connected successfully!";

Об установке и минимальной настройке MySQL под Windows см. здесь.

Неудобства работы под Windows

  • в путях файловой системы используется обратный слэш (\), а не прямой (/) — типа D:\sites\mysite\... вместо /sites/mysite/..., что влияет, в частности, на содержимое констант __DIR__ и __FILE__;
    как следствие, весь код, рассчитанный на разбор пути по слэшу, перестаёт работать

  • невозможно установить русскую локаль с UTF-8: setlocale(LC_ALL, 'rus') всегда приводит к использованию windows-1251, и изменить это никак не получается

Installing and Running nginx

  1. Download nginx for Windows Download
  2. Extract the downloaded .zip file
  3. Rename the extracted folder nginx
  4. Copy the extracted nginx files to the desired location, for example C:\Program Files\nginx
  5. Open the nginx folder and double click nginx.exe to run the server

Adding PHP Support

  1. Download Microsoft Visual C++Download
  2. Download PHP for Windows (VC15 x64 NTS) Download
  3. Install Microsoft Visual C++
  4. Extract the downloaded .zip file
  5. Rename the extracted folder php
  6. Copy the extracted php folder to the desired location, for example C:\Program Files\PHP
  7. Open the php install location and right click in the white space while holding down the Shift key > Open PowerShell window here
  8. Paste the following command in the PowerShell window to start the PHP CGI process

    .\php-cgi.exe -b 127.0.0.1:9123

  9. Open Windows Explorer and navigate to the nginx installation directory /conf
  10. Edit nginx.conf in a text editor
  11. Add the following lines inside the server object

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9123;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

  12. Save the changes to nginx.conf
  13. Right click the Start button > Run > Type taskkill /f /im «nginx.exe» > Press Enter
  14. Double click nginx.exe to restart the process with PHP support

Running nginx Server on Startup

nginx doesn’t currently have the ability to run as a Windows service natively. A simple workaround is to create a scheduled task to start the nginx server on system startup

  1. Open notepad and paste the following into a blank text file
    start «» /b «C:\Program Files\PHP\php-cgi.exe» -b 127.0.0.1:9123
    start «» /b «C:\Program Files\nginx\nginx.exe» -c «C:\Program Files\nginx\conf\nginx.conf»
  2. Save the text file as startup.bat in the nginx installation directory
  3. Click the Start button > Search Task > Click Task Scheduler
  4. Right click the Task Scheduler Library folder in the top left > Create Basic Task
  5. Name the task nginx startup > Click Next
  6. Select When the computer starts > Click Next
  7. Select Start a program > Click Next
  8. Click the Browse… button and navigate to C:\Program Files\nginx\startup.bat
  9. Set the Start in value to C:\Program Files\nginx > Click Next
  10. Click Finish
  11. Reboot to test that nginx with PHP support starts with the system on boot

Source: http://nginx.org/en/docs/windows.html

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Apple preview for windows
  • Asus f552cl drivers windows 7
  • Размер виртуального адресного пространства ос windows
  • Функция связь с windows на андроид что это
  • Приложения metro windows 10 что это