summaryrefslogtreecommitdiffstats
path: root/Services/postgres/run.sh
diff options
context:
space:
mode:
authorstartxfr <clarue@startx.fr>2015-11-30 03:25:20 +0100
committerstartxfr <clarue@startx.fr>2015-11-30 03:25:20 +0100
commitff24be233ac7b10221142675b205b347b5588fd7 (patch)
tree3cef32fbae043936558b528f9e421109ef547614 /Services/postgres/run.sh
parentd3189d55206417557b03fde732693aaffca54cf8 (diff)
downloadphpmyadmin-ff24be233ac7b10221142675b205b347b5588fd7.tar.gz
phpmyadmin-ff24be233ac7b10221142675b205b347b5588fd7.tar.bz2
phpmyadmin-ff24be233ac7b10221142675b205b347b5588fd7.tar.xz
phpmyadmin-ff24be233ac7b10221142675b205b347b5588fd7.zip
reshape of postgresql
Diffstat (limited to 'Services/postgres/run.sh')
-rw-r--r--Services/postgres/run.sh194
1 files changed, 194 insertions, 0 deletions
diff --git a/Services/postgres/run.sh b/Services/postgres/run.sh
new file mode 100644
index 0000000..e5a70ec
--- /dev/null
+++ b/Services/postgres/run.sh
@@ -0,0 +1,194 @@
+#!/bin/bash
+source /bin/sx-lib.sh
+
+function check_postgresql_environment {
+ check_environment
+ if [ ! -v DATA_PATH ]; then
+ DATA_PATH="/data/postgresql"
+ export DATA_PATH
+ fi
+ if [ ! -v LOG_PATH ]; then
+ LOG_PATH="/data/logs/postgresql"
+ export LOG_PATH
+ fi
+}
+
+function display_container_postgresql_header {
+ echo "+====================================================="
+ echo "| Container : $HOSTNAME"
+ echo "| OS : $(</etc/redhat-release)"
+ echo "| Engine : $(postgres --version)"
+ if [ -v CONTAINER_TYPE ]; then
+ echo "| Type : $CONTAINER_TYPE"
+ fi
+ if [ -v CONTAINER_INSTANCE ]; then
+ echo "| Instance : $CONTAINER_INSTANCE"
+ fi
+ if [ -v CONTAINER_SERVICE ]; then
+ echo "| Service : $CONTAINER_SERVICE"
+ fi
+ if [ -v DATA_PATH ]; then
+ echo "| Data path : $DATA_PATH"
+ fi
+ if [ -v LOG_PATH ]; then
+ echo "| Log path : $LOG_PATH"
+ fi
+ if [ -v LOADSQL_PATH ]; then
+ echo "| sql path : $LOADSQL_PATH"
+ fi
+ echo "+====================================================="
+}
+
+
+# Begin configuration before starting daemonized process
+# and start generating host keys
+function begin_config {
+ echo "=> BEGIN POSTGRESQL CONFIGURATION"
+ if [[ ! -d $DATA_PATH ]]; then
+ echo "log directory $DATA_PATH not found"
+ mkdir -p $DATA_PATH; chmod 0774 $DATA_PATH
+ echo "data directory $DATA_PATH CREATED"
+ else
+ echo "data directory $DATA_PATH EXIST"
+ fi
+ if [[ ! -d $LOG_PATH ]]; then
+ echo "log directory $LOG_PATH not found"
+ mkdir -p $LOG_PATH; chmod 0774 $LOG_PATH
+ echo "log directory $LOG_PATH CREATED"
+ else
+ echo "log directory $LOG_PATH EXIST"
+ fi
+ chmod 0774 $DATA_PATH $LOG_PATH;
+ chown postgres:postgres $DATA_PATH $LOG_PATH;
+ if [[ -d $LOADSQL_PATH ]]; then
+ echo "sql directory $LOADSQL_PATH EXIST"
+ chmod 0774 $LOADSQL_PATH;
+ chown postgres:postgres $LOADSQL_PATH
+ fi
+ if [ "$(ls -A $DATA_PATH)" ]; then
+ echo "postgresql directory is initialized"
+ echo "Reusing PostgreSQL in $DATA_PATH ..."
+ else
+ echo "postgresql directory is empty or uninitialized"
+ echo "Installing PostgreSQL in $DATA_PATH ..."
+ su - postgres -c "initdb -D $DATA_PATH"
+ export POSTGRESQL_CONF=$DATA_PATH/postgresql.conf
+ echo "" >> $POSTGRESQL_CONF
+ echo "log_directory = '$LOG_PATH'" >> $POSTGRESQL_CONF
+ echo "log_connections = on" >> $POSTGRESQL_CONF
+ echo "log_hostname = on" >> $POSTGRESQL_CONF
+ echo "log_line_prefix = '<%u@%r%%%d>'" >> $POSTGRESQL_CONF
+ echo "Installing PostgreSQL in $DATA_PATH is DONE !"
+ fi
+}
+
+function config_startserver {
+ echo "start database for initial setup"
+ su - postgres -c "nohup /usr/bin/postgres -D $DATA_PATH >$STARTUPLOG 2>&1 </dev/null &"
+ sleep 6
+}
+
+function config_stopserver {
+ echo "stop database after initial setup"
+ killall postgres
+ sleep 3
+}
+
+
+function config_createadmin {
+ PASS=${POSTGRESQL_ROOT_PASSWORD:-$(pwgen -s 12 1)}
+ _word=$( [ ${POSTGRESQL_ROOT_PASSWORD} ] && echo "preset" || echo "random" )
+ echo "Creating PostgreSQL admin user with ${_word} password"
+ su - postgres -c "psql -U postgres -d postgres -c \"alter user postgres with password '$PASS';\""
+ echo ""
+ echo " +------------------------------------------------------"
+ echo " | You can now connect to this server using:"
+ echo " | user : postgres"
+ echo " | password : $PASS"
+ echo " | shell : postgres -U postgres -p$PASS -h<host> -P<port>"
+ echo " +------------------------------------------------------"
+ echo ""
+}
+
+function config_createuser {
+ if [[ -n "$POSTGRESQL_USER" ]]; then
+ echo "Creating PostgreSQL $POSTGRESQL_USER user with preset password"
+ su - postgres -c "psql -U postgres -d postgres -c \"CREATE USER '$POSTGRESQL_USER' WITH PASSWORD '$POSTGRESQL_PASSWORD';\""
+ echo ""
+ echo " +------------------------------------------------------"
+ echo " | You can now connect to this server using:"
+ echo " | user : $POSTGRESQL_USER"
+ echo " | password : $POSTGRESQL_PASSWORD"
+ echo " | shell : mysql -u$POSTGRESQL_USER -p$POSTGRESQL_PASSWORD -h<host> -P<port>"
+ echo " +------------------------------------------------------"
+ echo ""
+ fi
+}
+
+function config_createdatabase {
+ if [[ -n "$POSTGRESQL_DATABASE" ]]; then
+ echo "processing database " $POSTGRESQL_DATABASE
+ if [[ ! -d $DIR_DB_DATA/$POSTGRESQL_DATABASE ]]; then
+ echo "database " $POSTGRESQL_DATABASE " doesn't exist"
+ su - postgres -c "psql -U postgres -d postgres -c \"CREATE DATABASE $POSTGRESQL_DATABASE;\""
+ echo "database " $POSTGRESQL_DATABASE " CREATED"
+ else
+ echo "database " $POSTGRESQL_DATABASE " already exist"
+ fi
+ else
+ echo "no database to create"
+ fi
+}
+
+function config_importsql {
+ if [[ -n "$LOADSQL_PATH" ]]; then
+ echo "import sql data into " $POSTGRESQL_DATABASE
+ if [[ -d $LOADSQL_PATH ]]; then
+ SCHEMALIST=$(find $LOADSQL_PATH/schema-*.sql -type f -printf "%f\n")
+ for SCHEMAFILE in $SCHEMALIST; do
+ echo -n "Creating schema " $SCHEMAFILE " ... "
+ su - postgres -c "psql -U postgres -d postgres < $LOADSQL_PATH/$SCHEMAFILE"
+ echo " DONE"
+ done
+ DATALIST=$(find $LOADSQL_PATH/data-*.sql -type f -printf "%f\n")
+ for DATAFILE in $DATALIST; do
+ echo -n "Creating data " $DATAFILE " ... "
+ su - postgres -c "psql -U postgres -d postgres < $LOADSQL_PATH/$DATAFILE"
+ echo " DONE"
+ done
+ fi
+ else
+ echo "no sql data to import into " $POSTGRESQL_DATABASE
+ fi
+}
+
+
+# End configuration process just before starting daemon
+function end_config {
+ echo "=> END POSTGRESQL CONFIGURATION"
+}
+
+# Start the postgresql server as a deamon and execute it inside
+# the running shell
+function start_daemon {
+ echo "=> Starting postgresql daemon ..." | tee -a $STARTUPLOG
+ display_container_started | tee -a $STARTUPLOG
+ su - postgres -c "/usr/bin/postgres -D $DATA_PATH "
+}
+
+
+if [[ "$0" == *"run.sh" && ! $1 = "" ]];then
+ eval "$@";
+fi
+
+check_postgresql_environment | tee -a $STARTUPLOG
+display_container_postgresql_header | tee -a $STARTUPLOG
+begin_config | tee -a $STARTUPLOG
+config_startserver | tee -a $STARTUPLOG
+config_createadmin | tee -a $STARTUPLOG
+config_createuser | tee -a $STARTUPLOG
+config_createdatabase | tee -a $STARTUPLOG
+config_importsql | tee -a $STARTUPLOG
+config_stopserver | tee -a $STARTUPLOG
+end_config | tee -a $STARTUPLOG
+start_daemon