Запуск Symfony2 на ISPConfig3

Вся установка, конфигурация ISPConfig и все, что с этим связано, были трудной дорогой. С шишками и ушибами я наконец-то получил полный пакет, работающий так, как я хочу.

Эти удары и синяки, вероятно, из-за того, что я неопытен в Linux (Debian Wheezy).

Тем не менее, теперь все настроено, я пришел к точке установки Symfony2. Это, как и все другие аспекты ISPConfig, идет не так, как должно.

Мои проблемы:

  • Я не знаю, как настроить nginx для symfony2 из веб-интерфейса
  • При запуске Symfony он не перенаправляется в app.php
  • Когда я иду прямо в app.php, он бросает мне 500

Логи говорят мне, что есть проблема с app каталог недоступен open_basedir(),

То, что я на самом деле ищу, — это небольшое руководство по настройке всего этого.

Не стесняйтесь спрашивать дополнительную информацию. Я с удовольствием обновлю свой вопрос.

Заранее спасибо.

Nginx сайт конф

server {
listen ...:80;

listen ...:443 ssl;
ssl_protocols ...
ssl_certificate ...
ssl_certificate_key ...;

server_name mydomain.tld;

root   /var/www/mydomain.tld/web;index index.html index.htm index.php index.cgi index.pl index.xhtml;location ~ \.shtml$ {
ssi on;
}error_page 400 /error/400.html;
error_page 401 /error/401.html;
error_page 403 /error/403.html;
error_page 404 /error/404.html;
error_page 405 /error/405.html;
error_page 500 /error/500.html;
error_page 502 /error/502.html;
error_page 503 /error/503.html;
recursive_error_pages on;
location = /error/400.html {

internal;
}
location = /error/401.html {

internal;
}
location = /error/403.html {

internal;
}
location = /error/404.html {

internal;
}
location = /error/405.html {

internal;
}
location = /error/500.html {

internal;
}
location = /error/502.html {

internal;
}
location = /error/503.html {

internal;
}

error_log /var/log/ispconfig/httpd/mydomain.tld/error.log;
access_log /var/log/ispconfig/httpd/mydomain.tld/access.log combined;

location ~ /\. {
deny all;
access_log off;
log_not_found off;
}

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location @php {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/lib/php5-fpm/web3.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}

}

Я хотел бы отметить, что эта конфигурация автоматически генерируется ISPConfig и что ее, вероятно, следует редактировать из веб-интерфейса.

редактировать

Я исправил внутреннюю ошибку сервера, добавив все папки Symfony в:

ISPConfig Web > Sites > mydomain.tld > Options > PHP open_basedir

15

Решение

В конфигурации отсутствует фактическая ретрансляция на PHP. Это должно работать, если вы поменяете блок location @php на следующие три блока:

location / {
try_files $uri @php;
}

location app.php {
try_files @php =404;
}

location @php {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/lib/php5-fpm/web3.sock;
fastcgi_param  SCRIPT_NAME  app.php;
fastcgi_param  SCRIPT_FILENAME  app.php;
fastcgi_intercept_errors on;
}

Первый блок пытается найти запрошенный файл в указанном корневом каталоге, то есть /var/www/mydomain.tld/web — теперь все ресурсы Symfony будут работать и возвращаться, поскольку все они находятся в веб-каталоге. Если файл не найден, он вызывает PHP.

Второй блок используется, если /app.php запрашивается напрямую — вместо доставки этого файла мы обрабатываем его с помощью PHP.

Третий блок настраивает PHP — два предыдущих блока всегда ссылаются на этот блок, поэтому любой файл, который не найден напрямую, обрабатывается PHP. Symfony имеет только один фронт-контроллер app.php, поэтому мы просто отправляем все запросы в эту точку входа.

При такой настройке он должен быть достаточно безопасным, потому что PHP обрабатывает только app.php. Для среды тестирования вы можете использовать app_dev.php вместо app.php (просто измените имя файла в блоке @php) — но никогда для производства и без защиты среды тестирования.

7

Другие решения

Попробуйте вставить код в nginx Директивы поле на Опции Вкладка сайта в ISPConfig. Это должно сохранить ваши настройки во время конфигурации регенерации.

1

По вопросам рекламы [email protected]