본문 바로가기
IT

EDX 설치 방법

by 엘리후 2021. 6. 25.

sudo apt-get update && upgrade
 
cd /var/tmp
git clone https://github.com/edx/configuration
 
cd /var/tmp/configuration
git checkout open-release/ficus.3
 
cd /var/tmp/configuration/util/install
vi ansible-bootstrap.sh
 
CONFIGURATION_VERSION="master"를
CONFIGURATION_VERSION="open-release/ficus.3" 으로 수정
 
sudo bash ansible-bootstrap.sh
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
 
sudo apt-get update
 
sudo apt-get install -y build-essential software-properties-common curl git-core libxml2-dev libxslt1-dev python-pip libmysqlclient-dev python-apt python-dev libxmlsec1-dev libfreetype6-dev swig gcc g++
 
cd /var/tmp/configuration
 
sudo -H pip install -r requirements.txt
 
cd /var/tmp/configuration/playbooks
 
vi edx_sandbox.yml 
 
edx_platform_version: 'master"를
edx_platform_version: 'open-release/ficus.3' 으로 수정
 
sudo ansible-playbook -i localhost, -c local edx_sandbox.yml -e configuration_version=open-release/ficus.3
(설치를 진행하는 스크립트를 실행하는 명령어로 에러수정 후 계속해서 다시 치게될 것이다.)
 
설치중 에러가 나면 중단되는데 이떄 에러가 난 부분을 파악하고 edx_;sandbox.yml의 roles 부분에서 에러발생 지점 윗 부분을  #으로 주석처리하여 다시 설치를 진행한다. (이때 마지막에 실제 입력되는 스크립트를 표시하는 -vvv 옵션을 집어넣어서 설치시 에러나는 원인을 확실히 찾는다.) => 쉽게 말하면 설치완료된 부분은 재설치 하지 않기위해 주석처리함
 
에러나는 부분을 찾아서 
 
roles 디렉터리의 해당 파트를 찾아가서 task의 main.yml 파일의 내용을 해석해서 default 디렉터리의 main.yml을 가지고 수동 패키지 설치를 해줘야한다.
 
task의 main.yml 내용에서 with item이 있으면 default의 main.yml에서 찾아서 수동 설치해줘야한다.
apt항목으로 묶인 부분은 apt-get install 명령으로 설치해주면된다.
get같은 경우 해당 URL로 찾아가 직접 다운로드하여 넣어주는 방법으로 해결할 수 있으며
jdk링크가 변경된 에러로 설치가 불가능한 경우는 해당 버전의 jdk를 oracle에서 직접 다운로드 받아서 해당 경로에 압축을 해제해주면된다.
github의 nltk를 설치해야하는 경우 해당 버전을 git clone하여 readme나 install설명파일이나 setup방법을 찾아서 수동으로 설치한다.
 
 
1.
설치하다보면 에러중에 lock이 걸리는 경우가 발생하는데 
sudo rm /var/lib/apt/lists/lock 
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
sudo apt-get install -f      (dpkg가 인터럽트 걸린경우)
 
이걸로 해당 리스트를 삭제후 다시한다.
2. 
edxlocal의 postfix에러가 나는 부분이 발생할 수 있다.
postfix는 본래 기본설치되어있는 메일 서버 데몬인 것으로 추정되고 이를 해결하기 위해서는 edx_local의 task 디렉토리의 main.yml에 있는 패키지 이름과 default 디렉토리의 main.yml에서 설치하는 패키지를 찾은다름 default디렉토리의 main.yml에 있는 패키지를 수동으로 설치 해주면된다. 
필자는 아래와 같은 방법으로 해결했다.
 
- $ sudo vim /etc/postfix/main.cf 
- removed the extradot in "myhostname = pacific-SVE11115EGW..name"
- $ /etc/init.d/postfix reload (as advised in the terminal)
 
after which i ran the update && upgrade command and the error was no more 
/etc/init.d/postfix reload
출처 : https://ubuntuforums.org/showthread.php?t=2333551
[SOLVED] dpkg: error processing package postfix & bsd-mailx
dpkg: error processing package postfix & bsd-mailx I am running ubuntu 16.04 and i just installed chkrootkit and rkhunter after which i ...
ubuntuforums.org
 
 
 
설치확인 명령어
sudo /edx/bin/supervisorctl status all (서버상태 확인)
Sudo tail -f /edx/var/log/lms/..... (log확인)
service nginx status (nginx 서버 상태확인 )
service mysql status
service mongod status 
 
 
 
