For teachers who don't have much technical expertise but would like their own Moodle installation on the cheap - I created this video tutorial which covers Moodle installation in about 11 minutes.
This video demonstrates how to set up a domain name and web hosting service and then install Moodle using cPanel on shared hosting. This tutorial does NOT make use of a scripting program such as Fantastico or QuickInstall as I believe it is better if the administrator has a little bit of an understanding about what is going on underneath the hood. In addition, when you install Moodle yourself, you are sure to get the latest version with the latest features and security updates.
When used in conjunction with the installation instructions available on the Moodle.org website, this video tutorial will hopefully make the installation process much easier to get through. I know my original Moodle install a few years ago took hours because I got stuck on many simple little things that I just didn't know. Hopefully this video tutorial will save others from that frustration. Try to pay close attention to the details as they are important. In addition, I suggest you watch this video on full screen for maximum clarity.
Here it is:
Feedback is always welcome!
One more note before signing off, I created a series of video tutorials about how to install Mahara (an e-portfolio program) as well as a PDF step-by-step guide which contains many screen shots and detailed instructions. Considering the that the installation process for Mahara and Moodle are very similar, you might want to visit my website http://mygreatlearningsite.com/ to view the PDF guide and video tutorials as they contain much more information than this short tutorial does. I think you will find it very useful.
P.S. The Moodle is a demonstration of a Moodle 2.1 installation.
I assume that this is on the cheapest hosting plan? the $3.95 version?
My current host JustHost won't move php up to php version 5.3.x so no Moodle 2.1 for me.
- Why use a different company for the domain name? What advantage?
This tutorial does NOT make use of a scripting program such as Fantastico or QuickInstall as I believe it is better if the administrator has a little bit of an understanding about what is going on underneath the hood.
One problem with Fantastico Moodle Installers is that I've seen many of them install the moodledata folder right into public_html folder. Then you have to change the config.php file anyway to point out of the that folder.
But yeah, the other problem is that the versions are usually not up to date.
Regarding the scripting programs, I guess it depends. I have experimented with QuickInstall and it put the moodledata folder in the correct place outside the root, however scripting programs are not perfect. For starters, you get old (and sometimes) buggy versions, they don't set up a cron job for you and most of all when you will want to update or install additional Moodle modules - you won't know anything about your Moodle structure if the only thing you ever did was run a scripting program. So, I am with you on that one.
As for the $3.95 monthly hosting plan, read the fine print and you will see that is when you sign up for 3yrs. If you don't want to get locked in you can get monthly hosting plans in the low $7 range which is what I use and it supports whatever you need to install Moodle.
Personally, I like to use a domain name company which is separate from my web hosting service, this way if I ever want to switch web hosts I don't need to concerned about losing my domain name as well. I'm not saying it is a problem, but theoretically it could be. I think it makes switching web hosting services that much easier. You control your domain name.
I don't have a problem plugging Hostgator as I have found their prices, up-time and tech support amazing. They even made sure I had php 5.3 running which is not yet standard as some programs can't run on 5.3 and therefore their default is 5.2 right now. They gave me 5.3 as per my request on the $7 a month plan. I have tried another host in the past and was not nearly as happy with their quality of service. I would say if you are not happy with your host just switch (especially if they don't control your domain name).
I didn't find the need to add that line particular line to the php.ini file although I did get a warning stating:
Enabling the PHP setting display_errors is not recommended on production sites because some error messages may reveal sensitive information about your server.
Resolving that requires a click of the button on the control panel under the "php.ini QuickConfig" icon. You can turn globals off in the same place.
As for php 5.3, in this video I am assuming you have that running - if you want to explain here what the exact details of how to create this .htaccess file so others can do so on their own that would be great.
In general, this was a video about what to do, I couldn't cover all the troubleshooting issues. Especially, since I really didn't have anything major. I asked my webhost to make sure I have 5.3 running and a click of the button for display errors off.
I very much appreciate your feedback.
Ok, to sum up the missing parts of your tutorial:
- Hostgator does not enable PHP 5.3 by default. You can do it yourself with the link above or have them do it.
- Enable quickconfig php.ini and turn off register_globals.
- Don't use curl to fire up cron every minute. Instead do it once every 30 minutes.
- Don't use curl at all unless you like filling up your server with a ton of log files. Instead Use
I wouldn't exactly call it "missing" as the idea of the tutorial is how to install Moodle, not troubleshoot. Theoretically, there are a zillion things that can go wrong and it could vary from host to host. The video assumes you have the correct environment and guides users through the process. If problems with your particular host's setting arise afterwards, that is where you need to read the Moodle documentation, forums or speak to tech support to figure out how to troubleshoot your particular issue.
Having said that, I appreciate your pointing out how certain things can be fixed after installation if they are a problem.
Regarding the cron job, to be honest I have no idea what database commands and the like - which I really don't. This is why I can empathize with the end user who like myself is just a teacher just trying to get by - not an IT pro who is familiar with servers, databases or PHP. The Moodle installation documentation throws around a lot of techy jargon which is really hard for us non-techies to figure out. In any event, as I said, I appreciate your input here as I'm sure many others will find it useful as well.means. How do you set up a cron job in cPanel using this command? Where does it go? In the command line? What does it do? The whole point of the video is to make things as simple as possible for the user who lacks technical expertise. It assumes the end user has no knowledge of
Wget and Curl are basically the same Unix command for getting webpages. Putting these in a cron service makes sure that moodle runs it's cron.php script for email, rss, etc.
the -q and -O flags silence wget from writing the results of the command, and sends it to the unix trash can called /dev/null.
I am so grateful for the information you provided here.I have been shopping for a host and reading tons of blogs comparing the pros/cons on a number of issues ...because i don't have the confidence of a techie when it comes to choosing a host...Your video is a valuable resource for those of us who would be clueless about the tech side of the process ....
I have one question in mind at the moment I would appreciate your thoughts on:
I planned to use FatCow recommended by a teacher. I love the fact that it's a local company in Cambridge... But FatCow uses something else (vDesk?) rather than cPanel that you mentioned. I know Bluehost and many others use cPanel... My question is 1) what's the difference between cPanel vs non-cPanel? 2)if I sign up for FatCow, can I still use the instructions you provided in the video and the thread? Many thanks in advance.
I really don't have a lot of experience with other types of control panels. I do know cPanel is the most popular control panel out there however vDeck seems to be pretty good too. From what I have read cPanel is actually a little less sophisticated than vDeck but it is also simpler to learn.
In any event, I have set up Moodle in the past using whatever control panel GoDaddy uses and it wasn't that much different. The main thing I would say is that I see FatCow allows you to create unlimited MySQL databases and I'm sure there have a file manager (FTP client) thus I am sure the you can do the basic process which is create a database, a moodle folder outside the root and upload the Moodle files to you public_html folder (or wherever you want it to go). The other thing would be to make sure you can set up a cron job. One of the things I like about hostgator is their techincal support. I could just call them up and say "I need to set up cron job for x" and they would do it for me. Hopefully, FatCow will have that level of support as well.
Would love to hear how your install went...and if the video was helpful for a non-cPanel installation.
I am getting this error and i am following same installation procedure
Error: database driver problem detected
The site administrator should verify server configuration
PHP has not been properly configured with the MySQLi extension so that it can communicate with MySQL. Please check your php.ini file or recompile PHP. MySQLi extension is not available for PHP 4.
and i checked everything ...
database is connectedand it is checked by coding
not version problem because i have already checked before download
please someone help
As the message says, the MySQLi extension is no available for PHP 4, so during the installation process at 6:49, instead of clicking Next, you should open the drop-down list and select "MySQL" (not "Improved MySQL").
What Moodle version are you installing?
my moodle version is 2.0.8
moodle version is 2.0.8 and also php version is 5.2.17 and both are compatible and i checked the connectivity of php and mysql by writing code and it runs successfully
and i tried using mysql but not worked out
please help me out sir
i am in big trouble
Firstly, thanks Tzvi. Great video.
I have installed Moodle successfully using cpanel and everything seems to be working ok. During the install however I got the messages below;
The xmlrpc extension is needed for hub communication, and useful for web services and Moodle networking
Intl extension is used to improve internationalization support, such as locale aware sorting.
I continued with the install and as i said everything seems to be fine I'm just wondering if this will cause me problems in the future?
Any thoughts or advice would be greatly appreciated.
Could somebody help me? I follow the instruction in your vidio to install Moodle. But the istallation is not complete. After goint to my domain/moodle I have this message:
Notice: Use of undefined constant __DIR__ - assumed '__DIR__' in /homepages/5/d429252556/htdocs/public/moodle/lib/dml/moodle_database.php on line 27
Warning: require_once(__DIR__/database_column_info.php) [function.require-once]: failed to open stream: No such file or directory in/homepages/5/d429252556/htdocs/public/moodle/lib/dml/moodle_database.php on line 27
Fatal error: require_once() [function.require]: Failed opening required '__DIR__/database_column_info.php' (include_path='.:/usr/lib/php5') in/homepages/5/d429252556/htdocs/public/moodle/lib/dml/moodle_database.php on line 27
Your problem is the PHP settings. Chances are you are running something lower than PHP 5.3. So Check your global settings for PHP, some shared hosting providers have a PHP dev setting. Set this to the PHP dev or something equal to or greater than 5.3 and that should fix your problem.
This is exactly what anyone who needs to do an install needs. Finally, after years I am doing this on a hosting server.
Thanks a lot.
I have just installed Moodle version 1.9 however someting has not worked correctly. My domain does not support PHP 3.5 and won't for another 2 months so I had to chose this old version. The website is on wordpress. My domain is Crazy Domains and is hosted by Netregistry.
The step you take entering personal information around 8m16s into your video did not happen after my installation. All I can see is a blank page of my website and "Page not found" written in the window tab.
Any suggestions on what I have done wrong or how to fix it would be appreciated.
I'm not sure if I can help you with 1.9 as that is an older version...bottom line is your post is a little confusing. For starters, the fact that your site is on Wordpress has nothing to do with Moodle. You need to go to the folder where Moodle is installed. It could be you need to follow that with /install for version 1.9, I don't remember offhand. Also, you seem to be saying that the Moodle actually installed but you didn't see a spot to put in personal information..how did you get to "page not found"?
Sorry I was trying to give as much information as I could to get help. I'm not a web designer or IT guru and we have only just had our website changed from Joomla to Wordpress.
The problem seems to have been due to me trying to get the moodle site to open from www.eagleacademy.com.au/onlinelearningcentre.
I have managed to get it to work now from www.eagleacademy.com.au/moodle by using the exact instructions from your video.
Your example database name _moodle
Mine _onlinelearningcentre (this is still the same)
Your folder outside root directory - moodledata
Mine onlinelearningcentre (i had to change this to moodledata)
However I would still prefer to have the site from www.eagleacademy.com.au/onlinelearningcentre
are you able to give me an instruction for that?
If it is possible not to have "moodle" in the web address I'd much prefer fixing that before getting ahead of myself and adding courses, etc.
Thank you for your help!
No problem. It is possible not to use the word moodle in the address by simply changing the folder currently called moodle to whatever you would like.
For example you can rename www.eagleacademy.com.au/moodle to www.eagleacademy.com.au/main and then access Moodle by going to there. The only thing is that you would have to edit the config.php file (in the renamed folder) so that the wwwroot points to the folder as you renamed it.
You would not be able to have Moodle accessed by going to www.eagleacademy.com.au/onlinelearningcentre unless you renamed your Moodle file to that name (as described above). However, since you most likely have content on www.eagleacademy.com.au/onlinelearningcentre that would get deleted. So you have to think about that.
Thank you for your help. I have been able to get moodle running from the location I wanted. Definitely glad I did this sooner rather than later.
Thanks so much for making this video! Without it, I would have been so lost!
A tip for those wanting a plan with Hostgator, etc. but worried about costs. Go in with other teachers under an affiliate program. Only one person needs to have a hosting and the other domains don't cost a penny more!
Glad you found the video useful James.
Thanks very much for this superb video! You have helped me a lot!
This is fantastic! I managed to install moodle onto my shared host by following your video! Thanks so much. saved me A LOT of headache (and possibly money!)
Thanks for the clear tutorial, that easily guides you trough the right steps.
I'm running a informational website on wholesale loose diamonds, www.diamondregistry.com and would like to provide online educational course for registered user only, that's why I have installed moddle in a distinct folder.
Is it not possible to install in a specific folder?
What should i do?
While your goal of installing Moodle in such a way as to limit access to it to registered users only can certainly be accomplished, the error that you're experiencing isn't at all related to the folder in which you installed it.
Moodle is an application that is written in PHP and it makes use of many functions that are provided by the PHP interpreter on your platform that interact with an underlying database manager.
Judging from the error that you quoted, it appears that your site is operating on a Windows server, and that you were electing to use MS SQL as the database management system. However, the PHP interpreter on that platform needs to be equipped with some specific extensions that will support executing its database-related functionality with an MS SQL*Server. Evidently, this is not the case on that particular host.
Those necessary extensions to PHP can be provided either by re-compiling the PHP interpreter in such a way that the extensions are permanently included in its runtime image, or by providing the appropriate extensions as "shareable" modules which can be loaded and run when, and as, needed by the PHP interpreter. Details regarding those shareable modules will be included in the configuration file for the interpreter, which may be found in your file system under the filename "php.ini".
However, if your site is maintained on a shared hosting service, you may not have the necessary permissions to make the needed changes to PHP. In that case, you should contact your hosting provider, and explain your requirements to them. They may be prepared to accomodate your request as part of the services they provide you.
Hope this helps to clarify.
Get PHP installed with a web server. Unless you want to do it under IIS or some other way, the packages on the Moodle download page are a good solution. With this properly configured, you can continue with a standard Moodle installation on IIS.
Had the same problem with my no-show socks blog dedicated to teach how to dress up for men when I first started with a IIS server, but it worked fine after a few tweaks.
I recently switched for wordpress and I have to start again to find a solution for that platform.
Let me know if I can help,
All the best,
Thanks, this was helpful.
Thank you for the video.
I am trying to follow the steps you've shown in your video and ones that I've read on Moodle forums, but at the 'Database settings step', I keep getting this error every time I try to go forward:
"Error: Database connection failed
It is possible that the database is overloaded or otherwise not running properly.
The site administrator should also check that the database details have been correctly specified in config.php
Warning: mysqli::mysqli(): (28000/1045): Access denied for user 'seniorwa_pranay'@'localhost' (using password: YES) in/home/seniorwa/public_html/moodle/lib/dml/mysqli_native_moodle_database.php on line 76"
Contrary to what they say on the documentation page, the setup does not create a config.php file.
I did edit the config-dist.php file to enter all the required details like my database name, the database username, the password etc.
Upon reading suggestions on the Installation support page, I tried 2 approaches:
i. Renaming the config-dist.php file to config.php, which leads to the installation not starting at all and a database connection error at the outset.
ii. Tried keeping both files, config-dist.php and config.php in the Moodle directory, which leads to the same error as I've mentioned above in orange.
I have set the following parameters in my config.php and config-dist.php (they are identical)
$CFG->dbtype = 'mysqli'; // 'pgsql', 'mysqli', 'mssql', 'sqlsrv' or 'oci'
$CFG->dblibrary = 'native'; // 'native' only at the moment
$CFG->dbhost = 'localhost'; // eg 'localhost' or 'db.isp.com' or IP
$CFG->dbname = 'seniorwa_moodle'; // database name, eg moodle
$CFG->dbuser = 'seniorwa_pranay'; // your database username
$CFG->dbpass = '<system generated password>'; // your database password
$CFG->prefix = 'mdl_';
CFG->dboptions = array(
'dbpersist' => false,
'dbsocket' => false,
'dbport' => '',
$CFG->wwwroot = 'http://seniorsoncall.co.in/moodle';
$CFG->dataroot = '/home/seniorwa/moodledata';
$CFG->directorypermissions = 02777;
$CFG->admin = 'admin';
require_once(dirname(__FILE__) . '/lib/setup.php');
Will it be possible for you to share a sample config.php file you used for your installations in the past?
I have been at this since a couple of days now and would really appreciate any kind of help or guidance from anyone on this.
I would start by checking with your hosting company to see if the database is being addressed properly - it could be that your issue lies with @localhost... however it is also telling you that permission was denied for the user, so...double check that you set up your database user correctly - is the password in there correctly, does your user have adequate permissions?
I have verified my database details (name, user, password) multiple times now, it's all correct. I have also given my Moodle database user all permissions for the corresponding Moodle database.
It is all correct in the config-dist.php file too. Copy pasted the values for each parameter to avoid any typos.
I am confused about which file the installation is looking for. It starts with config-dist.php, but at the Database settings page, it looks for the credentials in config.php. When I try renaming config-dist.php to config.php, the installation conks off and when I attempt to restart it, it gives me a Database Connection Error at the initial page itself (http://seniorsoncall.co.in/moodle).
The config-dist.php is the file that initiates a new install and creates the config.php file. Once you have a config.php file, you do not need the config-dist file but just leave it there in case..
Do not rename the config-dist file - that will mess everything up. You need to figure out why you are not connecting to the database - that is primary issue. Once you solve that, you will continue through the install and all will be good. Did you talk to your host about the database address (@localhost) - is that correct? Have you tried creating a new user on the offchance that something has corrupted in that user.
follow these videos
Video 1: http://www.screencast.com/t/7di1TIv9NH
will show you step by step what to do.
Thank you for the videos, Usman.
I tried installing the exact same version of Moodle that you used initially in the video, in hope that it'll sort my config issues out, but as Emma correctly pointed out, the issue is with connecting to the database.
I finally tried the script install through Softaculous and it worked like a charm.
I'll try figuring out what is going wrong with the manual installation, but for now, I have Moodle up and running on my website.
Thank you to the both of you!
Don't go for Softaculous installation, it does work quick, but in later stages it does gives load of issues specially with plug-ins and somethings MAY not work, as they have only base versions in their database and not the security updated.
I think it as well have been mentioned somewhere in the video not to use automated installers.
I saw that you have recommended not to use script installation for getting Moodle up, but it was urgent for me to get Moodle up and running on my website.
I will debug the database connection errors I am getting on the sideline. Once sorted, I'll do a fresh install from cPanel.
Shall bug you if I run into deadends!
FINALLY got the manual install to work cleanly!
Following Emma's advice, I just dropped and recreated my Moodle database and voila, everything worked just fine!
I have been playing around with versions ever since, using Usman's approach to upgrade. Had to stop at 2.8, though (2.9 required InnoDB).
Time to get familiar with the environment now, before I head into plugins and themes!
Thank you both once again, this discussion was really helpful.