天天看點

在ubunut 12.04 server 上部署 edx

前言:

這個部署隻是針對 2014年1月左右的代碼, 因為腳本比較老,當然現在github上的開源edx 部署起來比去年的較容易, 最近更新的edx,生産環境我用了半天時間部署完成, 但是去年的edx, 我花了1天半時間, 這也并不是去年要安裝的東西多, 而是很多包安裝的時候沒有現在的腳本優化的那麼好, 還有影響最大的是網絡和機器配置問題, 不管是新的edx還是舊的edx代碼,部署起來都差不多, 腳本改變的不是很大,就看問題怎麼解決

開源位址: https://github.com/edx/edx-platform

1. 環境要求:

Ubuntu 12.04 amd64 (oraclejdk required)

Minimum 2GB of memory, 4GB recommended for production servers (with only 2GB some swap space is required, at least during installation)

At least one 2.00GHz CPU or EC2 compute unit

Minimum 25GB of free disk, 50GB recommended for production servers

這是官網要求的參數, 而且系統必須是12.04 64位的, 開發環境在14.04 上弄過, 但是生産環境我就沒有去研究過, 記憶體至少2G 還有2G交換空間, 如果沒有交換空間, 裝的時候有時候會報記憶體益出, 硬碟25G, 現在國内很多伺服器自帶20G, 根本不夠, 裝到一半的時候沒有空間了, 後來又加了50G的空間

2. 更新,更新系統到最新狀态

sudo apt-get update –y

sudo apt-get upgrade –y

sudo reboot

3. 安裝項目基本要求環境

sudo apt-get install -y build-essential software-properties-common python-software-properties curl git-core libxml2-dev libxslt1-dev python-pip python-apt python-dev

wget https://bitbucket.org/pypa/setuptools/raw/0.8/ez_setup.py -O - | sudo python

sudo pip install --upgrade pip

sudo pip install --upgrade virtualenv

4. 腳本準備

git clone -b release https://github.com/edx/configuration

這是github上面最新的腳本,

我使用的是去年時候git clone的腳本

cd configuration/

sudo pip install -r requirements.txt

這步還有以後遇到的問題, 預設的安裝包是從官網下載下傳,國内網速比較坑, 直接指定 pip國内源安裝

sudo pip install -i http://pypi.douban.com/simple/ -r requirements.txt

國内源:

http://pypi.douban.com/ 豆瓣

http://pypi.hustunique.com/ 華中理工大學

http://pypi.sdutlinux.org/ 山東理工大學

http://pypi.mirrors.ustc.edu.cn/ 中國科學技術大學

http://mirrors.aliyun.com/pypi/simple/ 阿裡雲

之後編譯沒有通過的時候, 修改pip的源, 修改的地方有幾處,每個角色需要改, 分别在/edx/app/角色名稱 目錄下的.pip目錄裡,裡面沒有pip.conf檔案, 需要建立

你可以 vim 或者touch一個pip.conf

例如:

cd /edx/app/edxapp

ll

會看到有個.pip目錄

cd .pip

vim pip.conf

添加如下:

[global]

index-url = http://pypi.douban.com/simple

還有腳本裡的,如果有官網源: http://e.pypi.python.org/simple

全部替換為國内源

vim edxapp/defaults/main.yml

edxapp_pypi_local_mirror: 'http://pypi.douban.com/simple'

5. 軟體準備

執行腳本的時候, 有幾個需要安裝的軟體下載下傳比較慢, 提前下載下傳

elasticsearch-0.90.11.deb

jdk-7u51-linux-x64.tar.gz

mongodb-10gen_2.4.7_amd64.deb

nltk-data-20131113.tar.gz

rabbitmq-server_3.2.2-1_all.deb

期中mongodb和rabbitmq-server 我手動安裝, 因為mongodb的源原來是官網的,安裝相當的慢

sudo dpkg -i mongodb-10gen_2.4.7_amd64.deb

隻要執行這句就行了, 初始化的時候在執行腳本的時候會初始化

當然也可以改為 國内的源

mongodb 國内源:

deb http://mirrors.bistu.edu.cn/mongodb/repo/ubuntu-upstart dist 10gen'

安裝rabbitmq-server

sudo dpkg -i rabbitmq-server_3.2.2-1_all.deb (會報缺少依賴)

執行

sudo apt-get install erlang-nox

sudo apt-get -f install 安裝依賴

其他幾個需要打包到一個目錄下(我存放目錄/edx/soft), 修改腳本的位置

cd /var/tmp/configuration/playbooks/roles

./oraclejdk/defaults/main.yml:

oraclejdk_url: "file:///edx/soft/jdk-7u51-linux-x64.tar.gz"

./ora/defaults/main.yml: ora_nltk_download_url: file:///edx/soft/nltk-data-20131113.tar.gz

./discern/defaults/main.yml: discern_nltk_download_url: file:///edx/soft/nltk-data-20131113.tar.gz

./elasticsearch/defaults/main.yml: elasticsearch_url: "file:///edx/soft/{{ elasticsearch_file }}"

6. 執行腳本

cd configuration/playbooks

sudo ansible-playbook -c local ./edx_sandbox.yml -i "localhost,"

如果安裝過程中出錯了,再次執行時候可以從出錯的地方繼續

sudo ansible-playbook -c local ./edx_sandbox.yml -i "localhost," --start-at-task="edxapp | install python base-requirements"

執行這個腳本會有很多次,不必擔心,過程會很漫長

執行完之後,你的edx就可以通路了

lms端: ip

cms端: ip:18010

7. 注意事項

安裝的時候你可以打開兩個視窗,一個在執行腳本,一個可以通過ps ax|grep install 之類的檢視程序, 看看到底這步在幹什麼,友善你解決可能出現的錯誤

當看到

16746 pts/0 S+ 0:03 /edx/app/discern/venvs/discern/bin/python /edx/app/discern/venvs/discern/bin/pip install -r /edx/app/discern/ease/requirements.txt

程序有這些,而且卡在這裡很久,或者出錯了

這可能是你的pip源沒有配好,源很慢,你可以直接執行這句,使用國内比較快的源

/edx/app/discern/venvs/discern/bin/python /edx/app/discern/venvs/discern/bin/pip install

-i http://pypi.douban.com/simple/

-r /edx/app/discern/ease/requirements.txt

每個角色都有個一個環境, 這裡是discern, 使用的它目錄下venvs的python和pip去執行

執行完這句之後, 從出錯的地方繼續執行腳本

又比如:

TASK: [edxapp | syncdb and migrate]

這條指令會報 _mysql_exceptions.OperationalError: (1044, "Access denied for user 'edxapp001'@'localhost' to database 'edxapp'")

使用者沒有權限,使用root登入mysql,執行如下指令

mysql> GRANT ALL PRIVILEGES ON edxapp.* TO 'edxapp001'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

等等

安裝過程中需要安裝ruby

ruby 預設的是國外的源,比較慢,可以換為國内淘寶的源

這裡使用rbenv安裝ruby

檢視ruby 版本

/edx/app/forum/.rbenv/versions/1.9.3-p448/bin/ruby -v

ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux]

檢視gem 版本

/edx/app/forum/.rbenv/versions/1.9.3-p448/bin/gem -v

1.8.23

檢視gem 源

/edx/app/forum/.rbenv/versions/1.9.3-p448/bin/gem source -l

*** CURRENT SOURCES ***

http://rubygems.org/

删除源 http://rubygems.org/

/edx/app/forum/.rbenv/versions/1.9.3-p448/bin/gem source --remove http://rubygems.org/

添加源

/edx/app/forum/.rbenv/versions/1.9.3-p448/bin/gem sourc -a https://ruby.taobao.org/

此外還要修改Gemfile裡的配置,

vim /edx/app/forum/cs_comments_service/Gemfile

source 'https://rubygems.org'

替換為

source 'https://ruby.taobao.org/'

繼續閱讀