Так! Я його встановив! Ніщо так не не впиралося встановленню, як Open edX. Коли я тільки затіяв цю справу, то думав, що прочитаю інструкцію, встановлю необхідні залежності і встановлю саму систему — наприклад, на свій ноутбук, або на комп'ютер, де вже стоїть Moodle — місця тут достатньо.

Із використанням вже готового образу в мене нічого не вийшло, взявся я за самостійне встановлення. Інструкція написана для Ubuntu 12.04 x64, але це вже застаріла система, думав я, починаючи виконувати її на Debian Jessie — ніби близькі родичі з Ubuntu.

Open edX Studio

Справа у тім, що Open edX з самого початку розроблявся як продукт для внутрішнього використання і не був Open до літа позаминулого року. Тому і досі назвати Open edX масовим продуктом не можна, на відміну від Moodle, який ставиться досить легко. Отже, як його ставити? Є інструкція на GitHub, проте я її дещо доповню.

  • Не скупіться на дисковий простір — 20-40 ГБ тільки для пробної системи. На 10 не стане, пробував.
  • В інструкції написано, що треба використовувати Ubuntu 12.04 x64, значить вам треба саме його. x86 не підходить — на одному із етапів інсталяції скрипт зупиняється з помилкою, за якою я знайшов інформацію про те, що архітектура x64 жорстко вписана в код системи. Я просто хотів запускати на робочому комп'ютері, де 32-бітний Windows. Іще — я скачав версію для серверів — там автоматично не встановлюється графічна оболонка, якої нам не треба.
  • Debian теж не підходить — не зважаючи на наявність всіх необхідних пакунків в репозиторіях, вилазять несумісності між різними їх версіями. Десь так:
  • TASK: [user | ensure sudoers.d is read] ***************************************
    failed: [localhost] => {"failed": true, "item": "", "parsed": false}
    invalid output was: SUDO-SUCCESS-dbkjwuclcnlqzfhsjgysedbpugijmmct
    Traceback (most recent call last):
    File "/root/.ansible/tmp/ansible-tmp-1434227841.3-195051028533577/lineinfile", line 1689, in
    main()
    File "/root/.ansible/tmp/ansible-tmp-1434227841.3-195051028533577/lineinfile", line 389, in main
    ins_aft, ins_bef, create, backup, backrefs)
    File "/root/.ansible/tmp/ansible-tmp-1434227841.3-195051028533577/lineinfile", line 282, in present
    msg, changed = check_file_attrs(module, changed, msg)
    File "/root/.ansible/tmp/ansible-tmp-1434227841.3-195051028533577/lineinfile", line 175, in check_file_attrs
    if module.set_fs_attributes_if_different(file_args, False):
    AttributeError: 'AnsibleModule' object has no attribute 'set_fs_attributes_if_different'


    FATAL: all hosts have already failed -- aborting

    PLAY RECAP ********************************************************************
    to retry, use: --limit @/root/edx_sandbox.retry

    localhost
  • Встановивши Ubuntu, потрібно поправити вміст файлу /etc/apt/sources.list — через те, що система не свіжа, не всі дзеркала містять повний набір репозиторіїв, зокрема, проблеми виникли з українським та американським. Отже, у файлі заміняєте всі піддомени us чи ua на de — з німецьким все гаразд, поки.
  • Користуватися скриптом one step installation теж не варто, бо в процес встановлення потрібно буде внести корективи.
  • Отже, оновлюємо, для початку систему:
  • sudo apt-get update -y
    sudo apt-get upgrade -y
    sudo reboot
  • Ставимо потрібні інструменти:
  • sudo apt-get install -y build-essential software-properties-common python-software-properties curl git-core libxml2-dev libxslt1-dev libfreetype6-dev python-pip python-apt python-dev
    sudo pip install --upgrade pip
    sudo pip install --upgrade virtualenv
  • Качаємо конфігураційний репозиторій:
  • cd /var/tmp
    git clone -b release https://github.com/edx/configuration
  • Встановлюємо залежності для Ansible (система автоматизації для розробників — саме вона буде ставити Open edX)
  • cd /var/tmp/configuration
    sudo pip install -r requirements.txt
  • Далі варто зробити дещо самодіяльності. При виконанні скрипта встановлення вилізли проблеми із кореневими сертифікатами (хоча, вони оновлені у нас), вирішити їх вдалося тільки шляхом відключення перевірки, інакших робочих рецептів не знайшов. Отже, ліземо в файл /var/tmp/configuration/playbooks/roles/elasticsearch/tasks/main.yml і додаємо в першій секції після force=no новий рядок: validate_certs=no
  • Нарешті командуємо:
  • cd /var/tmp/configuration/playbooks && sudo ansible-playbook -c local ./edx_sandbox.yml -i "localhost,"
  • Залишаємо систему на декілька годин — воно саме робить цілу купу роботи.
  • Після закінчення встановлення запрацює веб-сервер і ви побачите фронтенд, а за портом 18010 — студію, де можна робити курси. Типовий логін для фронтенду — honor@example.com, пароль edx, в студії — staff@example.com та edx.

Видихаємо. Інтерфейс нескладний, тільки для постановки складних завдань доведеться кодити за зразком. Ще хочу розібратися із локалізацією.