Я работал над проектом с Phalcon в локальной среде разработки (Vagrant + Virtualbox). Это просто прекрасно работает, и мое время разработки действительно сократилось.
Теперь я хотел бы перевести этот проект в Интернет в среде nginx Plesk 11.5 и столкнулся с проблемой настройки Nginx в Plesk для Phalcon. Я также довольно новичок в Nginx.
У меня есть следующая конфигурация Nginx:
server {
listen 80;
server_name localhost.dev;
index index.php index.html index.htm;
set $root_path '/var/www/httpdocs';
root $root_path;
try_files $uri $uri/ @rewrite;
location @rewrite {
rewrite ^/(.*)$ /index.php?_url=/$1;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
root $root_path;
}
location ~ /\.ht {
deny all;
}
}
Я удалил «server {}», потому что они не разрешены в конфигурации Plesk nginx. Тем не менее, это просто не работает. Домашняя страница приложения отображается отлично, поэтому Phalcon работает просто отлично, но маршрутизация не работает: / search просто дает 404, где он работает в моей локальной среде с этой конфигурацией.
Что я должен изменить в Plesk, чтобы это работало?
Спасибо за ваше время заранее!
Прежде всего, проверьте PHP на обработке вашего домена PHP-FPM или Apache.
В случае, если вы используете nginx точно так же, как обратный прокси-сервер для apache и PHP, обрабатываемых apache, вам просто нужно поместить загрузочные файлы Phalcon index.php и .htaccess в /var/www/vhosts/domain.tld/httpdocs и все другие файлы приложения в / var /www/vhosts/domain.tld
(Я успешно запустил учебник Phalcon по такой конфигурации)
В случае PHP-FPM самый простой способ — это определить настраиваемый шаблон виртуального хоста
mkdir -p /usr/local/psa/admin/conf/templates/custom/domain
cp /usr/local/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php /usr/local/psa/admin/conf/templates/custom/domain/
И в /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php задайте условие для вашего доменного имени, просто отобразите всю полную конфигурацию, например:
<?php if $VAR->domain->asciiName == 'your-domain.tld' ?>
plain text of your full nginx config here
<?php else: ?>
plesk default instruction for all other domains
<?php endif ?>
Других решений пока нет …