{{TOC}} Установка Laravel, как это принято для вёб-движков, начинается со скачивания последней версии фреймворка. Последняя версия из третьей ветки - 3.2.14. Laravel может находиться в любой папке на сервере, если к папке **public** предоставлен доступ извне - либо с помощью символической ссылки, либо настройкой виртуального хоста (см. ниже). Основные папки Laravel могут быть даже разнесены, если в файле **paths.php** указано их новое размещение. Если **paths.php** не находится на один уровень выше **public** (т.е. в %%(t)public/../paths.php%%), то **public/index.php** нужно будет также немного изменить. **Назначение основных папок Laravel** (см. тж. [[#настройк+и]]у): * **application** - папка системного //((docs/v3/bundles пакета))// - хранит общие настройки среды для подключения к БД, драйвер сессии, загрузчик ((docs/v3/localization языковых файлов)), системная кодировка и язык и прочее. * **bundles** - папка сторонних ((docs/v3/bundles пакетов)) (**пакет** - самодостаточная сборка скриптов, например, для рисования графиков или отправки e-mail). Каждый пакет содержится в своей подпапке, которая в свою очередь содержит почти те же папки и файлы, что и //системный пакет// (**application**). * **laravel** - PHP-скрипты самого фреймворка. Каждая папка соотносится с соответствующим ((phpdoc:language.namespaces пространством имён)) Laravel. * **public** - единственная папка, которая должна быть видна из интернета - содержит элементы оформления страниц - картинки, файлы CSS и JavaScript и т.д. * **storage** - папка с создаваемыми файлами - кеш, данные сессии, логи и т.д. * **vendor** - содержит сторонние библиотеки наподобии **bundles**, но в отличии от последней эти библиотеки никак не связаны в Laravel. Например, класс для генерации RSS-лент может размещаться здесь, тогда как пакет с интерфейсом к нему - в **bundles**. == Короткие URL == Так как всё общение с Laravel со стороны сервера происходит через папку **public**, то, если мы устанавливаем его в %%(t)http://localhost/laravel/%%, пути в браузере будут выглядеть как %%(t)http://localhost/laravel/public/index.php/user/123/%%. Однако это поведение по умолчанию (рассчитанное на работу на любом сервере), и его можно изменить. От нашего решения зависит, где расположить файлы фреймворка - пока распакуйте скачанный архив во временную папку. Если вы используете //((http://httpd.apache.org Apache// с модулем **((http://httpd.apache.org/docs/2.0/en/mod/mod_rewrite.html mod_rewrite))**, то мы можем убрать %%(t)index.php%% из пути. Для этого откройте файл **application/config/application.php** и установите параметр **index** в пустую строку: %% 'index' => '', %% Если вы оставите структуру папок Laravel прежней и **public** будет лежать там же, где %%(t)paths.php%%, **laravel** и т.д., то мы можем убрать %%(t)public/%% из пути. Есть несколько способов: * с помощью **mod_rewrite** - самый простой. Создайте в папке, куда вы извлекли архив (она содержит %%(t)paths.php%%), файл %%(t).htaccess%% и впишите туда эти строки: %%(hta) RewriteEngine on RewriteCond %{REQUEST_URI} !^public RewriteRule ^(.*)$ public/$1 [L] %% * директивами **Alias** или **DocumentRoot** - лучший вариант, если вы можете настраивать виртуальный хост в главном конфигурационном файле //Apache// (%%(t)httpd.conf%%). Если вы располагаете Laravel в корне хоста (например, %%(t)http://localhost/%%), то используйте **((http://httpd.apache.org/docs/2.0/mod/core.html#documentroot DocumentRoot))**, иначе - **((http://httpd.apache.org/docs/2.0/en/mod/mod_alias.html#alias Alias))** (требует **mod_alias**). Например: %%(hta) # Запрос http://localhost/mypage/123 будет перенаправлен в # C:/apache/htdocs/localhost/public/mypage/123, который в свою очередь преобразуется в # C:/apache/htdocs/localhost/public/index.php/mypage/123, если доступен mod_rewrite. DocumentRoot "C:/apache/htdocs/localhost/public" # Вместо DocumentRoot можно использовать Alias с тем же принципом работы. # mod_rewrite будет работать так же, как и в случае с DocumentRoot выше. Alias /laravel "C:/apache/htdocs/localhost/laravel/public" %% * **символической ссылкой** - доступно только на *nix-системах и только если у вас включена опция **FollowSymLinks** в настройках виртуального хоста (или вы можете её включить с помощью директивы ((http://httpd.apache.org/docs/2.0/en/mod/core.html#options %%Options%%))). Обычно это самый оптимальный вариант, так как не затрагивает работу сервера, но вам нужен доступ к командной строке сервера. Для включения вам нужно сделать две вещи: 1. Создать ссылку командой **ls** на папку **public** в папке виртуального хоста (его корня или подпапки, в зависимости от того, где будет виден фреймворк из сети). Например: %%(sh) ln -s /usr/local/www/laravel/public /home/mysite.ru/pub/mylaravel%% - сделает его доступным по адресу %%(t)http://mysite.ru/mylaravel%%. 2. Включить **FollowSymLinks** в %%(t)httpd.conf%% или %%(t).htaccess%%: %%(hta) Options +FollowSymLinks %% Есть также ещё один вариант для быстрой настройки хоста под Laravel - не требует **mod_rewrite** (только **mod_alias**) и может использоваться при разработке, когда короткие URL не нужны: %%(hta) # Перенаправит запросы в корень фреймворка в подпапку public: RedirectMatch ^/?mylaravel/?$ http://localhost/mylaravel/public %% == Настройки и профили == Глобальные настройки "приложения" ("application") на Laravel хранятся в папке **application/config/**. Она содержит PHP-файлы, возвращающие //массивы параметров//, которые могут быть вложенными, например: %% array( 'subkey_1' => 'value 1', 'subkey_2' => 'значение 2', ), 'another_key' => 'значение' ); %% Запятая после последнего элемента может быть опущена (как после %%(t)another_key%%). Настройки можно прочитать с помощью %%Config::get%%, передав строку вида: %%(t)[пакет::]файл.ключ[.подключ[...]]%% - например: * если код выше располагается в **application/config/myconfig.php**, то прочитать %%(t)значение 2%% можно строкой %%(t)myconfig.key.subkey_2%%. * для файла **bundles/mybundle/config/myconfig.php** то же значение доступно по строке %%(t)mybundle::myconfig.key.subkey_2%%. В Laravel есть возможность использовать **профили настроек** - с их помощью можно один и тот же проект использовать на локальном хосте и загружать одновременно на производственный сервер. Если профиль определён настройки загружаются в два этапа: 1. %%(t)application/config/*.php%% 2. %%(t)application/config/PROFILE/*.php%% - совпадающие настройки перекрывают предыдущие Профиль задаётся переменной среды **LARAVEL_ENV**, которую можно определить в //Apache// директивой **((http://httpd.apache.org/docs/2.0/en/mod/mod_env.html#setenv SetEnv))** и прочитать функцией %%Request::env%%. При разработке этой переменной принято присваивать значение %%(t)local%%, а на производственном сервере - %%(t)production%%. Вот как это делается в //Apache// (задаётся либо в записи виртуального хоста, либо в файле %%(t).htaccess%% в корне Laravel): %%(hta) SetEnv LARAVEL_ENV local # Либо: SetEnv LARAVEL_ENV production %% Для вёб-сервера **nginx** есть ((http://nginx.org/en/docs/ngx_core_module.html#env аналогичная директива)): %%(hta)env LARAVEL_ENV=local%% Если %%(t)LARAVEL_ENV%% не определена профили не используются и загружаются только общие настройки (без подпапок). == Настройка == Итак, нам нужно задать основные настройки для нашего приложения. Если вы задали //профиль// с помощью переменной среды %%(t)LARAVEL_ENV%% как было описано ((#настройки выше)), то вместо изменения самого файла настроек скопируйте его в подпапку с именем профиля - например, для профиля "local" создайте папку **application/config/local** и скопируйте туда **application/config/application.php** и **session.php**. Если вы не задавали профиль или хотите, чтобы настройки были применены для всех профилей, то изменяйте основной файл (такой как **application/config/application.php**). В начале, ((#короткие при настройке URL)), мы уже поменяли одну из них - %%(t)index%% в **application.php** - теперь продолжим в том же файле: * изменим **секретный ключ** (%%(t)key%%) - по важности для безопасности сервера этот параметр почти не уступает паролю от самого сервера, поэтому позаботьтесь о том, чтобы он не был известен третьим лицам. Это должна быть строка из 32 случайных символов (любых, а не только буквенноцифровых). * установим **язык по умолчанию** (%%(t)language%%) - изначально это английский (%%(t)en%%), мы можем сделать его русским (%%(t)ru%%) - но для этого языковые файлы Laravel и установленных ((docs/v3/bundles пакетов)) должны быть переведены. * зададим **часовой пояс** (%%(t)timezone%%) - по умолчанию он установлен в ((ВП:UTC)), но если мы хотим отображать московское время, то установим этот параметр в %%(t)Europe/Moscow%%. Также установим //драйвер сессии// в файле **session.php** (нам это пригодится в дальнейшем) - установите параметр **driver** в %%(t)cookie%% или %%(t)file%%. == Что дальше? == Laravel установлен и готов к работе - вы можете проверить это, перейдя к папку фреймворка (%%(t)http://localhost/laravel/%%) - должа появиться страница-приветствие по умолчанию. Если вместо неё у вас появляется ошибка //404 (страница не найдена)// - ((#короткие короткие URL)) не были верно настроены. Если у вас возникли вопросы можете задать их на нашем ((форум+:))е.