박스있을때 설치법
virtualbox 설치하고
vagrant 설치하고
vagrant box add edx edx.box
vagrant init edx
vi Vagrantfile
config.vm.box = "base"를
config.vm.box = "edx" 로 변경
 
virtualbox 
 
create new terminal (터미널창 새로 생성한 후)
vagrant up
 
 
(* Stderr: VBoxManage: error: VT-x is not available (VERR_VMX_NO_VMX)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole
에러가 뜰경우 - Vmware상에서 우분투 동작시 해당 가상머신 setting으로 들어가서 processors -> Virtualize Intel VT-x/EPT or AMD-V/RVI 에 체크해준다.)
 
(* There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
 
Command: ["startvm", "d52be708-3292-46e5-a3e7-f6c960996601", "--type", "headless"]
 
Stderr: VBoxManage: error: RawFile#0 failed to create the raw output file /../ubuntu-xenial-16.04-cloudimg-console.log (VERR_FILE_NOT_FOUND)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole
에러가 뜰경우 - Vagrantfile 에 
  config.vm.provider "virtualbox" do |v|
    v.customize [ "modifyvm", :id, "--uartmode1", "disconnected" ]
  end
를 추가한다.)
- 참고 : https://betacloud.io/get-rid-of-ubuntu-xenial-16-04-cloudimg-console-log/
 
(* ssh connection timeout error 가 발생한다면 Vagrantfile에 
  config.vm.provider :virtualbox do |vb|
    vb.gui = true
  end
를 추가한다.)
 
설치 중 프로세스가 강제로 kill이 되어 실패할 경우 - 메모리 or CPU사용량의 초과로 실패하는 것이니 메모리나 CPU를 늘려야한다.
파이선 에러가 나올 경우 stderr 의 마지막 부분부터 확인해야한다.

위와 같은 에러는 edxapp의 migration 실패시 발생한 에러인데 마지막 부분에 Duplicate column name 에러를 확인 할 수 있다. 
이는 Database의 이름이 중복 된것으로 mysql에서 show database한 후 edxapp이 존재하는 경우 drop database edxapp 으로 해결 할 수 있다.
 
insight : install bower dependencies 에러 (ed_service 설치 이후이므로 이때부터는 edx가 작동됨)
https://stackoverflow.com/questions/29985746/error-to-install-insights-install-bower-openedx-ubuntu-server-12-04
(이와는 다른 에러가 발생하여 그냥 edx_sandbox.yml에서 insight를 주석처리하고 넘어갔다.)- error는 bower install이 안되는 문제인 구글링으로도 해결을 할 수 없었다..
 
elasticsearch 도 에러로 주석처리함.
 
forum에서 ruby에러가 나는데 해당 되는 부분 설치하고 루비 버전 맞춰주면됨 
udo apt-add-repository ppa:brightbox/ruby-ng
udo apt-get update
sudo apt-get install ruby2.4 ruby2.4-dev
- 결국 뛰어넘음... complete 가 떳는데도 불구하고 안되는건 뭐니...ㅠ
 
 
재시작 명령
sudo /edx/bin/supervisorctl restart all
 
 
 
설치완료 후 로그인
staff@example.com
edx
 
 
 
-----------------------------------------------
box로 설치시 에러가 자꾸 나서 
Virtualbox를 5.1.* 버전의 최신버전으로 설치하고 vagrant도 1.9.* 버전으로 최신버전으로 설치해서 해보도록 해야겟다.
아무래도 버전 문제인거같은데 클린하게 설치하는 것이 중요하다. 5.0.x 버전이 남아있으니 더럽게 삭제해야할 것들이 많아서 귀찮게 됨.
더럽게 되는 이유가 아래와 같음
dpkg -l virtualbox* | grep ^i ii virtualbox 5.0.32-dfsg-0ubuntu1.16.04.2 amd64 x86 virtualization solution - base binaries ii virtualbox-dkms 5.0.32-dfsg-0ubuntu1.16.04.2 all x86 virtualization solution - kernel module sources for dkms ii virtualbox-qt 5.0.32-dfsg-0ubuntu1.16.04.2 amd64 x86 virtualization solution - Qt based user interface
 
이렇게 virtualbox와 dkms, qt 세개의 버전이 같아야하는데 5.1.*버전을 설치하면 버전이 맞지않아 (rtr3initex failed with rc=-1912 (rc=-1912))와 같은 이상한 오류가 뜨게된다.

댓글