Как установить symfony на ubuntu

Обновлено: 05.07.2024

Symfony – это открытый PHP-фреймворк для разработки приложений, главные преимущества которого – скорость, гибкость, масштабируемость и стабильность.

Symfony является полноценным фреймворком, однако при необходимости можно устанавливать и использовать в разработке только отдельные его компоненты. Для их установки используется Composer.

Также Symfony 2 поставляется в виде дистрибутивов (связок пакетов, конфигураций и других компонентов для быстрого старта). Для начала разработки проекта рекомендуется использовать самый простой дистрибутив Standard Edition.Он содержит наиболее распространенные пакеты и использует простую систему конфигураций.

В этом руководстве показано, как становить этот дистрибутив и начать работу с ним.

Требования

Для выполнения руководства понадобится:

  • Предварительно настроенный Ubuntu VPS.
  • Права sudo и доступ к терминалу.
  • Установленный веб-сервер, желательно стек LAMP; PHP 5.3.3+.

Установка Symfony 2

Фреймворк Symfony 2 можно установить двумя способами:

    и распаковать архив в папке проекта,
  1. Или использовать Composer.

Примечание: Проверьте ссылку на версию на странице загрузки Symfony.

После завершения установки распакуйте архив:

tar -zxvf download?v=Symfony_Standard_Vendors_2.3.3.tgz

Теперь в каталоге появилась новая папка Symfony. Можете удалить tar-файл с сервера.

Права на файлы Symfony

Теперь нужно изменить права на некоторые каталоги и файлы, открыв веб-серверу доступ к ним. За работу веб-сервера Apache отвечает пользователь www-data, который состоит в группе www-data.

Запустите при помощи терминала следующие команды, чтобы изменить владельца этих файлов и папок:

chown -R root:www-data app/cache
chown -R root:www-data app/logs
chown -R root:www-data app/config/parameters.yml

Теперь они принадлежат root-пользователю и группе www-data. Откройте пользователям этой группы права на запись в следующих папках:

chmod -R 775 app/cache
chmod -R 775 app/logs
chmod -R 775 app/config/parameters.yml

Настройка сервера

Теперь нужно проверить настройки сервера. Symfony2 предоставляет инструмент для тестирования, доступный по адресу:

Если при этом возникла ошибка:

This script is only accessible from localhost

Значит, вы пытаетесь получить доступ к файлам удалённо, но для этого нужна дополнительная отладка сервера.

Откройте файл config.php в каталоге приложения /web. Найдите следующий блок:

if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
'127.0.0.1',
'::1',
)))

Сюда нужно внести новый массив, содержащий IP, который должен иметь доступ к Symfony. Добавьте IP-адрес:

if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
'127.0.0.1',
'::1',
'YOUR IP',
)))

Теперь ошибка устранена, и вы можете использовать тестер конфигураций удалённо. Откройте тестер в браузере и следуйте инструкциям по настройке VPS для поддержки Symfony. Устранив основные проблемы, нажмите Bypass configuration and go to the Welcome page. На экране появится главная страница Symfony2.

Если при этом возникает ошибка:

Сохраните и закройте файл. Обновите страницу, ошибка должна исчезнуть.

Глобальные настройки Symfony2

На главной странице только что созданного приложения нужно кликнуть Configure, это запустит в браузере мастер настройки. На первой странице можно настроить соединение с БД; она содержит список доступных вариантов, среди которых MySQL, SQLite, PosgreSQL, Oracle и т.д. Укажите данные, необходимые для подключения к БД, кликните Next и сгенерируйте секретный ключ для защиты от CSRF-атак.

Нажмите Next, чтобы сохранить предоставленную информацию в файл parameters.yml каталога app/config. Если ранее права на файлы и каталоги были установлены правильно, никаких ошибок сейчас не возникнет. В противном случае можно скопировать и вставить данные в файл вручную.

Вендоры и зависимости Symfony

Фреймворк Symfony зависит от некоторых внешних библиотек. Их можно найти в каталоге /vendor и загрузить при помощи менеджера зависимостей PHP под названием Composer.

Favorite

Добавить в избранное

Главное меню » Операционная система Ubuntu » Как установить Symfony Framework 3 с Nginx на Ubuntu 14.04

Как установить Symfony Framework 3 с Nginx на Ubuntu 14.04

