Maratona de Programação
Instalação do Boca
Atualizado em 19 de Julho de 2013
Seguir o INSTALL.TXT
-
Instale as dependências
julio@acer ~> sudo pacman -S php php-pgsql php-mcrypt php-gd postgresql
-
Descomente as seguintes linhas em
/etc/php/php.ini
extension=pdo_pgsql.so extension=pgsql.so extension=zip.so
-
Edite a configuração do PostgreSQL:
listen_addresses = 'localhost' (* = all)
-
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
-
Reinicie o PostgreSQL:
julio@acer ~> sudo systemctl restart postgresql
-
Baixe uma versão recente do boca: ime.usp.br/~cassio/boca
-
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
-
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>
-
Crie o usuário “boca”, capaz de criar bancos de dados:
julio@acer ~> psql julio=# CREATE USER boca WITH PASSWORD 'OUKLsjVs2GLby79' createdb;
-
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 oKeePassX
. -
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
.
- 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 emOptions
Se ele reclamar que o arquivo conf.php
não é legível, execute 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:
-
julio@acer ~> pg_dump -C -Fp -f dump.sql -U postgres bocadb
-
julio@acer ~> scp dump.sql juliobor@juliob.org:~
-
julio@acer ~> ssh juliobor@juliob.org
-
juliobor@box780 ~ $ psql -U juliobor_boca -f dump.sql