Мои сайты
- hudson играет как я играю на pc, xbox360 и других платформах
- фото-hudson мой фотоальбом, мои фото-эксперименты
Друзья
Популярные таги
ajax apache bird's eye view bromine centos cubic test doctrine facebook flash flex hints howto internet explorer java javascript jquery linux memcached monitoring munin mysql nginx patch php propel redhat ruby ruby on rails selenium selenium grid svn symfony symfony advent calendar'09 symfony deploy checklist tools web разработка Мои сайты автоматизация тестирования голдрат мысли практикум теория ограничений тестирование чтиво юморАрхив блога
Чеклист: готов ли ваш symfony проект к развертыванию (часть 2)
По мотивам Check if your symfony application is ready for deployment
Небольшой сборник рецептов (или же мини тестов), которые желательно выполнять перед развертыванием symfony-проектов. Часть 2-я.
Favicon
Браузеры запрашивают favicon.ico файл, когда юзер в первый раз посещает страницу и впоследствии использует его для отображения в адресной строке и в меню закладок. Этот файлик не только делает внешний вид вашего сайта целостным, но и позволяет визуально отделять его от других сайтов в закладках, добавляет уникальности.
Вот несколько полезных ссылок для создания иконок:
Имена кукисов
Механизм сессий использует куки на стороне клиента и эти куки по умолчанию именуются symfony. В
apps/frontend/config/factories.ymlдобавьте следующие строки для всех окружений:storage: class: sfSessionStorage param: session_name: my_projectЕсли у вас используется sf[Doctrine]GuardPlugin, вы можете изменить имя куки “Remember me” в
myProject/config/app.ymlall: sf_guard_plugin: remember_cookie_name: myProjectRememberMeПроверка продакшн сервера
Для проверки того, корректно ли настроен сервер для symfony-проекта, ребята из Sensio написали тестовый скрипт. Загрузить его можно здесь: http://svn.symfony-project.com/branches/1.4/data/bin/check_configuration.php. Поместите его в web-директорию (зачем именно туда непонятно, так как тестируются общие настройки). Выполните скрипт:
$ php check_configuration.php ******************************** * * * symfony requirements check * * * ******************************** php.ini used by PHP: Z:\usr\local\php5\php.ini ** WARNING ** * The PHP CLI can use a different php.ini file * than the one used with your web server. * (especially on the Windows platform) * If this is the case, please launch this * utility from your web server. ** WARNING ** ** Mandatory requirements ** OK PHP version is at least 5.2.4 (5.2.4) ** Optional checks ** OK PDO is installed OK PDO has some drivers installed: mysql OK PHP-XML module is installed OK XSL module is installed OK The token_get_all() function is available OK The mb_strlen() function is available OK The iconv() function is available OK The utf8_decode() is available OK A PHP accelerator is installed [[WARNING]] php.ini has short_open_tag set to off: FAILED *** Set it to off in php.ini *** [[WARNING]] php.ini has magic_quotes_gpc set to off: FAILED *** Set it to off in php.ini *** OK php.ini has register_globals set to off OK php.ini has session.auto_start set to off OK PHP version is not 5.2.9Соответствующую документацию можно почитать тут: http://www.symfony-project.org/getting-started/1_4/en/02-Prerequisites.
Языковые настройки
По умолчанию, symfony помещает
lang=enна каждую страницу вашего проекта. Если ваше приложение работает с другими языками, отредактируйтеapps/frontend/templates/layout.phpследующим образом:Удаляем /backend.php/ из URI
В файле
apps/frontend/config/settings.ymlвы можете скрыть отображение имени bootstrap скрипта при помощи опцииno_script_name. Эта опция включена для первого сгенерированного рпиложения (как правило frontend) и отключена для последующих.Почему?
Потому что без указания backend.php (ну или грубо говоря имени приложения через скрипт), symfony не может понять, какое из приложений запускать. Обратите внимание на
web/index.php:Явно указано приложение (frontend) и окружение (prod). Т.о. мы должны придумать как указать symfony нужное приложение, не используя для этого backend.php явно.
Мы можем, например, использовать разные домены:
Или, что еще лучше, для бэкэнжа можно использовать поддомен:
Если ваш проект размещен на выделенном сервере
Вам нужно добавить новый виртуальный хост в
httpd.conf:<VirtualHost *:80> ServerName admin.my-app.com DirectoryIndex backend.php DocumentRoot "/path/to/the/web/directory" <Directory "/path/to/the/web/directory"> AllowOverride All Allow from All </Directory> Alias /sf /path/to/the/symfony/data/web/sf <Directory "/path/to/the/symfony/data/web/sf"> AllowOverride All Allow from All </Directory> </VirtualHost>Если ваш проект расположен на виртуальном хостинге
В этом случае у вас скорее всего нет доступа к
http.confи единственный доступный способ конфигурирования – это.htaccess. Добавим после строк:Следующие строки:
# The admin subdomain returns to the backend RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{HTTP_HOST} ^admin\.my-app\..* RewriteRule ^(.*)$ backend.php [QSA,L]И, наконец,
можно модифицировать
settings.yml:prod: .settings: no_script_name: trueИ очистить кэш:
PHP акселератор
Для продуктового сервера вам нужна максимальная производительность. Установка акселератора (вики-статья про акселераторы http://en.wikipedia.org/wiki/PHP_accelerator) даст хороший прирост производительности при малых затратах. Одним из популярных акселераторов является APC (Advanced PHP Cache – http://www.php.net/apc).
Установка на выделенный сервер
Процесс установки APC на выделенный сервер прост насколько это вообще возможно ))
Виртуальный хостинг
Как правило поставить что-то на виртуальном хостинге нельзя. Но в Doctrine ORM вы можете включить встроенный механизм кэширования. Включить кэширование можно добавив следующий метод в
mySfProject/config/ProjectConfiguration.class.php(документация: http://www.doctrine-project.org/documentation/manual/1_2/en/introduction):P.S. Установка eAccelerator для PHP5 под Windows http://hudson.su/?p=808 (хотя для posix систем принцип тот же, из исходников вы вряд ли его будете собирать,
yum installилиapt get…)