Php artisan down allow

Laravel — artisan down / Maintenance Mode except own IP

how can say «the application is down for everyone except my own ip» ? So everyone is seeing the Maintenance mode, but i have still access to the site.

7 Answers 7

Now you can use php artisan down —allow=127.0.0.1 , or of course change the IP to something else. Multiple IPs are also supported, networks are also supported.

Not sure when this was implemented but is working fine for me in 5.6

laravel.com/docs/master/configuration#maintenance-mode Re-posting the link to the docs. It used to be posted here as a comment by someone else, but it seems like it got deleted for some reason.

In Laravel 5 you have to create your own middleware. Create a file in app/Http/Middleware/CheckForMaintenanceMode.php You can choose of course any filename.

app = $app; > public function handle(Request $request, Closure $next) < if ($this->app->isDownForMaintenance() && !in_array($request->getClientIp(), ['8.8.8.8', '8.8.4.4'])) < $maintenanceMode = new MaintenanceMode($this->app); return $maintenanceMode->handle($request, $next); > return $next($request); > > 

In your app/Http/Kernel.php change

'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode' 
'App\Http\Middleware\CheckForMaintenanceMode' 

Even while in maintenance mode, you may use the secret option to specify a maintenance mode bypass token:

php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515" 

After placing the application in maintenance mode, you may navigate to the application URL matching this token and Laravel will issue a maintenance mode bypass cookie to your browser:

Читайте также:  Linux apache mariadb php

https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515

When accessing this hidden route, you will then be redirected to the / route of the application. Once the cookie has been issued to your browser, you will be able to browse the application normally as if it was not in maintenance mode.

There some new nice features with maintenance mode in Laravel 8. Read it here.

app = $app; $this->request = $request; > /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) < if ($this->app->isDownForMaintenance() && !in_array($this->request->getClientIp(), ['::1'])) < throw new HttpException(503); >return $next($request); > > 

The ‘::1’ is your own IP assuming your in localhost, if not the specify your IP. You can excluded multiple IP in the array. check Excluding your IP Address in Maintenance Mode (php artisan down) in Laravel 5

$ php artisan down --allow=127.0.0.1 

In file index.php change address maintenace.php for ex :

if (file_exists(__DIR__.'/../your-file-name/storage/framework/maintenance.php')) < require __DIR__.'/../your-file-name/storage/framework/maintenance.php'; 

Another solution to your problem would be to develop locally, so only you can see the development version of your application. The application which is visible by everyone, the one on your production server, could be set into maintenance mode until you're ready to show it to the world. You can then deploy your application to your server and turn off the maintenance mode.

What I'm saying, is that automatising this process may not be needed, as you'll probably be present on your server when you're deploying your application, so you can manually turn the mode on and off.

Developing local can be quite easy using WAMP/MAMP, Laravel's Homestead, Laravel Valet or for experts Laradock. Of course, you can use any.

Linked

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.7.25.43544

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

Настройка

Все файлы настроек Laravel хранятся в папке config . Каждая настройка задокументирована, поэтому не стесняйтесь изучить эти файлы и познакомиться с доступными возможностями конфигурирования.

Настройка среды

Часто необходимо иметь разные значения для различных настроек в зависимости от среды, в которой выполняется приложение. Например, вы можете захотеть использовать разные драйвера кэша на локальном и продакшн-сервере.

Для этого в Laravel используется PHP-библиотека DotEnv от Ванса Лукаса. В свежей инсталляции Laravel в корне вашего приложения будет файл .env.example . Если вы установили Laravel с помощью Composer, этот файл будет автоматически переименован в .env . Если же этого не произошло - вам необходимо сделать это вручную.

Ваш файл .env не должен быть включён в систему контроля версий вашего приложения, так как каждому использующему ваше приложение разработчику/серверу может потребоваться разная настройка среды. Кроме того, это будет угрозой безопасности в случае, если злоумышленник получит доступ к вашему репозиторию управления версиями, так как будут обнаружены все конфиденциальные учетные данные.

Если вы работаете в команде, то, возможно, вам захочется и дальше поставлять файл .env.example с вашим приложением. Поместив примеры значений в этот файл, вы дадите понять другим разработчикам, какие переменные среды необходимы для запуска вашего приложения. Также вы можете создать файл .env.testing . Этот файл переопределит файл .env при запуске тестов PHPUnit и при выполнении Artisan-команд с ключом --env=testing .

Любую переменную в вашем .env файле можно переопределить при помощи переменных внешней среды, таких как переменные на уровне сервера или на системном уровне.

Типизация

По умолчанию принято, что переменные из .env имеют тип String, но некоторые строки преобразуются в соответствующие типы, которые имеют то же написание:

