{{ ::installing-moodle.jpg?600 |}}
~~NOTOC~~
\\
\\
Run this command on screen every time you log in, so when you get cut off, you can just pick up from where you left off:
screen -dR primecut
----
Following the processes and commands below should enable you to run a fully functioning Moodle installation on a minimally endowed Ubuntu machine.
====== Swap ======
fallocate -l 1G /swapfile1G
mkswap /swapfile1G
swapon /swapfile1G
swapon -s
nano /etc/fstab
to add the ff entry:
/swapfile1G none swap sw 0 0
====== Apache, PHP, MySQL======
sudo add-apt-repository ppa:ondrej/php7.3
apt update && sudo apt upgrade
apt install -y mysql-client mysql-server php7.3 libapache2-mod-php7.3 php7.3-mysql php7.3-mysqli graphviz aspell ghostscript clamav php7.3-pspell php7.3-curl php7.3-gd php7.3-intl php7.3-xml php7.3-xmlrpc php7.3-ldap php7.3-zip php7.3-soap php7.3-mbstring apache2
====== Database ======
* install mysql
apt install mysql
* secure it and set the root password
mysql_secure_installation
Set your root password, remove anonymous users, disallow root's remote login, remove test database, reload privilege tables now.
* set up the moodle database
mysql -u root -p[rootpasswordhere]
CREATE DATABASE moodle;
CREATE user 'moodleadmin'@'localhost' IDENTIFIED BY 'Secur3P@zzwd';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO moodleadmin@localhost IDENTIFIED BY 'Secur3P@zzwd';
FLUSH PRIVILEGES;
quit;
====== Moodle======
sudo chown www-data:www-data -R /var/www/html/moodle
sudo chmod 775 -R /var/www/html/moodle
sudo mkdir -p /var/moodledata
sudo chmod 775 -R /var/moodledata
sudo chown www-data:www-data -R /var/moodledata
cd /var/www/html/moodle/
sudo cp config-dist.php config.php
nano config.php
Set up your config.php
$CFG->dbtype = 'mysql';
$CFG->dblibrary = 'native';
$CFG->dbhost = 'localhost'; // eg 'localhost' or 'mysite.com' or IP
$CFG->dbname = 'moodle';
$CFG->dbuser = 'moodleadmin'; // your database username
$CFG->dbpass = 'Secur3P@zzwd'; // your database password
$CFG->prefix = 'mdl_'; // prefix to use for all table names
$CFG->wwwroot = 'http://';
$CFG->dataroot = '/var/moodledata';
====== Vhost Setup======
* Create your vhost config file
cd /etc/sites-available/
nano mymoodle.prime.edu.ph.conf
ServerAdmin admin@mydomain.com
DocumentRoot /var/www/html/moodle/
ServerName myrmoodle.prime.edu.ph
Options +FollowSymlinks
AllowOverride All
Require all granted
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
* enable your vhost or site
sudo a2enmod rewrite
sudo a2ensite mymoodle.prime.edu.ph.conf
systemctl restart apache2
You may also have to disable the default vhost. Check the actual file. It could be
sudo a2dissite 000-default.conf
systemctl restart apache2
====== Moodle Setup======
* Set it up via
http://[server-IP]/install.php
* Fill out these fields:
Web address: [ your IP address or domain name ]
Moodle directory: /var/www/html/moodle
Data Directory: /var/moodledata
Click next. Get to database section and fill out these fields:
Database host: localhost
Database name: moodle
Database user: moodleadmin
Database password: Secur3P@zzwd
Tables prefix: mdl_
Get to the section where you have to set up the site administrator. Under General, you see
Username:
New password:
First name:
Surname:
======= Post-Installation=======
====== Backup/Moving to Another Machine ======
* Files to backup
/var/moodledata
/var/www/html/moodle
[ db backup ]
* To backup db
mysqldump -h localhost -u root --password=mypassword -C -Q -e --create-options moodle > moodle-database.sql
* To restore db
mysql -u root -pmypassword moodle < moodle-database.sql
====== Mailer ======
In case you don't have an email account that can be used to send out emails in bulk, you may also use the Moodle server itself as a send-only postfix mailer.
sudo apt install mailutils
If prompted for type of mail configuration, just choose Internet site. For the system mail name, it is important you key in your FQDN (fully qualified domain name), the one reflected on your rDNS, so something like
mymoodlesite.prime.edu.ph
Once done, you may configure your postfix:
nano /etc/postfix/main.cf
Replace the appropriate lines with these:
inet_interfaces = loopback-only
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, $mydomain
sudo systemctl restart postfix
Once done, you may test your mailer with this:
echo "Just testing the send-only postfix" | mail -s "Testing 1 2 3"
Note that the initial messages coming out of this server will be flagged as "spam". If you want it to be "perfect" right from the get-go, you need to know more about TXT records, SPF, DKIM, Amavis. Otherwise, your mails will get better over time.
====== SSL Certificate======
Every site needs encryption these days. So you may install an SSL Certificate on your site. This section requires that you have a proper rDNS entry on your machine and your DNS points to your machine's IP with an A/AAAA record.
sudo apt install snapd
sudo snap install --classic certbot
sudo certbot --apache
We recommend an autoredirect to the secure site.
Once done, confirm by adding S to your address in the "http". So something like httpS://mymoodlesite.prime.edu.ph