######################### Installing Proxmox ######################### # Make a Bootable USB using RUFUS and choose "Write in DD image mode" Country: Uganda Time zone: Africa/Kampala Keyboard layout: US English Password: Confirm: Email: xyz@gmail.com Management Interface: eno1 Hostname: moodlesite.ac.ug IP Address: 10.16.1.11/24 Gateway: 10.16.1.1 DNS Server: local dns , 8.8.8.8 https://10.16.1.11:8006/ Server: 10.16.1.11 Username: root Password: ############# Adjust network settings Proxmox ############# nano /etc/network/interfaces auto lo iface lo inet loopback iface eno1 inet manual auto vmbr0 iface vmbr0 inet static address 10.16.1.11/24 gateway 10.16.1.1 bridge-ports eno1 bridge-stp off bridge-fd 0 iface wlp2s0 inet manual ##################################################################### ######################### Installing Moodle ######################### # sudo apt install openssh-server sudo apt-get update sudo apt-get upgrade ############# Installing web server Apache2 ############# sudo apt install apache2 sudo a2enmod rewrite sudo systemctl restart apache2 sudo apt install zip unzip curl ############# Installing Database server, MariaDB ############# sudo apt install mariadb-server mariadb-client ## Enter the MySQL application sudo mysql -u root CREATE USER 'user'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON * . * TO 'user'@'localhost'; exit; sudo mysql_secure_installation Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y # Checking mysql service sudo systemctl status mariadb ############# Installing PHP application ############# sudo apt install php libapache2-mod-php php-cli php-curl php-mysql php-fpm php-intl aspell graphviz php-ldap php-pspell php-xml php-xmlrpc php-zip php-soap php-mbstring php-gd php-soap # Checking mysql service php -v ############# Installing PHPMyAdmin ############# sudo apt install phpmyadmin # Login using the mysql user and the respective password # Create the database 'elearning' https://download.moodle.org/releases/latest/ ############# Download Moodle application from Moodle ############# https://download.moodle.org/releases/latest/ # Use Filezilla to transfer this to your remote server to your home directory /home/ict/ sudo unzip /home/ict/moodle-latest-401.zip -d /var/www/ sudo mkdir /var/moodledata cd /var/www/ sudo mv moodle elearning cd /etc/apache2/sites-available/ sudo cp 000-default.conf elearning.conf sudo nano elearning.conf ServerAdmin webmaster@localhost DocumentRoot /var/www/elearning sudo a2ensite elearning.conf sudo a2dissite 000-default.conf ******** Some Moodle permissions ******* sudo chown -R root:www-data /var/www/elearning sudo chown -R www-data: /var/moodledata sudo chmod -R u+rwX,g+rwX,o+rX /var/www/elearning sudo chmod -R u+rwX,g+rwX,o+rX /var/moodledata **** ease for plugin install **** sudo chmod -R u+rwX,g+rwX,o+rX /var/www/elearning **** after install **** sudo chmod -R u+rwX,g+rX,o+rX /var/www/elearning ******* Adjust upload_max_size ******** sudo nano /etc/php/8.1/apache/php.ini ;post_max_size = 8M post_max_size = 32M ;upload_max_filesize = 2M upload_max_filesize = 8M ;max_execution_time = 30 max_execution_time = 120 ;memory_limit = 30 memory_limit = 60 ;max_input_vars = 1000 max_input_vars = 5000 #################### Running the moodle cron #################### sudo crontab -e 0 0 * * * /home/ict/backup.sh */1 * * * * /usr/bin/php /var/www/elearning/admin/cli/cron.php >/dev/null >/dev/null # You can run the cron from the web interface as well https://moodlesite/admin/cron.php *********** Backup file *********** cd /home/ict mkdir backups sudo nano backup.sh ######################################################################################################################## TIMESTAMP=$(date +"%F") BACKUP_DIR="/home/ict/backups/$TIMESTAMP" mkdir -p $BACKUP_DIR touch $BACKUP_DIR/log.txt echo $(date +"%D %T")": First Purging of caches begins" >> $BACKUP_DIR/log.txt php admin/cli/purge_caches.php echo $(date +"%D %T")": First Purging completes" >> $BACKUP_DIR/log.txt echo $(date +"%D %T")": moodledata zipping begins" >> $BACKUP_DIR/log.txt zip -r $BACKUP_DIR/moodledata.zip /var/moodledata echo $(date +"%D %T")": moodledata zipping complete" >> $BACKUP_DIR/log.txt echo $(date +"%D %T")": elearning zipping begins" >> $BACKUP_DIR/log.txt zip -r $BACKUP_DIR/elearning.zip /var/www/elearning echo $(date +"%D %T")": elearning zipping completes" >> $BACKUP_DIR/log.txt MYSQL_USER="user" MYSQL=/usr/bin/mysql MYSQL_PASSWORD="pass12345" MYSQLDUMP=/usr/bin/mysqldump mkdir -p "$BACKUP_DIR/mysql" echo $(date +"%D %T")": Database backups begin" >> $BACKUP_DIR/log.txt databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|phpmyadmin|mysql)"` for db in $databases; do $MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/mysql/$db.gz" done echo $(date +"%D %T")": Database backups complete " >> $BACKUP_DIR/log.txt ######################################################################################################################## chmod u+x backup.sh ################# Setup samba Server ################# sudo apt install samba sudo nano /etc/samba/smb.conf #Added by Moodle Admin Name [backup] comment = Shared files path = /mnt/backup read only = no create mask = 0775 directory mask = 0775 sudo smbpasswd -a yourpassword sudo smbpasswd -a library sudo service smbd restart ################# Access samba Server ################# sudo apt-get install cifs-utils sudo mkdir /mnt/datadirectory sudo chmod 777 /mnt/datadirectory sudo nano /root/.smbcredentials username=username password=password sudo nano /etc/fstab //196.43.**.**/backups/ /mnt/idr cifs credentials=/root/.smbcredentials,iocharset=utf8,gid=0,uid=0,file_mode=0777,dir_mode=0777 0 0 sudo mount -a sudo umount //196.43.**.**/backups/ ############ Make bash file executable ############ sudo nano mydata_fetch.sh sudo chmod u+x mydata_fetch.sF ################# MySQL Migration ################# # On the new server import the dump sudo mysqldump --single-transaction -u user -p elearning > elearning.sql sudo mysql -u username -p elearning < /home/username/transfer/elearning.sql