Last year the Windows 10 Anniversary Update introduced a Linux Bash Shell running Ubuntu 14. I was trying it as a LAMP environment to do development in a local environment. It was good but incomplete and did not allow me to run Laravel.
Fast forward to 2017 and the Windows 10 Creators Update has a more up to date Linux Bash Shell and you can update Ubuntu to version 16 which is a more complete environment. I tried to do an update of Ubuntu but that turned out to be problematic so I did a clean install and ditched any configuration changes I had made. You will need a web server, a database server and Composer installed. For this I am running Apache and MySQL.
Install Composer
$ sudo apt-get install composer
Install Laravel
$ cd /var/www $ sudo composer create-project --prefer-dist laravel/laravel <directory>
Change Storage Permissions
$ sudo chmod -R 777 <directory>/storage/app $ sudo chmod -R 777 <directory>/storage/framework $ sudo chmod -R 777 <directory>/storage/logs $ sudo chmod -R 777 <directory>/bootstrap/cache
I wanted to run my Laravel site in a subdomain of localhost. So I first had to add my site to the Virtual Hosts file.
$ sudo nano /etc/apache2/sites-available/000-default.conf <VirtualHost *:80> DocumentRoot /var/www/<directory>/public ServerName <subdomain>.localhost </VirtualHost> $ sudo service apache2 restart
Edit Windows Host File (Windows Machine Only).
C:\Windows\System32\drivers\etc\hosts
# localhost name resolution is handled within DNS itself.
127.0.0.1 <subdomain>.localhost
Create Database and Setup variables in .env file in /var/www/<directory> then run:
$ php artisan migrate
Generate Key
$ php artisan key:generate
Turn on Apache Mod Rewrite
$ sudo a2enmod rewrite $ sudo service apache2 restart
Since I last worked with Laravel 5.2, in version 5.5 all Routes go in /routes/web.php
I needed to make one last change in Apache to get my routes working. I edited /etc/apache2/apache2.conf and restarted Apache to get the urls working.
<Directory /> Options FollowSymLinks AllowOverride All Require all denied <Directory> <Directory /usr/share> AllowOverride None Require all granted <Directory> <Directory /var/www> Options FollowSymLinks AllowOverride All Require all denied <Directory>
This is fairly rudimentary as far as how-to’s go. It is really meant to include what I found from several different sources.