зеркало из https://github.com/Azure/Moodle.git
Migration to Moodle 4
This commit is contained in:
Родитель
421f12fb8a
Коммит
79ac767cbe
|
@ -121,10 +121,9 @@
|
|||
},
|
||||
"moodleVersion": {
|
||||
"allowedValues": [
|
||||
"MOODLE_39_STABLE",
|
||||
"MOODLE_311_STABLE"
|
||||
"MOODLE_402_STABLE"
|
||||
],
|
||||
"defaultValue": "MOODLE_39_STABLE",
|
||||
"defaultValue": "MOODLE_402_STABLE",
|
||||
"metadata": {
|
||||
"description": "The Moodle version you want to install."
|
||||
},
|
||||
|
@ -195,11 +194,9 @@
|
|||
},
|
||||
"phpVersion": {
|
||||
"allowedValues": [
|
||||
"7.2",
|
||||
"7.3",
|
||||
"7.4"
|
||||
"8.1"
|
||||
],
|
||||
"defaultValue": "7.4",
|
||||
"defaultValue": "8.1",
|
||||
"metadata": {
|
||||
"description": "php version"
|
||||
},
|
||||
|
@ -288,10 +285,9 @@
|
|||
},
|
||||
"mysqlVersion": {
|
||||
"allowedValues": [
|
||||
"5.7",
|
||||
"8.0.21"
|
||||
],
|
||||
"defaultValue": "5.7",
|
||||
"defaultValue": "8.0.21",
|
||||
"metadata": {
|
||||
"description": "Mysql version"
|
||||
},
|
||||
|
@ -799,9 +795,9 @@
|
|||
"ubuntuVersion": {
|
||||
"type": "string",
|
||||
"allowedValues": [
|
||||
"20_04-lts-gen2"
|
||||
"22_04-lts-gen2"
|
||||
],
|
||||
"defaultValue": "20_04-lts-gen2"
|
||||
"defaultValue": "22_04-lts-gen2"
|
||||
},
|
||||
"location": {
|
||||
"type": "string",
|
||||
|
@ -1372,7 +1368,7 @@
|
|||
"nfsHaNode1IP": "[concat(variables('subnetSanPrefix'), '.120')]",
|
||||
"osDiskStorageType": "[parameters('osDiskStorageType')]",
|
||||
"osType": {
|
||||
"offer": "0001-com-ubuntu-server-focal",
|
||||
"offer": "0001-com-ubuntu-server-jammy",
|
||||
"publisher": "Canonical",
|
||||
"sku": "[parameters('ubuntuVersion')]",
|
||||
"version": "latest"
|
||||
|
|
|
@ -2,15 +2,37 @@
|
|||
|
||||
# Common functions definitions
|
||||
|
||||
function wait_for_process {
|
||||
until [ -z $(/usr/bin/pgrep ${1}) ]; do
|
||||
printf '.'
|
||||
sleep 0.5
|
||||
done
|
||||
}
|
||||
|
||||
function apt_update_noninteractive {
|
||||
export DEBIAN_FRONTEND='noninteractive'
|
||||
|
||||
# waiting for apt to finish before running any other commands
|
||||
wait_for_process apt;
|
||||
|
||||
apt --yes -qq -o=Dpkg::Use-Pty=0 update
|
||||
}
|
||||
|
||||
function apt_install_noninteractive {
|
||||
export DEBIAN_FRONTEND='noninteractive'
|
||||
export NEEDRESTART_MODE='a'
|
||||
export ACCEPT_EULA='Y'
|
||||
|
||||
# waiting for apt to finish before running any other commands
|
||||
wait_for_process apt;
|
||||
|
||||
apt --yes --no-install-recommends -qq -o=Dpkg::Use-Pty=0 -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install "${@}"
|
||||
}
|
||||
|
||||
function get_setup_params_from_configs_json
|
||||
{
|
||||
local configs_json_path=${1} # E.g., /var/lib/cloud/instance/moodle_on_azure_configs.json
|
||||
|
||||
# (dpkg -l jq &> /dev/null) || (apt -y update; apt -y install jq)
|
||||
# sudo add-apt-repository universe
|
||||
# sudo apt-get -y update
|
||||
# sudo apt-get -y install jq
|
||||
|
||||
# Added wget command to download jq.
|
||||
wget https://github.com/jqlang/jq/releases/download/jq-1.6/jq-linux64 -O /usr/bin/jq && chmod +x /usr/bin/jq
|
||||
|
||||
|
@ -83,12 +105,22 @@ function get_php_version {
|
|||
function install_php_mssql_driver
|
||||
{
|
||||
# Download and build php/mssql driver
|
||||
/usr/bin/curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
|
||||
/usr/bin/curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
|
||||
sudo apt-get update
|
||||
sudo ACCEPT_EULA=Y apt-get install msodbcsql mssql-tools unixodbc-dev -y
|
||||
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
|
||||
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
|
||||
export AZ_REPO=$(lsb_release -cs)
|
||||
export DEBIAN_FRONTEND='noninteractive'
|
||||
export NEEDRESTART_MODE='a'
|
||||
export ACCEPT_EULA='Y'
|
||||
|
||||
mkdir -p /etc/apt/keyrings
|
||||
curl -sLS https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/keyrings/microsoft.gpg && chmod go+r /etc/apt/keyrings/microsoft.gpg
|
||||
|
||||
echo "deb [arch=`dpkg --print-architecture` signed-by=/etc/apt/keyrings/microsoft.gpg] https://packages.microsoft.com/ubuntu/22.04/prod $AZ_REPO main" > /etc/apt/sources.list.d/mssql-release.list
|
||||
|
||||
wait_for_process apt && \
|
||||
apt_update_noninteractive && \
|
||||
apt --yes --no-install-recommends -qq install msodbcsql18 mssql-tools18 unixodbc-dev >> /tmp/apt.log
|
||||
|
||||
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
|
||||
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
|
||||
#Build mssql driver
|
||||
|
@ -234,9 +266,9 @@ EOF
|
|||
# TODO refactor these functions with the same ones in install_gluster.sh
|
||||
function scan_for_new_disks
|
||||
{
|
||||
local BLACKLIST=${1} # E.g., /dev/sda|/dev/sdb
|
||||
local ALLOWLIST=${1} # E.g., /dev/sda|/dev/sdb
|
||||
declare -a RET
|
||||
local DEVS=$(ls -1 /dev/sd*|egrep -v "${BLACKLIST}"|egrep -v "[0-9]$")
|
||||
local DEVS=$(ls -1 /dev/disk/azure/scsi1/lun*|egrep "${ALLOWLIST}"|egrep "[0-9]$")
|
||||
for DEV in ${DEVS};
|
||||
do
|
||||
# Check each device if there is a "1" partition. If not,
|
||||
|
@ -262,7 +294,7 @@ function create_raid0_ubuntu {
|
|||
if [ $_RET -eq 1 ];
|
||||
then
|
||||
echo "installing mdadm"
|
||||
sudo apt-get -y -q install mdadm
|
||||
apt_install_noninteractive mdadm
|
||||
fi
|
||||
echo "Creating raid0"
|
||||
udevadm control --stop-exec-queue
|
||||
|
@ -311,7 +343,7 @@ function setup_raid_disk_and_filesystem {
|
|||
local RAIDPARTITION=${3} # E.g., /dev/md1p1
|
||||
local CREATE_FILESYSTEM=${4} # E.g., "" (true) or any non-empty string (false)
|
||||
|
||||
local DISKS=$(scan_for_new_disks "/dev/sda|/dev/sdb")
|
||||
local DISKS=$(scan_for_new_disks "/dev/disk/azure/scsi1/lun0|/dev/disk/azure/scsi1/lun1")
|
||||
echo "Disks are ${DISKS}"
|
||||
declare -i DISKCOUNT
|
||||
local DISKCOUNT=$(echo "$DISKS" | wc -w)
|
||||
|
@ -353,7 +385,7 @@ function configure_nfs_server_and_export {
|
|||
local MOUNTPOINT=${1} # E.g., /moodle
|
||||
|
||||
echo "Installing nfs server..."
|
||||
apt install -y nfs-kernel-server
|
||||
apt_install_noninteractive nfs-kernel-server
|
||||
|
||||
echo "Exporting ${MOUNTPOINT}..."
|
||||
grep -q -s "^${MOUNTPOINT}" /etc/exports && _RET=$? || _RET=$?
|
||||
|
|
|
@ -31,20 +31,48 @@ echo $elasticvm1ip >> /tmp/vars.txt
|
|||
echo $elasticvm2ip >> /tmp/vars.txt
|
||||
echo $elasticvm3ip >> /tmp/vars.txt
|
||||
|
||||
function wait_for_process {
|
||||
until [ -z $(/usr/bin/pgrep ${1}) ]; do
|
||||
printf '.'
|
||||
sleep 0.5
|
||||
done
|
||||
}
|
||||
|
||||
function apt_update_noninteractive {
|
||||
export DEBIAN_FRONTEND='noninteractive'
|
||||
|
||||
# waiting for apt to finish before running any other commands
|
||||
wait_for_process apt;
|
||||
|
||||
apt --yes -qq -o=Dpkg::Use-Pty=0 update
|
||||
}
|
||||
|
||||
function apt_install_noninteractive {
|
||||
export DEBIAN_FRONTEND='noninteractive'
|
||||
export NEEDRESTART_MODE='a'
|
||||
export ACCEPT_EULA='Y'
|
||||
|
||||
# waiting for apt to finish before running any other commands
|
||||
wait_for_process apt;
|
||||
|
||||
apt --yes --no-install-recommends -qq -o=Dpkg::Use-Pty=0 -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install "${@}"
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
# make sure the system does automatic update
|
||||
sudo apt-get -y update
|
||||
sudo apt-get -y install unattended-upgrades
|
||||
apt_update_noninteractive
|
||||
apt_install_noninteractive unattended-upgrades apt-transport-https
|
||||
|
||||
# configure elastic search repository & install elastic search
|
||||
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
|
||||
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
|
||||
sudo apt-get -y update
|
||||
sudo apt-get -y install elasticsearch=5.5.0
|
||||
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
|
||||
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/5.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-5.x.list
|
||||
|
||||
apt_update_noninteractive
|
||||
apt_install_noninteractive elasticsearch=5.6.16
|
||||
|
||||
# install the required packages
|
||||
sudo apt-get install -y openjdk-8-jre openjdk-8-jdk default-jre default-jdk
|
||||
apt_install_noninteractive openjdk-8-jre openjdk-8-jdk default-jre default-jdk
|
||||
|
||||
# Configure elasticsearch
|
||||
cat <<EOF > /etc/elasticsearch/elasticsearch.yml
|
||||
|
@ -70,7 +98,7 @@ cluster.name: ${esClusterName}
|
|||
#
|
||||
# Use a descriptive name for the node:
|
||||
#
|
||||
node.name: \${HOSTNAME}
|
||||
node.name: ${HOSTNAME}
|
||||
#
|
||||
# Add custom attributes to the node:
|
||||
#
|
||||
|
|
|
@ -5,7 +5,9 @@
|
|||
# You can also customize it to work with other Linux flavours and versions.
|
||||
# If you customize it, copy it to either Azure blob storage or Github so that Azure
|
||||
# custom script Linux VM extension can access it, and specify its location in the
|
||||
# parameters of powershell script or runbook or Azure Resource Manager CRP template.
|
||||
# parameters of powershell script or runbook or Azure Resource Manager CRP template.
|
||||
|
||||
. ./helper_functions.sh
|
||||
|
||||
AZUREVMOFFSET=4
|
||||
|
||||
|
@ -35,8 +37,8 @@ RAIDPARTITION="/dev/md1p1"
|
|||
BLACKLIST="/dev/sda|/dev/sdb"
|
||||
|
||||
# make sure the system does automatic update
|
||||
sudo apt-get -y update
|
||||
sudo apt-get -y install unattended-upgrades
|
||||
apt_update_noninteractive
|
||||
apt_install_noninteractive unattended-upgrades
|
||||
|
||||
{
|
||||
check_os() {
|
||||
|
@ -187,13 +189,13 @@ sudo apt-get -y install unattended-upgrades
|
|||
if [ ! -e /etc/apt/sources.list.d/gluster* ];
|
||||
then
|
||||
echo "adding gluster ppa"
|
||||
apt-get -y install python-software-properties
|
||||
apt-add-repository -y ppa:gluster/glusterfs-3.10
|
||||
apt-get -y update
|
||||
apt_install_noninteractive python-software-properties
|
||||
apt-add-repository ppa:gluster/glusterfs-3.10 --yes
|
||||
apt_update_noninteractive
|
||||
fi
|
||||
|
||||
echo "installing gluster"
|
||||
apt-get -y install glusterfs-server
|
||||
apt_install_noninteractive glusterfs-server
|
||||
|
||||
return
|
||||
}
|
||||
|
|
|
@ -30,51 +30,47 @@ set -ex
|
|||
|
||||
get_setup_params_from_configs_json $moodle_on_azure_configs_json_path || exit 99
|
||||
|
||||
echo $moodleVersion >> /tmp/vars.txt
|
||||
echo $glusterNode >> /tmp/vars.txt
|
||||
echo $glusterVolume >> /tmp/vars.txt
|
||||
echo $siteFQDN >> /tmp/vars.txt
|
||||
echo $httpsTermination >> /tmp/vars.txt
|
||||
echo $dbIP >> /tmp/vars.txt
|
||||
echo $moodledbname >> /tmp/vars.txt
|
||||
echo $moodledbuser >> /tmp/vars.txt
|
||||
echo $moodledbpass >> /tmp/vars.txt
|
||||
echo $adminpass >> /tmp/vars.txt
|
||||
echo $dbadminlogin >> /tmp/vars.txt
|
||||
echo $dbadminloginazure >> /tmp/vars.txt
|
||||
echo $dbadminpass >> /tmp/vars.txt
|
||||
echo $storageAccountName >> /tmp/vars.txt
|
||||
echo $storageAccountKey >> /tmp/vars.txt
|
||||
echo $azuremoodledbuser >> /tmp/vars.txt
|
||||
echo $redisDns >> /tmp/vars.txt
|
||||
echo $redisAuth >> /tmp/vars.txt
|
||||
echo $elasticVm1IP >> /tmp/vars.txt
|
||||
echo $installO365pluginsSwitch >> /tmp/vars.txt
|
||||
echo $dbServerType >> /tmp/vars.txt
|
||||
echo $fileServerType >> /tmp/vars.txt
|
||||
echo $mssqlDbServiceObjectiveName >> /tmp/vars.txt
|
||||
echo $mssqlDbEdition >> /tmp/vars.txt
|
||||
echo $mssqlDbSize >> /tmp/vars.txt
|
||||
echo $installObjectFsSwitch >> /tmp/vars.txt
|
||||
echo $installGdprPluginsSwitch >> /tmp/vars.txt
|
||||
echo $thumbprintSslCert >> /tmp/vars.txt
|
||||
echo $thumbprintCaCert >> /tmp/vars.txt
|
||||
echo $searchType >> /tmp/vars.txt
|
||||
echo $azureSearchKey >> /tmp/vars.txt
|
||||
echo $azureSearchNameHost >> /tmp/vars.txt
|
||||
echo $tikaVmIP >> /tmp/vars.txt
|
||||
echo $nfsByoIpExportPath >> /tmp/vars.txt
|
||||
echo $storageAccountType >>/tmp/vars.txt
|
||||
echo $fileServerDiskSize >>/tmp/vars.txt
|
||||
echo $phpVersion >> /tmp/vars.txt
|
||||
echo $isMigration >> /tmp/vars.txt
|
||||
echo $moodleVersion >> /tmp/vars.txt
|
||||
echo $glusterNode >> /tmp/vars.txt
|
||||
echo $glusterVolume >> /tmp/vars.txt
|
||||
echo $siteFQDN >> /tmp/vars.txt
|
||||
echo $httpsTermination >> /tmp/vars.txt
|
||||
echo $dbIP >> /tmp/vars.txt
|
||||
echo $moodledbname >> /tmp/vars.txt
|
||||
echo $moodledbuser >> /tmp/vars.txt
|
||||
echo $moodledbpass >> /tmp/vars.txt
|
||||
echo $adminpass >> /tmp/vars.txt
|
||||
echo $dbadminlogin >> /tmp/vars.txt
|
||||
echo $dbadminloginazure >> /tmp/vars.txt
|
||||
echo $dbadminpass >> /tmp/vars.txt
|
||||
echo $storageAccountName >> /tmp/vars.txt
|
||||
echo $storageAccountKey >> /tmp/vars.txt
|
||||
echo $azuremoodledbuser >> /tmp/vars.txt
|
||||
echo $redisDns >> /tmp/vars.txt
|
||||
echo $redisAuth >> /tmp/vars.txt
|
||||
echo $elasticVm1IP >> /tmp/vars.txt
|
||||
echo $installO365pluginsSwitch >> /tmp/vars.txt
|
||||
echo $dbServerType >> /tmp/vars.txt
|
||||
echo $fileServerType >> /tmp/vars.txt
|
||||
echo $mssqlDbServiceObjectiveName >> /tmp/vars.txt
|
||||
echo $mssqlDbEdition >> /tmp/vars.txt
|
||||
echo $mssqlDbSize >> /tmp/vars.txt
|
||||
echo $installObjectFsSwitch >> /tmp/vars.txt
|
||||
echo $installGdprPluginsSwitch >> /tmp/vars.txt
|
||||
echo $thumbprintSslCert >> /tmp/vars.txt
|
||||
echo $thumbprintCaCert >> /tmp/vars.txt
|
||||
echo $searchType >> /tmp/vars.txt
|
||||
echo $azureSearchKey >> /tmp/vars.txt
|
||||
echo $azureSearchNameHost >> /tmp/vars.txt
|
||||
echo $tikaVmIP >> /tmp/vars.txt
|
||||
echo $nfsByoIpExportPath >> /tmp/vars.txt
|
||||
echo $storageAccountType >>/tmp/vars.txt
|
||||
echo $fileServerDiskSize >>/tmp/vars.txt
|
||||
echo $phpVersion >> /tmp/vars.txt
|
||||
echo $isMigration >> /tmp/vars.txt
|
||||
|
||||
check_fileServerType_param $fileServerType
|
||||
|
||||
#Updating php sources
|
||||
sudo add-apt-repository ppa:ondrej/php -y
|
||||
sudo apt-get update
|
||||
|
||||
if [ "$dbServerType" = "mysql" ]; then
|
||||
mysqlIP=$dbIP
|
||||
mysqladminlogin=$dbadminloginazure
|
||||
|
@ -83,7 +79,6 @@ set -ex
|
|||
mssqlIP=$dbIP
|
||||
mssqladminlogin=$dbadminloginazure
|
||||
mssqladminpass=$dbadminpass
|
||||
|
||||
elif [ "$dbServerType" = "postgres" ]; then
|
||||
postgresIP=$dbIP
|
||||
pgadminlogin=$dbadminloginazure
|
||||
|
@ -93,51 +88,53 @@ set -ex
|
|||
exit 1
|
||||
fi
|
||||
|
||||
# make sure system does automatic updates and fail2ban
|
||||
sudo apt-get -y update
|
||||
sudo apt-get -y install unattended-upgrades fail2ban
|
||||
#
|
||||
# Export apt default settings for this install script
|
||||
#
|
||||
|
||||
apt_update_noninteractive >> /tmp/apt.log
|
||||
apt_install_noninteractive fail2ban >> /tmp/apt.log
|
||||
|
||||
config_fail2ban
|
||||
|
||||
# create gluster, nfs or Azure Files mount point
|
||||
mkdir -p /moodle
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
if [ $fileServerType = "gluster" ]; then
|
||||
# configure gluster repository & install gluster client
|
||||
sudo add-apt-repository ppa:gluster/glusterfs-3.10 -y >> /tmp/apt1.log
|
||||
# configure gluster repository & install gluster clientapt
|
||||
add-apt-repository ppa:gluster/glusterfs-9 --yes >> /tmp/apt.log
|
||||
elif [ $fileServerType = "nfs" ]; then
|
||||
# configure NFS server and export
|
||||
setup_raid_disk_and_filesystem /moodle /dev/md1 /dev/md1p1
|
||||
configure_nfs_server_and_export /moodle
|
||||
fi
|
||||
|
||||
sudo apt-get -y update >> /tmp/apt2.log
|
||||
sudo apt-get -y --force-yes install rsyslog git >> /tmp/apt3.log
|
||||
apt_update_noninteractive >> /tmp/apt.log
|
||||
apt_install_noninteractive rsyslog git >> /tmp/apt.log
|
||||
|
||||
if [ $fileServerType = "gluster" ]; then
|
||||
sudo apt-get -y --force-yes install glusterfs-client >> /tmp/apt3.log
|
||||
apt_install_noninteractive glusterfs-client >> /tmp/apt.log
|
||||
elif [ "$fileServerType" = "azurefiles" ]; then
|
||||
sudo apt-get -y --force-yes install cifs-utils >> /tmp/apt3.log
|
||||
apt_install_noninteractive cifs-utils >> /tmp/apt.log
|
||||
fi
|
||||
|
||||
if [ $dbServerType = "mysql" ]; then
|
||||
sudo apt-get -y --force-yes install mysql-client >> /tmp/apt3.log
|
||||
apt_install_noninteractive mysql-client >> /tmp/apt.log
|
||||
elif [ "$dbServerType" = "postgres" ]; then
|
||||
sudo apt-get -y --force-yes install postgresql-client >> /tmp/apt3.log
|
||||
apt_install_noninteractive postgresql-client >> /tmp/apt.log
|
||||
fi
|
||||
|
||||
if [ "$installObjectFsSwitch" = "true" -o "$fileServerType" = "azurefiles" ]; then
|
||||
# install azure cli & setup container
|
||||
AZ_REPO=$(lsb_release -cs)
|
||||
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | tee /etc/apt/sources.list.d/azure-cli.list
|
||||
|
||||
curl -L https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - >> /tmp/apt4.log
|
||||
sudo apt-get -y install apt-transport-https >> /tmp/apt4.log
|
||||
sudo apt-get -y update > /dev/null
|
||||
sudo apt-get -y install azure-cli >> /tmp/apt4.log
|
||||
|
||||
if [ "$installObjectFsSwitch" = "true" -o "$fileServerType" = "azurefiles" ]; then
|
||||
# install azure cli
|
||||
AZ_REPO=$(lsb_release -cs)
|
||||
mkdir -p /etc/apt/keyrings
|
||||
curl -sLS https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/keyrings/microsoft.gpg && chmod go+r /etc/apt/keyrings/microsoft.gpg
|
||||
echo "deb [arch=`dpkg --print-architecture` signed-by=/etc/apt/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" > /etc/apt/sources.list.d/azure-cli.list
|
||||
|
||||
apt_update_noninteractive >> /tmp/apt.log
|
||||
|
||||
apt_install_noninteractive apt-transport-https ca-certificates curl apt-transport-https lsb-release gnupg azure-cli >> /tmp/apt.log
|
||||
|
||||
# FileStorage accounts can only be used to store Azure file shares;
|
||||
# Premium_LRS will support FileStorage kind
|
||||
# No other storage resources (blob containers, queues, tables, etc.) can be deployed in a FileStorage account.
|
||||
|
@ -191,32 +188,47 @@ set -ex
|
|||
echo -e '\n\rMounting NFS export from '$nfsByoIpExportPath' on /moodle\n\r'
|
||||
configure_nfs_client_and_mount0 $nfsByoIpExportPath /moodle
|
||||
fi
|
||||
|
||||
# install pre-requisites
|
||||
sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa
|
||||
sudo apt-get -y update > /dev/null 2>&1
|
||||
# sudo apt-get install -y --fix-missing python-software-properties unzip
|
||||
sudo apt-get -y install software-properties-common
|
||||
sudo apt-get -y install unzip
|
||||
|
||||
# install pre-requisites
|
||||
add-apt-repository ppa:ubuntu-toolchain-r/ppa --yes >> /tmp/apt.log
|
||||
apt_update_noninteractive >> /tmp/apt.log
|
||||
apt_install_noninteractive software-properties-common unzip >> /tmp/apt.log
|
||||
|
||||
# install the entire stack
|
||||
# passing php versions $phpVersion
|
||||
sudo apt-get -y --force-yes install nginx php$phpVersion-fpm varnish >> /tmp/apt5a.log
|
||||
sudo apt-get -y --force-yes install php$phpVersion php$phpVersion-cli php$phpVersion-curl php$phpVersion-zip >> /tmp/apt5b.log
|
||||
apt_install_noninteractive \
|
||||
nginx \
|
||||
varnish \
|
||||
php \
|
||||
php-fpm \
|
||||
php-cli \
|
||||
php-curl \
|
||||
php-zip \
|
||||
graphviz \
|
||||
aspell \
|
||||
php-common \
|
||||
php-soap \
|
||||
php-json \
|
||||
php-redis \
|
||||
php-bcmath \
|
||||
php-ldap \
|
||||
php-gd \
|
||||
php-xmlrpc \
|
||||
php-intl \
|
||||
php-xml \
|
||||
php-bz2 \
|
||||
php-pear \
|
||||
php-mbstring \
|
||||
php-dev \
|
||||
mcrypt >> /tmp/apt.log
|
||||
|
||||
# Moodle requirements
|
||||
sudo apt-get -y update > /dev/null
|
||||
sudo apt-get install -y --force-yes graphviz aspell php$phpVersion-common php$phpVersion-soap php$phpVersion-json php$phpVersion-redis > /tmp/apt6.log
|
||||
sudo apt-get install -y --force-yes php$phpVersion-bcmath php$phpVersion-ldap php$phpVersion-gd php$phpVersion-xmlrpc php$phpVersion-intl php$phpVersion-xml php$phpVersion-bz2 php-pear php$phpVersion-mbstring php$phpVersion-dev mcrypt >> /tmp/apt6.log
|
||||
PhpVer=$(get_php_version)
|
||||
if [ $dbServerType = "mysql" ]; then
|
||||
sudo apt-get install -y --force-yes php$phpVersion-mysql
|
||||
apt_install_noninteractive php-mysql
|
||||
elif [ $dbServerType = "mssql" ]; then
|
||||
sudo apt-get install -y libapache2-mod-php # Need this because install_php_mssql_driver tries to update apache2-mod-php settings always (which will fail without this)
|
||||
apt_install_noninteractive libapache2-mod-php
|
||||
install_php_mssql_driver
|
||||
else
|
||||
sudo apt-get install -y --force-yes php-pgsql
|
||||
apt_install_noninteractive php-pgsql
|
||||
fi
|
||||
|
||||
# Set up initial moodle dirs
|
||||
|
@ -229,68 +241,69 @@ set -ex
|
|||
moodleUnzipDir=$(get_moodle_unzip_dir_from_moodle_version $moodleVersion)
|
||||
|
||||
# install Moodle
|
||||
echo '#!/bin/bash
|
||||
mkdir -p /moodle/tmp
|
||||
cd /moodle/tmp
|
||||
cat <<EOF > /tmp/setup-moodle.sh
|
||||
#!/bin/bash
|
||||
mkdir -p /moodle/tmp
|
||||
cd /moodle/tmp
|
||||
|
||||
if [ ! -d /moodle/html/moodle ]; then
|
||||
# downloading moodle only if /moodle/html/moodle does not exist -- if it exists, user should populate it in advance correctly as below. This is to reduce template deployment time.
|
||||
/usr/bin/curl -k --max-redirs 10 https://github.com/moodle/moodle/archive/'$moodleVersion'.zip -L -o moodle.zip
|
||||
/usr/bin/unzip -q moodle.zip
|
||||
/bin/mv '$moodleUnzipDir' /moodle/html/moodle
|
||||
fi
|
||||
if [ ! -d /moodle/html/moodle ]; then
|
||||
# downloading moodle only if /moodle/html/moodle does not exist -- if it exists, user should populate it in advance correctly as below. This is to reduce template deployment time.
|
||||
/usr/bin/curl -k --max-redirs 10 https://github.com/moodle/moodle/archive/MOODLE_402_STABLE.zip -L -o moodle.zip
|
||||
/usr/bin/unzip -q moodle.zip
|
||||
/bin/mv "$moodleUnzipDir" /moodle/html/moodle
|
||||
fi
|
||||
|
||||
if [ "'$installGdprPluginsSwitch'" = "true" ]; then
|
||||
# install Moodle GDPR plugins (Note: This is only for Moodle versions 3.4.2+ or 3.3.5+ and will be included in Moodle 3.5, so no need for 3.5)
|
||||
curl -k --max-redirs 10 https://github.com/moodlehq/moodle-tool_policy/archive/'$moodleStableVersion'.zip -L -o plugin-policy.zip
|
||||
unzip -q plugin-policy.zip
|
||||
mv moodle-tool_policy-'$moodleStableVersion' /moodle/html/moodle/admin/tool/policy
|
||||
if [ "$installGdprPluginsSwitch" = "true" ]; then
|
||||
# install Moodle GDPR plugins (Note: This is only for Moodle versions 3.4.2+ or 3.3.5+ and will be included in Moodle 3.5, so no need for 3.5)
|
||||
curl -k --max-redirs 10 https://github.com/moodlehq/moodle-tool_policy/archive/"$moodleStableVersion".zip -L -o plugin-policy.zip
|
||||
unzip -q plugin-policy.zip
|
||||
mv moodle-tool_policy-"$moodleStableVersion" /moodle/html/moodle/admin/tool/policy
|
||||
|
||||
curl -k --max-redirs 10 https://github.com/moodlehq/moodle-tool_dataprivacy/archive/'$moodleStableVersion'.zip -L -o plugin-dataprivacy.zip
|
||||
unzip -q plugin-dataprivacy.zip
|
||||
mv moodle-tool_dataprivacy-'$moodleStableVersion' /moodle/html/moodle/admin/tool/dataprivacy
|
||||
fi
|
||||
curl -k --max-redirs 10 https://github.com/moodlehq/moodle-tool_dataprivacy/archive/"$moodleStableVersion".zip -L -o plugin-dataprivacy.zip
|
||||
unzip -q plugin-dataprivacy.zip
|
||||
mv moodle-tool_dataprivacy-"$moodleStableVersion" /moodle/html/moodle/admin/tool/dataprivacy
|
||||
fi
|
||||
|
||||
if [ "'$installO365pluginsSwitch'" = "true" ]; then
|
||||
# install Office 365 plugins
|
||||
curl -k --max-redirs 10 https://github.com/Microsoft/o365-moodle/archive/'$o365pluginVersion'.zip -L -o o365.zip
|
||||
unzip -q o365.zip
|
||||
cp -r o365-moodle-'$o365pluginVersion'/* /moodle/html/moodle
|
||||
rm -rf o365-moodle-'$o365pluginVersion'
|
||||
fi
|
||||
if [ "$installO365pluginsSwitch" = "true" ]; then
|
||||
# install Office 365 plugins
|
||||
curl -k --max-redirs 10 https://github.com/Microsoft/o365-moodle/archive/"$o365pluginVersion".zip -L -o o365.zip
|
||||
unzip -q o365.zip
|
||||
cp -r o365-moodle-"$o365pluginVersion"/* /moodle/html/moodle
|
||||
rm -rf o365-moodle-"$o365pluginVersion"
|
||||
fi
|
||||
|
||||
if [ "'$searchType'" = "elastic" ]; then
|
||||
# Install ElasticSearch plugin
|
||||
/usr/bin/curl -k --max-redirs 10 https://github.com/catalyst/moodle-search_elastic/archive/master.zip -L -o plugin-elastic.zip
|
||||
/usr/bin/unzip -q plugin-elastic.zip
|
||||
/bin/mv moodle-search_elastic-master /moodle/html/moodle/search/engine/elastic
|
||||
if [ "$searchType" = "elastic" ]; then
|
||||
# Install ElasticSearch plugin
|
||||
/usr/bin/curl -k --max-redirs 10 https://github.com/catalyst/moodle-search_elastic/archive/master.zip -L -o plugin-elastic.zip
|
||||
/usr/bin/unzip -q plugin-elastic.zip
|
||||
/bin/mv moodle-search_elastic-master /moodle/html/moodle/search/engine/elastic
|
||||
|
||||
# Install ElasticSearch plugin dependency
|
||||
/usr/bin/curl -k --max-redirs 10 https://github.com/catalyst/moodle-local_aws/archive/master.zip -L -o local-aws.zip
|
||||
/usr/bin/unzip -q local-aws.zip
|
||||
/bin/mv moodle-local_aws-master /moodle/html/moodle/local/aws
|
||||
# Install ElasticSearch plugin dependency
|
||||
/usr/bin/curl -k --max-redirs 10 https://github.com/catalyst/moodle-local_aws/archive/master.zip -L -o local-aws.zip
|
||||
/usr/bin/unzip -q local-aws.zip
|
||||
/bin/mv moodle-local_aws-master /moodle/html/moodle/local/aws
|
||||
|
||||
elif [ "'$searchType'" = "azure" ]; then
|
||||
# Install Azure Search service plugin
|
||||
/usr/bin/curl -k --max-redirs 10 https://github.com/catalyst/moodle-search_azure/archive/master.zip -L -o plugin-azure-search.zip
|
||||
/usr/bin/unzip -q plugin-azure-search.zip
|
||||
/bin/mv moodle-search_azure-master /moodle/html/moodle/search/engine/azure
|
||||
fi
|
||||
elif [ "$searchType" = "azure" ]; then
|
||||
# Install Azure Search service plugin
|
||||
/usr/bin/curl -k --max-redirs 10 https://github.com/catalyst/moodle-search_azure/archive/master.zip -L -o plugin-azure-search.zip
|
||||
/usr/bin/unzip -q plugin-azure-search.zip
|
||||
/bin/mv moodle-search_azure-master /moodle/html/moodle/search/engine/azure
|
||||
fi
|
||||
|
||||
if [ "'$installObjectFsSwitch'" = "true" ]; then
|
||||
# Install the ObjectFS plugin
|
||||
/usr/bin/curl -k --max-redirs 10 https://github.com/catalyst/moodle-tool_objectfs/archive/master.zip -L -o plugin-objectfs.zip
|
||||
/usr/bin/unzip -q plugin-objectfs.zip
|
||||
/bin/mv moodle-tool_objectfs-master /moodle/html/moodle/admin/tool/objectfs
|
||||
if [ "$installObjectFsSwitch" = "true" ]; then
|
||||
# Install the ObjectFS plugin
|
||||
/usr/bin/curl -k --max-redirs 10 https://github.com/catalyst/moodle-tool_objectfs/archive/master.zip -L -o plugin-objectfs.zip
|
||||
/usr/bin/unzip -q plugin-objectfs.zip
|
||||
/bin/mv moodle-tool_objectfs-master /moodle/html/moodle/admin/tool/objectfs
|
||||
|
||||
# Install the ObjectFS Azure library
|
||||
/usr/bin/curl -k --max-redirs 10 https://github.com/catalyst/moodle-local_azure_storage/archive/master.zip -L -o plugin-azurelibrary.zip
|
||||
/usr/bin/unzip -q plugin-azurelibrary.zip
|
||||
/bin/mv moodle-local_azure_storage-master /moodle/html/moodle/local/azure_storage
|
||||
fi
|
||||
cd /moodle
|
||||
rm -rf /moodle/tmp
|
||||
' > /tmp/setup-moodle.sh
|
||||
# Install the ObjectFS Azure library
|
||||
/usr/bin/curl -k --max-redirs 10 https://github.com/catalyst/moodle-local_azure_storage/archive/master.zip -L -o plugin-azurelibrary.zip
|
||||
/usr/bin/unzip -q plugin-azurelibrary.zip
|
||||
/bin/mv moodle-local_azure_storage-master /moodle/html/moodle/local/azure_storage
|
||||
fi
|
||||
cd /moodle
|
||||
rm -rf /moodle/tmp
|
||||
EOF
|
||||
|
||||
chmod 755 /tmp/setup-moodle.sh
|
||||
/tmp/setup-moodle.sh >> /tmp/setupmoodle.log
|
||||
|
@ -473,12 +486,12 @@ EOF
|
|||
chmod 0400 /moodle/certs/nginx.*
|
||||
fi
|
||||
|
||||
# php config
|
||||
# PHP 8 fpm config
|
||||
PhpVer=$(get_php_version)
|
||||
PhpIni=/etc/php/${PhpVer}/fpm/php.ini
|
||||
sed -i "s/memory_limit.*/memory_limit = 512M/" $PhpIni
|
||||
sed -i "s/max_execution_time.*/max_execution_time = 18000/" $PhpIni
|
||||
sed -i "s/max_input_vars.*/max_input_vars = 100000/" $PhpIni
|
||||
sed -i "s/;max_input_vars.*/max_input_vars = 100000/" $PhpIni
|
||||
sed -i "s/max_input_time.*/max_input_time = 600/" $PhpIni
|
||||
sed -i "s/upload_max_filesize.*/upload_max_filesize = 1024M/" $PhpIni
|
||||
sed -i "s/post_max_size.*/post_max_size = 1056M/" $PhpIni
|
||||
|
@ -490,6 +503,10 @@ EOF
|
|||
sed -i "s/;opcache.memory_consumption.*/opcache.memory_consumption = 256/" $PhpIni
|
||||
sed -i "s/;opcache.max_accelerated_files.*/opcache.max_accelerated_files = 8000/" $PhpIni
|
||||
|
||||
# required for PHP8 cli at install time
|
||||
PhpIniCli=/etc/php/${PhpVer}/cli/php.ini
|
||||
sed -i "s/;max_input_vars.*/max_input_vars = 100000/" $PhpIniCli
|
||||
|
||||
# fpm config - overload this
|
||||
cat <<EOF > /etc/php/${PhpVer}/fpm/pool.d/www.conf
|
||||
[www]
|
||||
|
@ -764,11 +781,10 @@ EOF
|
|||
service varnish restart
|
||||
|
||||
if [ $dbServerType = "mysql" ]; then
|
||||
mysql -h $mysqlIP -u $mysqladminlogin -p${mysqladminpass} -e "CREATE DATABASE ${moodledbname} CHARACTER SET utf8;"
|
||||
mysql -h $mysqlIP -u $mysqladminlogin -p${mysqladminpass} -e "GRANT ALL ON ${moodledbname}.* TO ${moodledbuser} IDENTIFIED BY '${moodledbpass}';"
|
||||
mysql -h $mysqlIP -u $mysqladminlogin -p${mysqladminpass} -e "CREATE DATABASE ${moodledbname} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" | tee -a /tmp/debug
|
||||
mysql -h $mysqlIP -u $mysqladminlogin -p${mysqladminpass} -e "CREATE USER ${moodledbuser}@'%' IDENTIFIED BY '${moodledbpass}';" | tee -a /tmp/debug
|
||||
mysql -h $mysqlIP -u $mysqladminlogin -p${mysqladminpass} -e "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON ${moodledbname}.* TO ${moodledbuser}@'%';" | tee -a /tmp/debug
|
||||
|
||||
echo "mysql -h $mysqlIP -u $mysqladminlogin -p${mysqladminpass} -e \"CREATE DATABASE ${moodledbname};\"" >> /tmp/debug
|
||||
echo "mysql -h $mysqlIP -u $mysqladminlogin -p${mysqladminpass} -e \"GRANT ALL ON ${moodledbname}.* TO ${moodledbuser} IDENTIFIED BY '${moodledbpass}';\"" >> /tmp/debug
|
||||
elif [ $dbServerType = "mssql" ]; then
|
||||
/opt/mssql-tools/bin/sqlcmd -S $mssqlIP -U $mssqladminlogin -P ${mssqladminpass} -Q "CREATE DATABASE ${moodledbname} ( MAXSIZE = $mssqlDbSize, EDITION = '$mssqlDbEdition', SERVICE_OBJECTIVE = '$mssqlDbServiceObjectiveName' )"
|
||||
/opt/mssql-tools/bin/sqlcmd -S $mssqlIP -U $mssqladminlogin -P ${mssqladminpass} -Q "CREATE LOGIN ${moodledbuser} with password = '${moodledbpass}'"
|
||||
|
@ -912,7 +928,7 @@ EOF
|
|||
sed -i "23 a \$CFG->searchengine = 'elastic';" /moodle/html/moodle/config.php
|
||||
sed -i "23 a \$CFG->enableglobalsearch = 'true';" /moodle/html/moodle/config.php
|
||||
# create index
|
||||
php /moodle/html/moodle/search/cli/indexer.php --force --reindex
|
||||
php /moodle/html/moodle/search/cli/indexer.php --force --reindex || true
|
||||
|
||||
elif [ "$searchType" = "azure" ]; then
|
||||
# Set up Azure Search service plugin
|
||||
|
@ -925,7 +941,7 @@ EOF
|
|||
sed -i "23 a \$CFG->searchengine = 'azure';" /moodle/html/moodle/config.php
|
||||
sed -i "23 a \$CFG->enableglobalsearch = 'true';" /moodle/html/moodle/config.php
|
||||
# create index
|
||||
php /moodle/html/moodle/search/cli/indexer.php --force --reindex
|
||||
php /moodle/html/moodle/search/cli/indexer.php --force --reindex || true
|
||||
|
||||
fi
|
||||
|
||||
|
@ -937,7 +953,7 @@ EOF
|
|||
if [ "$dbServerType" = "postgres" ]; then
|
||||
# Get a new version of Postgres to match Azure version
|
||||
add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main"
|
||||
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
|
||||
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE='a' apt -key add -
|
||||
apt-get update
|
||||
apt-get install -y postgresql-client-9.6
|
||||
fi
|
||||
|
|
|
@ -20,8 +20,8 @@ MY_IP=$(hostname -i)
|
|||
|
||||
function setup_required_packages
|
||||
{
|
||||
apt update
|
||||
apt -y install build-essential autoconf flex nfs-kernel-server corosync pacemaker resource-agents
|
||||
apt_update_noninteractive
|
||||
apt_install_noninteractive build-essential autoconf flex nfs-kernel-server corosync pacemaker resource-agents
|
||||
|
||||
# Shouldn't let systemd start nfs-kernel-server (Pacemaker should do that)
|
||||
systemctl stop nfs-kernel-server
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
# Custom Script for Linux
|
||||
|
||||
#!/bin/bash
|
||||
# Custom Script for Linux
|
||||
|
||||
# The MIT License (MIT)
|
||||
#
|
||||
|
@ -22,55 +21,48 @@
|
|||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
set -ex
|
||||
echo "### Script Start `date`###"
|
||||
echo "### Script Start $(date)###"
|
||||
|
||||
moodle_on_azure_configs_json_path=${1}
|
||||
|
||||
. ./helper_functions.sh
|
||||
|
||||
get_setup_params_from_configs_json $moodle_on_azure_configs_json_path || exit 99
|
||||
get_setup_params_from_configs_json "$moodle_on_azure_configs_json_path" || exit 99
|
||||
|
||||
echo $glusterNode >> /tmp/vars.txt
|
||||
echo $glusterVolume >> /tmp/vars.txt
|
||||
echo $siteFQDN >> /tmp/vars.txt
|
||||
echo $httpsTermination >> /tmp/vars.txt
|
||||
echo $syslogServer >> /tmp/vars.txt
|
||||
echo $webServerType >> /tmp/vars.txt
|
||||
echo $dbServerType >> /tmp/vars.txt
|
||||
echo $fileServerType >> /tmp/vars.txt
|
||||
echo $storageAccountName >> /tmp/vars.txt
|
||||
echo $storageAccountKey >> /tmp/vars.txt
|
||||
echo $nfsVmName >> /tmp/vars.txt
|
||||
echo $nfsByoIpExportPath >> /tmp/vars.txt
|
||||
echo $htmlLocalCopySwitch >> /tmp/vars.txt
|
||||
echo $phpVersion >> /tmp/vars.txt
|
||||
echo "$glusterNode" >> /tmp/vars.txt
|
||||
echo "$glusterVolume" >> /tmp/vars.txt
|
||||
echo "$siteFQDN" >> /tmp/vars.txt
|
||||
echo "$httpsTermination" >> /tmp/vars.txt
|
||||
echo "$syslogServer" >> /tmp/vars.txt
|
||||
echo "$webServerType" >> /tmp/vars.txt
|
||||
echo "$dbServerType" >> /tmp/vars.txt
|
||||
echo "$fileServerType" >> /tmp/vars.txt
|
||||
echo "$storageAccountName" >> /tmp/vars.txt
|
||||
echo "$storageAccountKey" >> /tmp/vars.txt
|
||||
echo "$nfsVmName" >> /tmp/vars.txt
|
||||
echo "$nfsByoIpExportPath" >> /tmp/vars.txt
|
||||
echo "$htmlLocalCopySwitch" >> /tmp/vars.txt
|
||||
echo "$phpVersion" >> /tmp/vars.txt
|
||||
|
||||
|
||||
|
||||
check_fileServerType_param $fileServerType
|
||||
check_fileServerType_param "$fileServerType"
|
||||
|
||||
{
|
||||
set -ex
|
||||
echo "### Function Start `date`###"
|
||||
echo "### Function Start $(date)###"
|
||||
|
||||
# add azure-cli repository
|
||||
curl -sL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | tee /etc/apt/trusted.gpg.d/microsoft.gpg > /dev/null
|
||||
# add azure-cli repository && install azure cli
|
||||
AZ_REPO=$(lsb_release -cs)
|
||||
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | tee /etc/apt/sources.list.d/azure-cli.list
|
||||
|
||||
# add PHP-FPM repository
|
||||
add-apt-repository ppa:ondrej/php -y > /dev/null 2>&1
|
||||
mkdir -p /etc/apt/keyrings
|
||||
curl -sLS https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/keyrings/microsoft.gpg && chmod go+r /etc/apt/keyrings/microsoft.gpg
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" > /etc/apt/sources.list.d/azure-cli.list
|
||||
|
||||
apt-get -qq -o=Dpkg::Use-Pty=0 update
|
||||
apt_update_noninteractive
|
||||
|
||||
# install pre-requisites including VARNISH and PHP-FPM
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get --yes \
|
||||
--no-install-recommends \
|
||||
-qq -o=Dpkg::Use-Pty=0 \
|
||||
-o Dpkg::Options::="--force-confdef" \
|
||||
-o Dpkg::Options::="--force-confold" \
|
||||
install \
|
||||
|
||||
apt_install_noninteractive \
|
||||
azure-cli \
|
||||
ca-certificates \
|
||||
curl \
|
||||
|
@ -85,28 +77,28 @@ check_fileServerType_param $fileServerType
|
|||
unattended-upgrades \
|
||||
tuned \
|
||||
varnish \
|
||||
php$phpVersion \
|
||||
php$phpVersion-cli \
|
||||
php$phpVersion-curl \
|
||||
php$phpVersion-zip \
|
||||
php \
|
||||
php-cli \
|
||||
php-curl \
|
||||
php-zip \
|
||||
php-pear \
|
||||
php$phpVersion-mbstring \
|
||||
php-mbstring \
|
||||
mcrypt \
|
||||
php$phpVersion-dev \
|
||||
php-dev \
|
||||
graphviz \
|
||||
aspell \
|
||||
php$phpVersion-soap \
|
||||
php$phpVersion-json \
|
||||
php$phpVersion-redis \
|
||||
php$phpVersion-bcmath \
|
||||
php$phpVersion-ldap \
|
||||
php$phpVersion-gd \
|
||||
php$phpVersion-pgsql \
|
||||
php$phpVersion-mysql \
|
||||
php$phpVersion-xmlrpc \
|
||||
php$phpVersion-intl \
|
||||
php$phpVersion-xml \
|
||||
php$phpVersion-bz2
|
||||
php-soap \
|
||||
php-json \
|
||||
php-redis \
|
||||
php-bcmath \
|
||||
php-ldap \
|
||||
php-gd \
|
||||
php-pgsql \
|
||||
php-mysql \
|
||||
php-xmlrpc \
|
||||
php-intl \
|
||||
php-xml \
|
||||
php-bz2
|
||||
|
||||
# install azcopy
|
||||
wget -q -O azcopy_v10.tar.gz https://aka.ms/downloadazcopy-v10-linux && tar -xf azcopy_v10.tar.gz --strip-components=1 && mv ./azcopy /usr/bin/
|
||||
|
@ -138,42 +130,42 @@ EOF
|
|||
systemctl enable tuned
|
||||
tuned-adm profile throughput-performance
|
||||
|
||||
if [ $fileServerType = "gluster" ]; then
|
||||
if [ "$fileServerType" = "gluster" ]; then
|
||||
#configure gluster repository & install gluster client
|
||||
add-apt-repository ppa:gluster/glusterfs-3.10 -y
|
||||
apt-get -y update
|
||||
apt-get -y -qq -o=Dpkg::Use-Pty=0 install glusterfs-client
|
||||
add-apt-repository ppa:gluster/glusterfs-9 --yes
|
||||
apt_update_noninteractive
|
||||
apt_install_noninteractive glusterfs-client
|
||||
elif [ "$fileServerType" = "azurefiles" ]; then
|
||||
apt-get -y -qq -o=Dpkg::Use-Pty=0 install cifs-utils
|
||||
apt_install_noninteractive cifs-utils
|
||||
fi
|
||||
|
||||
if [ "$webServerType" = "nginx" -o "$httpsTermination" = "VMSS" ]; then
|
||||
apt-get --yes -qq -o=Dpkg::Use-Pty=0 install nginx
|
||||
apt_install_noninteractive nginx
|
||||
fi
|
||||
|
||||
if [ "$webServerType" = "apache" ]; then
|
||||
# install apache pacakges
|
||||
apt-get --yes -qq -o=Dpkg::Use-Pty=0 install apache2 libapache2-mod-php
|
||||
apt_install_noninteractive apache2 libapache2-mod-php
|
||||
else
|
||||
# for nginx-only option
|
||||
apt-get --yes -qq -o=Dpkg::Use-Pty=0 install php$phpVersion-fpm
|
||||
apt_install_noninteractive php-fpm
|
||||
fi
|
||||
|
||||
|
||||
# Moodle requirements
|
||||
if [ "$dbServerType" = "mssql" ]; then
|
||||
install_php_mssql_driver
|
||||
fi
|
||||
|
||||
|
||||
# PHP Version
|
||||
PhpVer=$(get_php_version)
|
||||
|
||||
if [ $fileServerType = "gluster" ]; then
|
||||
if [ "$fileServerType" = "gluster" ]; then
|
||||
# Mount gluster fs for /moodle
|
||||
sudo mkdir -p /moodle
|
||||
sudo chown www-data /moodle
|
||||
sudo chmod 770 /moodle
|
||||
sudo echo -e 'Adding Gluster FS to /etc/fstab and mounting it'
|
||||
setup_and_mount_gluster_moodle_share $glusterNode $glusterVolume
|
||||
setup_and_mount_gluster_moodle_share "$glusterNode" "$glusterVolume"
|
||||
elif [ $fileServerType = "nfs" ]; then
|
||||
# mount NFS export (set up on controller VM--No HA)
|
||||
echo -e '\n\rMounting NFS export from '$nfsVmName':/moodle on /moodle and adding it to /etc/fstab\n\r'
|
||||
|
@ -209,7 +201,7 @@ worker_processes auto;
|
|||
pid /run/nginx.pid;
|
||||
|
||||
events {
|
||||
worker_connections 8192;
|
||||
worker_connections 8192;
|
||||
multi_accept on;
|
||||
use epoll;
|
||||
}
|
||||
|
@ -286,7 +278,7 @@ EOF
|
|||
mkdir -p /var/www/html
|
||||
ACCOUNT_KEY="$storageAccountKey"
|
||||
NAME="$storageAccountName"
|
||||
END=`date -u -d "60 minutes" '+%Y-%m-%dT%H:%M:00Z'`
|
||||
END=$(date -u -d "60 minutes" '+%Y-%m-%dT%H:%M:00Z')
|
||||
htmlRootDir="/var/www/html/moodle"
|
||||
|
||||
sas=$(az storage share generate-sas \
|
||||
|
@ -320,7 +312,6 @@ server {
|
|||
root ${htmlRootDir};
|
||||
index index.php index.html index.htm;
|
||||
|
||||
ssl on;
|
||||
ssl_certificate /moodle/certs/nginx.crt;
|
||||
ssl_certificate_key /moodle/certs/nginx.key;
|
||||
ssl_session_timeout 1d;
|
||||
|
@ -365,7 +356,7 @@ server {
|
|||
listen 81 default;
|
||||
server_name ${siteFQDN};
|
||||
root ${htmlRootDir};
|
||||
index index.php index.html index.htm;
|
||||
index index.php index.html index.htm;
|
||||
|
||||
# Log to syslog
|
||||
error_log syslog:server=localhost,facility=local1,severity=error,tag=moodle;
|
||||
|
@ -394,9 +385,9 @@ EOF
|
|||
return 404;
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files \$uri \$uri/index.php?\$query_string;
|
||||
}
|
||||
location / {
|
||||
try_files \$uri \$uri/index.php?\$query_string;
|
||||
}
|
||||
|
||||
location ~ [^/]\.php(/|$) {
|
||||
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
||||
|
@ -418,7 +409,7 @@ EOF
|
|||
upstream backend {
|
||||
server unix:/run/php/php${PhpVer}-fpm.sock fail_timeout=1s;
|
||||
server unix:/run/php/php${PhpVer}-fpm-backup.sock backup;
|
||||
}
|
||||
}
|
||||
|
||||
EOF
|
||||
fi
|
||||
|
@ -430,16 +421,16 @@ EOF
|
|||
|
||||
cat <<EOF >> /etc/apache2/sites-enabled/${siteFQDN}.conf
|
||||
<VirtualHost *:81>
|
||||
ServerName ${siteFQDN}
|
||||
ServerName ${siteFQDN}
|
||||
|
||||
ServerAdmin webmaster@localhost
|
||||
DocumentRoot ${htmlRootDir}
|
||||
ServerAdmin webmaster@localhost
|
||||
DocumentRoot ${htmlRootDir}
|
||||
|
||||
<Directory ${htmlRootDir}>
|
||||
Options FollowSymLinks
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
<Directory ${htmlRootDir}>
|
||||
Options FollowSymLinks
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
EOF
|
||||
if [ "$httpsTermination" != "None" ]; then
|
||||
cat <<EOF >> /etc/apache2/sites-enabled/${siteFQDN}.conf
|
||||
|
@ -456,7 +447,7 @@ EOF
|
|||
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
|
||||
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
|
||||
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" forwarded
|
||||
ErrorLog "|/usr/bin/logger -t moodle -p local1.error"
|
||||
ErrorLog "|/usr/bin/logger -t moodle -p local1.error"
|
||||
CustomLog "|/usr/bin/logger -t moodle -p local1.notice" combined env=!forwarded
|
||||
CustomLog "|/usr/bin/logger -t moodle -p local1.notice" forwarded env=forwarded
|
||||
|
||||
|
@ -472,7 +463,7 @@ EOF
|
|||
fi
|
||||
sed -i "s/memory_limit.*/memory_limit = 512M/" $PhpIni
|
||||
sed -i "s/max_execution_time.*/max_execution_time = 18000/" $PhpIni
|
||||
sed -i "s/max_input_vars.*/max_input_vars = 100000/" $PhpIni
|
||||
sed -i "s/;max_input_vars.*/max_input_vars = 100000/" $PhpIni
|
||||
sed -i "s/max_input_time.*/max_input_time = 600/" $PhpIni
|
||||
sed -i "s/upload_max_filesize.*/upload_max_filesize = 1024M/" $PhpIni
|
||||
sed -i "s/post_max_size.*/post_max_size = 1056M/" $PhpIni
|
||||
|
@ -483,7 +474,7 @@ EOF
|
|||
sed -i "s/;opcache.enable.*/opcache.enable = 1/" $PhpIni
|
||||
sed -i "s/;opcache.memory_consumption.*/opcache.memory_consumption = 512/" $PhpIni
|
||||
sed -i "s/;opcache.max_accelerated_files.*/opcache.max_accelerated_files = 20000/" $PhpIni
|
||||
|
||||
|
||||
# Remove the default site. Moodle is the only site we want
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
if [ "$webServerType" = "apache" ]; then
|
||||
|
@ -750,7 +741,7 @@ EOF
|
|||
if [ "$webServerType" = "nginx" ]; then
|
||||
if pgrep -x "$service" >/dev/null
|
||||
then
|
||||
echo “Stop the $service!!!”
|
||||
echo "Stop the $service!!!"
|
||||
systemctl stop $service
|
||||
else
|
||||
systemctl mask $service
|
||||
|
@ -799,5 +790,5 @@ EOF
|
|||
service apache2 restart
|
||||
fi
|
||||
|
||||
echo "### Script End `date`###"
|
||||
echo "### Script End $(date)###"
|
||||
} 2>&1 | tee /tmp/setup.log
|
||||
|
|
Загрузка…
Ссылка в новой задаче