Commit e1648b98 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

debian scripts use either default db properties (from...

debian scripts use either default db properties (from persist/main/src/resource/db.properties file) or user defined db properties (/etc/minerva/db.properties)
parent 343dda7d
......@@ -70,6 +70,14 @@ then
exit 1;
fi
#default connection params (if /etc/minerva/db.properties is not defined)
DB_HOST=`cat persist/src/main/resources/db.properties |grep "uri" |cut -f3 -d"/" |cut -f1 -d":"`
DB_PORT=`cat persist/src/main/resources/db.properties |grep "uri" |cut -f3 -d"/" |cut -f2 -d":"`
DB_DATABASE_NAME=`cat persist/src/main/resources/db.properties |grep "uri" |cut -f4 -d"/"`
DB_USERNAME=`cat persist/src/main/resources/db.properties |grep "username" |cut -f2 -d"="`
DB_PASSWORD=`cat persist/src/main/resources/db.properties |grep "password" |cut -f2 -d"="`
#------------------------------------------
# Now we have all db schema diff files. Let's start preparing
# debian package
......@@ -107,11 +115,20 @@ sed -i "s/__LOG_FILE__/$LOG_FILE/g" common.sh
#in the filesystem where package is installed
sed -i "s/__DB_SCRIPT_DIR__/$DB_SCRIPT_DIR/g" common.sh
sed -i "s/__DB_HOST__/$DB_HOST/g" common.sh
sed -i "s/__DB_PORT__/$DB_PORT/g" common.sh
sed -i "s/__DB_DATABASE_NAME__/$DB_DATABASE_NAME/g" common.sh
sed -i "s/__DB_USERNAME__/$DB_USERNAME/g" common.sh
sed -i "s/__DB_PASSWORD__/$DB_PASSWORD/g" common.sh
sed -i -e "1r common.sh" debian/postinst
sed -i -e "1r common.sh" debian/postrm
sed -i -e "1r common.sh" debian/preinst
sed -i -e "1r common.sh" debian/prerm
#put scripts into $DB_SCRIPT_DIR (it's a bit different than varaiable because it's not
#escaped
echo db_0.sql /usr/share\/minerva/schema >> debian/install
......
......@@ -27,3 +27,74 @@ if [ "$TOMCAT8_OK" != "" ];
then
TOMCAT_PACKAGE='tomcat8'
fi
POSTGRES_OK=$(dpkg-query -W --showformat='${Status}\n' postgresql|grep "install ok installed")
DB_HOST="__DB_HOST__"
DB_PORT="__DB_PORT__"
DB_DATABASE_NAME="__DB_DATABASE_NAME__"
DB_USERNAME="__DB_USERNAME__"
DB_PASSWORD="__DB_PASSWORD__"
if [ -f /etc/minerva/db.properties ]; then
DB_PROPERTIES_FILE="/etc/minerva/db.properties"
log "$DB_PROPERTIES_FILE file found"
DB_HOST=`cat $DB_PROPERTIES_FILE |grep "uri" |cut -f3 -d"/" |cut -f1 -d":"`
DB_PORT=`cat $DB_PROPERTIES_FILE |grep "uri" |cut -f3 -d"/" |cut -f2 -d":"`
DB_DATABASE_NAME=`cat $DB_PROPERTIES_FILE |grep "uri" |cut -f4 -d"/"`
DB_USERNAME=`cat $DB_PROPERTIES_FILE |grep "username" |cut -f2 -d"="`
DB_PASSWORD=`cat $DB_PROPERTIES_FILE |grep "password" |cut -f2 -d"="`
fi
#if we connect to something that is not in localhost then we need to provide login and password
#because we won't have access to it as postgres user
if [ "$DB_HOST" != "localhost" ] && [ "$DB_HOST" != "127.0.0.1" ]
then
log "DB is located on the remote server: $DB_HOST"
IS_REMOTE_DB=true
else
log "DB is at localhost: $DB_HOST"
IS_REMOTE_DB=false
fi
exec_sql(){
log "Execute SQL : '$1'"
echo "$1" |PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME $DB_DATABASE_NAME >>$LOG_FILE 2>>$LOG_FILE
}
exec_sql_file(){
log "Execute SQL file: $1"
PGPASSWORD=$DB_PASSWORD psql -h $DB_HOST -p $DB_PORT -U $DB_USERNAME $DB_DATABASE_NAME -f $1 >>$LOG_FILE 2>>$LOG_FILE
}
create_db(){
if [ $IS_REMOTE_DB = false ]
then
su - postgres -c "createuser -d -r -s -p $DB_PORT $DB_USERNAME" >>$LOG_FILE 2>>$LOG_FILE
log "User created"
su - postgres -c "echo \"ALTER USER $DB_USERNAME WITH PASSWORD '$DB_PASSWORD';\"| psql -p $DB_PORT " >>$LOG_FILE 2>>$LOG_FILE
log "User credentials updated"
su - postgres -c "createdb -p $DB_PORT -O $DB_USERNAME $DB_DATABASE_NAME" >>$LOG_FILE 2>>$LOG_FILE
log "Db created"
hba_conf=`su - postgres -c "psql -t -P format=unaligned -c 'show hba_file';"`;
cp $hba_conf $hba_conf".bac"
cat $hba_conf".bac" |grep -v "all[ \t]*peer" >$hba_conf
printf "local all all md5\n" >>$hba_conf
invoke-rc.d postgresql restart
else
log "HOST is remote, assuming db and user are already there"
fi
}
stop_postgres() {
if [ $IS_REMOTE_DB = false ]
then
invoke-rc.d postgresql stop || true
fi
}
start_postgres() {
if [ $IS_REMOTE_DB = false ]
then
invoke-rc.d postgresql restart
fi
}
......@@ -21,29 +21,21 @@ set -e
case "$1" in
configure)
invoke-rc.d postgresql start
start_postgres
#if we install
if [ "$OLD_VERSION" = "" ]
then
su - postgres -c "createuser -d -r -s map_viewer" >>$LOG_FILE 2>>$LOG_FILE
su - postgres -c "echo \"ALTER USER map_viewer WITH PASSWORD '123qweasdzxc';\"| psql" >>$LOG_FILE 2>>$LOG_FILE
su - postgres -c "createdb -O map_viewer map_viewer" >>$LOG_FILE 2>>$LOG_FILE
hba_conf=`su - postgres -c "psql -t -P format=unaligned -c 'show hba_file';"`;
cp $hba_conf $hba_conf".bac"
cat $hba_conf".bac" |grep -v "all[ \t]*peer" >$hba_conf
printf "local all all md5\n" >>$hba_conf
invoke-rc.d postgresql restart
create_db
#install base version of the framework
su - postgres -c "psql map_viewer -f $DB_SCRIPT_DIR/db_0.sql" >>$LOG_FILE 2>>$LOG_FILE
exec_sql_file "$DB_SCRIPT_DIR/db_0.sql"
#install patch to current version
su - postgres -c "psql map_viewer -f $DB_SCRIPT_DIR/db_0_to_$CURRENT_VERSION\".sql\"" >>$LOG_FILE 2>>$LOG_FILE
exec_sql_file "$DB_SCRIPT_DIR/db_0_to_${CURRENT_VERSION}.sql"
else
#if we update the package
su - postgres -c "psql map_viewer -f $DB_SCRIPT_DIR/db_$OLD_VERSION\"_to_\"$CURRENT_VERSION\".sql\"" >>$LOG_FILE 2>>$LOG_FILE
exec_sql_file "$DB_SCRIPT_DIR/db_${OLD_VERSION}_to_${CURRENT_VERSION}.sql"
fi
#print a disclaimer
......
......@@ -10,15 +10,6 @@
log "Running postrm" $1 $2;
log "Checking postgresql...";
POSTGRES_OK=$(dpkg-query -W --showformat='${Status}\n' postgresql|grep "install ok installed")
if [ "" = "$POSTGRES_OK" ]
then
log "postgresql not found";
else
log "postgresql found";
fi
# we execute it here because if some packages are missing then dpkg will return non-zero exit code
set -e
......@@ -26,34 +17,41 @@ case "$1" in
upgrade)
rm -rf /var/lib/$TOMCAT_PACKAGE/webapps/minerva
rm -rf /var/lib/$TOMCAT_PACKAGE/webapps/minerva.war
# invoke-rc.d $TOMCAT_PACKAGE start || true
# invoke-rc.d postgresql start || true
;;
remove)
rm -rf /var/lib/$TOMCAT_PACKAGE/webapps/minerva
rm -rf /var/lib/$TOMCAT_PACKAGE/webapps/minerva.war
invoke-rc.d $TOMCAT_PACKAGE start || true
if [ "" = "$POSTGRES_OK" ]
if [ $IS_REMOTE_DB = true ]
then
log "No postgresql package found.";
exec_sql "drop owned by $DB_USERNAME;"
else
invoke-rc.d postgresql start
su - postgres -c "dropdb map_viewer"
su - postgres -c "dropuser map_viewer"
if [ "" = "$POSTGRES_OK" ]
then
log "No postgresql package found.";
else
start_postgres
su - postgres -c "dropdb -p $DB_PORT $DB_DATABASE_NAME"
su - postgres -c "dropuser -p $DB_PORT $DB_USERNAME"
fi
fi
;;
abort-install)
;;
abort-install)
invoke-rc.d $TOMCAT_PACKAGE start || true
if [ "" = "$POSTGRES_OK" ];
if [ $IS_REMOTE_DB = true ]
then
log "No postgresql package found.";
exec_sql "drop owned by $DB_USER"
else
invoke-rc.d postgresql restart
su - postgres -c "dropdb map_viewer"
su - postgres -c "dropuser map_viewer"
if [ "" = "$POSTGRES_OK" ];
then
log "No postgresql package found.";
else
start_postgres
su - postgres -c "dropdb -p $DB_PORT $DB_DATABASE_NAME"
su - postgres -c "dropuser -p $DB_PORT $DB_USERNAME"
fi
fi
;;
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
......
......@@ -24,12 +24,12 @@ ln -s $path $DEFAULT_JAVA_SYMLINK
case "$1" in
install|upgrade)
invoke-rc.d $TOMCAT_PACKAGE stop || true
invoke-rc.d postgresql stop || true
invoke-rc.d $TOMCAT_PACKAGE stop || true
stop_postgres
;;
abort-upgrade)
invoke-rc.d $TOMCAT_PACKAGE stop || true
invoke-rc.d postgresql stop || true
invoke-rc.d $TOMCAT_PACKAGE stop || true
stop_postgres
;;
*)
echo "preinst called with unknown argument \`$1'" >&2
......
......@@ -17,20 +17,20 @@ set -e
log Running prerm $1 $2;
invoke-rc.d postgresql start || true
TIMESTAMP=$(date +"%F")
TIMESTAMP=$(date +"%F_%H%M%S")
DUMP_FILE=$DB_SCRIPT_DIR/dump_$TIMESTAMP
log "dump map_viewer database to file $DUMP_FILE"
su - postgres -c "pg_dump map_viewer" | gzip > "$DUMP_FILE".gz
log "dump $DB_DATABASE_NAME database to file $DUMP_FILE"
PGPASSWORD=$DB_PASSWORD pg_dump -h $DB_HOST -p $DB_PORT -U $DB_USERNAME $DB_DATABASE_NAME | gzip > "$DUMP_FILE".gz
case "$1" in
upgrade)
invoke-rc.d $TOMCAT_PACKAGE stop || true
invoke-rc.d postgresql stop || true
invoke-rc.d $TOMCAT_PACKAGE stop || true
stop_postgres
;;
remove)
invoke-rc.d $TOMCAT_PACKAGE stop || true
invoke-rc.d postgresql stop || true
invoke-rc.d $TOMCAT_PACKAGE stop || true
stop_postgres
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
......
......@@ -35,6 +35,24 @@
"through": "2.3.8"
}
},
"MolStar": {
"version": "git://github.com/davidhoksza/MolStar.git#702c7417cd3dffdb45554b54ce49e27bc881b109",
"dev": true,
"requires": {
"ProtVista": "git://github.com/davidhoksza/protvista.git#4e4bb737ba1e183291505bd25f8bae2e651ce21e",
"downloadjs": "1.4.7",
"jquery": "3.3.1",
"litemol": "github:dsehnal/LiteMol#67556b0de0d2428f9494136758cbf8a662f66412"
},
"dependencies": {
"jquery": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz",
"integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==",
"dev": true
}
}
},
"ProtVista": {
"version": "git://github.com/davidhoksza/protvista.git#4e4bb737ba1e183291505bd25f8bae2e651ce21e",
"dev": true,
......@@ -2365,26 +2383,6 @@
}
}
},
"molstar": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/molstar/-/molstar-1.0.0.tgz",
"integrity": "sha1-2e0KopdXq1iOLnbtYUOHiZVi8rA=",
"dev": true,
"requires": {
"ProtVista": "git://github.com/davidhoksza/protvista.git#4e4bb737ba1e183291505bd25f8bae2e651ce21e",
"downloadjs": "1.4.7",
"jquery": "3.3.1",
"litemol": "github:dsehnal/LiteMol#67556b0de0d2428f9494136758cbf8a662f66412"
},
"dependencies": {
"jquery": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz",
"integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==",
"dev": true
}
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment