(Last modified 13/oct/2011 by cassio@ime.usp.br. See Copyright note below.) Requirements ------------ The system was tested with: * postgresql 7.4+ / 8.2+ * apache 2.2+ * php 5.3+ (and some extensions) Installation ------------ Before following the steps, you must be sure of: * your php are integrated with your web server, * the php extension module for the postgresql (php_pgsql.so or php_pgsql.dll) is installed and configured, * the postgresql database management system is running. Usually that is true if you have installed the following ubuntu/debian packages: postgresql, postgresql-contrib, postgresql-client, apache2, libapache2-mod-php5, php5, php5-cli, php5-cgi, php5-gd, php5-mcrypt, php5-pgsql It may be needed to configure some parameters in php.ini, postgresql.conf and pg_hba.conf files. The following lines show some important attributes for BOCA: ********* apache boca config file (to be included in /etc/apache2/conf.d/): ********** AllowOverride Options AuthConfig Limit Order Allow,Deny Allow from all AddDefaultCharset utf-8 AllowOverride Options AuthConfig Limit Deny from all AllowOverride Options AuthConfig Limit Deny from all AllowOverride Options AuthConfig Limit Deny from all ********* postgresql.conf: ********* tcpip_socket = true #if using tcp to connect to database (older postgresql's) listen_addresses = '*' #newer postgresql's # THE FOLLOWING MAY BE GOOD FOR PERFORMANCE max_connections = 100 maintenance_work_mem = 64MB shared_buffers = 32MB work_mem = 3MB ********* pg_hba.conf: ********* #this is the access control file #restricting connections from unixsocket or localhost is #the best choice, but it could not enough if the #database is not in the same machine. host all all 127.0.0.1 255.255.255.255 md5 host all all 0.0.0.0 0.0.0.0 md5 # this last line will allow connection from everywhere. If you # know the IP address of the machines that will serve as autojudging, # then you may restrict the access to only such machine. Anyway, # if you have a good password, that should not be a problem. Steps for installing boca: 1) Unpack the boca file into a internet world readable directory, e.g.: > mkdir -p /var/www/boca > cd /var/www/boca > tar xvzf boca-x.y.z.tar.gz 2) create a postgresql account with permission to create new databases (you need database admin privilegies to do that), e.g.: > psql -h 127.0.0.1 -U postgres -d template1 template1=# create user bocauser with password 'boca' createdb; template1=# \q 3) edit the file private/conf.php (placed where you unpacked boca), setting up the correct values. Ex: $conf["dblocal"]="true"; // use unix socket to connect? $conf["dbhost"]="localhost"; // ip address of the db $conf["dbname"]="bocadb"; // name of the boca database // it should be any name $conf["dbuser"]="bocauser"; // unpriviligied boca user $conf["dbpass"]="boca"; // unpriviligied boca password $conf["dbsuperuser"]="bocauser"; // priviligied boca user $conf["dbsuperpass"]="boca"; // priviligied boca password // note that it is just fine to use the same user for // unpriv and priv access, but you can separate them // for increasing local security // secret key to be used in HTTP headers // you MUST set it with any random large enough sequence // DONT LEAVE IT AS YOU GOT WHEN UNPACKED THE SOFTWARE // CHOOSE ANOTHER NUMBER/STRING AND REPLACE BELOW $conf["key"]="secretKey:23894091237589234759234723489"; // the following field is used by the autojudging script // set it with IP address (or other short description) // of the computer allocated for // autojudging during the competition $conf["ip"]='10.10.10.10'; 4) run the php script to initialize the boca database > cd /var/www/boca/ > php private/createdb.php 5) It's all done. Now you have to manage the contest with a browser and boca. Proceed to the ADMIN.TXT file. Security Issues --------------- It is strongly recommended that BOCA be installed on a computer with no other users. If the computer where you are installing BOCA is used by others (with command line shells), it is essential that you change the permission of the file private/conf.php to be readable just by the user which the apache server runs and set safe_mode=On in the php.ini file (furthermore, the database access must be strictly restricted by passwords). Do it before configuring the private/conf.php file, so no one will be able to see your passwords. Moreover, the private/conf.php file must be in a directory owned by the bocauser or www-data or apache (all this combination implies that the only way to read the private/conf.php is from a php script owned by bocauser in the same directory). Contacts and Copyrights ----------------------- BOCA Copyright (c) 2003- Cassio Polpo de Campos (cassio@ime.usp.br) http://www.ime.usp.br/~cassio/boca //////////////////////////////////////////////////////////////////////////////// //BOCA Online Contest Administrator // Copyright (C) 2003-2012 by BOCA Development Team (bocasystem@gmail.com) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see . ////////////////////////////////////////////////////////////////////////////////