Maratón de Programación

ene. 4, 2012·
Julio Batista Silva
Julio Batista Silva
· 3 min de lectura

Instalación de Boca

Actualizado el 19 de julio de 2013

Sigue el INSTALL.TXT

  1. Instala las dependencias

    julio@acer ~> sudo pacman -S php php-pgsql php-mcrypt php-gd postgresql
    
  2. Descomenta las siguientes líneas en /etc/php/php.ini

    extension=pdo_pgsql.so
    extension=pgsql.so
    extension=zip.so
    
  3. Edita la configuración de PostgreSQL:

    listen_addresses = 'localhost'
    (* = all)
    
  4. Haz que la codificación de los nuevos BDs sea UTF-8

    Este paso no es obligatorio, pero sin él tendrás que escribir “ENCODING = ‘UTF8’” cada vez que quieras crear una base 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. Reinicia PostgreSQL:

    julio@acer ~> sudo systemctl restart postgresql
    
  6. Descarga una versión reciente de Boca: ime.usp.br/~cassio/boca

  7. Descomprime el archivo y mueve la carpeta al servidor

    [root@acer Downloads]# tar xvfz boca-1.4.2.tgz
    [root@acer Downloads]# mv boca-1.4.2 /srv/http/boca
    
  8. Edita la configuración de 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. Crea el usuario “boca”, capaz de crear bases de datos:

    julio@acer ~> psql
    julio=# CREATE USER boca WITH PASSWORD 'OUKLsjVs2GLby79' createdb;
    
  10. Como root, edita el archivo /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 generar una clave aleatoria y la contraseña de boca, puedes usar el siguiente comando:

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

    O bien otro generador de contraseñas aleatorias como pwgen, makepasswd, apg o KeePassX.

  11. Como root, ejecuta el siguiente comando dentro de la carpeta 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
    

Aquí dio un Fatal error: Call to undefined function define_syslog_variables() y simplemente comenté la línea correspondiente en globals.php.

  1. Entra en http://localhost/boca/src/index.php. Debería aparecer la pantalla de login; el usuario es system y no tiene contraseña. Crea una contraseña en Options.

Si se queja de que el archivo conf.php no es legible, ejecuta chmod +x private.

OBS.: En el sitio también hay un script que realiza la instalación automática (descarga actualizaciones, crea usuarios, cambia el grub y autoconfigura Boca), pero tiene muchas cosas específicas para Ubuntu. Si estás usando esa distribución, descarga el script AQUÍ.

Instalar en servidor sin contraseña de root

Bien, Boca funcionó muy bien en mi ordenador y es accesible incluso desde internet, pero usar mi portátil como servidor con la velocidad de conexión de mi casa no es nada estable. Como estoy pagando este servidor, resolví instalar Boca aquí mismo.

El proceso es idéntico hasta el paso 10, pero el paso 11 necesita ejecutarse como root y yo no tengo la contraseña de root, pues el servidor es compartido. La solución es copiar la base de datos que el script creó en mi ordenador al 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


Enlaces

Julio Batista Silva
Autores
Senior Cloud Developer
comments powered by Disqus