最佳化

為了讓MoodleBox在實務中使用,有必要進行最佳化的動作。

我們不僅設置Moodle的盒子,也要管理檔案的儲存及下載。

Moodle特定檔案使用的RAM記憶體

新建一個資料夾作為RAM記憶體的掛載點。

$ cd /var/cache/
$ sudo mkdir moodle
$ sudo chown www-data:www-data moodle/

RAM記憶體也可用於暫存資料夾及Moodle連線的資料夾。這兩個資料夾都位於 moodledata。

我們在樹莓的分割表中定義RAM記憶體。 要達成這個目的,我們在/ etc / fstab中新增以下文字:

tmpfs /var/cache/moodle tmpfs size=64M,mode=775,uid=www-data,gid=www-data 0 0
tmpfs /var/www/moodledata/temp tmpfs size=64M,mode=775,uid=www-data,gid=www-data 0 0
tmpfs /var/www/moodledata/sessions tmpfs size=32M,mode=775,uid=www-data,gid=www-data 0 0

新增以上文字後 /etc/fstab的檔案內容如下:

proc              /proc         proc         defaults             0        0
/dev/mmcblk0p1    /boot         vfat         defaults             0        2
/dev/mmcblk0p2    /             ext4         defaults,noatime     0        1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that

tmpfs /var/cache/moodle tmpfs size=64M,mode=775,uid=www-data,gid=www-data 0 0
tmpfs /var/www/moodledata/temp tmpfs size=64M,mode=775,uid=www-data,gid=www-data 0 0
tmpfs /var/www/moodledata/sessions tmpfs size=32M,mode=775,uid=www-data,gid=www-data 0 0

重新啟動樹莓後,在Moodle中就可以設定快取記憶體。

使用管理員帳號(上述所建立的)連上Moodle,然後在Moodle上進入網站管理>外掛>快取>配置。我們要新增兩個新的儲存實體,在網頁上方的安裝快取儲存區段,按一下添加實列。

  1. 儲存名稱:TMPFS application快取路徑:/var/cache/moodle/application,勾選自動建立目錄;

  2. 儲存名稱:TMPFS sessions 快取路徑:/var/cache/moodle/sessions,勾選自動建立目錄。

最後,它仍然需要連結這兩個新的實例至它們的目的地,在網頁的最下方「當沒有對映出現時所用的儲存」區段下方按一下「編輯對映」。

驗證

這些在MoodleBox上的Moodle的動作完成後,使用SSH連上MoodleBox,然後執行下列命令:
ls -l /var/cache/moodle/
終端機應該會顯示一些東西如:
total 0
drwxrwxrwx 19 www-data www-data 380 mai 30 19:18 application
drwxrwxrwx 8 www-data www-data 160 mai 29 19:00 sessions

快取RAM記憶體有一個缺陷:內含的資料在每次重新啟動時會消失。所以Moodle每次都得重建快取。 如果我們要在動新啟動時保存的快取,就需定期拷貝RAM記憶體中的內容至MicroSD卡,並且,在每次重新啟動時,就要執行相反的操作(從MicroSD拷貝至RAM記憶體)

我們新建備份資料夾,然後設定排程cron

$ sudo mkdir /var/cache/moodle-cache-backup/
$ sudo crontab -e

我們新增下面的兩行指令到cron排程表來每隔20分鐘執行備份工作,並在重新啟動時回存快取內容:

*/20 * * * * rsync -a --delete /var/cache/moodle/ /var/cache/moodle-cache-backup/
@reboot cp -Rpf /var/cache/moodle-cache-backup/* /var/cache/moodle/

使用X SENDFILE

使用 X-SENDFILE 可以提高Web伺服器傳送Moodle資料庫的檔案的速度。

在Moodle的設定檔案/var/www/html/config.php裏,在$CFG->admin = 'admin'這行後面,增加這些行命令

$CFG->xsendfile = 'X-Accel-Redirect';
$CFG->xsendfilealiases = array (
   '/dataroot/' => $CFG->dataroot
);

/var/www/html/config.php檔案的內容將會是:

<?php // Moodle configuration file
unset($CFG);
global $CFG;
$CFG = new stdClass();
$CFG->dbtype = 'mariadb';
$CFG->dblibrary = 'native';
$CFG->dbhost = 'localhost';
$CFG->dbname = 'moodle';
$CFG->dbuser = 'root';
$CFG->dbpass = 'Moodlebox4$';
$CFG->prefix = 'mdl_';
$CFG->dboptions = array (
    'dbpersist' => 0,
    'dbport' => '',
    'dbsocket' => '',
);
$CFG->wwwroot = 'http://moodlebox.home';
$CFG->dataroot = '/var/www/moodledata';
$CFG->admin = 'admin';
$CFG->xsendfile = 'X-Accel-Redirect';
$CFG->xsendfilealiases = array (
    '/dataroot/' => $CFG->dataroot
);
$CFG->directorypermissions = 02777;
require_once(dirname(__FILE__) . '/lib/setup.php');
// There is no php closing tag in this file,
// it is intentional because it prevents trailing whitespace problems!

接下來在/etc/nginx/sites-available/default 檔案加入下列數行:

location /dataroot/ {
    internal;
    alias /var/www/moodledata/;
}

/etc/nginx/sites-available/default 檔案的內容就變成如此:

# Default server configuration
#
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name moodlebox;

    location / {
        try_files $uri $uri/ =404;
    }
    location /dataroot/ {
        internal;
        alias /var/www/moodledata/;
    }

    location ~ [^/]\.php(/|$) {
        include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_read_timeout 300;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PHP_VALUE "max_execution_time=300\n upload_max_filesize=50M
            \n post_max_size=50M";
        client_max_body_size 50M;
    }
}

優化MariaDB的

我們要在 /etc/mysql/mariadb.conf.d/50-server.cnf 檔案中修改MariaDB的一些變數的數值。因此,打開該檔案後,找到適當的行列進行修改:

table_cache                = 512
table_definition_cache     = 512
max_connections            = 100
query_cache_size           = 16M
query_cache_type           = 0

Last updated