GithubHelp home page GithubHelp logo

glidership / varying-vagrant-vagrants Goto Github PK

View Code? Open in Web Editor NEW

This project forked from varying-vagrant-vagrants/vvv

0.0 2.0 0.0 5.35 MB

Varying Vagrant Vagrants is an evolving Vagrant configuration focused on WordPress development.

varying-vagrant-vagrants's Introduction

Varying Vagrant Vagrants

Varying Vagrant Vagrants is an evolving Vagrant configuration focused on WordPress development.

Overview

The Purpose of Varying Vagrant Vagrants

The primary goal of Varying Vagrant Vagrants (VVV) is to provide an approachable way for developers to work in an environment that matches a project's production environment as closely as possible.

The default configuration provided by VVV is intended to match what 10up finds to be a common server setup when working with high traffic WordPress sites.

How to Use Varying Vagrant Vagrants

VVV as a MAMP/XAMPP Replacement

The best part is that VVV is ready to use as is. Clone or download the repository and vagrant up to get a sandboxed Ubuntu server on your computer with everything needed to develop a WordPress theme or plugin.

Multiple projects can be developed at once in the same environment provided by VVV.

  • Use wp-content/themes in either the wordpress-default or wordpress-trunk directories to develop multiple themes using the same test content.
  • Use wp-content/plugins in either the wordpress-default or wordpress-trunk directories to develop a plugin the same way.
  • Install additional instances of WordPress in /srv/www/ and configure a few pieces of VVV accordingly to work with the new installation.
  • Use the wordpress-develop directory to participate in WordPress core development.

VVV as a Scaffold

Entirely different server configurations can be created by modifying the files included with this repository.

The existing configuration can also be extended significantly through the use of additional provisioning scripts, provision-pre.sh and provision-post.sh.

It is not necessary to track the changes made to the main repository. Feel free to check this project out and then change everything to make it your own.

The Future of Varying Vagrant Vagrants

Immediate goals for VVV include:

  • Continue to work towards a stable state of software and configuration included in the default provisioning.
  • Provide excellent and clear documentation throughout VVV to aid in both learning and scaffolding.
  • Provide a method for describing WordPress environment requirements at a project level so that developers joining a project can ramp up quickly. This includes code, database, and content files.

Getting Started

What is Vagrant?

Vagrant is a "tool for building and distributing development environments". It works with virtualization software such as VirtualBox to provide a virtual machine that is sandboxed away from your local environment.

The First Vagrant Up

  1. Start with any operating system.
  2. Install VirtualBox 4.2.16
    • VVV (and Vagrant) has been tested with this version. If a newer version appears on the downloads page and you don't feel like being a guinea pig, check out the older downloads page and download the 4.2.16 release.
  3. Install Vagrant 1.3.0
    • vagrant will now be available as a command in the terminal, try it out.
  4. Clone the Varying Vagrant Vagrants repository into a local directory
    • git clone git://github.com/10up/varying-vagrant-vagrants.git vagrant-local
    • OR download and extract the repository master zip file
  5. Change into the new directory
    • cd vagrant-local
  6. Start the Vagrant environment
    • vagrant up - omg magic happens
    • Be patient, this could take a while, especially on the first run.
  7. Add a record to your local machine's hosts file
    • 192.168.50.4 local.wordpress.dev local.wordpress-trunk.dev src.wordpress-develop.dev build.wordpress-develop.dev
    • On -nix systems you can use: (note that location of host file after the >> may vary) sudo sh -c 'echo "192.168.50.4 local.wordpress.dev local.wordpress-trunk.dev src.wordpress-develop.dev build.wordpress-develop.dev" >>/private/etc/hosts'
  8. Visit any of the following default sites in your browser:

Fancy, yeah?

What Did That Do?

The first time you run vagrant up, a packaged box containing a virtual machine is downloaded to your local machine and cached for future use. The file used by Varying Vagrant Vagrants contains an Ubuntu 12.04 installation (Precise release) and is about 280MB.

After this box is download, it begins to boot as a sandboxed virtual machine using VirtualBox. When ready, it runs the provisioning script also provided with this repository. This initiates the download and installation of around 105MB of packages on the new virtual machine.

The time for all of this to happen depends a lot on the speed of your Internet connection. If you are on a fast cable connection, it will more than likely only take several minutes.

On future runs of vagrant up, the packaged box will already be cached on your local machine and Vagrant will only need to deal with provisioning. If the virtual machine has been destroyed with vagrant destroy, it will need to download the full 105MB of packages to install. If the Vagrant has been powered off with vagrant halt, the provisioning script will run but will not need to download anything.

Now What?

Now that you're up and running with a default configuration, start poking around and modifying things.

  1. Access the server via the command line with vagrant ssh from your vagrant-local directory. You can do pretty much anything you would do with a standard Ubuntu installation on a full server.
    • If you are on a Windows PC, you may need to install additional software for this to work seamlessly. A terminal program such as Putty will provide access immediately.
  2. Destroy the box and start from scratch with vagrant destroy
    • As explained before, the initial 280MB box file will be cached on your machine. the next vagrant up command will initiate the complete provisioning process again.
  3. Power off the box with vagrant halt or suspend it with vagrant suspend. If you suspend it, you can bring it back quickly with vagrant resume, if you halt it, you can bring it back with vagrant up.
  4. Start modifying and adding local files to fit your needs.
    • The network configuration picks an IP of 192.168.50.4. This works if you are not on the 192.168.50.x sub domain, it could cause conflicts on your existing network if you are on a 192.168.50.x sub domain already. You can configure any IP address in the Vagrantfile and it will be used on the next vagrant up
    • If you require any custom SQL commands to run when the virtual machine boots, move database/init-custom.sql.sample to database/init-custom.sql and edit it to add whichever CREATE DATABASE and GRANT ALL PRIVILEGES statements you want to run on startup to prepare mysql for SQL imports (see next bullet).
    • Have any SQL files that should be imported in the database/backups/ directory and named as db_name.sql. The import-sql.sh script will run automatically when the VM is built and import these databases into the new mysql install as long as the proper databases have already been created via the previous step's SQL.
    • Check out the example nginx configurations in config/nginx-config/sites and create any other site specific configs you think should be available on server start. The web directory is /srv/www/ and default configs are provided for basic WordPress stable, trunk, and develop setups.
    • Once a database is imported on the initial vagrant up, it will persist on the local machine in a mapped database/data directory.
    • Other stuff. Familiarize and all that.

Credentials and Such

All database usernames and passwords for WordPress installations included by default are wp and wp.

All WordPress admin usernames and passwords for WordPress installations included by default are admin and password.

WordPress Stable

  • URL: http://local.wordpress.dev
  • DB Name: wordpress_default

WordPress Trunk

  • URL: http://local.wordpress-trunk.dev
  • DB Name: wordpress_trunk

WordPress Develop

  • /src URL: http://src.wordpress-develop.dev
  • /build URL: http://build.wordpress-develop.dev
  • DB Name: wordpress_develop
  • DB Name: wordpress_unit_tests

MySQL Root

What do you get?

A bunch of stuff!

  1. Ubuntu 12.04 LTS (Precise Pangolin)
  2. WordPress Develop
  3. WordPress Stable
  4. WordPress Trunk
  5. WP-CLI
  6. nginx 1.4.2
  7. mysql 5.5.32
  8. php-fpm 5.4.17
  9. memcached 1.4.13
  10. PHP memcache extension 3.0.8
  11. xdebug 2.2.3
  12. PHPUnit 3.7.24
  13. ack-grep 2.04
  14. git 1.8.3.4
  15. subversion 1.7.9
  16. ngrep
  17. dos2unix
  18. Composer
  19. phpMemcachedAdmin 1.2.2 BETA
  20. phpMyAdmin 4.0.5
  21. Webgrind 1.1
  22. NodeJs Current Stable Version
  23. grunt-cli Current Stable Version

Feedback?

Let us have it! If you have tips that we need to know, open a new issue. Some blog posts have been written documenting the process that may provide insight....

varying-vagrant-vagrants's People

Contributors

aaronjorbin avatar carldanley avatar cmmarslender avatar curtismchale avatar danielbachhuber avatar ericmann avatar jeremyfelt avatar johnpbloch avatar kadamwhite avatar lgedeon avatar mamaduka avatar markjaquith avatar mbijon avatar mboynes avatar mintindeed avatar ocean90 avatar simonwheatley avatar tddewey avatar thelastcicada avatar tobiasbg avatar tollmanz avatar westonruter avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.