В этом учебнике мы шаг за шагом, покажем вам , как легко установить framework Symfony 3 с Nginx на вашем основе виртуального сервера Ubuntu.

На момент написания этого учебника, последняя стабильная версия Symfony 3.0.1 и требует:

Если Apache установлен на вашем сервере, остановите службу Apache и удалить пакеты Apache:

Убедитесь , что ваш Ubutu VPS полностью в актуальном состоянии, используя следующие команды:

Для того чтобы установить Nginx, PHP-FPM, curl и MySQL на вашем сервере, выполните следующую команду:

Найдите файл конфигурации PHP с помощью следующей команды:

Отредактируйте конфигурационный файл /etc/php5/fpm/php.ini с помощью следующей команды:

Затем, добавите/измените следующие строки:

Выполните следующую команду, чтобы перезапустить сервис PHP-FPM для того, чтобы изменения вступили в силу:

Установите последнюю стабильную версию Symfony на виртуальном сервере, используя следующие команды:

Создайте новый проект Symfony:

Из соображений производительности, наша рекомендация состоит в том, чтобы запустить PHP-FPM в режиме сокета, вместо доступа через <IP_address>: ПОРТ.
Удалите блок сервера Nginx по умолчанию, а затем создайте новый файл конфигурации Nginx и добавьте следующий виртуальный блок для вашего доменного имени :

и добавьте следующие строки:

Для того чтобы включить вновь созданный блок Nginx, создайте новую символическую ссылку с помощью следующей команды:

Проверьте конфигурацию Nginx:

и перезапустите веб-сервер Nginx для того, чтобы изменения вступили в силу:

Как установить Symfony Framework 3 с Nginx на Ubuntu 14.04

Все. framework установлен на Ubuntu 14.04.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Для установки php-symfony в Ubuntu / Linux Mint / Debian, введите в Терминал :

php-symfony — набор повторно используемых компонентов и фреймворк для веб-проектов

Подробная информация о пакете:

Набор повторно используемых компонентов и фреймворк для веб-проектов

Зависимости:

Общие файлы для пакетов PHP

Общие расширения для Доктрины

Общий интерфейс для библиотек кеширования

Общий интерфейс контейнера (PHP FIG PSR-11)

Общий интерфейс для протоколирования библиотек

Общие интерфейсы для простого кэширования

Управлять URL-адресами активов

Моделировать поведение веб-браузера

Компонент Symfony Cache с PSR-6, PSR-16 и тегами

Загрузить классы PHP автоматически

Конфигурации нагрузки из разных источников данных

Запускать задачи из командной строки

Конвертировать селектор CSS в выражения XPath

Инструменты для облегчения отладки кода PHP

Инструменты отладки для системы Symfony

Стандартизировать и централизовать построение объектов

Интеграция для доктрины с компонентами Symfony

Облегчение навигации DOM для документов HTML и XML

.env, чтобы сделать переменные среды доступными

Отправлять события и слушать их

Компилировать и оценивать выражения

Основные утилиты файловой системы

Найти файлы и каталоги

Создавать формы HTML и обрабатывать данные запроса

Базовая, надежная и гибкая структура MVC

Преобразование слов между их единственными и множественными формами

Ограниченный уровень замены для расширения PHP-расширения

Абстракции для модуля PHP LDAP

Создает и управляет замками

Интеграция для Monolog с компонентами Symfony

Настраивать объекты с помощью массивов опций

Symfony polyfill backporting apcu_ * функции для снижения версий PHP

Symfony polyfill для данных и классов, связанных с ICU

Symfony polyfill для расширения Mbstring

Symfony polyfill поддерживает несколько функций PHP 5.6+ для более низких версий PHP

Symfony polyfill поддерживает несколько функций PHP 7.0+ для снижения версий PHP

Выполнять команды в подпроцессах

Чтение и запись в объект или массив

Извлекать информацию о свойствах PHP-классов

Интеграция для ProxyManager с компонентами Symfony

Связать запрос с кодом, который генерирует ответ

Инфраструктура для сложных систем авторизации

Настраиваемая система безопасности для платформы Symfony

Инфраструктура для систем авторизации - общие функции

Инфраструктура для систем авторизации - защита CSRF

Инфраструктура для систем авторизации - Функции охраны

Конвертировать объекты PHP в конкретные форматы и наоборот

Инструменты, необходимые для создания системы шаблонов

