in Профессиональное

Разворачиваем symfony в document root

Не все web-проекты в этом мире – это крупные и высоко нагруженные системы. Есть также огромное число мелких и средних проектов. Давайте немного взглянем на последние. То что они небольшие и типовые – не значит что для них нельзя использовать symfony. Даже нужно, если у вас на поддержке 20 штук таких – будет проще обслуживать.

Итак, имеем маленький/средний сайтик на symfony. Здорово, но на нашем хостинге мы имеем доступ только в document root сервера! Это не беда, symfony достаточно гибок для того чтобы развернуть его в таких условиях. Ниже я приведу два способа.

1. Когда таки есть ssh доступ.

В этом случае все достаточно просто. Допустим у нас такая структура:

~home
----site.name
-------- www
  • мы можем выложить наш проект как ни в чем ни бывало в ~/home/site.name и просто переименовать web -> www
  • мы также можем создать в ~home директорию site.name.lib и скопировать туда весь проект. После этого можно удалить ~/home/site.name/www и сделать symlink (ln -s) ~/home/site.name.lib/web -> ~/home/site.name.lib/www
  • Этот способ также можно применить когда у вас есть доступ только в ~/home/www (т.е. для конкретного сайта) и там также располагаются директории поддоменов (если выложить туда symfony проект – то получится та еще каша)
  • Можете оптимизироваться как вам нужно, в зависимости от ваших предпочтений и ограничений хостера.

Но этот пример на самом деле не очень показателен. Так или иначе приткнуть сайт там можно было изначально.

2. Когда есть только ftp доступ в document root (public_html или www)

Такое тоже еще бывает. Толи заказчик чего-то боится, толи хостер такой. Не важно. В этом случае мы можем:

  • Перенести все директории проекта например в web/system (кроме нее самой естественно)
  • Модифицировать index.php:
require_once(dirname(__FILE__).'/system/config/ProjectConfiguration.class.php');
  • Можно также добавить .htaccess в web/system типа
deny from all

Ничего сложного ) Можно сделать сборку для типовых проектов – под себя.

p.s. заметка рассчитана на начинающего symfony-разработчика. Когда я начинал, мне этой информации не хватало…

Write a Comment

Comment

*

    • В смысле как выполнить команду symfony plugin:publish-assets? Я бы выполнил ее заранее на dev сервере или на локальном компьютере.

  1. Написала 1-ый сайт на Symfony. На лок. машине все работает. Хочу перенести на хостинг.
    Все сделала, как в п. 2.На хостинге тестовом нельзя исправить httpd.conf. При вызове index.php – пустая стр. При вызове frontend_dev.php – “You are not allowed to access this file. Check fronted_dev.php for more information.” Все пути исправила. Подскажите, пожалуйста, что делать.

    • fronted_dev.php изначально разрешает доступ только c localhost. Можно временно закомментировать в нём строку

      die(‘You are not allowed to access this file. Check ‘.basename(__FILE__).’ for more information.’);

      И после этого сможете отладить проблемы вашей инсталляции. В крайнем случае пишете мне по скайпу, разберёмся.