#!/bin/bash
# -----------------------------------------------------
# install native stuff
# -----------------------------------------------------
# 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
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-worker
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
# -----------------------------------------------------
# Configure stuff
# -----------------------------------------------------
# unix socket
# echo "
#
# AddHandler php5-fcgi .php
# Action php5-fcgi /php5-fcgi
# Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
# FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
#
# " > /etc/apache2/conf.d/php-fpm.conf
# sed -i -e "s/listen = 127.0.0.1:9000/listen = \/var\/run\/php5-fpm.sock/g" /etc/php5/fpm/pool.d/www.conf
## TCP
# echo "
#
# AddHandler php5-fcgi .php
# Action php5-fcgi /php5-fcgi
# Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
# FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -idle-timeout 250 -pass-header Authorization
#
# " > /etc/apache2/conf.d/php-fpm.conf
# sed -i -e "s/listen = \/var\/run\/php5-fpm.sock/listen = 127.0.0.1:9000/g" /etc/php5/fpm/pool.d/www.conf
# 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
sudo 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 " > /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
sudo echo -e "\n DOSHashTableSize 2048\n DOSPageCount 20 # maximum number of requests for the same page\n DOSSiteCount 300 # total number of requests for any object by the same client IP on the same listener\n DOSPageInterval 1.0 # interval for the page count threshold\n DOSSiteInterval 1.0 # interval for the site count threshold\n DOSBlockingPeriod 10.0 # time that a client IP will be blocked for\n DOSLogDir “/var/log/apache2/evasive”\n DOSEmailNotify root@localhost\n" > /etc/apache2/conf-available/mod-evasive.conf
sudo a2enconf mod-evasive.conf
# DNS Injection
sudo touch /etc/spamhaus.wl
sudo echo -e "\n MS_METHODS POST,PUT,OPTIONS,CONNECT\n MS_WhiteList /etc/spamhaus.wl\n MS_CacheSize 256\n" > /etc/apache2/conf-available/spamhaus.conf
sudo a2enconf spamhauf.conf
# enable modules
sudo a2enmod actions fastcgi alias rewrite headers qos spamhaus evasive cache cache_disk ssl
# 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