Install Scripts
Vaprobash has many install scripts! Here's an overview of each of them.
Base Items
# Base
This installs some basics items.
- Git and this .gitconfig
- ack-grep
- vim, tmux
- curl, wget
- build-essential, python-software-properties
- SSL certificate (self-signed) for # addresses
# PHP
This will install PHP 5.5 and its common modules. This also install xdebug and sets the following:
xdebug.scream=1
xdebug.cli_color=1
xdebug.show_local_vars=1
# Screen
This will install the Screen terminal multiplexer on the Vagrant VM. A few sensible defaults will be added to the .screenrc file.
# Vim
This will install a Vim set, including:
- Vundle
- Bundle 'altercation/vim-colors-solarized'
- Bundle 'plasticboy/vim-markdown'
- Bundle 'othree/html5.vim'
- Bundle 'scrooloose/nerdtree'
- Bundle 'kien/ctrlp.vim'
- Bundle 'bling/vim-airline'
- Bundle 'airblade/vim-gitgutter'
- Bundle 'tpope/vim-fugitive'
See the .vimrc file for more details and configuration.
Web Servers
# Apache
This will install Apache 2.4 and mod_php5. Additionally, this script will use this vhost bash script to create a virtualhost for 192.168.33.10.xip.io (or whichever IP address you configure).
In future releases, Apache may be changed to work with php5-fpm rather than mod_php5. This will make switching between Nginx and Apache simpler.
By default, the web root will the /vagrant, which I suggest you change as needed (within /etc/apache2/sites-available/192.168.33.10.xip.io.conf). The Laravel and Symfony installation script will change the document root.
To create a new virtual host:
# See also: `vhost -h`
$ sudo vhost -s example.com -d /path/to/example/web/root
# You can then use `a2ensite` or `a2dissite` to enable or disable this vhost.
# `vhost` will enable it for you.
$ sudo a2dissite example.com
# HHVM
This installs HHVM.
This will be modified heavily in the near future, likely to install hhvm-fastcgi rather than simply hhvm. There are also some configuration concerns which needs to be dealt with.
# Nginx Base
This will install:
- Nginx 1.4.* (latest stable)
- PHP 5.5 via php5-fpm
- These virtualhost configuration enable/disable scripts, which works similarly to Apache's
a2ensite and a2dissite.
Similar to the Apache setup, this makes use of xip.io, creating a virtual host for the address 192.168.33.10.xip.io (or whatever IP address is configured).
By default, the web root will be in the /vagrant directory. You can change this as needed within the /etc/nginx/sites-available/vagrant file. Note that the Laravel installation script will change the document root.
To enable or disable an existing site configuration:
# Enable a site config:
$ sudo ngxen example.com
# Disable a site config:
$ sudo ngxdis example.com
# Reload config after any change:
$ sudo service nginx reload
Databases
# Couchbase
This will install Couchbase Server Community Edition 2.2.0 and its PHP Client Library.
To configure:
- Run the setup wizard on the web interface at http://192.168.33.10:8091
- Use the CLI in /opt/couchbase/bin/couchbase-cli
More info:
# CouchDB
This will install the CouchDB database.
To create a new database:
# Execute this command inside the Vagrant box
$ curl -X PUT localhost:5984/name_of_new_database
You may access the "Futon" web interface for administering CouchDB at: http://192.168.33.10:5984/_utils/
# MariaDB
This is a drop-in replacement for MySQL. See MySQL docs below for usage information.
# MySQL
This will install the MySQL 5 database.
- Host:
localhost or 192.168.33.10
- Username:
root
- Password:
root
In order to create a new database:
# SSH into Vagrant box
$ vagrant ssh
# Create Database
# This will ask you to enter your password
$ mysql -u root -p -e "CREATE DATABASE your_database_name"
# MongoDB
This installs MongoDB. See some basic usage here.
# PostgreSQL
This will install the PostgreSQL 9.3 database.
- Host:
localhost or 192.168.33.10
- Username:
root
- Password:
root
In order to creat a new database:
# SSH into vagrant box
$ vagrant ssh
# Create new database via user user "postgres"
# and assign it to user "root"
$ sudo -u postgres /usr/bin/createdb --echo --owner=root your_database_name
# SQLite
This will install the SQLite server. SQLite runs either in-memory (good for unit testing) or file-based.
In-Memory Stores
# Memcached
This will install Memcached, which can be used for things like caching and session storage.
- Host:
localhost
- Port
11211 (default)
# Redis
This will install Redis (server). There are two options:
- Install without journaling/persistence
- Install with journaling/persistence
You can choose between the two by uncommenting one provision script or the other in the Vagrantfile.
Search
# ElasticSearch
This install ElasticSearch latest version. See a getting started article.
Utility (queues)
# Beanstalkd
This will install the Beanstalkd work queue and configure it to start when the server boots.
- Host:
localhost (0.0.0.0 by default)
- Port:
11300 (default)
# Heroku
Install the Heroku Toolbelt. This is not a Vaprobash script but Heroku's. The install script is just added for convenience.
# Supervisord
This install Supervisord, a process watcher which can restart processes if they fail and boot them on system start. More information here and a getting started guide with PHP/Laravel here.
# ØMQ
This will install ØMQ (ZeroMQ), a messaging library, and configure itself for use with PHP. More information is available online.
Additional Languages
# NodeJS
By default the latest stable NodeJS will be installed using Node Version Manager. Type $ nvm help in the console/terminal or read this for more info on NVM.
You can configure the NodeJS version and the Global Node Packages within the Vagrantfile.
nodejs_version = "latest" # <-- latest stable NodeJS version will be installed
It will also set global NPM items to be installed in /home/vagrant/npm/bin.
# NodeJS Packages
You can have as many packages installed or choose to not install any packages at all (just comment or delete the lines). Type $ nvm ls-remote to get the full list of available NodeJS versions inside your console/terminal.
nodejs_packages = [ # List any global Node.js modules that you want to install
#"grunt-cli",
#"bower",
"yo", # "yo" is uncommented and will be installed globally (yeoman.io)
# ... add more packages or delete all packages if you don't want any
]
# Ruby
This will install Ruby via RVM. You can decide which version of ruby via the configuration variable found in the Vagrantfile. Default is latest.
Similar to Node, you can select which Ruby Gems to install (globally!) on your system.
ruby_gems = [ # List any Ruby Gems that you want to install
#"jekyll",
#"sass",
"compass", # Will install Compass as its un-commented
]
Frameworks and Tooling
# Composer
This will install composer and make it globally accessible.
# Laravel
This will install a base Laravel (latest stable) project within /vagrant/laravel. It depends on Composer being installed.
This will also attempt to change the Apache or Nginx virtual host to point the document root at /vagrant/laravel/public.
# Symfony
This will install a base Symfony (latest stable) project within /vagrant/symfony. It depends on Composer being installed.
This will also attempt to change the Apache or Nginx virtual host to point the document root at /vagrant/symfony/web.
# PHPUnit
This will install PHPUnit and make it globally accessible.
# MailCatcher
This will install MailCatcher to catch outgoing mail. Sets php.ini sendmail path to catchmail.
- MailCatcher frontend at 192.168.33.10.xip.io:1080
- MailCatcher SMTP at 192.168.33.10.xip.io:1025
# git-ftp
This will install git-ftp and will allow you to deploy your git repository trough FTP.
Installing git-ftp is especcially handy when your hosting provider (ie shared hosting) doesn't support git and doesn't allow SSH access. git-ftp supports the fallowing protocol's: FTP, SFTP, FTPS and FTPES (SSL).
You can find more info on how to configure and use git-ftp here (manual).