Browse Source

Complete heroku setup

Bubka 3 years ago
parent
commit
37892e912e
5 changed files with 59 additions and 24 deletions
  1. 2 1
      Procfile
  2. 18 11
      app.json
  3. 2 2
      config/app.php
  4. 27 10
      config/database.php
  5. 10 0
      nginx.conf

+ 2 - 1
Procfile

@@ -1 +1,2 @@
-web: vendor/bin/heroku-php-nginx public/
+web: vendor/bin/heroku-php-nginx -C nginx.conf public/
+release: php artisan migrate --force && php artisan cache:clear && php artisan config:cache

+ 18 - 11
app.json

@@ -15,21 +15,28 @@
     "repository": "https://github.com/Bubka/2FAuth",
     "repository": "https://github.com/Bubka/2FAuth",
     "success_url": "/register",
     "success_url": "/register",
     "scripts": {
     "scripts": {
-      "postdeploy": "php -r \"file_exists('.env') || copy('.env.heroku', '.env')\";php artisan migrate:refresh;php artisan passport:install;php artisan storage:link"
+      "postdeploy": [
+          "php artisan passport:install",
+          "php artisan storage:link"
+      ]
     },
     },
     "env": {
     "env": {
-      "APP_KEY": {
-        "description": "The encryption key for your database and sessions.",
-        "value": "base64:OfTFROuxY2NHE321rcwz0N4UW/SSXWEjzxOGiQD7nCY="
-      }
+        "APP_KEY": {
+            "generator": "secret"
+        },
+        "APP_NAME": "2FAuth",
+        "APP_ENV": "review",
+        "APP_DEBUG": "false",
+        "LOG_CHANNEL": "errorlog",
+        "DB_CONNECTION": "pgsql",
+        "CACHE_DRIVER": "redis",
+        "QUEUE_CONNECTION": "redis",
+        "SESSION_DRIVER": "redis",
+        "TRUSTED_PROXIES": "*"
     },
     },
     "addons": [
     "addons": [
-      {
-        "plan": "heroku-postgresql",
-        "options": {
-          "version": "13"
-        }
-      }
+        "heroku-postgresql",
+        "heroku-redis"
     ],
     ],
     "buildpacks": [
     "buildpacks": [
       {
       {

+ 2 - 2
config/app.php

@@ -52,7 +52,7 @@ return [
     |
     |
     */
     */
 
 
-    'url' => env('APP_URL', 'http://localhost'),
+    'url' => env('APP_URL', env('HEROKU_APP_NAME') ? 'https://' . env('HEROKU_APP_NAME') . '.herokuapp.com' : 'http://localhost'),
 
 
     'asset_url' => env('ASSET_URL', null),
     'asset_url' => env('ASSET_URL', null),
 
 
@@ -119,7 +119,7 @@ return [
     |
     |
     */
     */
 
 
-    'key' => env('APP_KEY'),
+    'key' => strpos(env('APP_KEY'), 'base64:') !== false ? env('APP_KEY') : substr(env('APP_KEY'), 0, 32),
 
 
     'cipher' => 'AES-256-CBC',
     'cipher' => 'AES-256-CBC',
 
 

+ 27 - 10
config/database.php

@@ -2,6 +2,23 @@
 
 
 use Illuminate\Support\Str;
 use Illuminate\Support\Str;
 
 
+$databaseUrl = getenv('DATABASE_URL');
+$host        = '';
+$username    = '';
+$password    = '';
+$database    = '';
+$port        = '';
+
+if (false !== $databaseUrl) {
+    $options  = parse_url($databaseUrl);
+
+    $host     = $options['host'] ?? '127.0.0.1';
+    $username = $options['user'] ?? 'forge';
+    $password = $options['pass'] ?? '';
+    $database = substr($options['path'] ?? '/forge', 1);
+    $port     = $options['port'];
+}
+
 return [
 return [
 
 
     /*
     /*
@@ -53,11 +70,11 @@ return [
         'mysql' => [
         'mysql' => [
             'driver' => 'mysql',
             'driver' => 'mysql',
             'url' => env('DATABASE_URL'),
             'url' => env('DATABASE_URL'),
-            'host' => env('DB_HOST', '127.0.0.1'),
-            'port' => env('DB_PORT', '3306'),
-            'database' => env('DB_DATABASE', 'forge'),
-            'username' => env('DB_USERNAME', 'forge'),
-            'password' => env('DB_PASSWORD', ''),
+            'host' => env('DB_HOST', $host),
+            'port' => env('DB_PORT', $port ?? '3306'),
+            'database' => env('DB_DATABASE', $database),
+            'username' => env('DB_USERNAME', $username),
+            'password' => env('DB_PASSWORD', $password),
             'unix_socket' => env('DB_SOCKET', ''),
             'unix_socket' => env('DB_SOCKET', ''),
             'charset' => 'utf8mb4',
             'charset' => 'utf8mb4',
             'collation' => 'utf8mb4_unicode_ci',
             'collation' => 'utf8mb4_unicode_ci',
@@ -73,11 +90,11 @@ return [
         'pgsql' => [
         'pgsql' => [
             'driver' => 'pgsql',
             'driver' => 'pgsql',
             'url' => env('DATABASE_URL'),
             'url' => env('DATABASE_URL'),
-            'host' => env('DB_HOST', '127.0.0.1'),
-            'port' => env('DB_PORT', '5432'),
-            'database' => env('DB_DATABASE', 'forge'),
-            'username' => env('DB_USERNAME', 'forge'),
-            'password' => env('DB_PASSWORD', ''),
+            'host' => env('DB_HOST', $host),
+            'port' => env('DB_PORT', $port ?? '5432'),
+            'database' => env('DB_DATABASE', $database),
+            'username' => env('DB_USERNAME', $username),
+            'password' => env('DB_PASSWORD', $password),
             'charset' => 'utf8',
             'charset' => 'utf8',
             'prefix' => '',
             'prefix' => '',
             'prefix_indexes' => true,
             'prefix_indexes' => true,

+ 10 - 0
nginx.conf

@@ -0,0 +1,10 @@
+if ($http_x_forwarded_proto != 'https') {
+    rewrite ^ https://$host$request_uri? permanent;
+}
+
+location / {
+    try_files $uri @rewriteapp;
+}
+location @rewriteapp {
+    rewrite ^(.*)$ /index.php$1 last;
+}