2021-04-17 00:26:33 +02:00
#!/usr/bin/env bash
clear
SCRIPTPATH = $( cd $( dirname $0 ) ; pwd -P )
EXTENSION_ROOTPATH = " $SCRIPTPATH /../../../ "
SOLR_VERSION = 8.8.1
JAVA_VERSION = 11
2021-04-17 21:20:54 +02:00
SOLR_INSTALL_DIR = "/opt/meilisearch"
2021-04-17 00:26:33 +02:00
SOLR_HOST = "127.0.0.1"
2021-04-17 21:20:54 +02:00
SOLR_PORT = 7700
2021-04-17 00:26:33 +02:00
TESTING = 0
APACHE_MIRROR = "http://mirror.dkd.de/apache/"
APACHE_ARCHIVE = "http://archive.apache.org/dist/"
# ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
progressfilt ( )
{
local flag = false c count cr = $'\r' nl = $'\n'
while IFS = '' read -d '' -rn 1 c
do
if $flag
then
printf '%c' " $c "
else
if [ [ $c != $cr && $c != $nl ] ]
then
count = 0
else
( ( count++) )
if ( ( count > 1) )
then
flag = true
fi
fi
fi
done
}
# check whether a given resource is available on a mirror
# if the resource is found it will download from the mirror
# it the resource is not found it will download from Apache archive
apachedownload ( )
{
# test mirror
wget -q --spider " $APACHE_MIRROR $1 "
if [ $? -eq "0" ]
then
# download from mirror
wget --progress= bar:force " $APACHE_MIRROR $1 " 2>& 1 | progressfilt
else
# download from archive
wget --progress= bar:force " $APACHE_ARCHIVE $1 " 2>& 1 | progressfilt
fi
}
# ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
# color echo http://www.faqs.org/docs/abs/HTML/colorizing.html
black = "\033[30m"
red = "\033[31m"
green = "\033[32m"
yellow = "\033[33m"
blue = "\033[34m"
magenta = "\033[35m"
cyan = "\033[36m"
white = "\033[37m"
# Color-echo, Argument $1 = message, Argument $2 = color
cecho ( )
{
local default_msg = "No message passed."
# Defaults to default message.
message = ${ 1 :- $default_msg }
# Defaults to black, if not specified.
color = ${ 2 :- $black }
echo -e " $color $message "
# Reset text attributes to normal + without clearing screen.
tput sgr0
return
}
# ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
while getopts :d:t FLAG; do
case $FLAG in
d)
SOLR_INSTALL_DIR = $OPTARG
; ;
t)
TESTING = 1
; ;
\? ) #unrecognized option - show help
exit 2
; ;
esac
done
if [ $TESTING -eq "1" ] ; then
INSTALL_MODE = "CI Testing"
# during testing we use an own custom port
SOLR_PORT = 8999
else
INSTALL_MODE = "Development"
fi
cecho "####################################################################" $red
cecho "# This script should be used for development only! #" $red
cecho "# #" $red
cecho "# It contains no: #" $red
cecho "# - Security Updates #" $red
cecho "# - Init Scripts #" $red
cecho "# - Upgrade possibilities #" $red
cecho "# #" $red
cecho "####################################################################" $red
2021-04-17 21:20:54 +02:00
cecho "Starting installation of Meilisearch with the following settings:" $green
2021-04-17 00:26:33 +02:00
cecho " Install Mode: ${ INSTALL_MODE } " $green
2021-04-17 21:20:54 +02:00
cecho " Meilisearch Version: ${ SOLR_VERSION } " $green
2021-04-17 00:26:33 +02:00
cecho " Installation Path: ${ SOLR_INSTALL_DIR } " $green
cecho " Port: ${ SOLR_PORT } " $green
# ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
cecho "Checking requirements." $green
PASSALLCHECKS = 1
if [ ! -w " $( dirname $SOLR_INSTALL_DIR ) " ]
then
cecho " ERROR parent directory: ( $( dirname $SOLR_INSTALL_DIR ) ) of install path ( $SOLR_INSTALL_DIR ) is not writeable. " $red
PASSALLCHECKS = 0
fi
wget --version > /dev/null 2>& 1
CHECK = $?
if [ $CHECK -ne "0" ]
then
cecho "ERROR couldn't find wget." $red
PASSALLCHECKS = 0
fi
java -version > /dev/null 2>& 1
CHECK = $?
if [ $CHECK -ne "0" ]
then
cecho "ERROR couldn't find Java (Oracle Java is recommended)." $red
PASSALLCHECKS = 0
fi
JAVA_VERSION_INSTALLED = $( java -version 2>& 1 | grep -Eom1 "[._0-9]{5,}" )
JAVA_MAJOR_VERSION_INSTALLED = ${ JAVA_VERSION_INSTALLED %% \. * }
# check if java uses the old version number like 1.7.0_11
if [ -n " $JAVA_MAJOR_VERSION_INSTALLED " ] && [ $JAVA_MAJOR_VERSION_INSTALLED -eq 1 ]
then
# extract the main Java version from 1.7.0_11 => 7
JAVA_MAJOR_VERSION_INSTALLED = ${ JAVA_VERSION_INSTALLED : 2 : 1 }
fi
# check if java version is equal or higher then required
if [ -n " $JAVA_VERSION_INSTALLED " ] && [ $JAVA_MAJOR_VERSION_INSTALLED -lt $JAVA_VERSION ]
then
cecho " You have installed Java version $JAVA_MAJOR_VERSION_INSTALLED . Please install Java $JAVA_VERSION or newer. " $red
PASSALLCHECKS = 0
fi
ping -c 1 mirror.dkd.de > /dev/null 2>& 1
CHECK = $?
if [ $CHECK -ne "0" ]
then
cecho "ERROR couldn't ping Apache download mirror, try again using wget" $yellow
wget -q --spider http://mirror.dkd.de/apache/
if [ $? -ne "0" ]
then
cecho "ERROR Also couldn't reach the Apache download mirror using wget. Please check your internet connection." $red
PASSALLCHECKS = 0
fi
fi
tar --version > /dev/null 2>& 1
CHECK = $?
if [ $CHECK -ne "0" ]
then
cecho "ERROR: couldn't find tar." $red
PASSALLCHECKS = 0
fi
if [ $PASSALLCHECKS -eq "0" ]
then
cecho "Please install all missing requirements or fix any other errors listed above and try again." $red
exit 1
else
2021-04-17 21:20:54 +02:00
cecho "All requirements met, starting to install Meilisearch." $green
2021-04-17 00:26:33 +02:00
fi
# ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
mkdir $SOLR_INSTALL_DIR
cd $SOLR_INSTALL_DIR
2021-04-17 21:20:54 +02:00
cecho " Getting Meilisearch $SOLR_VERSION " $green
2021-04-17 00:26:33 +02:00
# download to downloads folder to be able to cache the file there
2021-04-17 21:20:54 +02:00
if [ ! -f downloads/meilisearch-$SOLR_VERSION .tgz ] ; then
2021-04-17 00:26:33 +02:00
cecho "Starting download" $green
mkdir downloads
cd downloads
2021-04-17 21:20:54 +02:00
apachedownload lucene/meilisearch/$SOLR_VERSION /meilisearch-$SOLR_VERSION .tgz
2021-04-17 00:26:33 +02:00
cd ..
else
cecho "Restore from cache" $green
fi
2021-04-17 21:20:54 +02:00
cecho " Extracting downloaded meilisearch $SOLR_VERSION " $green
tar -C $SOLR_INSTALL_DIR --extract --file " $SOLR_INSTALL_DIR /downloads/meilisearch- $SOLR_VERSION .tgz " --strip-components= 1
2021-04-17 00:26:33 +02:00
2021-04-17 21:20:54 +02:00
cecho "Adjusting meilisearch configuration" $green
sed -i -e " s/#SOLR_PORT=7700/SOLR_PORT= $SOLR_PORT / " " $SOLR_INSTALL_DIR /bin/meilisearch.in.sh "
sed -i -e " s/#SOLR_HOST=\"192.168.1.1\"/SOLR_HOST=\" $SOLR_HOST \"/ " " $SOLR_INSTALL_DIR /bin/meilisearch.in.sh "
sed -i -e '/-Dmeilisearch.clustering.enabled=true/ a SOLR_OPTS="$SOLR_OPTS -Dsun.net.inetaddr.ttl=60 -Dsun.net.inetaddr.negative.ttl=60 -Djetty.host=$SOLR_HOST"' " $SOLR_INSTALL_DIR /bin/meilisearch.in.sh "
2021-04-17 00:26:33 +02:00
cecho "Remove default configsets" $green
2021-04-17 21:20:54 +02:00
rm -fR ${ SOLR_INSTALL_DIR } /server/meilisearch/configsets
2021-04-17 00:26:33 +02:00
cecho "Copy configsets" $green
2021-04-17 21:20:54 +02:00
cp -r ${ EXTENSION_ROOTPATH } /Resources/Private/Meilisearch/configsets ${ SOLR_INSTALL_DIR } /server/meilisearch
2021-04-17 00:26:33 +02:00
2021-04-17 21:20:54 +02:00
cecho "Copy copy meilisearch.xml" $green
cp ${ EXTENSION_ROOTPATH } /Resources/Private/Meilisearch/meilisearch.xml ${ SOLR_INSTALL_DIR } /server/meilisearch/meilisearch.xml
2021-04-17 00:26:33 +02:00
cecho "Create default cores" $green
2021-04-17 21:20:54 +02:00
cp -r ${ EXTENSION_ROOTPATH } /Resources/Private/Meilisearch/cores ${ SOLR_INSTALL_DIR } /server/meilisearch
2021-04-17 00:26:33 +02:00
cecho "Setting environment" $green
2021-04-17 21:20:54 +02:00
source $SOLR_INSTALL_DIR /bin/meilisearch.in.sh
2021-04-17 00:26:33 +02:00
2021-04-17 21:20:54 +02:00
cecho "Starting meilisearch" $green
$SOLR_INSTALL_DIR /bin/meilisearch start
2021-04-17 00:26:33 +02:00
if [ $TESTING -eq "1" ] ; then
cecho "Keeping download to cache it for next build" $green
else
cecho "Cleanup download" green
2021-04-17 21:20:54 +02:00
rm $SOLR_INSTALL_DIR /downloads/meilisearch-$SOLR_VERSION .tgz
2021-04-17 00:26:33 +02:00
fi