#!/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