Так! Я його встановив! Ніщо так не не впиралося встановленню, як Open edX. Коли я тільки затіяв цю справу, то думав, що прочитаю інструкцію, встановлю необхідні залежності і встановлю саму систему — наприклад, на свій ноутбук, або на комп'ютер, де вже стоїть Moodle — місця тут достатньо.
Із використанням вже готового образу в мене нічого не вийшло, взявся я за самостійне встановлення. Інструкція написана для Ubuntu 12.04 x64, але це вже застаріла система, думав я, починаючи виконувати її на Debian Jessie — ніби близькі родичі з Ubuntu.
Справа у тім, що 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.
Видихаємо. Інтерфейс нескладний, тільки для постановки складних завдань доведеться кодити за зразком. Ще хочу розібратися із локалізацією.