Installs Nginx, MySQL, and HHVM (v3.0.2 at the time of writing), then will download and setup WordPress. It will also configure an initial vim environment for Hack type checking.
WARNING: this performs some actions that might be destructive on some systems! It is intended for use when reinstalling a new operating system.
This is currently in development and shouldn't be used on production systems.
Deploy this script (requires existing VPS)
The settings below are requested when deploying the script:
MySQL root Password: |
---|
This script references the following:
#!/bin/bash -x # <UDF name="db_password" Label="MySQL root Password" /> source <ssinclude StackScriptID=1> # # BETA SOFTWARE. USE AT YOUR OWN RISK. # # WARNING: this performs some actions that might be destructive on some systems! # It is intended for use when reinstalling a new operating system. # # Install curl, used to retrieve some components if [ ! -e /usr/bin/curl ]; then aptitude -y install curl fi # Set up HHVM wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add - echo deb http://dl.hhvm.com/debian wheezy main | sudo tee /etc/apt/sources.list.d/hhvm.list # update apt system_update # Install Nginx - before HHVM sudo apt-get -y install nginx # Add index.php to the Nginx config file and remove index.htm because, well, why not? sed -i 's/index.html index.htm/index.html index.php/' /etc/nginx/sites-enabled/default # Install HHVM sudo apt-get -y install hhvm sudo /usr/share/hhvm/install_fastcgi.sh sudo /etc/init.d/nginx restart sudo /etc/init.d/hhvm restart postfix_install_loopback_only mysql_install "$DB_PASSWORD" && mysql_tune 40 # # Begin Install WordPress # if [ ! -e /usr/bin/wget ]; then aptitude -y install wget fi VPATH="/usr/share/nginx/www" if [ ! -n "$VPATH" ]; then echo "Something horrible happened, can't Nginx document root!" return 1; fi # download, extract, chown, and get our config file started cd $VPATH wget http://wordpress.org/latest.tar.gz tar xfz latest.tar.gz mv wordpress/* $VPATH rmdir wordpress/ mv index.html original_index.html # Set up HipHop type checking in the WP project dir echo > .hhconfig chown -R www-data: wordpress/ cd $VPATH/wordpress cp wp-config-sample.php wp-config.php chown www-data wp-config.php chmod 640 wp-config.php ## # Start XHP setup # Install the XHP header files # FIXME: this could probably be a git pull. curl https://raw.githubusercontent.com/facebook/xhp/master/php-lib/core.php -o $VPATH/core.php curl https://raw.githubusercontent.com/facebook/xhp/master/php-lib/init.php -o $VPATH/init.php curl https://raw.githubusercontent.com/facebook/xhp/master/php-lib/html.php -o $VPATH/html.php # Fix the XHP header files so they have the right header. At the time of writing (2014-07-04), the XHP core # files in Github still use the PHP header. The HHVM at this time has XHP built in, but without this change # you'll get a Fatal that looks like the below in error logs: # Fatal error: syntax error, unexpected ':' in /usr/share/nginx/www/core.php on line 18 sed -i 's/<?php/<?hh/' core.php sed -i 's/<?php/<?hh/' init.php sed -i 's/<?php/<?hh/' html.php # Create a test XHP file. printf "<?hh\nrequire_once 'init.php';\n\$href = 'http://www.facebook.com';\necho <a href={\$href}>Facebook</a>;\n" > $VPATH/test_xhp.php # # End XHP setup ## # Database configuration WPPASS=$(randomString 20) mysql_create_database "$DB_PASSWORD" wordpress mysql_create_user "$DB_PASSWORD" wordpress "$WPPASS" mysql_grant_user "$DB_PASSWORD" wordpress wordpress # configuration file updates for i in {1..8} do sed -i "0,/put your unique phrase here/s/put your unique phrase here/$(randomString 50)/" wp-config.php done sed -i 's/database_name_here/wordpress/' wp-config.php sed -i 's/username_here/wordpress/' wp-config.php sed -i "s/password_here/$WPPASS/" wp-config.php # # End Install WordPress # restartServices # Set up pathogen mkdir -p ~/.vim/autoload ~/.vim/bundle curl -Sso ~/.vim/autoload/pathogen.vim https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim # Copy HHVM vim setup into vim config # FIXME: this might be destructive for the vim config, YMMV ln -s /usr/share/hhvm/hack/vim ~/.vim/bundle/hack-vim echo "execute pathogen#infect()" >> ~/.vimrc echo "syntax on" >> ~/.vimrc echo "filetype plugin indent on" >> ~/.vimrc # FIXME this doesn't seem to work on Deb7 goodstuff