Инструменты для интернационализации приложения

Интеграция для Twig с компонентами Symfony

Настраиваемая интеграция Twig с системой Symfony

Инструменты для проверки классов

Механизм Symfony для изучения и сброса переменных PHP

Управлять связями между ресурсами

Собирать запросы информации для анализа и отладки

Предоставлять команды для приложений с использованием встроенного веб-сервера PHP

В этом уроке будет рассказано, как вручную развертывать базовое приложение Symfony на сервере Ubuntu 14.04. Мы рассмотрим, как правильно конфигурировать сервер, учитывая при этом меры безопасности и эффективности, чтобы получить приложение, готовое для производства. Если вам нужен вводный урок по Symfony, вы можете почитать о том, как установить и запустить Symfony на Ubuntu 14.04.

Необходимые условия

Для этого урока нам потребуются:

• Новый Droplet на Ubuntu 14.04 работающий в средах LAMP или LEMP • Обычный (non-root) пользователь sudo, которого вы можете настроить, следуя указаниям в этом уроке: Initial Server Setup (Начальная настройка сервера)

Важно помнить, что развертывание это очень обширная тема, поскольку у каждого приложения есть свои специфические требования. Для упрощения мы будем использовать шаблонное приложение, представляющее собой список задач (to-do list application), созданное при помощи Symfony. Его исходный код вы можете найти на GitHub.

Шаг 1 — Установка зависимостей сервера

В этом шаге мы установим зависимости сервера. Начнем с обновления кэша диспетчера пакетов.

Нам понадобится git для проверки файлов приложения, acl для задания верных разрешений каталога в процессе установки приложения, и два расширения PHP (php5-cli для исполнения PHP в командной строке и php5-curl для Symfony). Установите необходимые пакеты.

И наконец, нам понадобится composer для загрузки зависимостей приложения. Чтобы установить composer для всей системы, выполните:

Теперь все готово.

Шаг 2 — Конфигурация MySQL

Начнем с того, что подготовим настройку вашего MySQL для деплоя. Для следующего шага нам понадобится пароль для root-аккаунта в MySQL. Убедитесь, что вы настроили MySQL с учетом требований безопасности (как описано в шаге 2 в обучающих руководствах по LAMP и LEMP).

Задание кодировки по умолчанию

Symfony рекомендует устанавливать кодировку набора символов и сопоставление вашей базы данных на utf8 . Большинство баз данных по умолчанию используют сопоставления латинским шрифтом, что приведет к неожиданным результатам (например, странные символы и нечитабельный текст) при извлечении данных, ранее сохраненных в базе данных. Конфигурация на уровне приложения невозможна, поэтому нам нужно отредактировать файл конфигурации MySQL и включить туда несколько определений.

Откройте файл /etc/mysql/my.cnf при помощи вашего любимого диспетчера командной строки.

Теперь найдите блок [mysqld] . Добавьте опции collation-server и character-set-server в Basic Settings (Базовые настройки).

Сохраните и выйдите. Перезапустите MySQL, чтобы изменения вступили в силу.

Создание пользователя и базы данных для приложения

Теперь нам нужно создать базу данных MySQL и пользователя для нашего приложения. Сперва зайдите в клиент MySQL через root-аккаунт MySQL.

Вам нужно будет ввести пароль. Это должен быть тот же пароль, который вы использовали, когда выполняли mysql_secure_installation . Теперь создайте базу данных приложения:

База данных создана. Следующим шагом будет создание пользователя в MySQL и предоставление этому пользователю доступа к только что созданной базе данных.

Мы создали пользователя под именем todo-user , с паролем todo-password . Обратите внимание на то, что это просто пример и что в целях безопасности вам нужно использовать более сложный пароль для своего пользователя в MySQL.

Нам нужно предоставить этому пользователю права доступа к базе данных приложения. Это можно сделать следующим образом:

Это предоставит пользователю todo-user все привилегии на всех таблицах внутри базы данных todo. Чтобы применить изменения, выполните:

Чтобы проверить, все ли работает правильно, выйдите из клиента MySQL.

Теперь авторизируйтесь снова, но на этот раз используя новое имя пользователя MySQL и только что созданный пароль. В этом примере мы используем имя пользователя todo-user и пароль todo-password :

Вы можете проверить, к каким базам данным имеется доступ у пользователя:

Результат должен выглядеть следующим образом:

Это означает, что новый пользователь с требуемыми привилегиями был успешно создан. Вы должны видеть только две базы данных - information_schema и todo .

Теперь вы можете выйти из клиента MySQL.

Шаг 3 — Проверка кода приложения

Развертывание приложения - это обширная тема, и объясняется это уникальностью большинства приложений, даже если рассматривать только проекты Symfony. Здесь сложно обобщать, потому что каждый отдельный случай может потребовать определенных шагов по развертыванию – например, мигрирование базы данных или выполнения дополнительных команд настройки.

Для упрощения понимания материала мы будем использовать базовое демо-приложение, созданное при помощи Symfony. Вы также можете использовать свое собственное приложение, созданное при помощи Symfony. Но имейте в виду, что вам, возможно, придется выполнить дополнтельные шаги, в зависимости от требований вашего приложения.

Наше приложение представляет собой простой список задач, который позволяет вам добавлять и удалять объекты, а также изменять статус каждого объекта. Объекты-задачи хранятся в базе данных MySQL. Исходный код вы найдете на GitHub.

Для проверки кода приложения мы будем использовать Git. Затем нужно выбрать месторасположение, которое будет служить в качестве root-каталога приложения. Затем мы соответсвующим образом конфигурируем веб-сервер. В этом уроке мы будем использовать /var/www/todo-symfony , поэтому создайте этот каталог сейчас.

Перед тем как клонировать хранилище, давайте изменим владельца папки и группу, чтобы мы могли работать с файлами проекта, используя наш обычный пользовательский аккаунт. Замените developer на ваше обычное (non-root) имя пользователя sudo .

Теперь перейдте в родительский каталог и клонируйте приложение.

Шаг 4 — Настройка прав доступа к папкам

Файлы приложения сейчас расположены по адресу /var/www/todo-symfony , в каталоге, владельцем которого является наш пользователь системы (в этом уроке мы используем developer в качестве примера). Но пользователю веб-сервера (обычно это www-data ) также нужен доступ к этим файлам. В противном случае, веб-север не сможет обслуживать приложение. Более того, имеются два каталога, которые требуют специальных разрешений: app/cache и app/logs . Эти каталоги должны быть перезаписываемыми как пользователем системы, так и пользователем веб-сервера.

Для конфигурации этих специальных прав доступа мы будем использовать ACL (Списки управления доступом). Эти Списки предоставляют больше узкоспециализированных прав доступа к файлам и каталогам. Именно это нам и нужно для настройки необходимых прав, избегая при этом предоставления слишком широкого доступа.

Для начала нам нужно предоставить пользователю www-data доступ к файлам внутри папки приложения. Предоставьте этому пользователю право читать + выполнять (read + execute) (rX) во всем каталоге.

Затем нам нужно настроить специальные права к папкам cache и logs . Предоставьте пользователю www-data права читать + писать + выполнять (read + write + execute) (rwX), чтобы веб-свервер мог писать только в этих каталогах.

И наконец, мы зададим, чтобы все новые файлы, созданные внутри папок app/cache и app/logs , следовали одной и той же, только что заданной нами схеме прав доступа, с правами читать, писать и исполнять для пользователя веб-сервера. Это достигается посредством повтора команды setfacl , которую мы только что выполнили, но на этот раз с добавлением опции -d .

Если вы хотите проверить, какие права действуют на данный момент в данном каталоге, вы можете использовать getfacl .

Из этого результата видно, что хотя владельцем каталога app/cache является пользователь developer , в нем имеется дополнительный набор прав для пользователя www-data . Директивы по умолчанию показывают, какие права будут иметь файлы, созданные внутри этого каталога.

Шаг 5 - Настройка приложения

Теперь у нас есть файлы приложения, но нам нужно установить проектные зависимости и конфигурировать параметры приложения.

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

Чтобы настроить приложение для продакшена, нам нужно определить переменную среды, которая сообщит Symfony, что мы выполняем приложение в продуктовой среде.

Затем нам нужно установить зависимости проекта. Зайдите в папку приложения и выполните composer install :

В конце процесса установки вас попросят предоставить информацию, которая заполнит файл parameters.yml . Этот файл содержит важную информацию для приложения, например – настройки связи с базой данных. Вы можете нажать ENTER , чтобы принять значения по умолчанию для всех параметров, кроме имени базы данных, имени пользователя и пароль. Для них используйте значения, которые вы задали в шаге 2.

