Skip to content

Instantly share code, notes, and snippets.

@andreibosco
Last active August 29, 2015 14:00
Show Gist options
  • Select an option

  • Save andreibosco/11214628 to your computer and use it in GitHub Desktop.

Select an option

Save andreibosco/11214628 to your computer and use it in GitHub Desktop.
EDX: instalação e configuração no Ubuntu 14.04

Configurando sistema

Atualizar pacotes

sudo apt-get update -y
sudo apt-get upgrade -y
reboot

Instalar dependências

  • Dependencias para desenvolvimento

    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 gettext

  • Dependencias gerais

    sudo apt-get install zlib1g bzip2 openssl ncurses-base sqlite readline-common tk libcgraph6 libgraphviz-dev libatlas-dev libblas-dev libblas3gf liblapack3gf liblapack-dev gfortran libmysqlclient-dev libpq-dev

  • SciPy

    sudo apt-get install python-scipy

  • LXML

    sudo apt-get install python-lxml

  • Dependencias do GeoDjango

    sudo apt-get install libgeos-3.4.2 libgeos-dev

Serviços gerais

  • Mysql

    senha do root do mysql: usar a mesma do sistema

    sudo apt-get install mysql-server

  • Mongodb

    • Adicionar repositorio e instalar pacotes

      sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
      echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
      sudo apt-get update
      sudo apt-get install mongodb-10gen
      
    • Iniciando mongodb

      sudo start mongodb

  • nginx

    sudo apt-get install nginx

    • Iniciar nginx

      sudo /etc/init.d/nginx start

  • Supervisor

    sudo apt-get install supervisor

  • RVM

    curl -L get.rvm.io | bash -s stable
    source .rvm/scripts/rvm
    
  • Ruby

    • versão utilizada pelo EDX: rvm install ruby-1.9.3-p374
    • versão utilizada pelo cs_comments_service (fórum): rvm install ruby-1.9.3-p545
  • Node.js

    sudo apt-get install nodejs npm
    sudo ln -s /usr/bin/nodejs /usr/bin/node
    
  • Python pip e virtualenv

    sudo apt-get install python-pip python-virtualenv

  • Virtualenvwrapper

    sudo /usr/bin/pip install virtualenvwrapper
    source /usr/local/bin/virtualenvwrapper.sh
    nano .bash_profile 
    
    • Deve-se acrescentar as linhas abaixo ao final do arquivo:

      export WORKON_HOME=$HOME/.virtualenvs
      export PROJECT_HOME=$HOME/.virtualenvs_projects
      export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7
      source /usr/local/bin/virtualenvwrapper.sh
      
  • Postgresql

    sudo apt-get install postgresql

    • Alterar senha do usuário postgres

      sudo -u postgres psql
      ALTER USER postgres WITH PASSWORD 'senha';
      \q
      
    • Modificar arquivo de pg_hba.conf, procurar campos peer e substituir por md5

      sudo nano /etc/postgresql/9.3/main/pg_hba.conf
      sudo service postgresql restart
      

Instalação do EDX

  • Criar diretório para aplicações e arquivos estáticos

    mkdir -p apps/edx data
    
  • Criar resto da estrutura de diretórios

    cd apps/edx
    mkdir bin data db log uploads staticfiles
    
  • Clonando projeto e mudando para versão específica que utilizamos

    cd $HOME/apps/edx
    git clone -b solaredx https://github.com/ufcvirtual/edx-platform.git
    
  • Criando ambiente virtual Python2.7 com o Virtualenvwrapper

    cd $HOME/apps/edx
    mkvirtualenv edx
    workon edx
    
  • A seguinte hierarquia deve existir

    * apps
     \
        * bin
        * data
        * db
        * edx-platform
        * log
        * staticfiles
        * uploads
    
  • Configurando permissões pro nginx

    Não esquecer de alterar o nome do usuário no path

    # Configuração de permissões para o nginx
    sudo chmod o+x /home
    sudo chmod o+x /home/azureuser
    sudo chmod o+x /home/azureuser/apps
    sudo chmod o+x /home/azureuser/apps/edx/
    sudo chmod o+x /home/azureuser/apps/edx/staticfiles
    
  • Acessar diretorio do projeto

    cd edx-platform

  • Instalar dependências do projeto

    pip install -r requirements/edx/pre.txt
    pip install -r requirements/edx/base.txt
    pip install -r requirements/edx/post.txt
    bundle install
    npm install
    rake install_prereqs
    
  • Criar banco de dados e migrações

    ./manage.py lms syncdb --migrate
    ./manage.py cms syncdb --migrate
    

Instalação do fórum (discussion)

  • Preparando servidor (ubuntu) para o Elasticsearch

    sudo apt-get update
    sudo apt-get install openjdk-7-jre-headless -y
    
  • Instalando o Elasticsearch

    wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.1.deb
    sudo dpkg -i elasticsearch-1.1.1.deb
    
  • Rodando o Elasticsearch

    sudo /etc/init.d/elasticsearch start
    
  • Clonando projeto

    cd $HOME/apps
    git clone https://github.com/edx/cs_comments_service.git
    cd cs_comments_service
    git checkout 693cb4a69fac7f6c808efdf8d8027e778e37737a
    bundle
    
  • Rodando serviço de comentários (manualmente)

    unicorn 
    
  • Preparando bundle para iniciar o serviço pelo supervisor

    rvm wrapper 1.9.3-p545@cs_comments_service app bundle
    
    • Para obter o local do app bundle: which app_bundle

