Configuring Debian 8 (Jessie) VPS

Got VPS from transip.nl for some time now and had reinstalled couple of times trying to achieve idealistic server.

Used previous version and got stumbled upon many problems, and I was used to Ubuntu out-of-the-box-make-my-life-easy scripts.

This about what I did; a reminder when I have to start over again.

sudo aptitude update && sudo aptitude full-upgrade

Taskel

Use Tasksel to install SSH

tasksel

Passwordless SSH logins

https://www.cs.utah.edu/~bigler/code/sshkeys.html

Fix System Language

# Verify which locales are installed and generated in your system
locale -a

# edit locale
nano /etc/default/locale 

# OR
# set to: en_GB.UTF-8
# LANGUAGE: en:nl:en
dpkg-reconfigure locales

# reboot to take effect
reboot

Enable terminal colors

for root edit: ~/.bashrc

export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'

On tab colored list

edit/create: ~/.inputrc
or permanent on: /etc/inputrc

set colored-stats on

Create custom command

cls enhanced ls command with file permissions as numbers

nano /usr/local/bin/cls
chmod +x /usr/local/bin/cls

file: /usr/local/bin/cls

#! /bin/sh
ls --color -l $1 | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}'

Install SUDO

Log in with root.

apt-get install sudo
adduser admin sudo
nano /etc/sudoers

file: /etc/sudoers

%sudo  ALL=(ALL:ALL) ALL
admin  ALL=(ALL:ALL) ALL

Look source

Uncomplicated Firewall

apt-get install ufw -y
ufw allow ssh
ufw allow dns
ufw allow http
ufw allow https
ufw allow mail

ufw enable
ufw status verbose

reboot

Install NGINX

apt-get install nginx

Install PHP for Debian 8 (Jessie)

PHP 7.0.0 can be installed using the Dotdeb repository.

Add these two lines to your /etc/apt/sources.list file:

deb http://packages.dotdeb.org jessie all
deb-src http://packages.dotdeb.org jessie all

Add the GPG key:

wget https://www.dotdeb.org/dotdeb.gpg
sudo apt-key add dotdeb.gpg

Install PHP 7:

sudo apt-get update
sudo apt-get install php7.0

Create custom directory structure for nginx configurations and vhosts

cd /var/www
mkdir -p config/nginx/{available,enabled,conf.d,ssl}
echo "include /var/www/config/nginx/enabled/default;" > /var/www/config/nginx/nginx.conf
echo "include /var/www/config/nginx/enabled/*.conf;" >> /var/www/config/nginx/nginx.conf
mkdir -p config/multi-node
mkdir -p vhosts/_default_/httpdocs
mkdir -p vhosts/sylo.space/httpdocs
mkdir -p vhosts/mizu.work/httpdocs
mkdir -p vhosts/mdstn.com/httpdocs

Check out default page and move to proper location

cat /etc/nginx/sites-available/default | grep root

file: /var/www/config/nginx/snippets/php7.0-fpm.conf

location ~ \.php(/|$) {
	try_files      $uri = 404;
	
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;

    include fastcgi_params;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param HTTPS off;

    fastcgi_buffers 16 16k;
    fastcgi_buffer_size 32k;
}