GeoLite/installer/app-install.sh

93 lines
2.2 KiB
Bash

#!/bin/bash -e
APP_DB='geolite'
APP_DB_PASS=$(< /dev/urandom tr -dc _A-Za-z0-9 | head -c32);
ADMIN_APP_PASS='geolite';
WWW_DIR='/var/www/html'
DATA_DIR='/var/www/data'
#CACHE_DIR='/var/www/cache'
HNAME=$(hostname -f)
touch /root/auth.txt
export DEBIAN_FRONTEND=noninteractive
if [ ! -f /usr/bin/createdb ]; then
echo "Error: Missing PG createdb! First run ./installer/postgres.sh"; exit 1;
fi
if [ ! -d installer ]; then
echo "Usage: ./installer/app-installer.sh"
exit 1
fi
if [ $# -eq 1 ]; then
WWW_DIR="${1}"
fi
mkdir -p "${WWW_DIR}"
# 1. Install packages (assume PG is preinstalled)
apt-get -y install apache2 libapache2-mod-php libapache2-mod-fcgid php-{pgsql,mbstring,xml,zip,gd,curl} \
gdal-bin curl \
python3 python3-psycopg2
a2enmod ssl headers expires fcgid cgi rewrite
ADMIN_APP_PASS_ENCODED=$(php -r "echo password_hash('${ADMIN_APP_PASS}', PASSWORD_DEFAULT);")
sed -i.save "s|ADMIN_APP_PASS|${ADMIN_APP_PASS_ENCODED}|" installer/init.sql
# 2. Create db
su postgres <<CMD_EOF
createdb ${APP_DB}
createuser -sd ${APP_DB}
psql -c "alter user ${APP_DB} with password '${APP_DB_PASS}'"
psql -c "ALTER DATABASE ${APP_DB} OWNER TO ${APP_DB}"
psql -d ${APP_DB} < installer/setup.sql
psql -d ${APP_DB} < installer/init.sql
CMD_EOF
cat >incl/const.php <<CAT_EOF
<?php
const DB_HOST="localhost";
const DB_NAME="${APP_DB}";
const DB_USER="${APP_DB}";
const DB_PASS="${APP_DB_PASS}";
const DB_PORT = 5432;
const DB_SCMA='public';
const SESS_USR_KEY = 'qgis_user';
const WWW_DIR = '${WWW_DIR}';
const DATA_DIR = "${DATA_DIR}";
CAT_EOF
mkdir -p "${DATA_DIR}/uploads"
#mkdir -p "${WWW_DIR}/downloads"
#mkdir -p "${WWW_DIR}/temp"
chown -R www-data:www-data "${DATA_DIR}"
cp -r . ${WWW_DIR}/
chown -R www-data:www-data ${WWW_DIR}
rm -rf ${WWW_DIR}/{installer}
sed "
s|\$HNAME|$HNAME|
s|\$WWW_DIR|$WWW_DIR|
" < installer/apache2.conf > /etc/apache2/sites-available/000-default.conf
PHP_VER=$(php -version | head -n 1 | cut -f2 -d' ' | cut -f1,2 -d.)
sed -i.save '
s/upload_max_filesize = .*/upload_max_filesize = 10M/
s/post_max_size = .*/post_max_size = 11M/
' /etc/php/${PHP_VER}/apache2/php.ini
a2enmod ssl rewrite
systemctl restart apache2
# save 1Gb of space
apt-get -y clean all