.env Value env() Value
true (bool) true
(true) (bool) true
false (bool) false
(false) (bool) false
empty (string) ''
(empty) (string) ''
null (null) null
(null) (null) null

Если строковое значение в .env содержит пробелы, наобходимо заключить строку в скобки:

Чтение настроек среды

Все перечисленные в этом файле переменные будут загружены в супер-глобальную переменную PHP $_ENV , когда ваше приложение получит запрос. Но вы можете использовать хелпер env для получения значений этих переменных в ваших конфигурационных файлах. На самом деле, если вы заглянете в файлы настроек Laravel, то заметите несколько опций, уже использующих эту функцию:

'debug' => env('APP_DEBUG', false), 

Второе значение, передаваемое функции env - значение по-умолчанию. Оно будет использовано, если нет такой переменной среды для переданного ключа.

Определение текущей среды

Текущая среда приложения определяется по переменной APP_ENV файла .env . Вы можете получить это значение методом environment фасада App :

$environment = App::environment(); 

Также вы можете передавать аргументы в метод environment , чтобы проверить — совпадает ли имя среды с заданным значением. Метод вернёт true , если среда совпадёт с любым из них:

if (App::environment('local')) < // The environment is local > if (App::environment(['local', 'staging'])) < // The environment is either local OR staging. > 

Определение текущей среды приложения можно переопределить переменной среды APP_ENV на уровне сервера. Это может быть полезно, когда вам нужно использовать одно и то же приложение для разных настроек среды, поэтому вы можете настроить переданный хост для соответствия данной среде в настройках вашего сервера.

Отображение переменых окружения на страницах ошибок

Если APP_DEBUG выставлено в true , на странице ошибки будут показаны все переменные окружения. Иногда это нежелательно из-за соображений безопасности. Чтобы запретить показ чувствительных данных, отредактируйте debug_blacklist в config/app.php

Кроме запрета на показ определённых переменных из .env можно запретить показ определённых ключей из глобальных переменных $_ENV и $_SERVER :

return [ // . 'debug_blacklist' => [ '_ENV' => [ 'APP_KEY', 'DB_PASSWORD', ], '_SERVER' => [ 'APP_KEY', 'DB_PASSWORD', ], '_POST' => [ 'password', ], ], ]; 

Чтение значений настроек

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

Для задания значений настроек во время выполнения передайте массив в хелпер config :

config(['app.timezone' => 'America/Chicago']); 

Кэширование настроек

Для повышения скорости работы вашего приложения вы можете кэшировать все файлы настроек в единый файл с помощью Artisan-команды config:cache . Она объединит все параметры настроек вашего приложения в единый файл, который будет быстро загружен фреймворком.

У вас должно войти в привычку запускать команду php artisan config:cache как типичную часть разработки. Не стоит запускать эту команду в процессе локальной разработки, так как при этом часто требуется изменять параметры настроек в процессе разработки вашего приложения.

Если вы выполняете команду config:cache во время процесса развёртывания, вы должны быть уверены, что вызываете функцию env только из ваших файлов настроек. После того, как конфигурация закеширована, файл .env не будет загружен, а все вызовы функции env вернут null .

Режим обслуживания

Когда ваше приложение находится в режиме обслуживания, для всех запросов в вашем приложении будет отображаться специальный шаблон. Это позволяет легко «отключать» приложение во время его обновления или при обслуживании. Проверка режима обслуживания включена в стандартный набор посредников для вашего приложения. Когда приложение находится в режиме обслуживания, будет брошено исключение MaintenanceModeException с кодом состояния 503.

Для включения этого режима просто выполните Artisan-команду down :

Также вы можете передать в команду down опции message и retry . Значение message можно использовать для вывода или записи в журнал необходимого сообщения, а значение retry будет задано в качестве значения HTTP-заголовка Retry-After :

php artisan down --message="Upgrading Database" --retry=60 

Можно разрешить работу для определённых ip или подсетей. На них режим обслуживания не распространяется.

php artisan down --allow=127.0.0.1 --allow=192.168.0.0/16 

Чтобы выйти из режима обслуживания выполните команду up :

Вы можете кастомизировать шаблон режима по-умолчанию, определив собственный шаблон в resources/views/errors/503.blade.php .

Режим обслуживания и очереди

Пока ваше приложение находится в режиме обслуживания, не будут обрабатываться никакие задачи очередей. Задачи продолжат обрабатываться как обычно, как только приложение выйдет из режима обслуживания.

Альтернативы режиму обслуживания

Поскольку для режима обслуживания необходима остановка вашего приложения на несколько секунд, рассмотрите такие альтернативы, как Envoyer, чтобы обеспечить обновление на лету с Laravel.

Русскоязычное комьюнити

Обучающие ресурсы

Блоги разработчиков

Источник

Оцените статью