Setup

Setup on Windows

  1. Install git

    winget install -e --id Git.Git
    
  2. Install composer

    Introduction - Composer

  3. Install XAMPP

    winget install -e --id ApacheFriends.Xampp.8.2
    
  4. Install 7zip

    winget install -e ---id 7zip.7zip
    
  5. Install Laravel

    composer global require laravel/installer
    

Setup on Linux (Ubuntu/Debian)

# Install MySQL Redis Git Unzip Apache
sudo apt install git unzip mysql-server redis apache2 -y

# Start Services
sudo service mysql start && sudo systemctl enable mysql 
sudo service apache2 start && sudo systemctl enable apache2
sudo systemctl enable redis-server && sudo systemctl start redis-server

# Install PHPMyAdmin
sudo apt install phpmyadmin -y

# Link PHPMyAdmin to Apache2
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

# Restart Apache
sudo systemctl restart apache2
/bin/bash -c "$(curl -fsSL <https://php.new/install/linux>)"

Setup on Docker Development Containers

FROM node:latest

ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Tehran

RUN apt update && apt-get upgrade -y
RUN apt install -y vim git curl unzip bash

RUN TERM=xterm /bin/bash -c "$(curl -fsSL <https://php.new/install/linux>)"

EXPOSE 3000 8000 5173 4173
services:
  dev:
    build: .
    container_name: dev-machine
    network_mode: host
    volumes:
      - ./projects:/root/projects
    depends_on:
      - db
    entrypoint: ["bash"]
    stdin_open: true
    tty: true

  db:
    image: mysql
    container_name: mysql-db
    environment:
      MYSQL_ROOT_PASSWORD: "1234"
      MYSQL_USER: "user"
      MYSQL_PASSWORD: "1234"
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin
    ports:
      - "8060:80"
    environment:
      PMA_HOST: mysql-db

  redis:
    image: redis
    container_name: redis
    ports:
      - "6379:6379"

volumes:
  db_data:

{
	"name": "Laravel Dev Environment",
	"dockerComposeFile": "./docker-compose.yaml",
	"service": "dev",
	"workspaceFolder": "/root/projects",
	"customizations": {
		"vscode": {
			"extensions": [
				"bmewburn.vscode-intelephense-client",
				"github.vscode-github-actions",
				"kokororin.vscode-phpfmt",
				"mtxr.sqltools-driver-mysql",
				"rifi2k.format-html-in-php",
				"xdebug.php-debug"
			],
			"settings": {
				"[php]": {
					"editor.defaultFormatter": "kokororin.vscode-phpfmt"
				},
				"editor.formatOnPaste": true,
				"editor.formatOnSave": true,
				"editor.formatOnType": true,
				"terminal.integrated.defaultProfile.linux": "zsh",
				"terminal.integrated.profiles.linux": {
					"bash": {
						"path": "bash"
					}
				}
			}
		}
	}
}

Initializing a Laravel Project

laravel new example-app

Dependencies

<aside> 💡

Dependencies are stored in vendor directory

</aside>

# to install dependencies:

composer install

composer.json holds all dependencies for your project