Upgrade to Pro — share decks privately, control downloads, hide ads and more …



Using vagrant to host WordPress locally

Tom J Nowell

March 19, 2014

More Decks by Tom J Nowell

Other Decks in Technology


  1. Installing Vagrant Install the Hosts Updater: $ vagrant plugin install

    vagrant-hostsupdater $ vagrant plugin install vagrant-vbguest
  2. Using Vagrant Open the VVV folder in the terminal and

    type vagrant up --provision to start the server for the first time
  3. Using Vagrant vagrant up # start vagrant halt # stop

    vagrant destroy # destroy vagrant ssh # login vagrant status # is it up?
  4. Using Vagrant This gets you: • Ubuntu Virtual Machine •

    PHPMyAdmin • Nginx • WordPress Dev & stable • WP CLI • all listed at http://vvv/
  5. Moving to Vagrant To add a site, go to the

    www folder and create: • A subfolder for your site • a vvv-nginx.conf file • a vvv-hosts file
  6. Example vvv-nginx.conf server { listen 80; listen 443 ssl; #

    CHANGE THE DOMAINS BELOW AND SAVE server_name tomjn.com www.tomjn.com; root {vvv_path_to_folder}; include /etc/nginx/nginx-wp-common.conf; }
  7. Moving to Vagrant When you’ve done that, put your sites

    files in that folder, and re-provision the server: vagrant halt vagrant up --provision
  8. Moving to Vagrant • All my sites are in MAMP

    • I change files and FTP them up to see the changes • What about our existing sites? • We dont have the time to switch over
  9. Moving to Vagrant Example vvv-init.sh wp core download wp core

    install --url=”etc.. wp plugin install wpseo wp plugin activate wpseo wp import content.xml
  10. #!/bin/sh SUSER="alantaifirestar"; # SSH user SHOST="tomjn.com"; # remote server SDIR="/home/alantaifirestar/tomjn.com/";

    # remote folder LDIR="/srv/www/tomjn.com" #local folder echo 'starting rsync' rsync -e "/usr/bin/ssh" --compress --stats --bwlimit=2000 -rlDHS $SUSER@$SHOST:$SDIR $LDIR echo 'finished rsync, grabbing database' WHOST=`cat $LDIR/wp-config.php | grep DB_HOST | cut -d \' -f 4`; # get the DB details WNAME=`cat $LDIR/wp-config.php | grep DB_NAME | cut -d \' -f 4`; WUSER=`cat $LDIR/wp-config.php | grep DB_USER | cut -d \' -f 4`; WPASS=`cat $LDIR/wp-config.php | grep DB_PASSWORD | cut -d \' -f 4`; ssh $SUSER@$SHOST "mysqldump -q -u $WUSER -h $WHOST -p$WPASS $WNAME | gzip -9 > backup. sql.gz" scp $SUSER@$SHOST:./backup.sql.gz . # copy all the files to backup server ssh $SUSER@$SHOST rm ./backup.sql.gz # delete files on db server gunzip -d backup.sql.gz # unzip it mysql -u root -e "CREATE DATABASE IF NOT EXISTS $WNAME" # create the database locally mysql -u root -e "GRANT ALL PRIVILEGES ON $WNAME.* To 'wp'@'localhost'" mysql -u wp -pwp $WNAME < backup.sql # pull in the DB dump sed -i "/DB_HOST/s/'[^']*'/'localhost'/2" wp-config.php # change wp-config.php values sed -i "/DB_USER/s/'[^']*'/'wp'/2" wp-config.php sed -i "/DB_PASSWORD/s/'[^']*'/'wp'/2" wp-config.php