#!/bin/bash

#
# This is variation of Install-on-Ubuntu.sh showcasing how to use the
# nginx webserver instead of Apache2. We might eventually merge both
# files. Right now expect this file to become outdated/unmaintained
# over time.
#
# This file lacks many comments found in Install-on-Ubuntu.sh, you
# should check that file first to get a basic understanding.
#

# hacks for broken vagrant box
sudo rm -f /var/lib/dpkg/lock
sudo update-locale LANG=en_US.UTF-8
export APT_LISTCHANGES_FRONTEND=none
export DEBIAN_FRONTEND=noninteractive

    sudo apt-get update -qq
    sudo apt-get install -y build-essential cmake g++ libboost-dev libboost-system-dev \
                            libboost-filesystem-dev libexpat1-dev zlib1g-dev\
                            libbz2-dev libpq-dev libproj-dev \
                            postgresql-server-dev-10 postgresql-10-postgis-2.4 \
                            postgresql-contrib-10 \
                            nginx php-fpm php php-pgsql \
                            php-intl python3-setuptools python3-dev python3-pip \
                            python3-psycopg2 python3-tidylib git

    export USERNAME=vagrant
    export USERHOME=/home/vagrant

    chmod a+x $USERHOME

# Setting up PostgreSQL
# ---------------------
#
# Tune the postgresql configuration, see same section in Install-on-Ubuntu.sh

    sudo systemctl restart postgresql

    sudo -u postgres createuser -s $USERNAME
    sudo -u postgres createuser www-data

#
# Setting up the Nginx Webserver
# -------------------------------
#
# You need to configure php-fpm to listen on a Unix socket. Then create Nginx
# configuration to forward localhost:80 requests to that socket.
#


sudo tee /etc/php/7.2/fpm/pool.d/www.conf << EOF_PHP_FPM_CONF
[www]
; Comment out the tcp listener and add the unix socket
;listen = 127.0.0.1:9000
listen = /var/run/php7.2-fpm.sock

; Ensure that the daemon runs as the correct user
listen.owner = www-data
listen.group = www-data
listen.mode = 0666

; Unix user of FPM processes
user = www-data
group = www-data

; Choose process manager type (static, dynamic, ondemand)
pm = ondemand
pm.max_children = 5
EOF_PHP_FPM_CONF




sudo tee /etc/nginx/sites-available/default << EOF_NGINX_CONF
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root $USERHOME/build/website;
    index search.php index.html;
    location / {
        try_files \$uri \$uri/ @php;
    }

    location @php {
        fastcgi_param SCRIPT_FILENAME "\$document_root\$uri.php";
        fastcgi_param PATH_TRANSLATED "\$document_root\$uri.php";
        fastcgi_param QUERY_STRING    \$args;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f \$document_root\$fastcgi_script_name) {
            return 404;
        }
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_index search.php;
        include fastcgi.conf;
    }
}
EOF_NGINX_CONF


sudo sed -i 's:#.*::' /etc/nginx/sites-available/default


#
# Enable the configuration and restart Nginx
#

    sudo systemctl stop apache2 # just in case it's installed as well
    sudo systemctl restart php7.2-fpm nginx

# From here continue in the 'Installing Nominatim' section in
# Install-on-Ubuntu.sh

