Установка Moodle с помощью Git на сервер Ubuntu 12.04

Moodle (или Modular Object-Oriented Dynamic Learning Environment) – это очень популярная и проверенная платформа управления обучением. Несмотря на простоту установки, Moodle не так просто настроить для работы с большим количеством параллельных пользователей. Данное руководство пытается устранить эту проблему, предлагая быстрое решение для распространенных сценариев использования.

Требования

Для выполнения руководства нужен новый сервер Ubuntu 12.04 LTS и учетная запись пользователя с расширенными привилегиями (об этом можно прочесть в этом руководстве).

Подключитесь к серверу через SSH (для этого нужен IP-адрес):

ssh -l root your_server_ip

Чтобы быстро создать пользователя и добавить его в группу sudo, используйте команды:

adduser student
usermod -a -G sudo student

Примечание: В данном руководстве пользователя зовут student.

Войдите в систему как новый пользователь:

exit
ssh -l student your_server_ip

Обновление системы

Теперь нужно обновить систему и обеспечить использование последних версий пакетов:

sudo apt-get update
sudo apt-get upgrade

Теперь нужно установить пакеты, необходимые для работы Moodle.

Установите nginx:

sudo apt-get install nginx

Затем установите PHP и некоторые модули, которые нужны Moodle:

sudo apt-get install php5-fpm php-apc php5-curl php5-gd php5-xmlrpc php5-intl

Затем установите систему управления базами данных (СУБД) PostgreSQL и ее зависимости php:

sudo apt-get install postgresql postgresql-contrib php5-pgsql

Также Moodle нуждается в Git; это позволит поддерживать сайт в актуальном состоянии и избежать проблем с обновлениями.

sudo apt-get install git

Итак, теперь все необходимые пакеты установлены на сервер. Для простоты выполнения руководства сохранены предварительно настроенные параметры программ.

Установка Moodle

Каталогом root веб-сервера Nginx является /usr/share/nginx/www. Перейдите в этот каталог, чтобы позже установить здесь Moodle:

cd /usr/share/nginx

Этот каталог не должен быть доступным всем пользователям, потому нужно предоставить пользователю исключительный доступ к нему. Moodle не пишет в своем каталоге, для этого система использует каталог moodledata, который нужно настроить позже.

chown -R $USER:$USER www
cd www
git clone https://github.com/moodle/moodle.git

Это клонирует репозиторий Moodle с github в каталог moodle. Теперь можно проверить последнюю стабильную версию, которая отмечена тегом в Git. Чтобы узнать, какая версия является последней доступной, выполните:

cd moodle
git tag

На экране появится длинный список тегов; на момент написания руководства последней доступной версией является v2.5.2. Выполните команду checkout прежде чем приступить к установке программы.

git checkout v2.5.2

Эта команда откроет каталог со стабильной версией Moodle 2.5.2.

Чтобы обновить версию moodle, используйте:

git fetch
git merge
git checkout v2.6.0

Эта команда загрузит пока еще несуществующую версию v.2.6.0, после чего можно обновить БД при помощи страницы администратора Moodle.

Настройка Moodle

В каталоге Moodle есть файл config-dist.php; откройте его для редактирования:

nano config-dist.php

Для корректной работы сервера в нем нужно изменить несколько значений (для простоты комментарии были удалены). Конфигурационный файл должен выглядеть так:

<?PHP
unset($CFG);
global $CFG;
$CFG = new stdClass();
$CFG->dbtype    = 'pgsql';
$CFG->dblibrary = 'native';
$CFG->dbhost    = 'localhost';
$CFG->dbname    = 'moodle';
$CFG->dbuser    = 'moodle';
$CFG->dbpass    = 'password';
$CFG->prefix    = 'mdl_';
$CFG->dboptions = array(
'dbpersist' => false,
'dbsocket'  => false,
'dbport'    => '',
);
$CFG->wwwroot   = 'http://domain_or_ip';
$CFG->dataroot  = '/usr/local/moodledata';
$CFG->directorypermissions = 02777;
$CFG->admin = 'admin';
require_once(dirname(__FILE__) . '/lib/setup.php');

Внеся необходимые изменения, сохраните файл как config.php в каталоге moodle (не забудьте указать свой пароль и root-каталог веб-сервера).

Теперь нужно создать каталоги moodledata и cache:

sudo mkdir /usr/local/moodledata
sudo mkdir /var/cache/moodle

Передайте права на них пользователю www-data (то есть, серверу nginx):

sudo chown www-data:www-data /usr/local/moodledata
sudo chown www-data:www-data /var/cache/moodle

Каталог moodledata нужен для хранения пользовательских закачек, данных сеанса и другой информации, которая не должна быть доступна из Интернета; доступ к ней должен быть только у системы Moodle. Каталог cache хранит файлы для более быстрого кэширования.

Теперь нужно создать базу данных для Moodle. Используйте учетную запись пользователя postgres, чтобы создать новую роль по имени moodle, которая в дальнейшем будет обрабатывать БД moodle.

sudo su - postgres
pgsql

Это запустит консоль postgres:

CREATE USER moodle WITH PASSWORD 'password';
CREATE DATABASE moodle;
GRANT ALL PRIVILEGES ON DATABASE moodle to moodle;
\q

Эти команды создадут для БД пользователя по имени moodle и передадут ему все права на одноименную базу данных, которая тоже была создана только что. Чтобы вернуться в оболочку, используйте команду \q.

Закройте учетную запись postgres и настройте nginx для обслуживания файлов. Для этого нужно создать файл хоста nginx:

exit
sudo nano /etc/nginx/sites-available/moodle

Он должен выглядеть так:

server {
listen 80;
root /usr/share/nginx/www/moodle;
server_name example.com;
# put your real site address here
rewrite ^/(.*\.php)(/)(.*)$ /$1?file=/$3 last;
location ^~ / {
try_files $uri $uri/ /index.php?q=$request_uri;
index index.php index.html index.htm;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
}
}
}

Запустите сайт Moodle и удалите стандартную символическую ссылку:

sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/moodle /etc/nginx/sites-enabled/moodle

Тестирование платформы Moodle

Прежде чем запустить сервер, нужно внести в настройки nginx маленькую поправку:

sudo nano /etc/php5/fpm/pool.d/www.conf

Найдите в файле строку listen = 127.0.0.1:9000 и замените ее:

listen = /var/run/php5-fpm.sock

Теперь запустите сервер Nginx и PHP:

sudo service nginx start
sudo service php5-fpm start

Теперь запустите платформу Moodle. Направьте браузер на домен или IP-адрес сервера.

Тонкая настройка виртуального сервера

В завершение нужно отладить некоторые настройки.

Планировщик задач cron очень важен для moodle. Добавьте в cron tab пользователя www-data следующее:

sudo su www-data
crontab -e

Это откроет редактор. Внесите следующую строку, которая будет запускать cron-скрипт каждые 10 минут.

*/10 * * * * php -q -f /usr/share/nginx/www/moodle/admin/cli/cron.php

Сохраните и вернитесь в оболочку, набрав exit.

Готово! Теперь платформа Moodle полностью готова к работе.

Tags: , , , , , , , ,

Добавить комментарий