Note: You are currently viewing documentation for Moodle 2.3. Up-to-date documentation for the latest stable version is available here: Administration via command line.

Administration via command line: Difference between revisions

From MoodleDocs
No edit summary
No edit summary
 
(20 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{Moodle 2.0}}
{{Installing Moodle}}
Some large scale deployments or special distributions may prefer command line environment when installing or upgrading Moodle. All command line tools are located in <code>admin/cli/*</code>
If you have shell access to your web server, you may find various CLI (command line interface) scripts useful during Moodle administration. Core admin CLI tools are located in the <code>admin/cli/*</code> folder. Other plugins provide their CLI functionality via scripts in their own cli folder. For example, the enrol_db sync script is located in <code>enrol/db/cli/</code>.


  Note: This page is a work in progress, please use comments page for improvement suggestions.
To avoid problems with access control, you should run them as the owner of the web server process. It is especially important for CLI installation and upgrade as they create new files in moodledata directory and the web server has to have write access to them. In Linux distributions, the user that runs the web server is usually apache or wwrun or httpd or something similar. As a root, you will probably want to execute Moodle CLI scripts like this:


==Support for custom site defaults==
    $ cd /path/to/your/moodle/dir
Sites now may have different defaults - MDL-17850, all you need to do is to add local/defaults.php file to your installation. The internal format is:
    $ sudo -u apache /usr/bin/php admin/cli/somescript.php --params
 
Most of the scripts accept common --help (or -h) parameter to display the full usage information, for example:
 
    $ sudo -u apache /usr/bin/php admin/cli/install.php --help
 
== Upgrading via command line ==
 
Moodle can be upgraded from the command line. As with the installation script, there is either interactive or non-interactive mode of the upgrade. The script itself does not put the site into the maintenance mode, you have to do it on your own. Also, the script does not backup any data (if you read this page, you probably have some own scripts to backup your moodledata and the database, right?)
 
    $ sudo -u apache /usr/bin/php admin/cli/upgrade.php
 
Upgrading via command line is a very comfortable way of Moodle upgrade if you use Git checkout of the Moodle source code (see [[Git for Administrators]]). See the following procedure how to upgrade your site within several seconds to the most recent version while preserving your eventual local customizations tracked in git repository:
 
    $ cd /var/www/sites/moodle/htdocs/
    $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable
    $ git pull
    $ sudo -u apache /usr/bin/php admin/cli/upgrade.php
    $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --disable
 
== Installation via command line ==
 
Since version 2.0, Moodle can be installed from the command line. There are two modes of installation. In interactive mode, the install script asks you for all data needed to properly set up new Moodle site. In non-interactive mode, you must provide all required data as the script parameters and then the new site is installed silently. The parameters can be passed in the interactive mode, too. The provided values are then used as the default values during the interactive session.
 
    $ sudo -u apache /usr/bin/php admin/cli/install.php --lang=cs
 
== Maintenance mode ==
 
To switch your site into the maintenance mode via CLI, you can use
 
    $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable
 
To turn the maintenance mode off, just execute the same script with --disable parameter.
 
== Offline mode ==
 
In some situations, you may want to switch your Moodle site into offline mode so that it is not accessible via the web but you can not stop the web server completely (typically because there are other web pages and applications running there). If a file called <code>climaintenance.html</code> exists in the root folder of moodledata directory, Moodle will automatically display the contents of that file instead of any other page.
 
    $ cd /var/www/sites/moodle/moodledata/
    $ echo '&lt;h1&gt;Sorry, maintenance in progress&lt;/h1&gt;' &gt; climaintenance.html
 
You can prepare a nice formatted HTML page to inform your users about the server being down and keep in the moodledata directory under a name like <code>climaintenance.off</code> and rename it to the <code>climaintenance.html</code> if needed.
 
== Custom site defaults ==
 
During the install and upgrade via CLI, Moodle sets the administration variables to the default values. You can use different defaults. See MDL-17850 for details. Shortly, all you need to do is to add a file <code>local/defaults.php</code> into your Moodle installation. The format of the file is like


<code php>
<code php>
<?php
<?php
$dafaults['pluginname']['settingname'] = 'settingvalue'; //for plugins
$defaults['pluginname']['settingname'] = 'settingvalue'; // for plugins
$dafaults['moodle']['settingname'] = 'settingvalue';    //for core settings  
$defaults['moodle']['settingname'] = 'settingvalue';    // for core settings
</code>
</code>


These defaults are used during install, upgrade and are also displayed as defaults in admin configuration forms.
These defaults are used during install, upgrade and are also displayed as defaults at the Site administration pages.
 
== Reset user password ==
 
If you happen to forget your admin password (or you want to set a password for any other user of your Moodle system), you can use reset_password.php script. The script sets the correctly salted password for the given user.
 
    $ sudo -u apache /usr/bin/php admin/cli/reset_password.php
 
== MySQL storage engine conversion ==
 
If you run your Moodle site with MySQL database backend and use the default MyISAM as the storage engine for your tables, you may want to convert them to use some more reliable engine like InnoDB (actually, you should want to switch to PostgreSQL ;-) anyway).
 
    $ sudo -u apache /usr/bin/php admin/cli/mysql_engine.php --engine=InnoDB
 
== Running cron via command line ==
 
In versions 1.x, you could execute admin/cron.php either from command line or via the web. Since Moodle 2.0, only admin/cli/cron.php script can be run via command line.
 
==Database transfer==
 
A command line script for [[Database transfer]] may be found in ''admin/tool/dbtransfer/cli/migrate.php''.
 
==Update user pictures via command line==
 
  http://moodle.org/pluginfile.php/143/mod_forum/attachment/926929/updatepics.php
Tested for 2.3.1+
 
Place this file in /admin/cli/updatepics.php
 
How to use:
Run with "dir" option to specify which directory contains the files.
 
  .../admin/cli/updatepics.php --dir=PATH_TO_DIR
 
* File names must be identical to usernames
 
==Manage MOD's,Blocks via command line==
 
Here are two scripts to help you manage your plugins.
 
  http://tracker.moodle.org/browse/MDL-35736
 
How to use "manage_blocks.php":
place in /admin/cli
 
hide:
../admin/cli/manage_blocks.php --name=tag_youtube --hide
 
show:
../admin/cli/manage_blocks.php --name=tag_youtube --show
 
delete:
../admin/cli/manage_blocks.php --name=tag_youtube --delete
 
protect:
../admin/cli/manage_blocks.php --name=tag_youtube --protect
 
unprotect:
../admin/cli/manage_blocks.php --name=tag_youtube --unprotect
 
(obviously - replace "tag_youtube" with the blockthat you want to remove...)
 
How to use "manage_mods.php":
 
hide:
../admin/cli/manage_blocks.php --name=game --hide
 
show:
../admin/cli/manage_blocks.php --name=game --show
 
delete:
../admin/cli/manage_blocks.php --name=game --delete
 
*Important!
this script does not delete the relevant folder in /moodle/mod or /moodle/blocks


==Installation==
you have to delete it yourself !
Advanced cli installation script.


Command line Moodle installer, creates config.php and initializes database.
==Update language pack via CLI==
Please note you must execute this script with the same uid as apache
or use chmod/chown after installation.
Site defaults may be changed via local/defaults.php.
Options:
--lang=CODE          Installation and default site language.
--wwwroot=URL        Web address for the Moodle site, required in non-interactive mode.
--dataroot=DIR        Location of the moodle data folder, must not be web accessible. Default is moodleroot in parent directory.
--dbtype=TYPE        Database type. Default is mysqli
--dbhost=HOST        Database host. Default is localhost
--dbname=NAME        Database name. Default is moodle
--dbuser=USERNAME    Database user. Default is root
--dbpass=PASSWORD    Database password. Default is blank
--dbsocket            Use database sockets. Available for some databases only.
--prefix=STRING      Table prefix for above database tables. Default is mdl_
--admin-password=PASS Password for the moodle admin account, required in non-interactive mode.
--non-interactive    No interactive questions, installation fails if any problem encountered.
--agreelicense        Indicates agreement with software license, required in non-interactive mode.
-h, --help            Print out this help
Example: $sudo -u wwwrun /usr/bin/php admin/cli/install.php --lang=cs


==Upgrades==
  http://tracker.moodle.org/browse/MDL-35735


Command line Moodle upgrade.
Place attached file in /admin/cli
Please note you must execute this script with the same uid as apache!
and simply run it, without any command-line arguments :)
Site defaults may be changed via local/defaults.php.
Options:
--non-interactive    No interactive questions or confirmations
-h, --help            Print out this help
Example: $sudo -u wwwrun /usr/bin/php admin/cli/upgrade.php


==Reset passwords==
==ReSort course list via CLI==


Reset local user passwords, useful especially for admin acounts.
  http://tracker.moodle.org/browse/MDL-36237
There are no security checks here because anybody who is able to
execute this file may execute any PHP too.
Options:
-h, --help            Print out this help
Example: $/usr/bin/php admin/cli/reset_password.php


==Customize new site==
Place attached file in /admin/cli
and simply run it, without any command-line arguments :)


Not implemented yet. Idea is to create a script that customizes freshly installed site.
I import courses every night from an external system, and run this script afterwards


==TODO==
[[fr:Administration en ligne de commande]]
Finish help localizations.
[[de:Administration über Kommandozeile]]
[[ja:コマンドライン経由の管理]]

Latest revision as of 11:37, 27 October 2012

If you have shell access to your web server, you may find various CLI (command line interface) scripts useful during Moodle administration. Core admin CLI tools are located in the admin/cli/* folder. Other plugins provide their CLI functionality via scripts in their own cli folder. For example, the enrol_db sync script is located in enrol/db/cli/.

To avoid problems with access control, you should run them as the owner of the web server process. It is especially important for CLI installation and upgrade as they create new files in moodledata directory and the web server has to have write access to them. In Linux distributions, the user that runs the web server is usually apache or wwrun or httpd or something similar. As a root, you will probably want to execute Moodle CLI scripts like this:

   $ cd /path/to/your/moodle/dir
   $ sudo -u apache /usr/bin/php admin/cli/somescript.php --params

Most of the scripts accept common --help (or -h) parameter to display the full usage information, for example:

   $ sudo -u apache /usr/bin/php admin/cli/install.php --help

Upgrading via command line

Moodle can be upgraded from the command line. As with the installation script, there is either interactive or non-interactive mode of the upgrade. The script itself does not put the site into the maintenance mode, you have to do it on your own. Also, the script does not backup any data (if you read this page, you probably have some own scripts to backup your moodledata and the database, right?)

   $ sudo -u apache /usr/bin/php admin/cli/upgrade.php

Upgrading via command line is a very comfortable way of Moodle upgrade if you use Git checkout of the Moodle source code (see Git for Administrators). See the following procedure how to upgrade your site within several seconds to the most recent version while preserving your eventual local customizations tracked in git repository:

   $ cd /var/www/sites/moodle/htdocs/
   $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable
   $ git pull
   $ sudo -u apache /usr/bin/php admin/cli/upgrade.php
   $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --disable

Installation via command line

Since version 2.0, Moodle can be installed from the command line. There are two modes of installation. In interactive mode, the install script asks you for all data needed to properly set up new Moodle site. In non-interactive mode, you must provide all required data as the script parameters and then the new site is installed silently. The parameters can be passed in the interactive mode, too. The provided values are then used as the default values during the interactive session.

   $ sudo -u apache /usr/bin/php admin/cli/install.php --lang=cs

Maintenance mode

To switch your site into the maintenance mode via CLI, you can use

   $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable

To turn the maintenance mode off, just execute the same script with --disable parameter.

Offline mode

In some situations, you may want to switch your Moodle site into offline mode so that it is not accessible via the web but you can not stop the web server completely (typically because there are other web pages and applications running there). If a file called climaintenance.html exists in the root folder of moodledata directory, Moodle will automatically display the contents of that file instead of any other page.

   $ cd /var/www/sites/moodle/moodledata/
   $ echo '<h1>Sorry, maintenance in progress</h1>' > climaintenance.html

You can prepare a nice formatted HTML page to inform your users about the server being down and keep in the moodledata directory under a name like climaintenance.off and rename it to the climaintenance.html if needed.

Custom site defaults

During the install and upgrade via CLI, Moodle sets the administration variables to the default values. You can use different defaults. See MDL-17850 for details. Shortly, all you need to do is to add a file local/defaults.php into your Moodle installation. The format of the file is like

<?php $defaults['pluginname']['settingname'] = 'settingvalue'; // for plugins $defaults['moodle']['settingname'] = 'settingvalue'; // for core settings

These defaults are used during install, upgrade and are also displayed as defaults at the Site administration pages.

Reset user password

If you happen to forget your admin password (or you want to set a password for any other user of your Moodle system), you can use reset_password.php script. The script sets the correctly salted password for the given user.

   $ sudo -u apache /usr/bin/php admin/cli/reset_password.php

MySQL storage engine conversion

If you run your Moodle site with MySQL database backend and use the default MyISAM as the storage engine for your tables, you may want to convert them to use some more reliable engine like InnoDB (actually, you should want to switch to PostgreSQL ;-) anyway).

   $ sudo -u apache /usr/bin/php admin/cli/mysql_engine.php --engine=InnoDB

Running cron via command line

In versions 1.x, you could execute admin/cron.php either from command line or via the web. Since Moodle 2.0, only admin/cli/cron.php script can be run via command line.

Database transfer

A command line script for Database transfer may be found in admin/tool/dbtransfer/cli/migrate.php.

Update user pictures via command line

  http://moodle.org/pluginfile.php/143/mod_forum/attachment/926929/updatepics.php 

Tested for 2.3.1+

Place this file in /admin/cli/updatepics.php

How to use: Run with "dir" option to specify which directory contains the files.

  .../admin/cli/updatepics.php --dir=PATH_TO_DIR
  • File names must be identical to usernames

Manage MOD's,Blocks via command line

Here are two scripts to help you manage your plugins.

  http://tracker.moodle.org/browse/MDL-35736

How to use "manage_blocks.php": place in /admin/cli

hide: ../admin/cli/manage_blocks.php --name=tag_youtube --hide

show: ../admin/cli/manage_blocks.php --name=tag_youtube --show

delete: ../admin/cli/manage_blocks.php --name=tag_youtube --delete

protect: ../admin/cli/manage_blocks.php --name=tag_youtube --protect

unprotect: ../admin/cli/manage_blocks.php --name=tag_youtube --unprotect

(obviously - replace "tag_youtube" with the blockthat you want to remove...)

How to use "manage_mods.php":

hide: ../admin/cli/manage_blocks.php --name=game --hide

show: ../admin/cli/manage_blocks.php --name=game --show

delete: ../admin/cli/manage_blocks.php --name=game --delete

  • Important!

this script does not delete the relevant folder in /moodle/mod or /moodle/blocks

you have to delete it yourself !

Update language pack via CLI

 http://tracker.moodle.org/browse/MDL-35735

Place attached file in /admin/cli and simply run it, without any command-line arguments :)

ReSort course list via CLI

 http://tracker.moodle.org/browse/MDL-36237

Place attached file in /admin/cli and simply run it, without any command-line arguments :)

I import courses every night from an external system, and run this script afterwards