Serviços de gerencia do edx e nginx

  • Criando os scripts de inicialização do LMS e do CMS utilizando o conteúdo dos gist

    cd ~/apps/edx/bin
    curl https://gist.githubusercontent.com/andreibosco/11376968/raw/bc1c1232c5a40b234c4de27f8168c1163952ef38/gunicorn_lms.sh > gunicorn_lms.sh
    curl https://gist.githubusercontent.com/andreibosco/11376936/raw/d2cbe5a24e7ed4bbd02eb7bfe30f370185a0574f/gunicorn_cms.sh > gunicorn_cms.sh
    chmod u+x gunicorn*
    
  • Configurando LMS e CMS no nginx

    Não esquecer de verificar as variáveis e paths do arquivo

    curl https://gist.githubusercontent.com/andreibosco/11377142/raw/b39a8b8b05352b35d6b12af8a51c5224b3e8ec82/edx.conf > edx.conf
    sudo mv edx.conf /etc/nginx/sites-available/edx.conf
    sudo ln -s /etc/nginx/sites-available/edx.conf /etc/nginx/sites-enabled/ 
    
  • Compilar assets

    cd $HOME/apps/edx/edx-platform
    workon edx
    rake cms:gather_assets:dev --trace
    rake lms:gather_assets:dev --trace
    
  • Gerando arquivos estáticos

    cd $HOME/apps/edx/edx-platform
    workon edx
    python manage.py lms collectstatic
    python manage.py cms collectstatic
    
  • Editando arquivos de tradução

    • Local dos arquivos: $HOME/apps/edx/edx-platform/conf/locale/pt_BR

    • Compilar tradução:

      cd $HOME/apps/edx/edx-platform
      workon edx
      rake i18n:generate --trace
      
  • Baixando arquivos de tradução (apenas se necessário)

    Editar o arquivo $HOME/apps/edx/edx-platform/conf/locale/config e definir a seguinte linha: "locales" : ["pt_BR"],. Em seguida, criar o arquivo $HOME/.transifexrc com os seguintes dados (é necessário ter uma conta no transifex):

    [https://www.transifex.com]
    hostname = https://www.transifex.com
    password = sua_senha
    token = 
    username = seu_usuario
    

    Em seguir executar os seguintes comandos:

    cd $HOME/apps/edx/edx-platform
    workon edx
    tx pull --all
    rake i18n:generate --trace
    
  • Configurando supervisor

    O Supervisor é o gerenciador de processos utilizados para gerenciar a execução do LMS e do CMS (não esquecer de verificar os paths e nome do usuário e grupos):

    curl https://gist.githubusercontent.com/andreibosco/11376813/raw/14e80fa642af213556bd088c76ac58bfdcca9560/supervisor.conf > edx.conf
    sudo mv edx.conf /etc/supervisor/conf.d/edx.conf
    sudo /etc/init.d/supervisor start
    
  • Iniciando serviços

    • Status: sudo supervisorctl status
    • Iniciar todos os serviços: sudo supervisorctl start all
    • Iniciar serviço específico: sudo supervisorctl start cms
    • Parar todos os serviços: sudo supervisorctl stop all

Comandos shell do edx

Fonte: https://github.com/edx/edx-platform/wiki/Shell-commands

Serviços

Django (CMS e LMS)

  • Sintaxe: ./manage.py [lms|cms] --service-variant lms <cmd>
  • Ver a lista completa de comandos disponíveis: ./manage.py [lms|cms] help
  • Criar um novo superuser: ./manage.py lms createsuperuser --username <user>
  • Criar um novo usuário: ./manage.py lms create_user user@example.com
  • Definir ou alterar senha: ./manage.py lms changepassword user
  • Definir usuário como staff: ./manage.py lms set_staff user@example.com
  • Sincronizar dados de usuários do cms/lms com o serviço de fórum/discussion: rake django-admin[sync_user_info,lms,dev]
  • Apagar curso: ./manage.py cms delete_course Organização/CódigoCurso/Periodo commit
  • Django shell: ./manage.py lms shell

Mongo

  • Listar todos os cursos: db.modulestore.find( { "_id.category" : "course" }, {'name':'1'} )
  • Achar todos os updates para curso de id 999: db.modulestore.find({'_id.course': '999','_id.name':'updates'})
  • Remover cursos de id 999 de todas as organizações (isso não irá remover dados do django, como os grupos do curso): db.modulestore.remove({'_id.course': '999'})

Fórum (Discussion)

  • Rodar testes: rspec spec
  • Apagar o banco de dados: mongo cs_comments_service_development --eval "db.dropDatabase()"
  • Reinicializar o banco do serviço: bundle exec rake db:init
  • Re-indexar o db: bundle exec rake db:reindex_search

Comandos de teste

  • Iniciando servidores manualmente para debug
    • LMS: rake lms[cms.dev,0.0.0.0:8000]
    • CMS: rake cms[dev,0.0.0.0:8001]
    • Comando alternativo: python manage.py lms runserver

Comunicação com API

  • Arquivos de configuração

    Os arquivos de configuração ficam dentro de cms/envs/private.py e lms/envs/private.py

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment