基于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, 详细安装请参考