nginx php windows server
Nginx php windows server
Давно я что то отказался от apache http server, потом как то делал связку nginx — apache + php
Но все это у меня как то не прижилось, поэтому будет делать сразу nginx – php-fpm (FastCGI Process Manager).
Устанавливать будем все это на ОС семейства Windows.
Что нам понадобиться и что мы имеем:
— OS: Windows 7
— nginx 1.5.1 под windows
— PHP 5.4.16 версия под windows
1. Что бы потом не было проблем с путями и потерей файлов, я рекомендую сделать архитектуру аналогично моей.
Создаем на диске D папке server в этой папке создаем папки nginx, php, html (там будет сайт). В последующим можно будет создать папку mysql, mail, ftp. И все серверы будет лежать в одной папке.
Получаем такую структуру:
2. Архив php-5.4.16-Win32-VC9-x86.zip распаковываем в D:\server\php\
Переименовываем файл php.ini-production или php.ini-development в php.ini (это файл конфигурации php).
Открываем файл php.ini раскомментируем параметр extension_dir (это путь к расширениям php). Если все по статье получится такого вида:
Далее можно найти строчки extension и раскомментировать нужные строчки. Например нам нужна библиотека работы с изображениями GD, работа с многобайтными строками и MySQL
Файл php.ini можно было и не изменять, работала все бы и так. Просто сразу оговорил что бы дальше вопросов было меньше.
3. Теперь добавим в переменные среды пути к PHP и его расширениям.
Для этого открываем свойства моего компьютера. Далее «дополнительные параметры системы» — «переменные среды» — ищем в «системные переменные» переменную «Path» — «изменить» — в конец строчки прописываем:
Пути разделяем точкой с запятой.
Перемеренные среды будут работать после перезагрузки системы.
4. Создаем файл php-cgi-start.cmd в папке d:\server\php\ следующего содержания
5. Архив php-5.4.16-Win32-VC9-x86.zip распаковываем в D:\server\nginx\
Открывается файл nginx.conf (D:\server\nginx\conf\nginx.conf) – это файл конфигурации.
Нам нужно подключить php по FastCGI. Сама конфигурация, параметры смотрим на сайте разработчика nginx. Конфигурации сделана по минимуму на основе стандартной:
Запускаем nginx.exe (d:\server\nginx\nginx.exe) – мигнет на секунду. Если ошибок нет то запуститься и будет в списке процессов. Если какая то ошибка, то читать логи.
6. Создаем файл index.php в папке d:\server\html содержания
Открываем localhost/ — видим информации о php. Все связка nginx – php успешно работает.
Теперь для удобства запуска и остановке веб-сервер создаем файл web-start.cmd в папке d:\server\ содержания:
И файл web-stop.cmd содержания:
Для запуска используем web-start.cmd, а для остановки web-stop.cmd
Запускать можно по отдельности, как службу (используя сторонние ПО для запуска приложений не поддерживающие службы).
Дальше как говорится дело вкуса, а статья была о связи nginx с PHP напрямую.
Если есть вопросы с радостью отвечу в комментариях.
1234ru / nginx-php-win.md
Скачиваем отсюда https://nginx.org/ru/download.html и распаковываем куда-нибудь.
Ищем на странице загрузки из п.1 в левой колонке ссылку на VC нужного номера. Скачиваем x64.exe, устанавливаем. После этого возвращаемся на предыдущий пункт. На этот раз команда должна показать версию php.
Конфигурация локального сайта в nginx
В конец файла (каталог nginx)/nginx.conf перед последней закрывающей скобкой добавляем раздел:
Файл защищен системой ото всех пользователей, кроме администратора, поэтому перед записью понадобится открыть его свойства и дать там нужные права и потом вернуть, как было.
Налаживание взаимодействия nginx и PHP
В раздел server конфигурации добавляем такие строки:
В консоли переходим в каталог, куда распакован PHP. Даем команду
Закрывать окно консоли нельзя, иначе интерпретатор PHP перестанет работать.
Можно прописать путь к каталогу PHP в системной переменной PATH и запускать его без указания полного пути.
Создаем файл D:\sites\mysite\test.php со следующим содержимым:
PHP: ini-файл и модули расширений
Вторая строчка говорит о том, что ini-файл успешно загрузился.
На первую строчку (про С:\Windows) внимания обращать не следует, т.к. ini-файла по указанном адресу нет.
Найти нужные расширения и раскомментировать строки, где они подключаются. Например, extension=mysqli и т.д.
Все расширения перечислены рядом, и найти нужные среди них несложно. Рекомендуется включить следующие:
PHP загружает расширения при запуске exe-файла интерпретатора. Если нужно подключить новое, следует остановить php-cgi.exe (или php.exe соответственно) и запустить его заново.
Чтобы установить связь между PHP и MySQL, не требуется никаких специальных действий, кроме собственно создания соединения (разумеется, должен быть включен соответствующий модуль, например, mysqli ).
Проверить соединение можно так:
Об установке и минимальной настройке MySQL под Windows см. здесь.
Неудобства работы под Windows
невозможно установить русскую локаль с UTF-8: setlocale(LC_ALL, ‘rus’) всегда приводит к использованию windows-1251, и изменить это никак не получается
Настройка веб-сервера Nginx + PHP-FPM + MySQL
Быстрая установка и настройка веб-сервера NginX для работы CS-Cart.
Видео
Сервер и ресурсы
Для инструкции арендован самый простой VPS сервер.
Обычно VPS сервер предоставляется с чистой операционной системой, мы выбрали последнюю версию Ubuntu 14.04 LTS x86 на данный момент.
Технические характеристики сервера:
ОС | Ubuntu 14.04 LTS x86 |
Диск | 2.0 ГБ |
Процессор | 2000 МГц |
Память | 128 МБ |
Ресурсов данного сервера достаточно только для теста и эксперимента.
Предупреждение! Настройку сервера для живого интернет-магазина необходимо доверить профессионалам.
Данная инструкция может быть использована для тестовых интернет-магазинов.
1. Подключаемся к серверу по SSH
Используем терминал (PuTTY).
2. Обновим список пакетов
Запустите в терминале (PuTTY) команду:
3. Устанавливаем NginX
4. Останавливаем Nginx
Остановим NginX на время настройки простой командой:
5. Узнаем количество процессоров в системе
Количество процессоров нам понадобится для конфигурации NginX:
Запоминаем число процессоров.
6. Установим число процессов Nginx
Найдите на сервере и откройте для редактирования файл:
Установите для неё значение равное числу процессоров. В нашем случае один процессор.
7. Создадим папку для интернет-магазина
8. Конфигурация Nginx
Нам необходимо настроить конфигурацию NginX. Сделаем так, чтобы Nginx понимал наш домен и отправлял его в нужную папку на сервере, а также установим правила для SEO.
Найдите на сервере и откройте файл:
Удалите весь код и вставьте новый. Ниже будет код, в комментариях кратко описано происходящее. Вам нужно заменить домен example.com на ваш домен
9. Перезапускаем nginx
10. Устанавливаем PHP-FPM
11. Установим MySQL
Команда для установки MySQL:
В процессе установки вам потребуется несколько раз ввести пароль. Не потеряйте пароль!
12. Установим PhpMyAdmin
Ещё одной командой установим PhpMyAdmin для удобства работы с базой данных:
Потребуется ввести пароль от MySQL.
Консоль попросит вас выбрать Apache2 или lighttpd во время установки, пропустите данный шаг, просто нажмите ENTER
13. Добавим конфигурацию Nginx для PhpMyAdmin
Сделаем так, чтобы PhpMyAdmin открывался на отдельном поддомене: pma.example.com. Нам необходимо добавить в конфигурацию nginx новый раздел для поддомена.
Откройте на сервере файл:
В конец файла добавьте конфигурацию для поддомена, который будет ссылаться на phpmyadmin. Просто скопируйте код в конец существующей конфигурации, замените example.com на ваш домен:
14. Перезапускаем nginx
Вы уже знаете команду для перезагрузки nginx:
Как установить и запустить сервер Nginx на Windows 10
Как установить и запустить сервер Nginx на Windows 10
Nginx — это веб-сервер, который очень популярен в Linux и BSD системах. Многие полагают, что установить Nginx на Windows 10 невозможно. Это совсем не так.
Согласно информации, размещенной на сайте Nginx, установка на Windows 10 возможна, но есть несколько ограничений производительности, которые пока не были устранены. К ним относятся только одно рабочее веб-приложение, отсутствие масштабируемости и возможные проблемы с UDP аутентификацией. На данный момент Nginx уже упоминал, что он решит все проблемы в своих будущих выпусках.
Чтобы успешно установить и запустить Nginx на Windows 10, выполните следующие действия.
Загрузите Nginx Server
Существует много загружаемых версий Nginx для Windows, но Nginx рекомендует использовать “mainline version”. Однако, вы не найдете никаких проблем, если загрузите последнюю стабильную версию этой программы.
Выберите последний ZIP-файл и загрузите его в новую папку.
В качестве первого шага необходимо распаковать его. Вы можете использовать 7-Zip, WinRAR или любое другое популярное программное обеспечение для архивации.
После извлечения содержимого архива из первоначальной директории необходимо переместить папку, которая поставлялась со встроенной загрузочной копией. в «Program Files».
Мы запустим Nginx из этого места в качестве веб-сервиса по умолчанию.
Установка Nginx
Чтобы установить и запустить Nginx, выберите и дважды щелкните файл Nginx.exe.
На следующем шаге вам нужно проверить, была ли установка успешной. Для этого вы можете перейти в браузер по умолчанию и ввести “localhost”. Если вы увидите следующее окно с сообщением об успешной установке и работе веб-сервера Nginx, то проблем с установкой в Windows 10 не было.
Чтобы остановить Nginx, вы можете завершить его из окна Диспетчер задач.
Запуск Nginx на компьютере с ОС Windows
Для запуска Nginx, вы должны использовать Internet Information Services (IIS), который является веб-сервером Microsoft, обслуживающим запрошенные HTML страницы или файлы. Вы можете включить его в меню Turn Windows Features On or Off в Панели управления. Проверьте необходимые поля для Web Management Tools и IIS Management Console.
Для включения IIS на вашем компьютере потребуется некоторое время.
Менеджер IIS Manager можно открыть непосредственно из меню Пуск. Здесь вы сможете получить доступ к веб-сайту по умолчанию, который обычно расположен по адресу “inetpub wwwroot”. Он также известен как корень веб-приложения.
Полезно изменить физический путь этого корня в более подходящую папку. Я создал новую папку “Work” в C:\ и изменил физический путь на “C:\Work”.
После этого перейдите в папку Nginx, которую переименовали в файлах программы. Нажмите “Conf” и выберите “nginx.conf”. Этот файл можно редактировать с помощью текстового редактора Notepad++.
В Notepad++ измените корень на отредактированный физический путь, о котором мы говорили выше.
Вы можете отредактировать файл index.html в корневой папке на отдельной вкладке. Измените текст на то, что вы хотите, чтобы веб-сервер отображался на экране.
Теперь снова запустите программу Nginx.exe и введите “localhost” в окне браузера. Веб-сервер Nginx выделит сделанные вами изменения.
На сайте ресурсов Nginx представлен полный список веб-приложений, которые можно использовать для запуска на Windows PC.
Вывод
Nginx является одной из ведущих компаний по разработке веб-серверов, которая, как ожидается, затмит Apache в будущем. Кроме того, он быстрее, может справляться с большим количеством параллельных задач и надежен. Подводя итог, можно сказать, что если у вас есть простой сайт, который вы хотите подключить к Nginx, вы можете сделать это прямо сейчас без каких-либо проблем.
Спасибо, что читаете! Подписывайтесь на мои каналы в Telegram, Яндекс.Мессенджере и Яндекс.Дзен. Только там последние обновления блога и новости мира информационных технологий.
Респект за пост! Спасибо за работу!
Хотите больше постов? Узнавать новости технологий? Читать обзоры на гаджеты? Для всего этого, а также для продвижения сайта, покупки нового дизайна и оплаты хостинга, мне необходима помощь от вас, преданные и благодарные читатели. Подробнее о донатах читайте на специальной странице.
Заранее спасибо! Все собранные средства будут пущены на развитие сайта. Поддержка проекта является подарком владельцу сайта.
партнёры блога
telegram
Реклама
Последние
Рубрики
СЧЕТЧИКИ
РЕКЛАМА И ДОНАТЫ
Социальные сети
©2016-2021 Блог Евгения Левашова. Самое интересное и полезное из мира ИТ. Windows 10, Linux, Android и iOS. Обзоры программ и веб-сервисов. Статьи о мотивации и продуктивности.
Использование материалов разрешается с активной ссылкой на levashove.ru.
Данный блог является личным дневником, содержащим частные мнения автора. В соответствии со статьей 29 Конституции РФ, каждый человек может иметь собственную точку зрения относительно его текстового, графического, аудио и видео наполнения, равно как и высказывать ее в любом формате. Блог не имеет лицензии Министерства культуры и массовых коммуникаций РФ и не является СМИ, а, следовательно, автор не гарантирует предоставления достоверной, не предвзятой и осмысленной информации. Сведения, содержащиеся в этом блоге не имеют никакого юридического смысла и не могут быть использованы в процессе судебного разбирательства. Автор блога не несёт ответственности за содержание комментариев к его записям.
Настройка производительного веб-сервера на NGINX + PHP-FPM
PHP-FPM (Fast Process Manager) – это отдельная реализация обработчика FastCGI для выполнения PHP скриптов. На базе связки веб-сервера NGINX (который обрабатывает статику) и PHP-FPM вы можете построить более быстрый и производительный веб-сервер для своих веб-проектов по сравнению с использованием «классической» связки NGINX, Apache и модуль mod_php (стек LAMP).
Подключение репозитория, обновление сервера
Так как установка производится на вновь установленном сервере с CentOS, нужно подключить популярный репозиторий EPEL и обновить на сервере все пакеты.
Репозиторий установился, но пакетов для обновлений не найдено, так как установлен свежий образ CentOS.
Установка и настройка веб-сервера Nginx
Для установки свежей версии Nginx, подключим репозиторий разработчика, выполнив команду:
Или создав конфигурационный файл репозитория /etc/yum.repos.d/nginx.repo со следующим содержимым:
Если вы используете CentOS 8, измените версию в URL.
Установите пакет веб-сервера Nginx с помощью менеджера пакетов yum (или dnf):
Теперь можно запустить nginx и добавить его в автозагрузку с помощью systemctl:
# systemctl start nginx
# systemctl enable nginx
Чтобы проверить, что веб-сервер работает, откройте в браузере IP-адрес сервера.
Если у вас тестовая страница не открылась, проверьте настройки разрешенных служб, портов, зон в firewalld на своем сервере.
Настроим конфигурационный файл для отдельного домена build-centos.info. Создадим для сайта отдельную директорию и сам конфигурационный файл:
Откроем файл конфигурации:
И добавим в него следующее содержимое:
Конфигурационный файл содержит настройки для доступа по защищенному протоколу https, так как многие популярные CMS в данный момент по умолчанию работают через него. В дальнейшем мы установим и настроим бесплатный SSL сертификат Let’s Encrypt (по аналогии с установкой Let’s Encrypt сертификата на IIS сайта в Windows Server).
Установка php-fpm и дополнительных модулей php
В Nginx нет встроенного обработчика PHP, поэтому мы должны установить php-fpm и ряд модулей php, которые будут использоваться для обработки PHP скриптов.
Nginx в свою очередь дает существенный выигрыш при отдаче статики. В нашей конфигурации ngnix будет выступать прокси-сервером (кэширующим и front-end сервером), а в качестве бэкенда будет работать php-fpm.
Для установки свежих версий php, используем репозиторий REMI:
После установки, отредактируйте файл /etc/yum.repos.d/remi-php74.repo:
Запустите установку php-fpm и популярных модулей php:
# yum install php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip
Запустите сервис php-fpm и добавитье его в автозагрузку:
# systemctl start php-fpm
# systemctl enable php-fpm
Чтобы проверить, запустился ли сервис, можно выполнить команду:
Сервис php-fpm нужно запустить через unix-сокет. В конфигурационном файле /etc/php-fpm.d/www.conf удалите строку listen = 127.0.0.1:9000 и добавьте:
Чтобы запускать php-fpm не от пользователя apache (по-умолчанию), укажите следующие параметры в конфигурационном файле:
После изменения конфигурационного php-fpm нужно перезапустить сервис:
# systemctl restart php-fpm
Установка Let’s Encrypt и подключение сертификата
Чтобы выпустить бесплатный сертификат Let’s Encrypt, нужно установить нужное certbot.
# yum install certbot
После запуска команды, вам нужно будет заполнить все данные, указав почтовый ящик, домен и так далее:
Чтобы сертификат был корректно выпущен, ваш домен должен быть существующим и направлен на соответствующий веб-сервер.
После выпуска сертификата, выполните перезагрузку веб-сервера nginx и проверье результат.
# systemctl restart nginx
Соединение в браузере защищено!
Для автоматического продление сертификатов измените конфигурационный файл /etc/letsencrypt/renewal/build-centos.info.conf следующим образом:
# renew_before_expiry = 30 days
version = 0.18.1
archive_dir = /etc/letsencrypt/archive/ build-centos.info
cert = /etc/letsencrypt/live/build-centos.info/cert.pem
privkey = /etc/letsencrypt/live/build-centos.info/privkey.pem
chain = /etc/letsencrypt/live/build-centos.info/chain.pem
fullchain = /etc/letsencrypt/live/build-centos.info/fullchain.pem
После изменения файла, добавьте в крон задание:
Чтобы проверить, что nginx работает с php, я создал файл index.php и добавил в него:
Установка MySQL/MariaDB на веб сервере
Данный шаг мы полностью пропустим, так как на сайте уже есть статья по установке и тюнингу MariaDB. Воспользуйтесь ей.
Настройка Nginx и PHP-FPM для высоконагруженных проектов
Чтобы ваш веб-сервер работал с высокой производительностью и мог обработать большое количество запросов от клиентов, одного железа недостаточно. Важно правильно настроить работу связки nginx и php-fpm.
Настройка nginx
Откройте файл /etc/nginx/nginx.conf и изменит конфигурацию Nginx следующим образом:
Для проектов в которых содержится большое количество статических файлов, обязательно включайте gzip сжатие:
Добавьте большое количество типов файлов, чтобы все проверки на googlespeed проходили:
gzip_types application/atom+xml application/javascript text/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json font/ttf application/x-font-ttf application/vnd.ms-fontobject application/font-woff application/font-woff2 application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vnd.wap.wml text/vtt text/x-component text/x-cross-domain-policy;
Настройка сжатия позволит ускорить ваш проект.
Если на вашем сайте не предусмотрена загрузка больших файлов, ограничьте это с помощью nginx:
Если контент на вашем проекте меняется не так часто, вы можете использовать кеширование «expires max;» Либо добавьте соответствующую опцию в конфигурационный файл вашего хоста для нужного типа файлов, например:
* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ <
expires 7d;
Кеш для указанных типов файлов будет хранится 7 дней. Вы можете управлять кешем с помощью данной функции. После всех модификаций, не забывайте выполнять перезапуск nginx:
# systemctl restart nginx
Настройка php-fpm
При установке php-fpm вы сразу перевели его на unix-сокет. Это дает существенных прирост в производительности. По оценкам производительность вырастает в 2-3 раза. Остальные же параметры php-fpm нужно настраивать под каждый проект отдельно, рассмотрим пример настройки для сервера с 1024 Мб памяти.
Для php-fpm мы можем выделить примерно 512 мб, оставив остальное под БД и nginx.
В конфигурационный файл /etc/php-fpm/www.conf, добавим:
Все параметры нужно изменять при анализе нагрузки на ваш проект, данные значения теоретические.
На текущий сервер я сразу же установил последнюю версию CMS Bitrix, для проверки производительности. На мой взгляд это самая ресурсоемкая CMS и результаты получились неплохие, если учитывать, что это виртуальная машина на KVM с одним ядром (vCPU) и 1024 ОЗУ:
Оптимизацию настроек MariaDB я не расписывал, так как есть соответствующая статья на сайте. Я сформировал параметры для my.cnf по статье и база показала отличный результат.
При запуске сайте вы заметите невооруженным взглядом, что nginx + php-fpm будет намного быстрее обрабатывать ваши запросы и возвращать страницы, чем apache2 + mod_php. Если у вас есть возможность провести нагрузочные тесты во время настройки сервера, то это несомненно будет плюсом, если же такой возможности нет, вы можете изменить параметры для своих ресурсов исходя из нашего мануала.