Tutorialsplane

Laravel Homestead


Laravel Homestead – Laravel Homestead is used to provide you a wonderfull development enviroment without requiring you to install PHP, a web server and any other server software on your local machine..


Laravel Homestead.

Let us understand how to use laravel homestead.

Function:-

There are some followings function available in laravel homestead.

1. Introduction.

Laravel strives to make the entire php development experience delightful, including your local development enviroment.

Laravel homestead is an official, pre packaged vagrant box that provides you a wonderfull development enviroment and no need to install php and other software on your machine. No more worrying about messing up your operating system. Vagrant boxes are completely disposable. If something goes wrong, you can destroy and re-create the box in minutes.

Homestead runs on any windows, MAC or linux system and includes the Nginx web server, PHP 7.1, MySql, Postgres, Redis, Memcached, Node and all of the other goodies you need to develop amazing Laravel applications.

Included software

Ubuntu 16.04
Git
PHP 7.1
Ngnix
MySql
MariaDB
Sqlite3
Postgres
Composer
Node
Redis
Memcached
Beanstalkd
Mailhog
ngrok

2. Installation & Setup.

First Steps

Before launching you Homestead enviroment, you must install Virtualbox5.1, Vmware or Parallels as well as Vagrant. All of these software packages provide easy to use visual installer for all popular operating systems.

To use the VMware provide, you will need to purchase both VMware fusion/ Workstation and the VMware Vagrant plug-in. Through it is not free, VMware can provide faster shared folder performance out of the box.

To use the parallel provider, you have to need to install parallels Vagrant plug-in. It is free to charge.

Installing the homestead vagrant box

VirtualBox/ VMware and Vagrant have been installed, you should add the laravel/homestead box to your vagrant installation using these command. It will take a few minutes to download the box.

vagrant box add laravel/homestead

Installing Homestead

You can install Homestead by simply create a clone the storage. Consider clone the storage into a Homestead folder within your home directory.

cd ~

git clone https://github.com/laravel/homestead.git Homestead

You should check out a tagged version of homestead.

cd Homestead

git checkout v4.0.5

Once you have cloned the homestead repository, run the bash init.sh command from the homestead directory to create the homestead.yaml configuration file. The homestead.yaml file will be placed in the homestead directory.

bash init.sh

init.bat

Configuring Homestead

Setting Your Provider

The provider key in your Homestead.yaml file indicates which vagrant provider should be used.
You may set to the provider you prefer.

provider: virtualbox

Configuring Shared Folders

The folder property of the Homestead.yaml file lists all of the folders you want to share with your Homestead environment. As files within these folders are changed, they will be kept in sync between your local machine and the Homestead environment. You may configure as many shared folders as necessary.

folders:
    - map: ~/Code
      to: /home/vagrant/Code

To enable NFS, just add a simple flag to your synced folder configuration.

folders:
    - map: ~/Code
      to: /home/vagrant/Code
      type: "nfs"

You can also pass any options supported by Vagrant synced folders by listing them under the option key.

folders:
    - map: ~/Code
      to: /home/vagrant/Code
      type: "rsync"
      options:
          rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
          rsync__exclude: ["node_modules"]

Configuring Nginx Sites

The sites property allows you to easily map a domain to the folder on your homestead environment. A sample site configuration is included in the Homestead.yaml file.

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public

If you change the sites property after supply the homestead box, you should re-run vagrant reload–provision to update the Nginx configuration on the virtual machine.

The Hosts File

The hosts file will redirect request for your Homestead sites into your Homestead machine. On Mac and Linux file is located at /etc/hosts. On window it is loacted at C:\Windows\System32\drivers\etc\hosts.

192.168.10.10  homestead.app

Make sure the IP address listed is the one set in your Homestead.yaml file.

http://homestead.app

Launching The Vagrant Box

You have edited the Homestead.yaml to your liking, run the vagrant up command from your Homestead directory. It will boot the machine and automatically configure your shared folder and Nginx sites.

If you want to destroy the machine you can use the vagrant destroy –force command.

Per Project Installation

Earlier of installing Homestead globally and sharing the same Homestead box across all of your projects, you may earlier configure a Homestead instance for each project you manage

To install Homestead directly into your project. Require it using composer.

composer require laravel/homestead --dev

When Homestead has been installed, use the make command to generate the vagrantfile and Homestead.yaml file in your project root. The make command will automatically configure the sites and folders directive in the homestead.yaml.

Mac/Linux:

php vendor/bin/homestead make

Windows:

vendor\\bin\\homestead make

