Установка Moodle с помощью Git на сервер Ubuntu 12.04
Ubuntu, VPS | Комментировать запись
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: Cloud Server, Git, Github, Moodle, NGINX, PHP, PostgreSQL, SSH, Ubuntu 12.04 LTS