Alaa Amer Articles

We offer a comprehensive collection of essential educational articles in web development to turn your ideas into digital reality

Laravel Installation & Setup: Professional Development Environment

Laravel 2025-12-31 Alaa Amer

Laravel Installation & Setup: Professional Development Environment

Expert Guide by Alaa Amer – Professional Web Developer & Applications Designer

Setting up Laravel properly is crucial for productivity and project success. Learn how to create a robust development environment that scales with your needs.

2️⃣ Installation Methods Comparison

Method 1: Laravel Installer (Recommended)

# Install Laravel Installer globally
composer global require laravel/installer

# Make sure composer global bin is in your PATH
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

# Create new Laravel project
laravel new my-awesome-app

# Advanced installation with options
laravel new my-awesome-app --git --branch=main --pest --dark

# Navigate to project
cd my-awesome-app

# Start development server
php artisan serve

Method 2: Composer Create-Project

# Create project via Composer
composer create-project laravel/laravel my-awesome-app

# Install specific Laravel version
composer create-project laravel/laravel:^10.0 my-awesome-app

# With additional flags
composer create-project laravel/laravel my-awesome-app --prefer-dist

Method 3: Docker Development Environment

# docker-compose.yml for Laravel development
version: "3.8"

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile.dev
    container_name: laravel-app
    restart: unless-stopped
    working_dir: /var/www/html
    volumes:
      - .:/var/www/html
      - ./docker/php/php.ini:/usr/local/etc/php/conf.d/laravel.ini
    networks:
      - laravel-network
    depends_on:
      - database
      - redis

  webserver:
    image: nginx:alpine
    container_name: laravel-nginx
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - .:/var/www/html
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    networks:
      - laravel-network
    depends_on:
      - app

  database:
    image: mysql:8.0
    container_name: laravel-mysql
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_USER: ${DB_USERNAME}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
    volumes:
      - mysql_data:/var/lib/mysql
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/custom.cnf
    ports:
      - "3306:3306"
    networks:
      - laravel-network

  redis:
    image: redis:7-alpine
    container_name: laravel-redis
    restart: unless-stopped
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
    networks:
      - laravel-network

  node:
    image: node:20-alpine
    container_name: laravel-node
    working_dir: /var/www/html
    volumes:
      - .:/var/www/html
    command: npm run dev
    networks:
      - laravel-network

volumes:
  mysql_data:
    driver: local
  redis_data:
    driver: local

networks:
  laravel-network:
    driver: bridge

4️⃣ Essential Packages & Tools Installation

Development Dependencies:

# Install development packages
composer require --dev laravel/telescope
composer require --dev barryvdh/laravel-debugbar
composer require --dev laravel/pint
composer require --dev pestphp/pest
composer require --dev pestphp/pest-plugin-laravel
composer require --dev spatie/laravel-ignition
composer require --dev nunomaduro/collision

# Publish Telescope assets
php artisan telescope:install
php artisan migrate

# Install Laravel Pint for code formatting
./vendor/bin/pint

# Install Pest for testing
./vendor/bin/pest --init

Production Packages:

# Essential production packages
composer require laravel/sanctum
composer require spatie/laravel-permission
composer require spatie/laravel-backup
composer require spatie/laravel-activitylog
composer require intervention/image
composer require maatwebsite/excel
composer require barryvdh/laravel-dompdf
composer require pusher/pusher-php-server

# Install and configure Sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate

# Install Spatie Permission
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
php artisan migrate

Frontend Development Setup:

# Install Node.js dependencies
npm install

# Install additional frontend tools
npm install -D @tailwindcss/forms @tailwindcss/typography
npm install -D autoprefixer postcss
npm install -D @vitejs/plugin-vue
npm install alpinejs
npm install axios

# Install UI framework (choose one)
npm install bootstrap
# or
npm install @headlessui/vue @heroicons/vue
# or
composer require laravel/breeze --dev
php artisan breeze:install vue

Database Seeding Setup:

<?php
// database/seeders/DatabaseSeeder.php
namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    public function run(): void
    {
        // Create admin user
        \App\Models\User::factory()->create([
            'name' => 'Admin User',
            'email' => '[email protected]',
            'email_verified_at' => now(),
            'is_admin' => true,
        ]);

        // Create test users
        \App\Models\User::factory(10)->create();

        // Seed other data
        $this->call([
            RoleAndPermissionSeeder::class,
            CategorySeeder::class,
            PostSeeder::class,
        ]);
    }
}

// Run seeders
php artisan db:seed

6️⃣ Performance Optimization Setup

Config Caching Strategy:

# Development environment
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan cache:clear

# Production environment
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache

Database Optimization:

<?php
// config/database.php - Optimized MySQL configuration
'mysql' => [
    'driver' => 'mysql',
    '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', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        PDO::ATTR_TIMEOUT => 5,
        PDO::ATTR_EMULATE_PREPARES => false,
    ]) : [],
    'dump' => [
        'dump_binary_path' => '/usr/bin', // Path to mysqldump
        'use_single_transaction' => true,
        'timeout' => 60 * 5, // 5 minutes
    ],
],

💡 Troubleshooting Common Issues

Permission Issues (Linux/Mac):

# Fix storage permissions
sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache
chmod -R 775 storage
chmod -R 775 bootstrap/cache

Composer Issues:

# Clear Composer cache
composer clear-cache

# Update Composer itself
composer self-update

# Install with verbose output
composer install -vvv

Environment Issues:

# Regenerate app key
php artisan key:generate

# Clear all caches
php artisan optimize:clear

# Rebuild autoload files
composer dump-autoload

Next Steps

Ready for the next level? Learn Understanding MVC Pattern in Laravel to master the architectural foundation.

📩 Need help with Laravel installation?

Laravel Installation Setup Development Environment Composer Artisan Configuration
Article Category
Laravel

Laravel Installation & Setup: Professional Development Environment

Complete guide to installing and configuring Laravel for professional development with modern tools, best practices, and optimization techniques.

Laravel Installation & Setup: Professional Development Environment
01

Consultation & Communication

Direct communication via WhatsApp or phone to understand your project needs precisely.

02

Planning & Scheduling

Creating clear work plan with specific timeline for each project phase.

03

Development & Coding

Building projects with latest technologies ensuring high performance and security.

04

Testing & Delivery

Comprehensive testing and thorough review before final project delivery.

Alaa Amer
Alaa Amer

Professional web developer with over 10 years of experience in building innovative digital solutions.

Need This Service?

Contact me now for a free consultation and quote

WhatsApp Your satisfaction is our ultimate goal

What We Offer

  • Website Maintenance & Updates

    Keep your website secure updated optimized

  • API Integration

    Connect your systems with powerful APIs

  • Database Design & Optimization

    Faster queries cleaner structure fewer issues

  • Website Security Hardening

    Protect your site from cyber threats

  • Automation & Scripts

    Automate repetitive tasks and save time

Have Questions?

Call Us Now

00201014714795