# Connecting to the VirtualBox VDI
Username root
Passowrd Sparrow123

# Setup from scratch on Centos7
# Set hostname and basic system changes
hostnamectl set-hostname sparrow.local
cat <<EOT > /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted
EOT
echo "dhclient" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
reboot

yum update -y
yum install epel-release vim htop curl subversion net-tools -y
yum update -y

# PostgreSQL
yum install postgresql postgresql-server postgresql-contrib postgresql-libs -y
systemctl enable postgresql.service
service postgresql initdb
systemctl start postgresql
su - postgres
psql
ALTER USER postgres WITH PASSWORD 'smARt123';
\q
exit

cat <<EOT > /var/lib/pgsql/data/pg_hba.conf
local   all             all                                     peer
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5
EOT

systemctl restart postgresql

#PHP
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
yum install yum-utils -y
yum-config-manager --enable remi-php74
yum install php php-mcrypt php-cli php-gd php-curl php-mysql php-bcmath php-ldap php-zip php-pear php-devel php-fileinfo php-pgsql php-fpm php-mbstring -y
systemctl enable php-fpm.service

cat <<EOT > /etc/php-fpm.d/www.conf
[www]
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 128M
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
EOT


yum install nginx -y
systemctl enable nginx

mkdir -p /var/www/smart/html/public
mkdir -p /var/www/smart/logs
mkdir -p /repo/raw
mkdir -p /repo/resources
mkdir -p /repo/unpacked

cat <<EOT > /var/www/smart/html/public/info.php
<?php 
echo phpinfo();
?>
EOT

mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig

cat << 'EOT' > /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}

http {
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    client_max_body_size 500M;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    include /etc/nginx/conf.d/*.conf;
    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;

        root         /var/www/smart/html/public;
        access_log     /var/www/smart/logs/access_log;
        error_log      /var/www/smart/logs/error_log error;

        include /etc/nginx/default.d/*.conf;
        
       location / {
                try_files $uri $uri/ $uri.php$is_args$query_string;
        }
        index  index.php index.html index.htm;
        location ~ \.(php|phar)(/.*)?$ {
                fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;
                fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
                fastcgi_intercept_errors on;
                fastcgi_index  index.php;
                include        fastcgi_params;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_param  PATH_INFO $fastcgi_path_info;
                fastcgi_buffers 16 16k;
                fastcgi_buffer_size 32k;
                try_files $uri =404;
        }

        rewrite /resource/([A-Za-z0-9-]+)(?:\?(.*))? /app/resource.php?guid=$1&$2 last;
        rewrite /player/([A-Za-z0-9-]+)/play(\?(.+))?$ /modules/lms/player.php?packageId=$1&$2 last;
        rewrite /player/([A-Za-z0-9-]+)/activities?$ /modules/lms/activity-tree.php?packageId=$1 last;
        rewrite /repo/([A-Za-z0-9-]+)/([^?]*)(?:\?(.*))? /modules/lms/repo.php?packageId=$1&file=$2&$3 last;
        rewrite /test/([A-Za-z0-9-]+)/play(\?(.+))? /modules/lms/test-player.php?testId=$1&$2 last;
        rewrite /test/([A-Za-z0-9-]+)/Data(\?(.+))?$ /modules/lms/test-data.php?testId=$1&$2 last;
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}
EOT

chown -R nginx:nginx /var/www/smart/
chown -R nginx:nginx /var/lib/php/session/
chown -R nginx:nginx /repo/

firewall-cmd --add-service=http --permanent
firewall-cmd --reload
systemctl restart nginx
systemctl restart php-fpm
