基於Ubuntu虛擬機安裝edx-platform
一. 前提准備
1. 虛擬機中安裝Ubuntu12.04,然后再使用Vagrant方式搭建開發環境,請確保這個虛擬機可以使用2GB的內存,否則容易IO Error。
2. 建議用VirtualBox 4.2.12,Vagrant 可以用最新版。
二. 安裝軟件
1. 安裝 VirtualBox 4.2.12
https://www.virtualbox.org/wiki/Downloads
2. 安裝 Vagrant
http://www.vagrantup.com/
三. 安裝edx-platform
1. 本地創建edx目錄,下載Ubuntu X86虛擬機放到此目錄
2. 命令行模式進入edx目錄,執行 : vagrant init
自動生成Vagrantfile文件。用本文編輯器修改如下:
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "edx_platform_precise32"
#注意,此處要指向虛擬機文件
config.vm.box_url = "precise32.box"
config.vm.network :forwarded_port, guest: 8000, host: 8000
config.vm.network :forwarded_port, guest: 9000, host: 9000
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network :private_network, ip: "192.168.20.40"
nfs_setting = RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/
# Make it so that network access from the vagrant guest is able to
# use SSH private keys that are present on the host without copying
# them into the VM.
config.ssh.forward_agent = true
config.vm.provider :virtualbox do |vb|
# Use VBoxManage to customize the VM. For example to change memory:
vb.customize ["modifyvm", :id, "--memory", "2048"]
# This setting makes it so that network access from inside the vagrant guest
# is able to resolve DNS using the hosts VPN connection.
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
end
end
注意:
我用LMS端口是8000, CMS端口是9000,不是默認的8000, 8001
3. 啟動虛擬機,命令行執行 : vagrant up
4. 啟動Putty, 登錄 192.168.20.40:22
賬號 : vagrant
密碼:vagrant
5. 修改 sourcelist,否則后面的安裝都從美國服務器下載,巨慢無比,哥剛開始下了一天啊,還沒有下載完,還經常重新下載,坑爹啊~
#備份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
sudo gedit /etc/apt/sources.list
6. 安裝Git
sudo apt-get install git
7. 創建edx目錄
sudo mkdir /opt/edx
cd /opt/edx
8. 克隆edx-platform,等吧,下載200M左右,此處可以上個洗手間。
git clone https://github.com/edx/edx-platform.git
9. 修改權限, 否則后邊會報錯說目錄屬性不對。
sudo chown vagrant:vagrant /opt/edx -R
10. 卸載系統默認的1.6.1版本的numpy,prev.txt里面說必須要安裝1.6.2版本,否則后面會rake報如下錯誤:
vagrant@precise32:/opt/edx/edx-platform/scripts$ rake lms
(in /opt/edx/edx-platform)
rake aborted!
./rakelib/helpers.rb:61: syntax error, unexpected tIDENTIFIER, expecting tAMPER
pid = Process.spawn({}, *command, spawn_opts)
查看numpy版本可以用 pip freeze | grep numpy
#卸載numpy 1.6.1
sudo apt-get remove numpy
#安裝numpy 1.6.2
sudo pip install --upgrade numpy==1.6.2
11. 編輯 requirements/base.txt , 找到“polib = 1.0.3" ,把這一行注釋掉;
12. 編輯 scripts/create_dev_env.sh文件,找到
”pip install -r $BASE/edx-platform/requirements/edx/pre.txt“,在后面添加一行
”pip install http://bitbucket.org/izi/polib/get/1.0.3.tar.gz“
*** 原因:polib依賴項經過pypi的解析得到的下載地址是:http://bitbucket.org/izi/polib/downloads/polib-1.0.3.tar.gz
但是在天朝,這個地址上訪問不上的,然而前面的downloads是可以的,polib是必須的依賴項,所以只能是使用變相的方式將其安裝上去。
錯誤如下:
Error timed out while getting http://bitbucket.org/izi/polib/downloads/polib-1.0.3.tar.gz (from https://pypi.python.org/simple/polib/)
Exception:
13. 編輯 rakelib/prereqs.rake, 修改pre.txt, base.txt, post.txt 安裝如下:增加sudo, 否則后面會報權限不夠錯誤, 同時去掉無效參數。
sh('sudo pip install -r requirements/edx/pre.txt')
sh('sudo pip install -r requirements/edx/base.txt')
sh('sudo pip install -r requirements/edx/post.txt')
14. 開始安裝,下載一堆升級包,這時候你就指導第5步的重要性,但是還要等待很長時間,此處可以吃個飯。
如果出錯,重新運行create-dev-env.sh,已安裝的文件不會再安裝。
./scripts/create-dev-env.sh
15. 運氣好的話可以看到Success, 接着可以編譯lms 每個命令都下載一堆升級包,編譯一大坨文件,此處可以喝杯咖啡。
如果出錯,重新運行命令,已安裝的文件不會再安裝。
#注意:必須用sudo,否則會有權限錯誤,用cms的課程,必須用cms.dev編譯
sudo rake lms[cms.dev,0.0.0.0:8000]
16. 繼續編譯 cms,接着等,此處可以上個洗手間或再來一杯咖啡,或同時來。
#使用dev環境
sudo rake cms[dev,0.0.0.0:9000]
17. 創建管理員賬號
rake django-admin["createsuperuser"]
按照提示創建管理員賬號
18. 最終可以訪問服務了,可以自己注冊賬號,但是賬號都沒有激活而且也不會發激活郵件,要用管理員在后台去激活。
如果vagrant端口映射正確, localhost也可以訪問
建議用Chrome, Firefox, IE10以上版本瀏覽器訪問, IE7/8/9不兼容
LMS默認沒有課程,可以在CMS里面創建,參考手冊:
http://files.edx.org/Getting_Started_with_Studio.pdf
19. 后台管理網址,用第18步創建的管理員賬號登錄,隨便玩吧~
四. 其他:
1. 如果要把VirtualBox虛擬機制作vagrant 包,可以用如下命令
vagrant package --output ubuntu_32.box --base vagrant-precise32
2. Windows 操作系統的文件夾中打開命令行:
Shift + 鼠標右鍵點擊,在此處打開命令窗口。
五. 參考文檔:
補充:
如果要安裝Comment_Services, 必須要安裝 Ruby 1.9.3, 詳細安裝請參考