devbox is a Vagrant development machine provisioned and preconfigured for working with Node.js (PHP and the Laravel framework) out of the box.
Debian 8 64bit, Nginx, PHP5.5, php-fpm, xdebug, composer, MySQL 5.5, Redis, Beanstalkd, supervisord, Sphinx, ngrok, Node.js, MongoDB, Apache2, npm
- VirtualBox - Free virtualization software
- Vagrant - Tool for working with VirtualBox images
- Install VirtualBox and Vagrant ( >= 1.5.0)
- Clone this repository
git clone https://github.com/jbinder/devbox.git
. - Run
vagrant up
inside the newly created directory - Now just clone/copy your projects into
www/html
and open http://127.0.0.1:10080/[project] in your browser. To run Node.js applications you can use `vagrant ssh -c "bash -c 'cd /var/www/html/[project]; npm start'". By default following ports are mapped: 80 => 10080, 8000 => 18000, 8080 => 18080.
The www folder is automatically synced to the VM (/var/www). This is why we clone our Laravel project into this folder. The sync works in both directions. So any files generated by Laravel (/storage folder for example) will be accessible from your host machine.
- SSH User:
vagrant
PW:vagrant
- MySQL User:
root
PW:root
(access MySQL through SSH)
vagrant up
starts the virtual machine and provisions itvagrant ssh
gives you shell access to the virtual machinevagrant suspend
will essentially put the machine to 'sleep' withvagrant resume
waking it back upvagrant reload
will reload the VM. Do this when the VM config changed. For exmpale when you changed one of the configs (e.g. php.ini, sphinx.conf, etc. or after a git pull of this repo)vagrant halt
attempts a graceful shutdown of the machine and will need to be brought back withvagrant up
vagrant halt --force
force shutdown if normal halt doesn't workvagrant destroy
you broke something? this will destroy the VM and reprovisions it again completely. Takes some time.
For more: Vagrant is very well documented
Please fork, improve, extend, make pull request, wrap it as a gift. Use the GitHub Issues!
Ngrok creates a tunnel from the public internet (http://subdomain.ngrok.com) to a website on your local machine. You can give this URL to anyone to allow them to try out a website you're developing without doing any deployment.
For all the features and documentation, check their site: http://ngrok.com
and usage guide: http://ngrok.com/usage
.
- In
/etc/nginx/sites-available/ngrok.dev
changeroot
path (ie. replaceyoursite.dev
with your site directory) - Make ngrok configuration active by symlinking it:
sudo ln -s /etc/nginx/sites-available/ngrok.dev /etc/nginx/sites-enabled/ngrok.dev
- Restart nginx by doing
sudo /etc/init.d/nginx restart
- Start ngrok service with:
ngrok :80
- Execute npm install commands with the
--no-bin-links
option if using a Windows host (see Troubleshoot for infos). - Run commands from the host using
vagrant ssh -c "bash -c '[command]'"
.
- NFS folders do not work on Windows hosts. Vagrant will ignore your request for NFS synced folders on Windows.
- npm cannot find module or install fails: use --no-bin-links, as symbolic links do not seem to work very well on shared folders on Windows hosts