Не все 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-разработчика. Когда я начинал, мне этой информации не хватало…
2 Comments
Если есть только доступ по ФТП, как быть из publish – assets?
В смысле как выполнить команду symfony plugin:publish-assets? Я бы выполнил ее заранее на dev сервере или на локальном компьютере.