После окончания установки мы можем проверить связь с базой данных при помощи консольной команды doctrine:schema:validate .

Строка OK говорит нам о том, что связь с базой данных работает. Неудивительно, что появилась строка FAIL , поскольку мы еще не создали схему базы данных. Давайте сделаем это:

Будут созданы все таблицы приложения в конфигурируемой базе данных, в соответствии с информацией о метаданных, полученной из объектов приложения.

При мигрировании существующего приложения не следует использовать команды doctrine:schema:create и doctrine:schema:update напрямую. Вместо этого осуществите миграцию базы данных. В нашем случае миграция необязательна, потому что приложение устанавливается с пустой базой данных.

Теперь нужно очистить кэш.

И наконец, сгенерировать ресурсы приложения.

Шаг 6 — Настройка веб-сервера

Осталось только настроить веб-север. Мы сделаем это в 2 шага: зададим директиву date.timezone в php.ini , и обновим файл конфигурации вебсайта по умолчанию (в Apache или в Nginx) для обслуживания нашего приложения.

Мы увидим, как выполнить эти шаги в средах LEMP и LAMP.

Конфигурация для Nginx + PHP-FPM

Начнем с редактирования файла php.ini по умолчанию, чтобы задать часовой пояс сервера. Это обязательно для выполнения приложений Symfony, и обычно закомментируется на новых установках сервера.

Откройте файл /etc/php5/fpm/php.ini .

Найдите строку, содержащую date.timezone . Раскомментируйте директиву, убрав знак ; в начале строки, и добавьте соответствующий часовой пояс своего приложения. В этом примере мы используем Europe/Minsk , но вы можете выбрать любой поддерживаемый часовой пояс.

Сохраните файл и выйдите. Перезапустите PHP, чтобы изменения вступили в силу.

Затем нам нужно заменить файл конфигурации вебсайта по умолчанию на файл, специально предназначенный для обслуживания приложения Symfony. Сначала создайте резервную копию текущей конфигураци вебсайта по умолчанию.

Создайте новый файл, чтобы заменить им старый.

Вставьте следующий контент в файл. Не забудьте заменить значения server_name для отображения доменного имени или IP адреса вашего сервера.

Сохраните файл и выйдите. Перезапустите Nginx, чтобы изменения вступили в силу.

Конфигурация для веб-сервера Apache + PHP5

Начнем с редактирования файла по умолчанию php.ini, чтобы задать часовой пояс сервера. Это обязательно для выполнения приложений Symfony, и обычно закомментируется на новых установках сервера.

Откройте файл /etc/php5/apache2/php.ini :

Найдите строку, содержащую date.timezone. Раскомментируйте директиву, убрав знак ; в начале строки, и добавьте соответствующий часовой пояс вашего приложения. В этом примере мы используем пояс Europe/Minsk , но вы можете выбрать любой поддерживаемый часовой пояс.

Сохраните файл и выйдите. Теперь нам нужно заменить файл конфигурации вебсайта по умолчанию на файл, специально предназначенный для обслуживания приложения Symfony. Создайте резервную копию текущей конфигурации вебсайта по умолчанию.

Создайте новый файл, чтобы заменить им старый.

Вставьте в файл следующий контент в /etc/apache2/sites-available/000-default.conf :

Если для доступа на сервер вы используете доменное имя, а не просто IР-адрес, вы можете (по желанию) задать значения ServerName и ServerAlias , как показано ниже. Или же вы можете опустить их.

/etc/apache2/sites-available/000-default.conf

Сохраните файл и выйдите. Нам также нужно настроить mod_rewrite для Apache.

Перезапустиет Apache, чтобы изменения вступили в силу.

Шаг 7 — Доступ к приложению

Вы можете использовать эту форму для создания новых задач и тестирования функциональности приложения.

Заключение

Продуктовое развертывание приложения требует особого внимания к деталям, например – создания выделенного пользователя базы данных с ограниченным доступом и настройки прав доступа к каталогам в папке приложения. Эти шаги необходимы для повышения безопасности сервера и приложения в производственных средах. В этом уроке мы рассмотрели конкретные шаги, которые необходимо предпринять, чтобы вручную осуществить продуктовое развертывание базового приложения Symfony на сервере Ubuntu 14.04.

Читайте также: