Skip to content

Configuring the Project Environment

Adarsh Kumar Maurya edited this page Nov 26, 2018 · 4 revisions

Configuring the Project Environment

Let's start by setting up the enviroment.

Adarsh:product-service adarshmaurya$ `ls -la`
total 392
drwxr-xr-x 25 adarshmaurya staff  800 Nov 27 01:29 .
drwxr-xr-x  9 adarshmaurya staff  288 Nov 27 01:50 ..
-rw-r--r--  1 adarshmaurya staff  213 Nov 22 19:58 .editorconfig
**-rw-r--r--  1 adarshmaurya staff  706 Nov 27 01:29 .env**
-rw-r--r--  1 adarshmaurya staff  655 Nov 22 19:58 .env.example
-rw-r--r--  1 adarshmaurya staff  111 Nov 22 19:58 .gitattributes
-rw-r--r--  1 adarshmaurya staff  188 Nov 22 19:58 .gitignore
drwxr-xr-x  7 adarshmaurya staff  224 Nov 22 19:58 app
-rwxr-xr-x  1 adarshmaurya staff 1686 Nov 22 19:58 artisan
drwxr-xr-x  4 adarshmaurya staff  128 Nov 22 19:58 bootstrap
-rw-r--r--  1 adarshmaurya staff 1550 Nov 22 19:58 composer.json
-rw-r--r--  1 adarshmaurya staff 149390 Nov 27 01:29 composer.lock
drwxr-xr-x 15 adarshmaurya staff  480 Nov 22 19:58 config
drwxr-xr-x  6 adarshmaurya staff  192 Nov 22 19:58 database
-rw-r--r--  1 adarshmaurya staff 1023 Nov 22 19:58 package.json
-rw-r--r--  1 adarshmaurya staff 1138 Nov 22 19:58 phpunit.xml
drwxr-xr-x 10 adarshmaurya staff  320 Nov 22 19:58 public
-rw-r--r--  1 adarshmaurya staff 4094 Nov 22 19:58 readme.md
drwxr-xr-x  6 adarshmaurya staff  192 Nov 22 19:58 resources
drwxr-xr-x  6 adarshmaurya staff  192 Nov 22 19:58 routes
-rw-r--r--  1 adarshmaurya staff  563 Nov 22 19:58 server.php
drwxr-xr-x  5 adarshmaurya staff  160 Nov 22 19:58 storage
drwxr-xr-x  6 adarshmaurya staff  192 Nov 22 19:58 tests
drwxr-xr-x 40 adarshmaurya staff 1280 Nov 27 01:29 vendor
-rw-r--r--  1 adarshmaurya staff  537 Nov 22 19:58 webpack.mix.js

.env* helps in injecting environment specific dependencies in the project.
So, we don't check it our code base.*

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:bEeOyzaH33yTPqY3Gd6Gt3eTggF7I4UC2wvVztGPrvI=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

config
It consists of lots of php files that just have arrays of configuration data.
The way they are configured by default is most of the settings are pulling from the env file.
They also provide a default value. for example lets check

Adarsh:product-service adarshmaurya$ cd config/
Adarsh:config adarshmaurya$ ls -la

total 144\
drwxr-xr-x 15 adarshmaurya staff 480 Nov 22 19:58 .
drwxr-xr-x 25 adarshmaurya staff 800 Nov 27 01:29 ...
-rw-r--r-- 1 adarshmaurya staff 9078 Nov 22 19:58 app.php
-rw-r--r-- 1 adarshmaurya staff 3251 Nov 22 19:58 auth.php
-rw-r--r-- 1 adarshmaurya staff 1604 Nov 22 19:58 broadcasting.php
-rw-r--r-- 1 adarshmaurya staff 2688 Nov 22 19:58 cache.php
-rw-r--r-- 1 adarshmaurya staff 4394 Nov 22 19:58 database.php
-rw-r--r-- 1 adarshmaurya staff 2133 Nov 22 19:58 filesystems.php
-rw-r--r-- 1 adarshmaurya staff 1571 Nov 22 19:58 hashing.php
-rw-r--r-- 1 adarshmaurya staff 2560 Nov 22 19:58 logging.php
-rw-r--r-- 1 adarshmaurya staff 4689 Nov 22 19:58 mail.php
-rw-r--r-- 1 adarshmaurya staff 2636 Nov 22 19:58 queue.php
-rw-r--r-- 1 adarshmaurya staff 1218 Nov 22 19:58 services.php
-rw-r--r-- 1 adarshmaurya staff 6954 Nov 22 19:58 session.php
-rw-r--r-- 1 adarshmaurya staff 1053 Nov 22 19:58 view.php
php
<?php

return [

/*

|--------------------------------------------------------------------------

| Default Database Connection Name

|--------------------------------------------------------------------------

|

| Here you may specify which of the database connections below you wish

| to use as your default connection for all database work. Of course

| you may use many connections at once using the Database library.

|

*/

'default' => env('DB_CONNECTION', 'mysql'),

/*

|--------------------------------------------------------------------------

| Database Connections

|--------------------------------------------------------------------------

|

| Here are each of the database connections setup for your application.

| Of course, examples of configuring each database platform that is

| supported by Laravel is shown below to make development simple.

|

|

| All database work in Laravel is done through the PHP PDO facilities

| so make sure you have the driver for your particular database of

| choice installed on your machine before you begin development.

|

*/

'connections' => [

 'sqlite' => [

 'driver' => 'sqlite',

 'database' => env('DB_DATABASE', database_path('database.sqlite')),

 'prefix' => '',

 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),

 ],

 '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'),

 'password' => env('DB_PASSWORD', ''),

 'unix_socket' => env('DB_SOCKET', ''),

 'charset' => 'utf8mb4',

 'collation' => 'utf8mb4_unicode_ci',

 'prefix' => '',

 'prefix_indexes' => true,

 'strict' => true,

 'engine' => null,

 ],

 'pgsql' => [

 'driver' => 'pgsql',

 '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', ''),

 'charset' => 'utf8',

 'prefix' => '',

 'prefix_indexes' => true,

 'schema' => 'public',

 'sslmode' => 'prefer',

 ],

 'sqlsrv' => [

 'driver' => 'sqlsrv',

 'host' => env('DB_HOST', 'localhost'),

 'port' => env('DB_PORT', '1433'),

 'database' => env('DB_DATABASE', 'forge'),

 'username' => env('DB_USERNAME', 'forge'),

 'password' => env('DB_PASSWORD', ''),

 'charset' => 'utf8',

 'prefix' => '',

 'prefix_indexes' => true,

 ],

],

/*

|--------------------------------------------------------------------------

| Migration Repository Table

|--------------------------------------------------------------------------

|

| This table keeps track of all the migrations that have already run for

| your application. Using this information, we can determine which of

| the migrations on disk haven't actually been run in the database.

|

*/

'migrations' => 'migrations',

/*

|--------------------------------------------------------------------------

| Redis Databases

|--------------------------------------------------------------------------

|

| Redis is an open source, fast, and advanced key-value store that also

| provides a richer body of commands than a typical key-value system

| such as APC or Memcached. Laravel makes it easy to dig right in.

|

*/

'redis' => [

 'client' => 'predis',

 'default' => [

 'host' => env('REDIS_HOST', '127.0.0.1'),

 'password' => env('REDIS_PASSWORD', null),

 'port' => env('REDIS_PORT', 6379),

 'database' => env('REDIS_DB', 0),

 ],

 'cache' => [

 'host' => env('REDIS_HOST', '127.0.0.1'),

 'password' => env('REDIS_PASSWORD', null),

 'port' => env('REDIS_PORT', 6379),

 'database' => env('REDIS_CACHE_DB', 1),

 ],

],

];