From 24e5dec2717f8abb86ac2682e07e6bc7e6b8a8d2 Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Fri, 15 Dec 2017 08:49:01 -0600 Subject: [PATCH] Add extra redirect before DB to stop race condition --- config/database.php | 6 ++-- .../Http/Controllers/InstallerController.php | 21 +++++++++---- modules/Installer/Http/Routes/install.php | 9 ++++-- .../Resources/views/steps/step2-db.blade.php | 4 +-- .../Resources/views/stubs/env.blade.php | 31 ++++++++----------- .../Installer/Services/EnvironmentService.php | 2 +- 6 files changed, 40 insertions(+), 33 deletions(-) diff --git a/config/database.php b/config/database.php index a8e2b538..9ac9146e 100755 --- a/config/database.php +++ b/config/database.php @@ -2,14 +2,14 @@ return [ 'fetch' => PDO::FETCH_ASSOC, - 'default' => env('DB_CONNECTION', 'sqlite'), + 'default' => env('DB_CONNECTION', 'mysql'), 'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), + 'database' => env('DB_DATABASE', ''), + 'username' => env('DB_USERNAME', ''), 'password' => env('DB_PASSWORD', ''), //'unix_socket' => env('DB_SOCKET', ''), 'prefix' => env('DB_PREFIX', ''), diff --git a/modules/Installer/Http/Controllers/InstallerController.php b/modules/Installer/Http/Controllers/InstallerController.php index 9977cfbc..9f6c0d47 100644 --- a/modules/Installer/Http/Controllers/InstallerController.php +++ b/modules/Installer/Http/Controllers/InstallerController.php @@ -98,15 +98,12 @@ class InstallerController extends AppBaseController } /** - * Step 2a. Do the config and setup + * Step 2a. Create the .env */ - public function dbsetup(Request $request) + public function envsetup(Request $request) { - $log = []; + Log::info('ENV setup', $request->toArray()); - Log::info('DB Setup', $request->toArray()); - - $log[] = 'Creating environment file'; $this->envService->createEnvFile( $request->input('db_conn'), $request->input('db_host'), @@ -116,6 +113,18 @@ class InstallerController extends AppBaseController $request->input('db_pass') ); + # Needs to redirect so it can load the new .env + Log::info('Redirecting to database setup'); + return redirect(route('installer.dbsetup')); + } + + /** + * Step 2b. Setup the database + */ + public function dbsetup(Request $request) + { + $log = []; + $log[] = 'Creating database'; $console_out = $this->dbService->setupDB($request->input('db_conn')); diff --git a/modules/Installer/Http/Routes/install.php b/modules/Installer/Http/Routes/install.php index 012d0fc6..943bca7a 100644 --- a/modules/Installer/Http/Routes/install.php +++ b/modules/Installer/Http/Routes/install.php @@ -1,12 +1,15 @@ name('index'); +Route::post('/dbtest', 'InstallerController@dbtest')->name('dbtest'); + Route::get('/step1', 'InstallerController@step1')->name('step1'); Route::post('/step1', 'InstallerController@step1')->name('step1'); + Route::get('/step2', 'InstallerController@step2')->name('step2'); +Route::post('/envsetup', 'InstallerController@envsetup')->name('envsetup'); +Route::get('/dbsetup', 'InstallerController@dbsetup')->name('dbsetup'); + Route::get('/step3', 'InstallerController@step3')->name('step3'); -Route::post('/dbtest', 'InstallerController@dbtest')->name('dbtest'); -Route::post('/dbsetup', 'InstallerController@dbsetup')->name('dbsetup'); - Route::get('/complete', 'InstallerController@complete')->name('complete'); diff --git a/modules/Installer/Resources/views/steps/step2-db.blade.php b/modules/Installer/Resources/views/steps/step2-db.blade.php index 92daa843..4ce0080a 100644 --- a/modules/Installer/Resources/views/steps/step2-db.blade.php +++ b/modules/Installer/Resources/views/steps/step2-db.blade.php @@ -2,7 +2,7 @@ @section('title', 'Database Setup') @section('content')
- {!! Form::open(['route' => 'installer.dbsetup', 'method' => 'POST']) !!} + {!! Form::open(['route' => 'installer.envsetup', 'method' => 'POST']) !!} @@ -18,7 +18,7 @@ diff --git a/modules/Installer/Resources/views/stubs/env.blade.php b/modules/Installer/Resources/views/stubs/env.blade.php index d7f21f2f..a3894c1b 100644 --- a/modules/Installer/Resources/views/stubs/env.blade.php +++ b/modules/Installer/Resources/views/stubs/env.blade.php @@ -4,10 +4,10 @@ # APP_ENV={!! $APP_ENV !!} -APP_URL="http://localhost" +APP_URL=http://localhost APP_SKIN=default -VACENTRAL_API_KEY="" -APP_KEY="base64:{!! $APP_KEY !!}" +VACENTRAL_API_KEY= +APP_KEY=base64:{!! $APP_KEY !!} APP_DEBUG=true APP_LOCALE=en @@ -15,30 +15,25 @@ APP_LOG=daily APP_LOG_LEVEL=debug APP_LOG_MAX_FILES=3 -DB_CONNECTION="{!! $DB_CONN !!}" -DB_HOST="{!! $DB_HOST !!}" -DB_PORT="{!! $DB_PORT !!}" -DB_DATABASE="{!! $DB_NAME !!}" -DB_USERNAME="{!! $DB_USER !!}" -DB_PASSWORD="{!! $DB_PASS !!}" +DB_CONNECTION={!! $DB_CONN !!} +DB_HOST={!! $DB_HOST !!} +DB_PORT={!! $DB_PORT !!} +DB_DATABASE={!! $DB_NAME !!} +DB_USERNAME={!! $DB_USER !!} +DB_PASSWORD={!! $DB_PASS !!} DB_PREFIX="" MAIL_DRIVER=smtp MAIL_FROM_ADDRESS="no-reply@phpvms.net" MAIL_FROM_NAME="phpVMS Admin" -MAIL_HOST="smtp.mailgun.org" +MAIL_HOST=smtp.mailgun.org MAIL_PORT=587 -MAIL_ENCRYPTION="tls" +MAIL_ENCRYPTION=tls MAIL_USERNAME="" MAIL_PASSWORD="" -CACHE_DRIVER="{!! $CACHE_DRIVER !!}" -CACHE_PREFIX="phpvms" - -REDIS_HOST="localhost" -REDIS_PASSWORD="" -REDIS_PORT=6379 -REDIS_DATABASE=1 +CACHE_DRIVER={!! $CACHE_DRIVER !!} +CACHE_PREFIX=phpvms SESSION_DRIVER=array QUEUE_DRIVER={!! $QUEUE_DRIVER !!} diff --git a/modules/Installer/Services/EnvironmentService.php b/modules/Installer/Services/EnvironmentService.php index 6780a2b3..0f0817a6 100644 --- a/modules/Installer/Services/EnvironmentService.php +++ b/modules/Installer/Services/EnvironmentService.php @@ -51,7 +51,7 @@ class EnvironmentService if(\extension_loaded('apc')) { $opts['CACHE_DRIVER'] = 'apc'; } else { - $opts['CACHE_DRIVER'] = 'file'; + $opts['CACHE_DRIVER'] = 'array'; } return $opts;
Select Database TypeDatabase Host
- {!! Form::input('text', 'db_host', null, ['class' => 'form-control']) !!} + {!! Form::input('text', 'db_host', 'localhost', ['class' => 'form-control']) !!}