Installing MariaDB

If you prefer to use MariaDB instead of mysql. You may add the mariadb option to your homestead.yaml file. This option will remove MYSQL and instal MariaDB.

box: laravel/homestead
ip: "192.168.20.20"
memory: 2048
cpus: 4
provider: virtualbox
mariadb: true

3. Daily Usage.

Accessing Homestead Globally

Sometimes you want to vagrant up your homestead machine from anywhere on your filesystem. You can do this on Mac/Linux systems by adding a bash function to your bash profile. On window, you may accomplish this by adding a “batch” file to your path.

Mac/Linux:

function homestead() {
    ( cd ~/Homestead && vagrant $* )
}

Window:

@echo off

set cwd=%cd%
set homesteadVagrant=C:\Homestead

cd /d %homesteadVagrant% && vagrant %*
cd /d %cwd%

set cwd=
set homesteadVagrant=

Connecting Via SSH

You can SSH into your virtual machine by issuing the vagrant ssh terminal command from your Homestead directory.

Connecting To Databases

A Homestead database is configured for both MySql and Postgres out of the box. Laravel .env file configures the framework to use this database out of the box.

To connect the database, you should connect to 127.0.0.1 and port 33060 MySql or 54320 Postgres. The username and password for both databases is homestead / secret.

Adding Additional Sites

You can run as many Laravel installations as you wish on a single Homestead environment. To add an additional site, simply add the site to your Homestead.yaml file.

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public
    - map: another.app
      to: /home/vagrant/Code/another/public

If Vagrant is not automatically managing your “hosts” file, you may need to add the new site to that file as well

192.168.10.10  homestead.app
192.168.10.10  another.app

Site Types

Homestead supports several types of sites which allow you to easily run projects that are not based on Laravel

sites:
    - map: symfony2.app
      to: /home/vagrant/Code/Symfony/public
      type: symfony2

Configuring Cron Schedules

The schedule:run command will examine the job schedule defined in your App/console/kernel class to determine which jobs should be run. You can set the schedule option to true when you define sites.

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public
       schedule: true

Ports

By default, the following ports are forwaded to your homestead environment.

SSH:2222 → Forwards To 22
HTTP:8000 → Forwards To 80
HTTPS:44300 → Forwards To 443
MySQL:33060 → Forwards To 3306
Postgres:54320 → Forwards To 5432
Mailhog:8025 → Forwards To 8025

Forwarding Additional Ports

If you wish, you may forward additional ports to the Vagrant box, as well as specify their protocol

ports:
    - send: 93000
      to: 9300
    - send: 7777
      to: 777
      protocol: udp

Sharing Your Environment

Sometimes you may wish to share what you’re currently working on with coworkers or a client. Vagrant has a built-in way to support this via vagrant share; however, this will not work if you have multiple sites configured in your Homestead.yaml file.

To solve this problem, Homestead includes its own share command.

share homestead.app

After running the command, you will see an Ngrok screen appear which contains the activity log and the publicly accessible URLs for the shared site.

share homestead.app -region=eu -subdomain=laravel

4. Network Interfaces.

The networks property of the Homestead.yaml configures networks interfaces for your Homestead environment. You may configure as many interfaces as neccessary.

networks:
    - type: "private_network"
      ip: "192.168.10.20"

To enable a bridge interface, configure a bridge setting and change the network type of public network.

networks:
    - type: "public_network"
      ip: "192.168.10.20"
      bridge: "en1: Wi-Fi (AirPort)"

To enable DHCP, just remove the ip option from your configuration.

networks:
    - type: "public_network"
      bridge: "en1: Wi-Fi (AirPort)"

5. Updating Homestead.

You can update Homestead in two simple way. First, you should update the vagrant box using this command.

vagrant box update

If you have installed Homestead via your project’s composer.json file, you should ensure your composer.json file contains “laravel/homestead”: “^4” and update your dependencies.

composer update

6. Old Versions.

You can easily override the version of the box that Homestead uses by adding the following line to your Homestead.yaml file.

version: 0.6.0

An Example:

box: laravel/homestead
version: 0.6.0
ip: "192.168.20.20"
memory: 2048
cpus: 4
provider: virtualbox

The old version will be updated like this:-

7. Provider Specific Settings.

VirtualBox

By default, Homestead configures the natdnshostresolver setting to on. This allows Homestead to use your host operating system’s DNS settings. If you would like to override
this behaviour, add the following lines to your Homestead.yaml file.

provider: virtualbox
natdnshostresolver: off

Laravel Tutorial