Maratona de Programação

Instalação do Boca

Atualizado em 19 de Julho de 2013

Seguir o INSTALL.TXT

  1. Instale as dependências

     julio@acer ~> sudo pacman -S php php-pgsql php-mcrypt php-gd postgresql
    
  2. Descomente as seguintes linhas em /etc/php/php.ini

     extension=pdo_pgsql.so
     extension=pgsql.so
     extension=zip.so
    
  3. Edite a configuração do postgreSQL:

     listen_addresses = 'localhost'
     (* = all)
    
  4. Faça a codificação de novos BDs ser UTF-8

    Essa etapa é desnecessária, mas sem ela você terá que digitar “ENCODING = ‘UTF8’” toda vez que quiser criar um banco UTF8.

     julio@acer ~> psql
     psql (9.1.2)
     Type "help" for help.
    
     julio=# UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
     UPDATE 1
     julio=# DROP DATABASE template1;
     DROP DATABASE
     julio=# CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE';
     CREATE DATABASE
     julio=# UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';
     UPDATE 1
    
  5. Reinicie o PostgreSQL:

     julio@acer ~> sudo systemctl restart postgresql
    
  6. Baixe uma versão recente do boca: ime.usp.br/~cassio/boca

  7. Descompacte o arquivo e mova a pasta para o servidor

     [root@acer Downloads]# tar xvfz boca-1.4.2.tgz
     [root@acer Downloads]# mv boca-1.4.2 /srv/http/boca
    
  8. Edite as configurações do Apache:

     julio@acer ~> sudo vim /etc/httpd/conf/httpd.conf
    
     #BOCA
     <Directory /srv/http/boca>
            AllowOverride Options AuthConfig Limit
            Order Allow,Deny
            Allow from all
            AddDefaultCharset utf-8
     </Directory>
     <Directory /srv/http/boca/private>
            AllowOverride None
            Deny from all
     </Directory>
     <Directory /srv/http/boca/doc>
            AllowOverride None
            Deny from all
     </Directory>
     <Directory /srv/http/boca/tools>
            AllowOverride None
            Deny from all
     </Directory>
    
  9. Crie o usuário “boca”, capaz de criar bancos de dados:

     julio@acer ~> psql
     julio=# CREATE USER boca WITH PASSWORD 'OUKLsjVs2GLby79' createdb;
    
  10. Como root, edite o arquivo “/srv/http/boca/private/conf.php”

    <?php
    function globalconf() {
        $conf["dbencoding"]="UTF8";
        $conf["dbclientenc"]="UTF8";
        $conf["dblocal"]="false";
        $conf["dbhost"]="localhost";
        $conf["dbport"]="5432";
        $conf["dbname"]="bocadb";
        $conf["dbuser"]="boca";
        $conf["dbpass"]="senha";
        $conf["dbsuperuser"]="senha";
        $conf["dbsuperpass"]="senha";
        $conf["basepass"]="142857";
        $conf["key"]="GG5ALEATORIOjJprR6ex";
        $conf["ip"]='local';
        return $conf;
    }
    ?>
    

Para gerar uma chave aleatória e a senha do boca, você pode usar o seguinte comando:

julio@acer ~> echo `tr -dc _A-Z-a-z-0-9 < /dev/urandom | head -c25`

Ou outro gerador de senhas aleatórias como o pwgen, makepasswd, apg ou o KeePassX.

  1. Como root, execute o seguinte comando dentro da pasta private:

    [root@acer private]# php createdb.php
    This will erase all the data in your bocadb database.
    ***** YOU WILL LOSE WHATEVER YOU HAVE THERE!!! *****
    Type YES and press return to continue or anything else will abort it: YES
    
    dropping database
    PHP Warning:  date(): It is not safe to rely on the system's timezone settings. (...)
    creating database
    creating tables
    creating initial fake contest
    

Aqui ele deu um “Fatal error: Call to undefined function define_syslog_variables()” e eu simplesmente comentei a linha correspondente em globals.php.

  1. Entre em http://localhost/boca/src/index.php. Deverá aparecer a tela de login, o usuário é ‘system’ e não tem senha. Crie uma senha em ‘Options’

Se ele reclamar que o arquivo conf.php não é legível, dê um chmod +x private.

OBS.: No site também está disponível um script que realiza a instalação automática (baixa atualizações, cria usuários, altera o grub e autoconfigura o Boca) porém possui muita coisa específica para Ubuntu. Se você estiver usando essa distribuição, baixe o script AQUI.

Instalar em servidor sem senha do root

Bem, o Boca rodou muito bem no meu computador e está acessível até mesmo da internet, porém usar meu notebook como servidor com a velocidade de conexão aqui de casa não é nada estável. Como estou pagando este servidor, resolvi instalar o boca aqui mesmo.

O processo é idêntico até o passo 10, porém o passo 11 precisa ser executado como root e eu não tenho a senha de root, pois o servidor é compartilhado. A solução é copiar o banco de dados que o script criou no meu computador para o servidor:

  1.  julio@acer ~> pg_dump -C -Fp -f dump.sql -U postgres bocadb
    
  2.  julio@acer ~> scp dump.sql juliobor@juliob.org:~
    
  3.  julio@acer ~> ssh juliobor@juliob.org
    
  4.  juliobor@box780 ~  $  psql -U juliobor_boca -f dump.sql
    
  5. Edite o .htacess do www/boca e marque RewriteEngine On.

Basicamente é isso, os outros ajustes são feitos da mesma forma que no localhost.


Julio Batista Silva
Julio Batista Silva
Engenheiro de Dados

Eu sou um engenheiro de computação apaixonado por ciência, tecnologia, fotografia e idiomas. Atualmente trabalhando como Engenheiro de Dados na Alemanha.

comments powered by Disqus