vitr / valet4windows by vitr

A more enjoyable local development experience for Windows.
607
63
7
Package Data
Maintainer Username: vitr
Maintainer Contact: vitdotonline@gmail.com (Vitaliy Ryepnoy (vitr))
Package Create Date: 2016-06-07
Package Last Update: 2016-12-15
Home Page:
Language: PHP
License: MIT
Last Refreshed: 2024-04-22 15:00:24
Package Statistics
Total Downloads: 607
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 63
Total Watchers: 7
Total Forks: 5
Total Open Issues: 4

Laravel Valet For Windows Latest Stable Version License Analytics

Laravel Valet for Windows

Introduction

This is Windows version of Laravel Valet. Valet is a Laravel development environment for minimalists. This Windows version brings even less software than Valet for Mac and you still can share your sites publicly using local tunnels.

Laravel Valet for Windows configures your PC to run Caddy on demand. Then, using c:\Windows\System32\drivers\etc\hosts file, Valet proxies all requests on the *.dev domain to point to sites installed on your local machine.

In other words, a blazing fast Laravel development environment that uses roughly les than 1mb of RAM (see RAM usage). Valet isn't a complete replacement for Vagrant or Homestead, but provides a great alternative if you want flexible basics, prefer extreme speed, or are working on a machine with a limited amount of RAM.

Please, keep in mind, an arbitrary php application won't work in Valet, you need to support them via special drivers. Obviously Laravel is supported, as well, as many others popular php headliners, like Symfony, WordPress, Joomla, etc. See the full list here

Important Notes

  • Set C:\Windows\System32\drivers\etc\hosts file permissions to allow full control for current user/administrator
  • Windows 64-bit is supported (if anyone still needs 32-bit, please, make an issue)
  • Run git-bash as Administrator, as only Administrator can handle symlinks on Windows
  • Sometimes caddy server just stops working (502 Bad Gateway), without any reason, sometimes it stops when the Internet connection is lost, manually running valet restart always helps

Quick How To

This will set up and run a new Laravel application named blog, accessible on localhost http://blog.dev/. Only php and composer are required to run Valet for Windows. See advanced how to if you don't have them yet.

You must use git-bash or similar shell. This doesn't work in standard Windows cmd, native bash will soon come to Windows, fingers crossed.

composer global require laravel/installer vitr/valet4windows
mkdir ~/Sites && cd ~/Sites
laravel new blog
valet install
valet park
valet scan 
valet start
cd blog && valet open 

Advanced How To

Install php & composer

As we run php with Caddy in FastCGI mode download NTS (Non Thread Safe) version (x86 or x64) from http://windows.php.net/download#php-7.0. Extract downloaded archive to C:\php. Copy php.ini-development as php.ini and open it in a text editor. Uncomment extension path for Windows

 ; Directory in which the loadable extensions (modules) reside.
 ; http://php.net/extension-dir
 ; extension_dir = "./"
 ; On windows:
  extension_dir = "ext"

uncomment required extensions, e.g.

; Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5+)
; extension folders as well as the separate PECL DLL download (PHP 5+).
; Be sure to appropriately set the extension_dir directive.
;
;extension=php_bz2.dll
extension=php_curl.dll
;extension=php_fileinfo.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
extension=php_mbstring.dll
;extension=php_exif.dll      ; Must be after mbstring as it depends on it
;extension=php_mysqli.dll
;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client
extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll

Keep in mind Laravel's server requirement https://laravel.com/docs/master/installation#server-requirements.

Tokenizer PHP Extension is included by default in all Windows builds
Add php path (e.g. C:\php) to your system path.

Install composer from https://getcomposer.org/download/. Composer-Setup.exe windows installer does all the work for you, including putting the composer bin folder in your system path, so, later you can easily use commands like laravel or valet.

Install Composer packages

From this point use git-bash or or other bash compatible terminal, as windows cmd doesn't work for us here. It's too much work to completely rewrite all the valet commands in windows shell and hopefully bash support will be included officially in Windows 10 very soon.

composer global require laravel/installer vitr/valet4windows

Updating your hosts file

valet scan

it updates your hosts file C:\Windows\System32\drivers\etc\hosts, so, you have to change its properties to allow full control for current user.

Running Valet

If you're on Windows there is a chance that your ports 80 and 443 are already occupied by ISS or Skype. Read more how to disable ISS here http://stackoverflow.com/questions/30901434/iis-manager-in-windows-10 and how to fix Skype here http://stackoverflow.com/questions/22994888/why-skype-using-http-or-https-ports-80-and-443

Open Laravel site

cd blog && valet open (will open http://blog.dev in chrome)

List of supported applications and frameworks

Unresolved Issues

  • https://github.com/mholt/caddy/issues/732#issuecomment-207819773 Caddy server couldn't be run as a service on Windows (means the cmd is always open), on a flip side could be easily closed)), here is more https://forum.caddyserver.com/t/requested-plugins-ideas-for-developers/127 https://github.com/mholt/caddy/issues/293 it's requested as a plugin for Caddy, hopefully they implement this soon, but my workaround with an extra cmd window works just fine.
  • Rescan parked folders manually after adding new subfolder(s) (could be resolved with some sort of filesystem watcher, e.g. node.js)
  • Working with symlinks on Windows requires run git-bash as administrator

Testing

I see the benefits of only integration testing here. I would test each valet command and check the outcomes. Unfortunately, travis doesn't support Windows, so, I perform them manually on Windows machine. Later on, I may try https://ci.appveyor.com/

Roadmap

  • [ ] compile caddy with this Minimal windows service stub https://github.com/kardianos/minwinsvc
  • [ ] update valet drivers
  • [ ] demo how to install SSL certificates (so much fun:)
  • [ ] Implement the same tests as for Mac and maybe some more
  • [ ] Clean up all the OS X leftovers
  • [x] update caddyserver (Latest release v0.9.0)
  • [x] Combine scan with park, forget, link, unlink
  • [x] Move caddy exec to bin, Caddyfile config to ~/.valet
  • [x] fix larawhale names in readme
  • [x] move the history into a standalone history file (see CHANGELOG.md)
  • [x] Port all original mac Valet commands
    • [x] domain
    • [x] fetch-share-url
    • [x] forget
    • [x] help
    • [x] install
    • [x] link (requires run git-bash as administrator)
    • [x] links
    • [x] list
    • [x] logs
    • [x] on-latest-version
    • [x] open
    • [x] park
    • [x] paths
    • [x] restart
    • [x] secure, to get rid of in-browser warning you have to manually install certificate (double click on ~.valet\Certificates\blog.dev.crt and install it in the root)
    • [x] share
    • [x] start
    • [x] stop
    • [x] uninstall
    • [x] unlink
    • [x] unsecure
    • [x] which