best practices in moodle administration
TRANSCRIPT
Best Practices in Moodle Administration
Jonathan MooreFounder
Background and Context
Managed thousands of Moodle sites
Managed millions of Moodle user accounts
Over 10 years experience with Moodle
Tuning, scalability, and performance expert
Author of Moodle Module Development
Format
Variety of tips / tricks
Learn the possibilities
Some hands on
Ask questions!
Share your tips
Getting to Know You
How many were in this session last year?
Interest in new features in 2.8 / 2.9?
Getting to Know You
How many new admins?
How many running Moodle 2.6? Moodle 2.7? Moodle 2.8?
Anyone running Moodle older than 2.6?
Any Moodle 1.9 sites?
Are you a 'geeky admin' or instructional admin?
Getting to Know You
How many host your own Moodle site?
What OS are you running?
What web server are you running?
What database are you running?
What are you hoping to learn today?
Outages
80% of failures are bad changes
80% of downtime finding the bad change
Outages
80% of failures are bad changes
80% of downtime finding the bad change
Moodle Mission Critical?
Use Change Management!
Have a stakeholder change advisory board
Who are our stakeholders?
What should we control?
What causes downtime?
What causes user issues?
Hands-on
Forming a Change Advisory Board
Who?
How often?
What are we controlling?
Change Management Tips
Control settings management
Control module approval
Control stack changes
Document the how's and why's
Be responsive
Read the Visible Ops book
Hands-on
Local Moodle install
Moodle.orgDownloads
Current builds
Choose Mac / PC
Admin Know Thy Server
Monitoring: Cacti / ZennossSNMP monitoring
Round robin log storage
Alerts and Notifications: NagiosSNMP alert system
Have your servers page or text you!
Linux most used for scalability
Windows lower performance for PHP apps, but improving
Mac OSX forking performance issueApache and MySQL concurrency issue
Platform Selection
Performance Tips
PHP Accelerator APC / OPCache
MySQL Buffers and Query Caching
Use InnoDB
Use MariaDB build
Sessions
Moodle source code location
Performance Tweaking
Memory Budget
Concurrency
5 Things Making Your Site Slow
Testing
Hands-on
Visit phpinfo
Site Administration Server phpInfo
Confirm PHP version
Confirm if PHP Accelerator
More Tips
Batch cron.php runs for multiple Moodles
Check state of indexes and bigints
Perform database maintenance
Performance Testing Tools
AdminsjMeter
Apache ab utility
DevsBehat / Sellenium
XProf
JMeter Benchmarking
Simulates simultaneous user activity
Gathers response and throughput results
Not a browser can't test javascript
Can use to measure +/- of changes
Can use to estimate expected concurrency, but harder
Moodle 2.6 and onward has builtin integration
Hands-on
Download jMeter
Show ab
User Management
Plan ahead Moodle sites grow fast!
Measure twice cut once
Automate
Great combination: LDAP authentication with external database enrolment
Automate account creation
Enrollment Plug-ins
Automate course creation
Automate teacher assignment
Automate student enrollments
Synchronization scripts
A Better Way Automate!
Enrollment Management
Enrollments vs course role assignments
Enrollments using cohorts
Expand?
Hands-on
Enroll a cohort into a course
Assign user role in course without enrollment
Automate user creation, course creation and enrolments
Use LDAP auth + external DB enrolment
Get higher adoption rates from instructors
Instructor can focus more time on teaching less on the technology
Just-in-Case Model
Hands-on
Bulk upload users with a flat file
External DB enrollmet setup
Roles
Avoid changing built in roles
Remember reset defaults option
Know what level to apply roles atAdmin: global
Course Creator: global, or category
Student, Teacher: course
Know what level capabilities work at
Make new roles by copying most similar existing role
Hands-on
Duplicate a role and edit
Course backups not a full backup!
Disable automated course backups?
Yesterday instance
Backup ElementsMoodle code
Moodledata
Database
Backups Management
Hands-on
Make a Moodle backupCopy Moodle source dir
Copy Moodle data dir
'dump' database to sql file
Use an issue tracker / ticket system
Get a detailed user report
Use Moodle debugger
Reproduce issue
Use searchGoogle
Moodle tracker
Moodle forums and docs
Finding and Fixing
Hands-on
Enable debugging
Site Admin Development Debugging
Increase debugging level
Enable display
Enable performance info
Moodle Issue Tracker
Use notification screen to confirm version
Moodle Issue Tracker
Vote for bugs
Set a watch your important bugs
Store issue ID in your support system for later reference
http://tracker.moodle.org
Hands-on
Visit issue tracker
Http://tracker.moodle.org
Custom Development and Modules
Don't load modules just because they are available
Use modules over hacks
Use the forums to evaluate modules
Use the author's profile to research the creator
Consider long term availability
Consider security
Common Plug-in Types
Blocks
Activity modules
Filters
Auth
Enrollment
Local
Themes
PhpMyAdmin / Adminer
Useful and powerful, but dangerous
Useful to pull reports not built into Moodle
Change settings not in GUI
Fix Moodle when broken by user error
Reset administrator password if locked out
Hands-on
Install the certificate module
Install Adminer
MyODBC
Windows client software
Connect MySQL to desktop applications
Make ad hoc reports in MS Access, Excel, Open Office, etc.
Various Admin Helpers
Moodle debugGeneral debugging
Performance debugging
phpinfo confirm your php build
iperf test your network
Iostat / sar linux disk usage stats
strace see what a process is doing
Security
Security report
Use password salts
User passwords less secure then ever!Know about password managers like lastpass and keepass
Don't give web server user write permissions to Moodle source
General Security
Select Enterprise class OS with long term update support.
Automate updates / have set release schedule
Moodledata outside of web root
Try mod_sec
Consider using weekly stable git for Moodle auto updates
Consider forced logins
HTTPS logins
General Security
Select Enterprise class OS with long term update support.
Automate updates / have set release schedule
Moodledata outside of web root
Try mod_sec
Consider using weekly stable git for Moodle auto updates
Consider forced logins
HTTPS logins
Hands-on
Run security report
Enable force logins
Show secure logins setting
Show kpass/last pass password manager
Go to Moodle Docs security FAQ
Email delivery
Make sure you have valid reverse DNS
Make sure you have permission to send email for primary administrator's email account
Use email debug to help diagnose problems.
Custom themes
Start with a basic theme
Copy existing theme to a new folder name
Prevents upgrades from wiping out
Test on a non-production site
Test with many browsers / screen sizes
Hands-on
Change theme
Open theme settings
Add image
Change colors
Questions?
http://elearningconsultancy.com
Twitter: @moorejon
Skype: moorejon07
What we do
Expert advice and eLearning program review
Evangelism and training
Instructional design
Custom development
System tuning
Performance assessment