Корпоративный сайт на Symfony2

Необходимо создать простой одностраничный корпоративный сайт, например 4devs.org. Для этого будет использоваться проект "fdevs/company-site" основаный на Symfony2. В проекте уже установлены базовые библиотеки, необходимые для корпоративного сайта.

На рабочей машине у нас уже настроено:

Также за дизайн возмем twitter bootstrap.

Установка и настройка

Установим проект "fdevs/company-site":

$ composer create-project fdevs/company-site company-site.local/ “1.0.0”

Ждем завершения установки, и вводим наши уникальные параметры.

Добавляем сайт в nginx: vim /usr/local/etc/nginx/sites/company-site.local.conf

server {
    listen 80;
    server_name *.company-site.local company-site.local;
    root /var/www/company-site.local/web;
…
}

Также добавим сайт в hosts(если необходимо): $ vim /etc/hosts

127.0.0.1 company-site.local admin.company-site.local

Переходим в готовую папку с проектом cd company-site.local/ и настраиваем доступ к временным папкам:

$ rm -rf var/cache/*
$ rm -rf var/logs/*
$ HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`
$ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs var/spool
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs var/spool

Если вам данный вариант не подходит, обратитесь к официальной документации, нам необходимо настроить доступ к трем папкам "var/cache var/logs var/spool".

Также настроим доступ для добавление картинок папку web/uploads $ chmod -R 777 web/uploads.

Загружаем демо данные, если необходимо:

$ bin/console doctrine:mongodb:fixtures:load

Наш Корпоративный сайт готов по адресу http://company-site.local, панель управления доступна по адресу http://admin.company-site.local - логин: “admin” и пароль: тот который вы указали при установке в поле “secret (ThisTokenIsNotSoSecretChangeIt):” по умолчанию будет “ThisTokenIsNotSoSecretChangeIt”

Для рассылки сообщений необходимо в планировщике задач(cron) добавить:

*/5 * * * * cd /var/www/company-site.local/; /usr/bin/php bin/console swiftmailer:spool:send --env=prod

Заключение

Дальше необходимо редактировать сompany-site.local/src/FDevs/CoreBundle/Resources/views/Default/index.html.twig для своего дизайна или добавления своих уникальных блоков. Если необходимо использовать дополнительные возможности, можно ознакомиться с документацией к библиотекам.

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

Docker установка и настройка

При разработке используется множество технологий. К примеру данный блог использует php(Symfony 2), mongodb, elastic, nginx это основные но также используется nodejs к примеру для минификации css, js. При разработке приходится настраивать все технологии как показано в статье. Но что делать если проектов несколько или они используют разные технологии, например другой проект использует MySQL, или еще могут использовать разные версии php или других библиотек. Для разработки и поддержки проектов на разных технологиях можно использовать Виртуальную машину и поставить на нее к примеру centos, но это не совсем удобно, надо все равно настраивать подобное окружение как на сервере и на других машинах разработчиков. Мы будет использовать контейнеры, такие как Docker. Настроем блог разработчиков чтобы использовать Docker для разработки.

Как использовать произвольное хранилище пользователей в FOSUserBundle

Практически все используют FOSUserBundle в своих Symfony проектах т.к. он ускоряет разработку и обладает хорошим набором функциональности для управления пользователями. Бандл предоставляет несколько готовых реализаций хранилищ данных: Propel и несколько для Doctrine (ORM и ODM). Это здорово, но иногда возникает необходимость работы с другими хранилищами данных. FOSUserBundle достаточно гибок и позволяет реализовать, и использовать произвольное хранилище. Для того, чтобы использовать все возможности FOSUserBundle Вам достаточно будет написать свой менеджер пользователей под конкретного провайдера.

Интеграция Paysera в Symfony

Сегодня сложно представить себе серьезный проект, где не понадобилась бы интеграция с платежными системами. Не смотря на то что существует множество популярных систем и аггрегаторов, таких как PayPal, RBKMoney, Paymentwall, Robokassa и т.д., я хочу рассказать о Paysera. Это еще одна, довольно новая платежная система. Они позиционируют себя как выгодных с точки зрения комиссий за их услуги. Paysera позволяет вашим пользователям расплачиваться карточками, SMS и т.д. Интеграция довольно простая, однако имеет некоторые неочевидные моменты, которые я и хочу осветить.

Создание сайта “Обратный отсчет” на Symfony2

Мы иногда видим сайты с обратным отсчетом, проект стартует через … Его сделать достаточно просто, и не займет много времени. Мы воспользуемся проектом fdevs/coming-soon, который основан на Symfony2. Также будем сохранять введеный пользователями адреса электронной почтой в базу данных MongoDB. У нас есть настроенное рабочее окружение Osx, о настройке можно прочитать в статье Yosemite настройка рабочего окружения. Но главное версия php не меньше 5.4. В проекте можно также использовать реляционную базу данных типа MySQL. По умолчанию в проекте вообще не используется база данных, а введеный email отправляется на почту.

Yosemite настройка рабочего окружения.

После обновления OSx Yosemite, необходимо настроить рабочую систему. Мы установим и настроим пакеты php-fpm, nginx, mongo, nodejs. Для начала установим Xcode из App Store обновим консольные команды $ xcode-select --install и уберем apache из автозагрузки $ sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist . Так как у Apple не появилось своего менеджера пакетов будем использовать проверенный brew.