Necessary links (in no particular order):
RedHat
The GNU Project
The Apache Software Foundation
The Comprehensive Perl Archive Network
PHP Hypertext Preprocessor (documentation)
PostgreSQL (documentation)
Open Secure Shell
The National Institute of Standards and Technology
WebMin
This is the process for configuring a new RedHat 7.3 installation to become a skyBox capable of running (and developing) skyBuilders timeLines. In order to be capable of this, there are a few required services and utilities:
skyBox3, the machine used for this trial run has specs as follows:
Install RedHat 7.3
Partitioning recommendation:
name | recommended (100%) | actual (58.5GB) | format | drive |
/ | 10% (6GB) | 6GB | ext3 | hda |
/boot | 50MB | 50MB | ext3 | hda |
/swap | 2xRAM (1GB) | 1GB | N/A (linux swap) | hdc |
/tmp | 2GB | 2GB | ext3 | hda |
/home | 10% (6GB) | 11GB | ext3 | hda |
/var | 30% (18GB) | 23GB | ext3 | hdc |
/usr | 20% (12GB) | 15GB | ext3 | hdc |
IP Address: 206.253.4.20 NetMask: 255.255.255.224 Gateway: 206.253.4.1
Note: During the install process, in the network configuration section, once the IP and netmask were indicated, the interface filled in two other fields. It suggested .30 as the gateway, and .1 as the name server. Odd.
DNS Servers:
209.87.64.70
209.87.79.232
The choices made during installation are logged in /root/install.log and a kickstart file for the RedHat Anaconda installer is in /root/anaconda-ks.cfg
Add crontab for NIST clock synchronization
(add other things like updating the root hints file and the file db later)
# cd /root
# mkdir scripts
# cd scripts
Download http://jesse.skybuilders.com/scratch/other/misc_linux/miscScripts.tar
# tar -xvf miscScripts.tar
# crontab clockSync.cron
To see current settings, # crontab -l
Enable ssh for all users except root.
SSH lives in /etc/ssh
Edit sshd_config
Find the commented line that reads "# PermitRootLogin off"
Add the following line, "PermitRootLogin on"
Go to the end of the file
After the last line, add a line that reads "AllowUsers dtd jesse bobdoyle" ("AllowUsers" followed by a tab followed by a space-delimited list of usernames to allow)
Test login
There is an upgrade for openSSH (possibly available from the website), which patches a security hole to which we are not, under our current settings, vulnerable. The ideal version would be 0.9.6e
To report current version:
# rpm -q <rpmname>
To upgrade with verbose and progress bar:
# rpm -Uvh <rpmname>
Possibilities
WebMin? Probably unnecessary.
SFTP? May already be enabled under SSH. Requires research. timeLines File Server would be preferable (with directory- and file-level permissioning for all files (not just skyPages)).
Locate Apache httpd
Set httpd to start on boot
To check the current setting:
# chkconfig httpd --list
To set the service to start on boot:
# chkconfig httpd --level 3456 on
Test http service
Open any browser to skybox3.skybuilders.com
The index page should be the Apache test page
Locate Perl
Perl is not a service - it runs when called.
/usr/bin/perl is Perl itself (this is the path that needs to go in the first line of every file)
Apply settings to each directory that wants to run Perl in sections in httpd.conf (if the default example is used, Perl will try to execute for any file in the directory, not limited by file type)
Test Perl
Download test.pl and/or simpletest.pl into a Perl-enabled directory
direct a browser at the file and check the output
Test PHP
Download test.php
direct a browser at the file and check the output
Make appropriate changes to php.ini
php.ini is in /etc
Here are the lines to look for that show their default values, each followed by the line that should replace it:
Upgrade PostgreSQL to at least 7.3
RedHat distributes 7.2.2 as part of 8.0 currently, so it is necessary to upgrade to streamline the insallation process.
RPMs of PostgreSQL are readily available from postgresql.org in the downloads section under binaries.
For this installation, they can be found at ftp://ftp13.us.postgresql.org/mirror/postgresql/binary/v7.3.2/RPMS/redhat-8.0/postgresql-7.3.2-1PGDG.i386.rpm
# rpm -UVh postgresql
Set postgresql to start on boot
To check the current setting:
# chkconfig postgresql --list
To set the service to start on boot:
# chkconfig postgresql --level 3456 on
PostgreSQL configuration is in /var/lib/pgsql/data/postgresql.conf
Test pgsql
To make a database (which will be owned by the operating system user who issues the command):
bash-2.05a$ createdb <dbname>
All user and db management can be done through the PostgreSQL interactive terminal (which accept both SQL statements and Postgres metacommands) called psql (man psql for reference):
bash-2.05a$ psql
which takes you to a prompt which looks like:
To add/manage users:
PGSQL User Management
To create users:
Every db must be VACUUMed at least once every billion transactions with the vacuum command in psql (or risk catastrophic data loss). See Routine Vacuuming.
Host Based Access configuration file is in /var/lib/pgsql/data/pg_hba.conf
A few useful tools.
To list all postgresql users:
skyTemplate=> SELECT * FROM pg_user;
To list all postgresql databases:
skyTemplate=> SELECT * FROM pg_database;
To find out the currently selected database, look at the name in the prompt:
skyTemplate=>
Configure pgsql users and databases.
First, the user called 'postgres', who is the superuser for the postgresql service, must have a new, secure password assigned. Next, a file called 'admins' must be created to indicate that the postgres user can connect to any database with a password challenge. Then, other users must be added to pgsql. One user should be defined for each timeLines installation on the machine. Finally, the new database(s) for the timeLines installation(s) must be created.
# passwd postgres
# su postgres
bash-2.05a$
bash-2.05a$ psql template1
template1=# ALTER USER postgres WITH PASSWORD '<newpassword>';
template1=# \q
bash-2.05a$ exit
# service postgresql restart
# su postgres
bash-2.05a$ createuser <options> <username>
bash-2.05a$ createuser -d -P -A app_skybuilders_com
bash-2.05a$ psql template1
template1=# CREATE DATABASE "<dbname>" OWNER <username>;
template1=# CREATE DATABASE "<dbname>" OWNER app_skybuilders_com;
# psql skyTemplate <username>
skyTemplate=> \c "<dbname>";
Install the timeLines application
# /usr/sbin/groupadd skyApp
# /usr/sbin/usermod -G skyApp apache
# /usr/sbin/usermod -G skyApp dtd
# cd /var/www
# chown -R :skyApp app.skybuilders.com
# chmod -R 775 *.*
# service httpd restart
Enable virtual servers under apache.
In /etc/httpd/conf/httpd.conf, add these lines to the virtual servers section (substituting the appropriate machine name and domain name):
NameVirtualHost *
<VirtualHost *>
ServerName skybox3.skybuilders.com
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *>
ServerName app.skybuilders.com
DocumentRoot /var/www/app.skybuilders.com
</VirtualHost>
Note: Apache 2.0.40-8 (RedHat 8.0 distribution) does not currently support the IP wildcard, '*' in the example above. This version requires IP numbers to entered directly into the httpd.conf entries for NameVirtualHost and VirtualHost entries.
Save the file and restart httpd.
Enable proper logging for pgsql.
In /etc/init.d/postgresql, edit the line that reads:
su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -D #PGDATA -p /usr/bin/postmaster start > /dev/null 2>&1" < /dev/null
Edit it to read:
su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -D #PGDATA -p /usr/bin/postmaster -o '-i' start >> /var/log/pgsql 2>&1" < /dev/null
Save the file and restart postgresql.
Documentation on php.net is for version 4.2.0 and above. This machine is running 4.1.2. Perhaps an upgrade is in order (let us hope for a painless experience).
php 4.2.3 RPMs
Download all relevant RPMs and follow the instructions on the page. Very easy.
Run the timeLines installation script.
This script will build the new database's schema and populate it with initial data. Open a timeLines-compatible browser (Mozilla > 1.1, Netscape > 4.0, IE > 4) and navigate to the following URL (where <domain name> is the domain name of your new site):
http://<domain name>/timelines/
timeLines will now challenge for the database password for the new site (as set in the section Configure pgsql users and databases).