З даного HOWTO Ви дізнаєтеся як встановити та налаштувати зв'язку nginx + php (в режимі FastCGI) + СУБД MySQL для роботи під операційною Microsoft Windows.
Ми детально розглянемо питання установки, базової та розширеної настройки, а також безпеки.
У статті наводяться приклади скриптів запуску і зупинки, а також приклади файлів конфігурації nginx і php.
Подробиці дивіться під катом.
Крок 1. Підготовка до встановлення
Розмістивши всі компоненти таким чином, Ви зробите пакет переміщуються (Portable) і готовим до роботи з будь-якого комп'ютера.
Крок 2. Завантаження необхідних компонентів
Нам будуть потрібні наступні компоненти:
Крок 3. Установка компонентів
Після закінчення завантаження приступайте до установки компонентів згідно з цим алгоритмом:
- розпакуйте архів з nginx в створений на кроці 1 каталог в корені (наприклад, c: \ nginx \). Далі в даному HOWTO буде використовуватися саме цей каталог, тому якщо Ви змінили шлях, зробіть відповідні правки;
- встановіть PHP в каталог c: \ nginx \ php \.
- на етапі вибору типу установки (Web Server Setup) обов'язково виберіть варіант «Other CGI«, інакше модулі, необхідні для роботи PHP в режимі FastCGI НЕ будуть встановлені;
- на етапі вибору необхідних модулів (Choose Items to Install) обов'язково виберіть MySQL. MySQLi і OpenSSL (якщо хочете далі налаштувати SSL). Також рекомендується вибрати модулі, необхідні для більшості CMS: bzip2, Curl, Exif, GD2, Gettext, XML. Якщо Ви забули щось потрібне і воно Вам потрібно, Ви завжди зможете доустановити / видалити ці компоненти, знову запустивши програму установки PHP і вибравши пункт Change. PHP - вибір компонентів
Крок 4. Створення скриптів запуску і зупинки
Для швидкого запуску набору Вам потрібно створити в каталозі c: \ nginx \ 3 файлу: start.cmd. shutdown.cmd і restart.cmd. призначені відповідно для запуску, зупинки та перезапуску серверів.
Лістинг файлу start.cmd (запуск сервера):
Лістинг файлу shutdown.cmd (зупинка сервера):
Лістинг файлу restart.cmd (перезапуск сервера):
Якщо Ви змінили шлях зі стандартного C: \ nginx \. на щось інше, внесіть відповідні правки в скрипти.
Якщо потрібно запускати сервер nginx + php + mysql при завантаженні системи, то додайте завдання на автозапуск скрипта start.cmd за допомогою оснастки Призначені завдання Windows.
Крок 5. Налаштування nginx
1. Змініть рядок:
Тут замість 1 вкажіть кількість робочих процесів nginx. Рекомендується вказувати число, що дорівнює кількості ядер процесора.
Це дозволить включити запис логів помилок в файл error.log. який Ви завжди знайдете в каталозі c: \ nginx \ logs \.
3. Змініть значення директиви server<> для nginx без використання SSL:
Якщо Ви хочете використовувати SSL, Вам потрібно зовсім інший конфиг:
Тут C: /nginx/private/ssl_cert_domain.pem - файл сертифіката SSL, а C: /nginx/private/ssl_cert_domain.key - закритий ключ для нього. Увага! При старті сервера у Вас запитають пароль для розшифровки закритого ключа, тому щоб не вводити його постійно, під час створення (отримання) сертифіката залиште поле введення пароля порожнім (це звичайно небезпечно, але економить час під час запуску сервера). У нових версіях можливо з'явиться функція вказівки пароля в конфіги (як у Apache).
Ви також можете перевизначити сторінки помилок 404, 500, 502, 503, 504 і 403 шляхом вказівки в директиві error_page коду помилки і імені файлу, який буде відображатися при її виникненні.
Крок 6. Налаштування php і безпеку
Також знайдіть в файлі рядок
і замініть її на наступну:
Ці дії включать безпечний режим для PHP (Safe Mode), при якому заборонені більшість небезпечних функцій і виконання файлів, а також відключить ряд потенційно уразливих функцій. Увага! Якщо Ваша CMS не працює при включеному режимі PHP Safe Mode, вимкніть його, або поставте правильну CMS ;-).
Якщо Ви є розробником і хочете бачити помилки і повідомлення PHP, то знайдіть рядок
і замініть її на
Для виправлення небезпечної уразливості в PHP, що дозволяє виконувати PHP-код з файлів, що, знайдіть в php.ini рядок
Подальші налаштування файлу змінювати не потрібно - все вже налаштовано оптимально для більшості застосувань програмою установки PHP.
Крок 7. Обробка декількох PHP-файлів одночасно
На жаль, PHP в Windows не вміє створювати копії своїх примірників, тому доведеться заздалегідь запускати кілька копій і описати їх використання в конфіги nginx.
У файлі start.cmd пропишіть запуск php-cgi.exe на різні номери портів:
Запустіть стільки процесів, скільки вам буде потрібно (зазвичай досить 5-20). У нашому прикладі використовується 5 примірників з номерами портів 9000 - 9004.
Тепер відкрийте файл fastcgi_params і на самому початку пропишіть наступне:
Обов'язково приберіть fastcgi_pass 127.0.0.1:9000; у всіх директивах location.
Приклад готового конфіга nginx.conf:
Приклад конфіга, що використовує SSL:
Приклад файлу fastcgi_params:
Крок 8. Тестування і висновок
Крок 9. Готові приклади файлів конфігурації
На численні прохання ми вирішили викласти приклади всіх файлів конфігурації nginx в Git-репозиторії. В даний момент доступно три різних готових конфіга:
- nginx_simple.conf - найпростіший конфиг для запуску одного сайту без підтримки SSL;
- nginx_ssl.conf - конфиг для запуску одного сайту з підтримкою SSL;
- nginx_vhosts.conf - спеціально налаштований конфіг з відносними шляхами, підтримкою SSL, віртуальних хостів (дозволяє тримати кілька сайтів на одному сервері) і окремих балок.
Там же ви знайдете готові скрипти запуску і зупинки сервера, а також файл конфігурації PHP.