#!/bin/bash
# -----------------------------------------------------
# install native stuff
# -----------------------------------------------------
# update
sudo apt-get update && sudo apt-get upgrade
# install the repo adding scripts
sudo apt-get install software-properties-common python-software-properties
# add repos
# sudo add-apt-repository ppa:richarvey/nodejs
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) main universe restricted multiverse"
sudo add-apt-repository "deb-src http://archive.ubuntu.com/ubuntu $(lsb_release -sc) main universe restricted multiverse"
sudo apt-add-repository ppa:brightbox/ruby-ng
sudo add-apt-repository ppa:ondrej/apache2
# sudo add-apt-repository ppa:ondrej/php5-5.6 # too many issues
sudo add-apt-repository ppa:ondrej/php5
sudo add-apt-repository ppa:ondrej/mysql-5.6
# update
sudo apt-get update && sudo apt-get upgrade
# install
# dev headers
sudo apt-get install libcurl4-openssl-dev libssl-dev apache2-threaded-dev libapr1-dev libaprutil1-dev libapr1-dev libaprutil1-dev ruby2.1-dev
sudo apt-get install libmysqlclient-dev libmagickwand-dev libsqlite3-dev libxml2-dev libxslt1-dev
# regular packages
sudo apt-get install apache2-mpm-event
sudo apt-get install libapache2-mod-qos libapache2-mod-spamhaus libapache2-mod-fastcgi libapache2-mod-evasive
sudo apt-get install curl php5-fpm php5 php5-cli php5-curl php5-gd php5-imagick php-apc php5-mysql
sudo apt-get install mysql-server mysql-client sqlite3
sudo apt-get install imagemagick
sudo apt-get install phpmyadmin
sudo apt-get install sshpass
sudo apt-get install libxml2 g++
sudo apt-get install git ruby2.1 wkhtmltopdf nodejs npm at
# -----------------------------------------------------
# Configure stuff
# -----------------------------------------------------
# php
sudo sed -i -e "s/listen = \/var\/run\/php5-fpm.sock/listen = 127.0.0.1:9000/g" /etc/php5/fpm/pool.d/www.conf
# secure mysql install
sudo mysql_secure_installation
# node
sudo ln -s /usr/bin/nodejs /usr/bin/node
# ruby
update-alternatives --set gem /usr/bin/gem2.1
update-alternatives --set ruby /usr/bin/ruby2.1
# Apache
# ------
# config modules
# php fpm
echo -e "\n AddHandler php5-fcgi .php\n Action php5-fcgi /php5-fcgi\n Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi\n FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -idle-timeout 250 -pass-header Authorization\n \nRequire all granted\n \n " sudo tee /etc/apache2/conf-available/php-fpm.conf
sudo a2enconf php-fpm.conf
# DDoS Protection
sudo mkdir -p /var/log/apache2/evasive
sudo chown -R www-data:root /var/log/apache2/evasive
echo -e "\n DOSHashTableSize 2048\n DOSPageCount 20\n DOSSiteCount 300\n DOSPageInterval 1.0\n DOSSiteInterval 1.0\n DOSBlockingPeriod 10.0\n DOSLogDir “/var/log/apache2/evasive”\n DOSEmailNotify root@localhost\n" | sudo tee /etc/apache2/conf-available/mod-evasive.conf
sudo a2enconf mod-evasive.conf
# DNS Injection
sudo touch /etc/spamhaus.wl
echo -e "\n MS_METHODS POST,PUT,OPTIONS,CONNECT\n MS_WhiteList /etc/spamhaus.wl\n MS_CacheSize 256\n" | sudo tee /etc/apache2/conf-available/spamhaus.conf
sudo a2enconf spamhauf.conf
# enable modules
sudo a2enmod actions fastcgi alias rewrite expires headers qos spamhaus evasive cache cache_disk ssl proxy proxy_fcgi
# phpmyadmin apache 2.4
sudo cp /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin.conf
# -----------------------------------------------------
# Install Gems
# -----------------------------------------------------
# install some gems - yes gem1.9.3 - wtf - use rbenv
sudo gem install bundler
# install passenger
sudo gem install passenger
sudo passenger-install-apache2-module
sudo touch /etc/apache2/mods-available/passenger.load
sudo touch /etc/apache2/mods-available/passenger.confc
# -----------------------------------------------------
# Node.js related
# -----------------------------------------------------
sudo npm install bower -g
# -----------------------------------------------------
# Restart stuff
# -----------------------------------------------------
sudo service apache2 restart
sudo service php5-fpm restart