Настройка
- Вступление
- Действия после установки
- Получение и установка значений настроек
- Настройка среды выполнения
- Кэширование настроек
- Режим обслуживания
- Красивые URL
Вступление
Все файлы настроек Laravel хранятся в папке config
. Опции хорошо описаны в комментариях, так что рекомендуем внимательно изучить эти файлы.
Действия после установки
Имя вашего приложения
После установки Laravel вы можете придумать имя своему приложению или оставить стандартное - App
.
Это имя будет фигурировать в качестве корневого элемента в пространстве имён классов, которые будут использоваться в вашем приложении.
По умолчанию ваше приложение находится в папке app
, имеет имя App
и автозагружается при помощи Composer согласно стандарту PSR-4. Вы можете изменить его при помощи Artisan-команды app:name
.
Например, чтобы изменить имя приложения на «Horsefly», выполните эту команду в корневом каталоге вашего приложения:
php artisan app:name Horsefly
Дальнейшее конфигурирование приложения
Laravel «из коробки» практически не требует дополнительного конфигурирования - вы можете сразу начать писать код. Максимум, вам может быть нужно изменить настройки доступа к базе данных в config/database.php
и, возможно, изменить параметры timezone
и locale
в config/app.php
.
Далее, вам нужно определиться с названием среды выполнения, в которой будет работать ваше приложение на данной машине. Например, когда вы разрабатываете приложение, вам нужно видеть подробный текст возникающих ошибок. По умолчанию фреймворк считает, что выполняется в среде production
и в ней текст ошибки не выводится. Поэтому вы определяете, что на данной машине у вас среда выполнения local
и в config/local/app.php
ставите параметр debug
в true
.
Примечание Никогда не ставьте
app.debug
вtrue
в продакшне, т.е. на хостинге. Просто никогда.
Права на запись
Папки внутри storage
должны быть доступны веб-серверу для записи. Если вы устанавливаете фреймворк на Linux или MacOs - открыть папки на запись можно командой chmod -R 777 storage
Получение и установка значений настроек
Для доступа к настройкам существует фасад Config
:
$value = Config::get('app.timezone');
Config::set('app.timezone', 'America/Chicago');
Так же можно использовать функцию config
:
$value = config('app.timezone');
Настройка среды выполнения
Часто необходимо иметь разные значения для разных настроек в зависимости от среды, в которой выполняется приложение. Например, вы можете захотеть использовать разные драйвера кэша на локальном и производственном (продакшн) серверах. Это легко достигается использованием настроек, зависящих от среды.
Для упрощения это задачи Laravel использует библиотеку DotEnv от Vance Lucas.
В корне только что созданного приложения содержится файл .env.example
. Если вы устанавливали Laravel через Composer, то этот файл был автоматически переименован в .env
, иначе вы должны сделать это самостоятельно.
Все переменные, описанные в этом файле, будут автоматически доступны вашему приложения в суперглобальной переменной $_ENV
.
Вы можете использовать функцию env
для получения данных из этого массива внутри ваших файлов настроек.
Если вы посмотрите в конфигурационные файлы, то увидите, что некоторые опции уже устанавливаются с использованием этой функции!
Не стесняйтесь изменять эти переменные под свои нужны, как на локальной машине, так и в продакшне.
Однако помните, что файл .env
не должен попадать в систему контроля версий (добавьте его в .gitignore
), так как каждый разработчик и каждый сервер могут требовать своих настроек среды выполнения, а так же это позволит спрятать ваши конфиденциальные данные от системы контроля версий.
Если вы работаете в команде, вы можете оставить файл .env.example
с примерными значениями в составе приложения, что бы остальные члены команды понимали, какие переменные среды нужны для работы приложения.
Получение текущей среды
Вы можете получить текущую среду с помощью метода environment
объекта Application
:
$environment = $app->environment();
Вы также можете передать аргументы в этот метод чтобы проверить, совпадает ли среда с переданным значением:
if ($app->environment('local'))
{
// Среда - local
}
if ($app->environment('local', 'staging'))
{
// Среда - local ИЛИ staging
}
$app
можно получить из сервис-контейнера по ключу 'Illuminate\Contracts\Foundation\Application'
. Если вы используете вышеприведенный код в сервис-провайдере, то вместо $app
используйте $this->app
.
Так же можно использовать функцию app
и фасад App
:
$environment = app()->environment();
$environment = App::environment();
Кэширование настроек
Что бы немного ускорить приложение, вы можете закэшировать настройки (объединить все файлы настроек в один), используя Artisan-команду config:cache
.
Как правило, нужно добавить команду config:cache
в ваш механизм развёртывания приложения (application deployment).
Режим обслуживания
Когда ваше приложение находится в режиме обслуживания (maintenance mode), специальный шаблон будет отображаться для всех запросов к вашему приложению. Это позволяет «отключать» ваше приложение во время обновления или обслуживания. Проверка на режим обслуживания уже включена в стандартный набор middleware вашего приложения. Если приложение находится в режиме обслуживания, то будет выброшено исключение HttpException
с кодом 503.
Для включения этого режима просто выполните команду Artisan-а down
:
php artisan down
Чтобы выйти из режима обслуживания выполните команду up
:
php artisan up
Шаблон для режима обслуживания
Стандартный шаблон для режима обслуживания находится в файле resources/views/errors/503.blade.php
.
Режим обслуживания и очереди
Пока ваше приложение находится в режиме обслуживания, очереди не будут обрабатываться. Работа очередей будет возобновлена, когда приложение выйдет из режима обслуживания.
Красивые URL
Apache
Laravel поставляется вместе с файлом public/.htaccess
, который настроен для обработки URL без указания index.php
. Если вы используете Apache в качестве веб-сервера обязательно включите модуль mod_rewrite
.
Если стандартный .htaccess
не работает для вашего Apache, попробуйте следующий:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Nginx
Если вы используете в качестве веб-сервера Nginx, то используйте для ЧПУ следующую конструкцию:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
Если вы используете Homestead, то вам ничего делать не нужно, там всё это уже настроено.