02 Настройка веб-сервера
Обзор
Чтобы маршрутизация приложения Phalcon работала, необходимо настроить веб-сервер для правильной обработки перенаправлений. Инструкции по настройке популярных веб-серверов:
PHP-FPM
PHP-FPM (FastCGI Process Manager) обычно используется для управления процессом обработки PHP файлов. В настоящее время PHP-FPM идёт в комплекте с любым дистрибутивом PHP в Unix.
На Windows PHP-FPM поставляется вместе с пакетом PHP, как файл php-cgi.exe
. Вы можете запустить его с этом скриптом. Windows не поддерживает Unix сокеты, скрипт запускает fast-cgi в TCP режиме на порте 9000
.
Создайте файл php-fcgi.bat
с данным текстом:
@ECHO OFF ECHO Starting PHP FastCGI... set PATH=C:\PHP;%PATH% c:\bin\RunHiddenConsole.exe C:\PHP\php-cgi.exe -b 127.0.0.1:9000
Встроенный в PHP веб-сервер (для разработки)
Чтобы ускорить разработку вашего Phalcon-приложения, самым простым способом его запуска является использование встроенного в PHP веб-сервера. Мы рекомендуем использовать встроенный в PHP веб-сервер исключительно на стадии разработки. Ниже рассмотрены типичные конфигурации для Nginx и Apache, которые вам вероятнее всего подойдут.
Настройка под Phalcon
Для включения ЧПУ без Apache или Nginx (которые необходимы для Phalcon), вы можете использовать файл-роутер: .htrouter.php
Если вы создали приложение с помощью Phalcon Devtools, этот файл уже присутствует в корневой директории вашего проекта, и чтобы запустить сервер, вы можете воспользоваться следующей командой:
$(which php) -S localhost:8000 -t public .htrouter.php
Описание команды выше:
$(which php)
- вставить полный путь к PHP бинарнику-S localhost:8000
- режим запускает сервер сhost:port
-t public
-определяет корневой каталог серверов, необходимый php для маршрутизации запросов к таким ресурсам, как JS, CSS и изображения в общедоступном каталоге.htrouter.php
- точка входа, которая будет оцениваться для каждого запроса
Откройте свой браузер и перейдите по адресу http://localhost:8000/, чтобы убедиться, что всё работает.
Nginx
Nginx — это свободный, с открытым исходным кодом, высокопроизводительный HTTP-сервер и прокси-сервер, а также IMAP/POP3 прокси-сервер. В отличие от традиционных серверов Nginx не использует потоки для обработки запросов. Вместо этого он использует гораздо более масштабируемую, управляемую событиями (асинхронную) архитектуру. Эта архитектура под высокой нагрузкой использует небольшой, и главное, предсказуемый объем памяти.
Связка Phalcon + Nginx + PHP-FPM предоставляет мощный набор инструментов, который позволяет добиться максимальной производительности ваших PHP приложений.
Установка Nginx
Nginx - это бесплатный высокопроизводительный HTTP-сервер с открытым исходным кодом и обратный прокси-сервер, а также прокси-сервер IMAP / POP3. В отличие от традиционных серверов, Nginx не использует потоки для обработки запросов. Вместо этого он использует гораздо более масштабируемую управляемую событиями (асинхронную) архитектуру. Эта архитектура использует небольшие, но, что более важно, предсказуемые объемы памяти под нагрузкой.
Phalcon с Nginx и PHP-FPM предоставляют мощный набор инструментов, которые обеспечивают максимальную производительность для ваших приложений PHP.
Настройка под Phalcon
Вы можете использовать следующую конфигурацию Nginx для работы с Phalcon, вероятнее всего на вам подойдёт:
server { # Порт 80 будет требовать nginx для быть запущен с правами root # В зависимости от того, как вы устанавливаете Nginx для использования порта 80, # вам нужно будет запустить сервер с `sudo` портами около 1000, # не требуются привилегии root # listen 80; listen 8000; server_name default; ########################## # В производстве требуется SSL # listen 443 ssl default_server; # ssl on; # ssl_session_timeout 5m; # ssl_protocols SSLv2 SSLv3 TLSv1; # ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; # ssl_prefer_server_ciphers on; # Эти местоположения зависят от того, где хранятся сертификаты # ssl_certificate /var/nginx/certs/default.cert; # ssl_certificate_key /var/nginx/certs/default.key; ########################## # Это папка, в которой находится index.php root /var/www/default/public; index index.php index.html index.htm; charset utf-8; client_max_body_size 100M; fastcgi_read_timeout 1800; # Представляет корень домена # http://localhost:8000/[index.php] location / { # Matches URLS `$_GET['_url']` try_files $uri $uri/ /index.php?_url=$uri&$args; } # Когда HTTP-запрос не соответствует вышеуказанному # и файл заканчивается на .php location ~ [^/]\.php(/|$) { # try_files $uri =404; # Ubuntu и PHP7.0-fpm в режиме сокета # Этот путь зависит от версии установки PHP fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; # В качестве альтернативы вы используете PHP-FPM в режиме TCP (обязательно для Windows) # Вам нужно будет настроить FPM для прослушивания через стандартный порт # https://www.nginx.com/resources/wiki/start/topics/examples/phpfastcgionwindows/ # fastcgi_pass 127.0.0.1:9000; fastcgi_index /index.php; include fastcgi_params; fastcgi_split_path_info ^(.+?\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_param PATH_INFO $fastcgi_path_info; # fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; # и установить php.ini cgi.fix_pathinfo=0 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ /\.ht { deny all; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; access_log off; } }
Запуск Nginx
Обычно запуск производится командой service start nginx
. Но это зависит от метода установки веб-сервера и системного менеджера вашей операционной системы.
Apache
Apache — это популярный веб-сервер, доступный на большинстве современных платформ.
Настройка под Phalcon
Следующие инструкции позволят настроить Apache для корректной работы с Phalcon. В основном они сводятся к настройке поведения модуля mod_rewrite
, позволяющего использовать человеко-понятные URL (ЧПУ) и компонента маршрутизации. Типичное приложение имеет следующую структуру:
test/
app/
controllers/
models/
views/
public/
css/
img/
js/
index.php
Корневой каталог
Самый распространённый случай - когда приложение устанавливается в любой подкаталог корневой директории. В таких случаях мы используем два .htaccess
файла. Первый будет скрывать код приложения и перенаправлять запросы к корню приложения (public/
).
Обратите внимание, для полного разрешения использования директив в .htaccess
файле, в главном конфигурационном файле Apache необходимо установить параметр AllowOverride All
.
# test/.htaccess <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule ((?s).*) public/$1 [L] </IfModule>
Второй .htaccess
будет располагаться уже в каталоге public/
и будет перенаправлять все запросы на файл public/index.php
:
# test/public/.htaccess <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L] </IfModule>
Для пользователей, которые используют персидскую букву "م" (meem) в параметрах uri, существует проблема с mod_rewrite. Чтобы она подходящила для работы как с английскими символами, нужно изменить свой .файл .htaccess
:
# test/public/.htaccess <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([0-9A-Za-z\x7f-\xff]*)$ index.php?params=$1 [L] </IfModule>
Если uri содержит символы, отличные от английского, может потребоваться применить вышеуказанное изменение, чтобы mod_rewrite
точно соответствовал маршруту.
Конфигурация Apache
Если нет желания или возможности использовать файлы .htaccess
, то параметры также можно прописать в главном файле конфигурации Apache:
<IfModule mod_rewrite.c> <Directory "/var/www/test"> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule ((?s).*) public/$1 [L] </Directory> <Directory "/var/www/test/public"> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L] </Directory> </IfModule>
Виртуальные хосты
В этом заключительном примере конфигурации, мы разрешаем установку Phalcon-приложения в виртуальный хост:
<VirtualHost *:80> ServerAdmin admin@example.host DocumentRoot "/var/vhosts/test/public" DirectoryIndex index.php ServerName example.host ServerAlias www.example.host <Directory "/var/vhosts/test/public"> Options All AllowOverride All Require all granted </Directory> </VirtualHost>
WAMP
WampServer - среда веб-разработки для Windows. Это позволяет вам создавать веб-приложения с Apache2, PHP и базой данных MySQL. Ниже приведены подробные инструкции по установке Phalcon на WampServer для Windows. Настоятельно рекомендуется использовать последнюю версию WampServer.
Скачать Phalcon
WAMP имеет 32- и 64-разрядные версии. В разделе загрузки вы можете загрузить библиотеку Phalcon, которая подходит для вашей установки WAMPP.
После скачивания библиотеки Phalcon у вас будет zip-файл, примерно такой как показано ниже:
Распакуйте архив и получите файл библиотеки Phalcon DLL:
Скопируйте файл php_phalcon.dll
в папку расширений PHP. Если WAMP установлен в папке C:\wamp
, расширение должно находиться в C:\wamp\bin\php\php5.5.12\ext
(при условии, что в вашей установке WAMP установлен PHP 5.5.12).
Отредактируйте файл php.ini
, он находится по адресу C:\wamp\bin\php\php5.5.12\php.ini
. Для редактирования можно использовать Блокнот или любую подобную программу. We recommend Notepad++ to avoid issues with line endings. Добавьте в конец файла:
extension=php_phalcon.dll
и сохраните его.
Перезапустите веб-сервер Apache. Сделайте единственный щелчок по значку WampServer на панели задач. Выберите Restart All Services из всплывающего меню. Убедитесь, что значок в трее снова станет зеленым.
Откройте браузер, чтобы перейти https://localhost. Появится страница приветствия WAMP. Проверьте раздел extensions loaded
, чтобы убедиться, что phalcon был загружен.
Поздравляем! Теперь вы летите с Phalcon.
Cherokee
Cherokee является высокопроизводительным веб-сервером. Очень быстро, гибко и легко установить.
Конфигурация Phalcon
Cherokee имеет удобный графический интерфейс для настройки практически всех параметров, доступных в веб-сервере.
Чтобы запустить администрирование сервера, нужно выполнить команду /путь-к-cherokee/sbin/cherokee-admin
с правами суперадмина (root).
Создайте новый виртуальный хост, для этого кликните на vServers
, затем добавьте виртуальный сервер:
Добавленный виртуальный хост должен появиться на панели слева. На вкладке Behaviors
вы можете увидеть набор правил для данного сервера. Нажмите кнопку Rule Management
. Снимите галочки с Directory /cherokee_themes
и Directory /icons
:
Добавьте поведение языка PHP с помощью мастера PHP Language
. Это поведение позволяет запускать приложения PHP:
Обычно такое решение не требует дополнительной настройки. Добавьте еще одно правило, на этот раз в разделе Manual Configuration
. В списке Rule Type
выберите File Exists
, и убедитесь что опция Match any file
включена:
На вкладке 'Handler' выберите обработчик List & Send
:
Отредактируйте правило Default
для включения возможностей URL-перезаписи. Выберите Redirection
, затем добавьте регулярное выражение ^(.*)$
:
Убедитесь, что обработчики выставлены в нужном порядке:
Запустите приложение в браузере: