This page is formatted as a single page in case you want to print it out. This section deals with configuring the software. You should have already read the Installation section.
This writeup assumes you're going to use a MySQL database. You could do similar things for other databases.
Almost all information about the conference is stored in a MySQL database. This makes writing or modifying the application easier, but if you're not used to working with a database, it may appear overly complex on startup, so I've provided a script to create the database.
In MySQL, security is granted to a specific "user" connecting from a given "host" using a "password". The "user" is not a UNIX/Windows user, it's specific to the MySQL system. My assumption is that you're running the MySQL server on the same host that you're running the web server. In this case, I use "127.0.0.1" for the hostname. For a given conference, the user name, the password and the database are all the same. For example, if I was creating a conference page for "HYPO2002", the Hypothetical Conference, the user that would be created is HYPO2002, who could only connect to database HYPO2002 from the same machine running the MySQL server using the password "HYPO2002".
While this would seem to be wildly insecure, it's not as bad as you might think. First off, the MySQL password must be accessible to the PHP program. If someone cracks into your web server (and can thus get the password), it doesn't matter what the password was -- they can get in anyway, no matter what the password is. By restricting the MySQL access to be to the local host, we at least eliminate the possibility of external database hacking. Also, the only place where the password is made available is in the file "Code/confConfig.inc", and that directory is protected by a .htaccess file that doesn't let people browse files.
Using these assumptions, the shell script "CreateDatabase.sh" will simplify the process of creating the database and populating it with the initial schema. An example execution follows:
[esl-30] sudo ./CreateDatabase.sh This will create the database for your conference. The assumption is that the database name and name used to attach to the database AND the password are all the same The database is created with access only from the local host. Note: this will delete any existing database and user with the specified name -- make certain this is what you want Enter database name: HYPO2002 DBNAME is HYPO2002 Creating database. This attmpts to connect to mysql without a password This should work if you haven't changed the default management password for mysql. If you have, you will need to exit and run ./CreateDatabase.sh -p'' to specify a password, which will then need to be the MySQL administrator password Creating HYPO2002 user and password You will be asked for a password -- this is the MySQL admin password Now reloading the grant tables.. Now, we will populate the database with the schema. If the preceeding steps worked, you won't need to enter a password mysql -u HYPO2002 -pHYPO2002 -h 127.0.0.1 HYPO2002 [esl-31] |
If you've just installed MySQL on a system, you should see something similar to the preceeding -- MySQL will allow access to the "root" user without further passwords. If you've already modified the MySQL authentication table, you may have to specify use the "-p" option to be prompted for the appropriate passwords.
Once the database is created, you can check on it using the MySQL interface, if you choose too. Below is an example showing how you can poke at parts of the database.
[esl-39] mysql -u HYPO2002 -h 127.0.0.1 -p HYPO2002 Enter password: HYPO2002 Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 to server version: 3.23.41 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> describe Paper; +-------------------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------+---------------+------+-----+---------+----------------+ | paperId | int(11) | | PRI | NULL | auto_increment | | title | varchar(200) | YES | MUL | NULL | | | authorInformation | text | YES | | NULL | | | abstract | text | YES | | NULL | | | pdfLocation | varchar(120) | YES | | NULL | | | contactId | int(11) | YES | MUL | NULL | | | submitted | timestamp(14) | YES | | NULL | | | acknowledged | int(11) | YES | | 0 | | | withdrawn | int(11) | YES | | 0 | | | pcPaper | int(11) | YES | | 0 | | | authorsResponse | mediumtext | YES | | NULL | | +-------------------+---------------+------+-----+---------+----------------+ 11 rows in set (0.00 sec) mysql> |
Since the data is stored using a relatively simple schema and MySQL is a popular database, it's also possible to access the data using Perl, Python, C, C++ or Java. If you want to do some whacking on the database in a language other than PHP, I would recommend getting the book "MySQL", which is a good reference on MySQL.
Once your database is configured, you need to configure the conference specific files. To do this, edit "Code/confConfig.inc".
I'll describe each variable as you would find it in the file "confConfig.inc.dist", which is the default configuration distributed with the package.
Most of the configuration information changes fields in a PHP object of class "Conference". There is a single global instance of this variable that is used throughout the package, called "$Conf". You'll basically be setting fields in that object.