Difference between revisions of "Up.sh"
Jump to navigation
Jump to search
(Created page with "This script is the only script you need to run to launch the Docker Services that gives you MediaWiki functionalities on your own machine. <SyntaxHighlight> docker exec docke...") |
|||
(12 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
This script is the | This script is the Bash script you need to run to launch the Docker Services that gives you MediaWiki functionalities on your [[Mac OSX]] or [[Linux]] machine. | ||
<SyntaxHighlight | <SyntaxHighlight lang="bash" line='line'> | ||
#! /bin/bash | #! /bin/bash | ||
if [ -f .env ]; then | |||
# Load Environment Variables | |||
export $(cat .env | grep -v '#' | awk '/=/ {print $1}') | |||
# For instance, will be example_kaggle_key | |||
echo "Loaded environmental variable: TRANSPORT_STRING=$TRANSPORT_STRING" | |||
echo "Loaded environmental variable: HOST_STRING=$HOST_STRING" | |||
echo "Loaded environmental variable: PortNumber=$PortNumber" | |||
fi | |||
if [[ ${TRANSPORT_STRING} =~ .*https.* ]]; then | |||
echo "To use the following transport string: ${TRANSPORT_STRING}://$HOST_STRING" | |||
replaceString="$HOST_STRING"; | |||
else | |||
echo "To use the following transport string: ${TRANSPORT_STRING}://$HOST_STRING:$PortNumber" | |||
replaceString="$HOST_STRING:$PortNumber"; | |||
fi | |||
filename="LocalSettings.php" | |||
sudo sed "s|\$wgServer =.*|\$wgServer = \"$TRANSPORT_STRING://${replaceString}\";|" $filename > temp.txt && sudo mv temp.txt $filename | |||
# Check if docker is installed or not | # Check if docker is installed or not | ||
Line 18: | Line 38: | ||
linux*) | linux*) | ||
echo "Some $OSTYPE distributions could install Docker, we will try to install Docker for you..." | echo "Some $OSTYPE distributions could install Docker, we will try to install Docker for you..." | ||
./ | ./AdvancedTooling/installDockerForUbuntu.sh | ||
echo "Installation complete, setting up the sudo su command, you will need the root access to this linux machine." | echo "Installation complete, setting up the sudo su command, you will need the root access to this linux machine." | ||
sudo su ;; | sudo su ;; | ||
Line 25: | Line 45: | ||
fi | fi | ||
# Make sure that the docker-compose.yml is available in this directory, otherwise, download it. | |||
if [ ! -e ./docker-compose.yml ]; then | |||
curl https://raw.githubusercontent.com/xlp0/XLPWikiMountPoint/main/docker-compose.yml > docker-compose.yml | |||
fi | |||
# Make sure that LocalSettings.php is available in this directory, otherwise, download it. | |||
if [ ! -e ./LocalSettings.php ]; then | |||
curl https://raw.githubusercontent.com/xlp0/XLPWikiMountPoint/main/LocalSettings.php > LocalSettings.php | |||
fi | |||
# If docker is running already, first run a data dump before shutting down docker processes | # If docker is running already, first run a data dump before shutting down docker processes | ||
Line 34: | Line 63: | ||
LOWERCASE_CURRENTDIR="$(tr [A-Z] [a-z] <<< "${PWD##*/}")" | LOWERCASE_CURRENTDIR="$(tr [A-Z] [a-z] <<< "${PWD##*/}")" | ||
MW_CONTAINER=$LOWERCASE_CURRENTDIR"_mediawiki_1" | MW_CONTAINER=$LOWERCASE_CURRENTDIR"_mediawiki_1" | ||
DB_CONTAINER=$LOWERCASE_CURRENTDIR"_database_1" | |||
# This variable should have the same value as the variable $wgResourceBasePath in LocalSettings.php | # This variable should have the same value as the variable $wgResourceBasePath in LocalSettings.php | ||
ResourceBasePath="/var/www/html" | # ResourceBasePath="/var/www/html" | ||
BACKUPSCRIPTFULLPATH=$ResourceBasePath"/extensions/BackupAndRestore/backup.sh" | # BACKUPSCRIPTFULLPATH=$ResourceBasePath"/extensions/BackupAndRestore/backup.sh" | ||
RESOTRESCRIPTFULLPATH=$ResourceBasePath"/extensions/BackupAndRestore/restore.sh" | # RESOTRESCRIPTFULLPATH=$ResourceBasePath"/extensions/BackupAndRestore/restore.sh" | ||
echo "Executing: " docker exec $MW_CONTAINER $BACKUPSCRIPTFULLPATH | # echo "Executing: " docker exec $MW_CONTAINER $BACKUPSCRIPTFULLPATH | ||
docker exec $MW_CONTAINER $BACKUPSCRIPTFULLPATH | # docker exec $MW_CONTAINER $BACKUPSCRIPTFULLPATH | ||
# stop all docker processes | # stop all docker processes | ||
docker-compose down --volumes | sudo docker-compose down --volumes | ||
# If the mountPoint directory doesn't exist, | # If the mountPoint directory doesn't exist, | ||
# Decompress the InitialDataPackage to ./mountPoint | # Decompress the InitialDataPackage to ./mountPoint | ||
if [ ! -e ./mountPoint/ ]; then | if [ ! -e ./mountPoint/ ]; then | ||
tar -xzvf ./ | |||
if [ ! -e ./InitialContentPackage.tar.gz ]; then | |||
curl https://raw.githubusercontent.com/xlp0/XLPWikiMountPoint/main/InitialContentPackage.tar.gz > temp.tar.gz | |||
fi | |||
tar -xzvf ./temp.tar.gz -C . | |||
if [ -e ./temp.tar.gz ]; then | |||
rm ./temp.tar.gz | |||
fi | |||
fi | fi | ||
# Start the docker processes | # Start the docker processes | ||
docker-compose up -d | sudo docker-compose up -d --build | ||
# After docker processes are ready, reload the data from earlier dump | # After docker processes are ready, reload the data from earlier dump | ||
echo "Loading data from earlier backups..." | # echo "Loading data from earlier backups..." | ||
echo "Executing: " docker exec $MW_CONTAINER $RESOTRESCRIPTFULLPATH | # echo "Executing: " docker exec $MW_CONTAINER $RESOTRESCRIPTFULLPATH | ||
docker exec $MW_CONTAINER $RESOTRESCRIPTFULLPATH | # docker exec $MW_CONTAINER $RESOTRESCRIPTFULLPATH | ||
echo $MW_CONTAINER" will do regular database content dump." | |||
sudo docker exec $MW_CONTAINER service cron start | |||
# Give read/write access to all users for the images directory. | |||
sudo docker exec $MW_CONTAINER chmod -R 777 /var/www/html/images | |||
sudo docker exec $MW_CONTAINER php /var/www/html/maintenance/update.php | |||
echo "Please go to a browser and use http://$HOST_STRING:$PortNumber to test the service" | |||
</SyntaxHighlight> | </SyntaxHighlight> |
Latest revision as of 09:14, 27 August 2021
This script is the Bash script you need to run to launch the Docker Services that gives you MediaWiki functionalities on your Mac OSX or Linux machine.
#! /bin/bash
if [ -f .env ]; then
# Load Environment Variables
export $(cat .env | grep -v '#' | awk '/=/ {print $1}')
# For instance, will be example_kaggle_key
echo "Loaded environmental variable: TRANSPORT_STRING=$TRANSPORT_STRING"
echo "Loaded environmental variable: HOST_STRING=$HOST_STRING"
echo "Loaded environmental variable: PortNumber=$PortNumber"
fi
if [[ ${TRANSPORT_STRING} =~ .*https.* ]]; then
echo "To use the following transport string: ${TRANSPORT_STRING}://$HOST_STRING"
replaceString="$HOST_STRING";
else
echo "To use the following transport string: ${TRANSPORT_STRING}://$HOST_STRING:$PortNumber"
replaceString="$HOST_STRING:$PortNumber";
fi
filename="LocalSettings.php"
sudo sed "s|\$wgServer =.*|\$wgServer = \"$TRANSPORT_STRING://${replaceString}\";|" $filename > temp.txt && sudo mv temp.txt $filename
# Check if docker is installed or not
if [[ $(which docker) && $(docker --version) ]]; then
echo "$OSTYPE has $(docker --version) installed"
else
echo "You need to Install docker"
# command
case "$OSTYPE" in
darwin*) echo "$OSTYPE should install Docker Desktop by following this link https://docs.docker.com/docker-for-mac/install/" ;;
msys*) echo "$OSTYPE should install Docker Desktop by following this link https://docs.docker.com/docker-for-windows/install/" ;;
cygwin*) echo "$OSTYPE should install Docker Desktop by following this link https://docs.docker.com/docker-for-windows/install/" ;;
linux*)
echo "Some $OSTYPE distributions could install Docker, we will try to install Docker for you..."
./AdvancedTooling/installDockerForUbuntu.sh
echo "Installation complete, setting up the sudo su command, you will need the root access to this linux machine."
sudo su ;;
*) echo "Sorry, this $OSTYPE might not have Docker implementation" ;;
esac
fi
# Make sure that the docker-compose.yml is available in this directory, otherwise, download it.
if [ ! -e ./docker-compose.yml ]; then
curl https://raw.githubusercontent.com/xlp0/XLPWikiMountPoint/main/docker-compose.yml > docker-compose.yml
fi
# Make sure that LocalSettings.php is available in this directory, otherwise, download it.
if [ ! -e ./LocalSettings.php ]; then
curl https://raw.githubusercontent.com/xlp0/XLPWikiMountPoint/main/LocalSettings.php > LocalSettings.php
fi
# If docker is running already, first run a data dump before shutting down docker processes
# One can use the following instruction to find the current directory name withou the full path
# CURRENTDIR=${PWD##*/}
# In Bash v4.0 or later, lower case can be obtained by a simple ResultString="${OriginalString,,}"
# See https://stackoverflow.com/questions/2264428/how-to-convert-a-string-to-lower-case-in-bash
# However, it will not work in Mac OS X, since it is still using Bash v 3.2
LOWERCASE_CURRENTDIR="$(tr [A-Z] [a-z] <<< "${PWD##*/}")"
MW_CONTAINER=$LOWERCASE_CURRENTDIR"_mediawiki_1"
DB_CONTAINER=$LOWERCASE_CURRENTDIR"_database_1"
# This variable should have the same value as the variable $wgResourceBasePath in LocalSettings.php
# ResourceBasePath="/var/www/html"
# BACKUPSCRIPTFULLPATH=$ResourceBasePath"/extensions/BackupAndRestore/backup.sh"
# RESOTRESCRIPTFULLPATH=$ResourceBasePath"/extensions/BackupAndRestore/restore.sh"
# echo "Executing: " docker exec $MW_CONTAINER $BACKUPSCRIPTFULLPATH
# docker exec $MW_CONTAINER $BACKUPSCRIPTFULLPATH
# stop all docker processes
sudo docker-compose down --volumes
# If the mountPoint directory doesn't exist,
# Decompress the InitialDataPackage to ./mountPoint
if [ ! -e ./mountPoint/ ]; then
if [ ! -e ./InitialContentPackage.tar.gz ]; then
curl https://raw.githubusercontent.com/xlp0/XLPWikiMountPoint/main/InitialContentPackage.tar.gz > temp.tar.gz
fi
tar -xzvf ./temp.tar.gz -C .
if [ -e ./temp.tar.gz ]; then
rm ./temp.tar.gz
fi
fi
# Start the docker processes
sudo docker-compose up -d --build
# After docker processes are ready, reload the data from earlier dump
# echo "Loading data from earlier backups..."
# echo "Executing: " docker exec $MW_CONTAINER $RESOTRESCRIPTFULLPATH
# docker exec $MW_CONTAINER $RESOTRESCRIPTFULLPATH
echo $MW_CONTAINER" will do regular database content dump."
sudo docker exec $MW_CONTAINER service cron start
# Give read/write access to all users for the images directory.
sudo docker exec $MW_CONTAINER chmod -R 777 /var/www/html/images
sudo docker exec $MW_CONTAINER php /var/www/html/maintenance/update.php
echo "Please go to a browser and use http://$HOST_STRING:$PortNumber to test the service"