通过命令行进行管理
如果你可以访问 Web 服务器的控制台,你会发现 Moodle 有一系列的管理员脚本工具可以供你使用。
可以使用的核心管理员工具位于 admin/cli/*
目录中。
如果其他插件也提供了管理员命令行工具,那这个工具通常位于插件安装目录自己的 cli 文件夹中。
例如 enrol_db 同步脚本就位于 enrol/db/cli/
文件夹中。
为了避免访问控制权限的问题,你应该使用这些命令行工具的所有人权限来运行这些脚本。这个在 Moodle 进行安装和升级的时候尤其重要,因为 Moodle 在安装和升级的时候将会在 Moodledata 目录和 Web 服务器的目录中写入文件。
在 Linux 的环境下,操作系统通常使用 apache 或者 wwrun 或者 httpd 或者其他相似的用户。
作为一个 root 用户,你可以以下面的形式执行 Moodle CLI 脚本
$ cd /path/to/your/moodle/dir $ sudo -u apache /usr/bin/php admin/cli/somescript.php --params
很多脚本都使用 --help (或 -h) 参数来显示有用的帮助信息,例如:
$ 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
Purge caches via CLI
You can purge caches using this script:
php admin/cli/purge_caches.php