#!/bin/bash function new_line { echo -e "\n" } set -e # Donwload the last version if [ ! -f "WMarket.war" ]; then # Use GitHub API to get latest release # 1.- Check GitHub API # 2.- Get browser_download_url # 3.- Remove json field, quotes, colons and white spaces export URL_DOWNLOAD_LATEST=`curl https://api.github.com/repos/conwetlab/WMarket/releases/latest 2>/dev/null | grep browser_download_url | sed 's/.*"browser_download_url": "\(.*\)".*/\1/'` wget $URL_DOWNLOAD_LATEST fi # Check the system distribution DIST="" if [ -f "/etc/centos-release" ]; then # /etc/centos-release only exists in Debian DIST="rhel" elif [ -f "/etc/issue" ]; then # /etc/issue exists in several distributions CONTENT=$(cat /etc/issue) if [[ $CONTENT == *Ubuntu* || $CONTENT == *Debian* ]]; then DIST="deb" fi fi if [ $DIST == "deb" ]; then # Install apt-get update apt-get -y install unzip set +e # Install MySQL apt-get -y install mysql-server mysql-client # Install Java apt-get -y install openjdk-7-jdk # Install Tomcat apt-get -y install tomcat7 tomcat7-docs tomcat7-admin set -e WEBAPPS_PATH=/var/lib/tomcat7/webapps # Start up service mysql restart service tomcat7 restart elif [ $DIST == "rhel" ]; then yum -y install unzip set +e # Install MySQL rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm yum -y install mysql-community-server # Install java yum -y install java-1.7.0-openjdk-devel # Install tomcat yum install -y tomcat tomcat-webapps tomcat-admin-webapps set -e # Database Configuration & Start Up systemctl start mysqld /usr/bin/mysql_secure_installation # Tomcat Start Up systemctl start tomcat # Variable definitions WEBAPPS_PATH=/usr/share/tomcat/webapps else echo "Your operative system is not supported by this script" exit 1 fi # Ask MySQL credentials new_line new_line echo "> About to create 'marketplace' database. Please, provide MySQL credentials with administrative rights (i.e. root user)" read -p ">> User: " MYSQLUSR read -s -p ">> Password: " MYSQLPASS # Create Marketplace Database mysqladmin -u $MYSQLUSR -p$MYSQLPASS create marketplace # Unzip WMarket unzip -q WMarket.war -d WMarket # Configure Marketplace sed -i "s|^jdbc.username.*$|jdbc.username=$MYSQLUSR|g" WMarket/WEB-INF/classes/properties/database.properties sed -i "s|^jdbc.password.*$|jdbc.password=$MYSQLPASS|g" WMarket/WEB-INF/classes/properties/database.properties # Index new_line read -p "> Path to store indexes: " PATH_INDEX sed -i "s|lucene.IndexPath=.*$|lucene.IndexPath=$PATH_INDEX|g" WMarket/WEB-INF/classes/properties/marketplace.properties mkdir $PATH_INDEX chmod a+rw $PATH_INDEX # Media Files read -p "> Path to store media files: " PATH_MEDIA read -p "> Max size for media files (in bytes): " MAX_SIZE_MEDIA_FILES sed -i "s|^media.folder.*$|media.folder=$PATH_MEDIA|g" WMarket/WEB-INF/classes/properties/marketplace.properties sed -i "s|^media.maxSize.*$|media.maxSize=$MAX_SIZE_MEDIA_FILES|g" WMarket/WEB-INF/classes/properties/marketplace.properties mkdir $PATH_MEDIA chmod a+rw $PATH_MEDIA # Descriptions Autoupdate read -p "> Period to update descriptions (in seconds): " PERIOD_UPDATE_DESCRIPTIONS sed -i "s|^descriptions.updatePeriod.*$|descriptions.updatePeriod=$PERIOD_UPDATE_DESCRIPTIONS|g" WMarket/WEB-INF/classes/properties/marketplace.properties # OAuth2? read -e -n 1 -p "> Do you want to use OAuth2 to authenticate users? (Y/n): " OAUTH2 if [ "$OAUTH2" == "Y" ] || [ "$OAUTH2" == "y" ]; then # Ask for OAuth2 credentials read -p ">> OAuth2 Server: " OAUTH2_SERVER read -p ">> OAuth2 Key: " OAUTH2_KEY read -p ">> OAuth2 Secret: " OAUTH2_SECRET read -p ">> Provider Role: " OAUTH2_PROVIDER_ROLE read -p ">> WMarket External IP: " EXTERNAL_IP # Replace configuration sed -i "s|^oauth2.server.*$|oauth2.server=$OAUTH2_SERVER|g" WMarket/WEB-INF/classes/properties/marketplace.properties sed -i "s|^oauth2.key.*$|oauth2.key=$OAUTH2_KEY|g" WMarket/WEB-INF/classes/properties/marketplace.properties sed -i "s|^oauth2.secret.*$|oauth2.secret=$OAUTH2_SECRET|g" WMarket/WEB-INF/classes/properties/marketplace.properties sed -i "s|^oauth2.providerRole.*$|oauth2.providerRole=$OAUTH2_PROVIDER_ROLE|g" WMarket/WEB-INF/classes/properties/marketplace.properties sed -i "s|^oauth2.callbackURL.*$|oauth2.callbackURL=http://$EXTERNAL_IP:8080/WMarket/callback|g" WMarket/WEB-INF/classes/properties/marketplace.properties # Enable OAuth2 sed -i "s|||g" WMarket/WEB-INF/classes/spring/config/BeanLocations.xml fi # Update war file cd WMarket jar uf ../WMarket.war WEB-INF/classes/properties/database.properties WEB-INF/classes/properties/marketplace.properties WEB-INF/classes/spring/config/BeanLocations.xml cd .. # Deploy the war file chmod a+r WMarket.war cp -p WMarket.war $WEBAPPS_PATH/WMarket.war # Confirmation message new_line new_line echo -e "> WMarket has been correctly depolyed!!"