skyBuilders timeLines GNU/Linux/Apache/PHP/PostgreSQL Installation HOWTO

Interesting 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/8.0 installation to become a skyBox capable of running (and developing) skyBuilders timeLines. This process in deprecated in favor of HOWTO Build a skyHost running RedHat 9.0. 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 or 8.0

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
Create a file called test.php in the web root (in this case '/var/www/html/') and put into it one line: ' phpinfo()

PHP Logo

PHP Version 5.2.5


System Linux skyline1.skybuilders.com 2.6.18.8-linode22 #1 SMP Tue Nov 10 16:12:12 UTC 2009 i686
Build Date Apr 24 2008 10:37:31
Configure Command './configure' '--build=i386-redhat-linux-gnu' '--host=i386-redhat-linux-gnu' '--target=i386-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-expat-dir=/usr' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-kerberos' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--without-mime-magic' '--without-sqlite' '--with-libxml-dir=/usr' '--with-xml' '--with-system-tzdata' '--with-apxs2=/usr/sbin/apxs' '--without-mysql' '--without-gd' '--without-odbc' '--disable-dom' '--disable-dba' '--without-unixODBC' '--disable-pdo' '--disable-xmlreader' '--disable-xmlwriter' '--disable-json' '--without-pspell'
Server API Apache 2.0 Handler
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc
Loaded Configuration File /etc/php.ini
Scan this dir for additional .ini files /etc/php.d
additional .ini files parsed /etc/php.d/dbase.ini, /etc/php.d/dom.ini, /etc/php.d/json.ini, /etc/php.d/mbstring.ini, /etc/php.d/mysql.ini, /etc/php.d/mysqli.ini, /etc/php.d/pdo.ini, /etc/php.d/pdo_mysql.ini, /etc/php.d/pdo_pgsql.ini, /etc/php.d/pdo_sqlite.ini, /etc/php.d/pgsql.ini, /etc/php.d/xmlreader.ini, /etc/php.d/xmlwriter.ini, /etc/php.d/xsl.ini, /etc/php.d/zip.ini
PHP API 20041225
PHP Extension 20060613
Zend Extension 220060519
Debug Build no
Thread Safety disabled
Zend Memory Manager enabled
IPv6 Support enabled
Registered PHP Streams php, file, data, http, ftp, compress.bzip2, compress.zlib, https, ftps, zip
Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
Registered Stream Filters string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, convert.iconv.*, bzip2.*, zlib.*

Zend logo This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies


PHP Credits


Configuration

PHP Core

DirectiveLocal ValueMaster Value
allow_call_time_pass_referenceOffOff
allow_url_fopenOnOn
allow_url_includeOffOff
always_populate_raw_post_dataOffOff
arg_separator.input&&
arg_separator.output&&
asp_tagsOffOff
auto_append_fileno valueno value
auto_globals_jitOnOn
auto_prepend_fileno valueno value
browscapno valueno value
default_charsetutf-8utf-8
default_mimetypetext/htmltext/html
define_syslog_variablesOffOff
disable_classesno valueno value
disable_functionsno valueno value
display_errorsOffOff
display_startup_errorsOffOff
doc_rootno valueno value
docref_extno valueno value
docref_rootno valueno value
enable_dlOnOn
error_append_stringno valueno value
error_logno valueno value
error_prepend_stringno valueno value
error_reporting61336133
expose_phpOnOn
extension_dir/usr/lib/php/modules/usr/lib/php/modules
file_uploadsOnOn
highlight.bg#FFFFFF#FFFFFF
highlight.comment#FF8000#FF8000
highlight.default#0000BB#0000BB
highlight.html#000000#000000
highlight.keyword#007700#007700
highlight.string#DD0000#DD0000
html_errorsOnOn
ignore_repeated_errorsOffOff
ignore_repeated_sourceOffOff
ignore_user_abortOffOff
implicit_flushOffOff
include_path.:/usr/share/pear:/usr/share/php.:/usr/share/pear:/usr/share/php
log_errorsOnOn
log_errors_max_len10241024
magic_quotes_gpcOffOff
magic_quotes_runtimeOffOff
magic_quotes_sybaseOffOff
mail.force_extra_parametersno valueno value
max_execution_time3030
max_input_nesting_level6464
max_input_time6060
memory_limit32M32M
open_basedirno valueno value
output_buffering40964096
output_handlerno valueno value
post_max_size2000M2000M
precision1414
realpath_cache_size16K16K
realpath_cache_ttl120120
register_argc_argvOffOff
register_globalsOffOff
register_long_arraysOnOn
report_memleaksOnOn
report_zend_debugOnOn
safe_modeOffOff
safe_mode_exec_dirno valueno value
safe_mode_gidOffOff
safe_mode_include_dirno valueno value
sendmail_fromno valueno value
sendmail_path/usr/sbin/sendmail -t -i/usr/sbin/sendmail -t -i
serialize_precision100100
short_open_tagOffOff
SMTPlocalhostlocalhost
smtp_port2525
sql.safe_modeOffOff
track_errorsOffOff
unserialize_callback_funcno valueno value
upload_max_filesize2000M2000M
upload_tmp_dirno valueno value
user_dirno valueno value
variables_orderEGPCSEGPCS
xmlrpc_error_number00
xmlrpc_errorsOffOff
y2k_complianceOnOn
zend.ze1_compatibility_modeOffOff

apache2handler

Apache Version Apache/2.2.8 (Fedora)
Apache API Version 20051115
Server Administrator support@skybuilders.com
Hostname:Port www.skybuilders.com:80
User/Group apache(48)/48
Max Requests Per Child: 100 - Keep Alive: off - Max Per Connection: 100
Timeouts Connection: 120 - Keep-Alive: 15
Virtual Server Yes
Server Root /etc/httpd
Loaded Modules core prefork http_core mod_so mod_auth_basic mod_auth_digest mod_authn_file mod_authn_alias mod_authn_anon mod_authn_dbm mod_authn_default mod_authz_host mod_authz_user mod_authz_owner mod_authz_groupfile mod_authz_dbm mod_authz_default util_ldap mod_authnz_ldap mod_include mod_log_config mod_logio mod_env mod_ext_filter mod_mime_magic mod_expires mod_deflate mod_headers mod_usertrack mod_setenvif mod_mime mod_dav mod_status mod_autoindex mod_info mod_dav_fs mod_vhost_alias mod_negotiation mod_dir mod_actions mod_speling mod_userdir mod_alias mod_rewrite mod_proxy mod_proxy_balancer mod_proxy_ftp mod_proxy_http mod_proxy_connect mod_cache mod_suexec mod_disk_cache mod_file_cache mod_mem_cache mod_cgi mod_php5 mod_proxy_ajp mod_ssl

DirectiveLocal ValueMaster Value
engine11
last_modified00
xbithack00

Apache Environment

VariableValue
PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
HTTP_HOST www.skybuilders.com
HTTP_ACCEPT_ENCODING x-gzip, gzip, deflate
HTTP_USER_AGENT CCBot/2.0 (http://commoncrawl.org/faq/)
HTTP_ACCEPT_LANGUAGE en-us,en-gb,en;q=0.7,*;q=0.3
HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
PATH /sbin:/usr/sbin:/bin:/usr/bin
SERVER_SIGNATURE <address>Apache/2.2.8 (Fedora) Server at www.skybuilders.com Port 80</address>
SERVER_SOFTWARE Apache/2.2.8 (Fedora)
SERVER_NAME www.skybuilders.com
SERVER_ADDR 207.192.75.84
SERVER_PORT 80
REMOTE_ADDR 50.19.32.81
DOCUMENT_ROOT /var/www/www.skybuilders.com
SERVER_ADMIN support@skybuilders.com
SCRIPT_FILENAME /var/www/www.skybuilders.com/Documentation/InstallationSkyHostRH8.html
REMOTE_PORT 36479
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.0
REQUEST_METHOD GET
QUERY_STRING no value
REQUEST_URI /Documentation/InstallationSkyHostRH8.html
SCRIPT_NAME /Documentation/InstallationSkyHostRH8.html

HTTP Headers Information

HTTP Request Headers
HTTP Request GET /Documentation/InstallationSkyHostRH8.html HTTP/1.0
Host www.skybuilders.com
Accept-Encoding x-gzip, gzip, deflate
User-Agent CCBot/2.0 (http://commoncrawl.org/faq/)
Accept-Language en-us,en-gb,en;q=0.7,*;q=0.3
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP Response Headers
X-Powered-By PHP/5.2.5
Connection close
Content-Type text/html; charset=utf-8

bz2

BZip2 Support Enabled
Stream Wrapper support compress.bz2://
Stream Filter support bzip2.decompress, bzip2.compress
BZip2 Version 1.0.5, 10-Dec-2007

calendar

Calendar support enabled

ctype

ctype functions enabled

curl

cURL support enabled
cURL Information libcurl/7.18.1 NSS/3.12 Beta 3 zlib/1.2.3 libidn/0.6.14

date

date/time support enabled
"Olson" Timezone Database Version 0.system
Timezone Database internal
Default timezone America/New_York

DirectiveLocal ValueMaster Value
date.default_latitude31.766731.7667
date.default_longitude35.233335.2333
date.sunrise_zenith90.58333390.583333
date.sunset_zenith90.58333390.583333
date.timezoneno valueno value

dom

DOM/XML enabled
DOM/XML API Version 20031129
libxml Version 2.6.32
HTML Support enabled
XPath Support enabled
XPointer Support enabled
Schema Support enabled
RelaxNG Support enabled

exif

EXIF Support enabled
EXIF Version 1.4 $Id: exif.c,v 1.173.2.5.2.20 2007/06/10 20:12:45 iliaa Exp $
Supported EXIF Version 0220
Supported filetypes JPEG,TIFF

filter

Input Validation and Filtering enabled
Revision $Revision: 1.52.2.39 $

DirectiveLocal ValueMaster Value
filter.defaultunsafe_rawunsafe_raw
filter.default_flagsno valueno value

ftp

FTP support enabled

gettext

GetText Support enabled

gmp

gmp support enabled
GMP version 4.2.2

hash

hash support enabled
Hashing Engines md2 md4 md5 sha1 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5

iconv

iconv support enabled
iconv implementation glibc
iconv library version 2.8

DirectiveLocal ValueMaster Value
iconv.input_encodingISO-8859-1ISO-8859-1
iconv.internal_encodingISO-8859-1ISO-8859-1
iconv.output_encodingISO-8859-1ISO-8859-1

json

json support enabled
json version 1.2.1

libxml

libXML support active
libXML Version 2.6.32
libXML streams enabled

mbstring

Multibyte Support enabled
Multibyte string engine libmbfl
Multibyte (japanese) regex support enabled
Multibyte regex (oniguruma) version 4.4.4
Multibyte regex (oniguruma) backtrack check On

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

DirectiveLocal ValueMaster Value
mbstring.detect_orderno valueno value
mbstring.encoding_translationOffOff
mbstring.func_overload00
mbstring.http_inputpasspass
mbstring.http_outputpasspass
mbstring.internal_encodingno valueno value
mbstring.languageneutralneutral
mbstring.strict_detectionOffOff
mbstring.substitute_characterno valueno value

mysql

MySQL Supportenabled
Active Persistent Links 0
Active Links 0
Client API version 5.0.51a
MYSQL_MODULE_TYPE external
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_INCLUDE -I/usr/include/mysql
MYSQL_LIBS -L/usr/lib/mysql -lmysqlclient

DirectiveLocal ValueMaster Value
mysql.allow_persistentOnOn
mysql.connect_timeout6060
mysql.default_hostno valueno value
mysql.default_passwordno valueno value
mysql.default_portno valueno value
mysql.default_socketno valueno value
mysql.default_userno valueno value
mysql.max_linksUnlimitedUnlimited
mysql.max_persistentUnlimitedUnlimited
mysql.trace_modeOffOff

mysqli

MysqlI Supportenabled
Client API library version 5.0.51a
Client API header version 5.0.51a
MYSQLI_SOCKET /var/lib/mysql/mysql.sock

DirectiveLocal ValueMaster Value
mysqli.default_hostno valueno value
mysqli.default_port33063306
mysqli.default_pwno valueno value
mysqli.default_socketno valueno value
mysqli.default_userno valueno value
mysqli.max_linksUnlimitedUnlimited
mysqli.reconnectOffOff

openssl

OpenSSL support enabled
OpenSSL Version OpenSSL 0.9.8g 19 Oct 2007

pcre

PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 7.3 2007-08-28

DirectiveLocal ValueMaster Value
pcre.backtrack_limit100000100000
pcre.recursion_limit100000100000

PDO

PDO supportenabled
PDO drivers mysql, pgsql, sqlite

pdo_mysql

PDO Driver for MySQL, client library version5.0.51a

pdo_pgsql

PDO Driver for PostgreSQLenabled
PostgreSQL(libpq) Version 8.3.1
Module version 1.0.2
Revision $Id: pdo_pgsql.c,v 1.7.2.11.2.1 2007/01/01 09:36:05 sebastian Exp $

pdo_sqlite

PDO Driver for SQLite 3.xenabled
PECL Module version 1.0.1 $Id: pdo_sqlite.c,v 1.10.2.6.2.2 2007/03/23 14:30:00 wez Exp $
SQLite Library 3.5.6

pgsql

PostgreSQL Supportenabled
PostgreSQL(libpq) Version 8.3.1
Multibyte character support enabled
SSL support enabled
Active Persistent Links 0
Active Links 0

DirectiveLocal ValueMaster Value
pgsql.allow_persistentOnOn
pgsql.auto_reset_persistentOffOff
pgsql.ignore_noticeOffOff
pgsql.log_noticeOffOff
pgsql.max_linksUnlimitedUnlimited
pgsql.max_persistentUnlimitedUnlimited

posix

Revision $Revision: 1.70.2.3.2.16 $

Reflection

Reflectionenabled
Version $Id: php_reflection.c,v 1.164.2.33.2.47 2007/10/28 13:47:14 iliaa Exp $

session

Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx

DirectiveLocal ValueMaster Value
session.auto_startOffOff
session.bug_compat_42OffOff
session.bug_compat_warnOnOn
session.cache_expire180180
session.cache_limiternocachenocache
session.cookie_domainno valueno value
session.cookie_httponlyOffOff
session.cookie_lifetime00
session.cookie_path//
session.cookie_secureOffOff
session.entropy_fileno valueno value
session.entropy_length00
session.gc_divisor10001000
session.gc_maxlifetime14401440
session.gc_probability11
session.hash_bits_per_character55
session.hash_function00
session.namePHPSESSIDPHPSESSID
session.referer_checkno valueno value
session.save_handlerfilesfiles
session.save_path/var/lib/php/session/var/lib/php/session
session.serialize_handlerphpphp
session.use_cookiesOnOn
session.use_only_cookiesOffOff
session.use_trans_sid00

shmop

shmop support enabled

SimpleXML

Simplexml supportenabled
Revision $Revision: 1.151.2.22.2.35 $
Schema support enabled

sockets

Sockets Support enabled

SPL

SPL supportenabled
Interfaces Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
Classes AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, DirectoryIterator, DomainException, EmptyIterator, FilterIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RegexIterator, RuntimeException, SimpleXMLIterator, SplFileInfo, SplFileObject, SplObjectStorage, SplTempFileObject, UnderflowException, UnexpectedValueException

standard

Regex Library Bundled library enabled
Dynamic Library Support enabled
Path to sendmail /usr/sbin/sendmail -t -i

DirectiveLocal ValueMaster Value
assert.active11
assert.bail00
assert.callbackno valueno value
assert.quiet_eval00
assert.warning11
auto_detect_line_endings00
default_socket_timeout6060
safe_mode_allowed_env_varsPHP_PHP_
safe_mode_protected_env_varsLD_LIBRARY_PATHLD_LIBRARY_PATH
url_rewriter.tagsa=href,area=href,frame=src,input=src,form=fakeentrya=href,area=href,frame=src,input=src,form=fakeentry
user_agentno valueno value

sysvmsg

sysvmsg support enabled
Revision $Revision: 1.20.2.3.2.6 $

tokenizer

Tokenizer Support enabled

wddx

WDDX Supportenabled
WDDX Session Serializer enabled

xml

XML Support active
XML Namespace Support active
libxml2 Version 2.6.32

xmlreader

XMLReader enabled

xmlwriter

XMLWriter enabled

xsl

XSL enabled
libxslt Version 1.1.23
libxslt compiled against libxml Version 2.6.32
EXSLT enabled
libexslt Version 1.1.23

zip

Zip enabled
Extension Version $Id: php_zip.c,v 1.1.2.38 2007/08/06 22:02:32 bjori Exp $
Zip version 2.0.0
Libzip version 0.7.1

zlib

ZLib Support enabled
Stream Wrapper support compress.zlib://
Stream Filter support zlib.inflate, zlib.deflate
Compiled Version 1.2.3
Linked Version 1.2.3

DirectiveLocal ValueMaster Value
zlib.output_compressionOffOff
zlib.output_compression_level-1-1
zlib.output_handlerno valueno value

Additional Modules

Module Name
dbase
sysvsem
sysvshm

Environment

VariableValue
TERM xterm
PATH /sbin:/usr/sbin:/bin:/usr/bin
PWD /
LANG C
SHLVL 2
_ /usr/sbin/httpd

PHP Variables

VariableValue
_SERVER["PERL5LIB"]/usr/share/awstats/lib:/usr/share/awstats/plugins
_SERVER["HTTP_HOST"]www.skybuilders.com
_SERVER["HTTP_ACCEPT_ENCODING"]x-gzip, gzip, deflate
_SERVER["HTTP_USER_AGENT"]CCBot/2.0 (http://commoncrawl.org/faq/)
_SERVER["HTTP_ACCEPT_LANGUAGE"]en-us,en-gb,en;q=0.7,*;q=0.3
_SERVER["HTTP_ACCEPT"]text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
_SERVER["PATH"]/sbin:/usr/sbin:/bin:/usr/bin
_SERVER["SERVER_SIGNATURE"]<address>Apache/2.2.8 (Fedora) Server at www.skybuilders.com Port 80</address>
_SERVER["SERVER_SOFTWARE"]Apache/2.2.8 (Fedora)
_SERVER["SERVER_NAME"]www.skybuilders.com
_SERVER["SERVER_ADDR"]207.192.75.84
_SERVER["SERVER_PORT"]80
_SERVER["REMOTE_ADDR"]50.19.32.81
_SERVER["DOCUMENT_ROOT"]/var/www/www.skybuilders.com
_SERVER["SERVER_ADMIN"]support@skybuilders.com
_SERVER["SCRIPT_FILENAME"]/var/www/www.skybuilders.com/Documentation/InstallationSkyHostRH8.html
_SERVER["REMOTE_PORT"]36479
_SERVER["GATEWAY_INTERFACE"]CGI/1.1
_SERVER["SERVER_PROTOCOL"]HTTP/1.0
_SERVER["REQUEST_METHOD"]GET
_SERVER["QUERY_STRING"]no value
_SERVER["REQUEST_URI"]/Documentation/InstallationSkyHostRH8.html
_SERVER["SCRIPT_NAME"]/Documentation/InstallationSkyHostRH8.html
_SERVER["PHP_SELF"]/Documentation/InstallationSkyHostRH8.html
_SERVER["REQUEST_TIME"]1412229516
_ENV["TERM"]xterm
_ENV["PATH"]/sbin:/usr/sbin:/bin:/usr/bin
_ENV["PWD"]/
_ENV["LANG"]C
_ENV["SHLVL"]2
_ENV["_"]/usr/sbin/httpd

PHP License

This program is free software; you can redistribute it and/or modify it under the terms of the PHP License as published by the PHP Group and included in the distribution in the file: LICENSE

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.

If you did not receive a copy of the PHP license, or have any questions about PHP licensing, please contact license@php.net.


'.
Direct a browser at the file and check the output. It should display a series of tables describing the machine and its php installation (see the php.net docs page on phpInfo() for more info).

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:

  1. memory_limit = 8M
    memory_limit = 16M
  2. magic_quotes_gpc = On
    magic_quotes_gpc = Off
  3. file_uploads = Off
    file_uploads = On
    [This may default to 'On' in other versions of PHP]
  4. SMTP = localhost
    ; SMTP = localhost
  5. sendmail_from = me@localhost.com
    ; sendmail_from = me@localhost.com
  6. ; sendmail_path =
    sendmail_path =
    [in this case "/usr/sbin/sendmail -t -i"]

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:
=# CREATE USER
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=>

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.

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.

  1. As root, change the password for user postgres in the operating system:
       # passwd postgres
    This command will now challenge you for the new secure database admin password which should be carefully kept track of, with the usual precautions of length, and a mix of letters, numbers, and symbols.
  2. Start a session as the postgres user:
       # su postgres
    which takes you to a prompt which looks like:
       bash-2.05a$
  3. Connect to template1 as user postgres by using the command psql, which opens the PostgreSQL interactive terminal. (Whenever in the terminal, be sure to expect confirmations of any action; a null response is a sure sign of no action performed.)
       bash-2.05a$ psql template1
  4. Change the password for user 'postgres' by using the 'ALTER USER' command. Be sure to surround the password with single quotes/apostrophes as shown. The terminal should confirm by replying 'ALTER USER'. When using the following example, <newpassword> should be replaced with the new, secure password.
       template1=# ALTER USER postgres WITH PASSWORD '<newpassword>';
  5. Exit psql.
       template1=# \q
  6. Exit postgres user session.
       bash-2.05a$ exit
  7. Initially, PostgreSQL allows anyone from the local machine to connect to the databases without a password challenge, so as to allow the administrator to set the password for the postgres user. Once that has been done, access to the databases must be securely restricted. This is controlled from the file /var/lib/pgsql/data/pg_hba.conf. Make the following edits to this file: Now create a file in the same directory called 'admins'. Write into this file one word, the name of the database admin user, 'postgres' (excluding the single quotes/apostrophes in this case). These configuration changes will only be applied the next time the service is restarted.
  8. Restart the postgresql service.
       # service postgresql restart
  9. All user management should be done as the user postgres.
       # su postgres
    Create a new db user. This new user should correspond to the site that db will be supporting. For example, our test site is called "app.skybuilders.com". The corresponding username should be "app_skybuilders_com". This should also be the name of the database. Permissioning allows users other than the admin user "postgres" to connect only to "template1" and the database with the same name as the user.
    To make users (outside psql) as user postgres:
       bash-2.05a$ createuser <options> <username>
    In this case:
       bash-2.05a$ createuser -d -P -A app_skybuilders_com
    -d = allowed to create databases
    -P = prompt for a password
    -A = not allowed to create users
    The password for the new user will now be prompted for. This should be another equally secure password, preferably different from the postgres user password, especially if there will be multiple timeLines installations on this machine. This password will be required by the timeLines installation script later in order to initialize the database and enable the application.
    The password will be challenged for a second time for confirmation.
    Finally the postgres admin password will be asked for, to authorize the new user.
    The new user has now been created!
    (man createuser for details, dropuser to delete users, and ALTER USER from inside psql to change settings for a user)
  10. Connect to template1 as the new db user. You will be challanged for the new user's password. (Notice that the terminal prompt ends with a ">" rather than a "#", to show that you are not a superuser (postgres).)
       # psql template1 <username>
  11. Create the databse for this user, name with the new user's username. Ownership of the new database is automatically assigned to its creator. The terminal should respond "CREATE DATABASE".
       template1=# CREATE DATABASE <username>;
    In this case:
       template1=# CREATE DATABASE app_skybuilders_com;
  12. Connect to the new database. This will confirm its existence. The terminal should respond "You are now connected to database <dbname>."
       template1=> \c <dbname>;
  13. The database for this timeLines installation has now been created!
  14. Repeat user and database creation for each timeLines installation on the machine.
  15. PostgreSQL users and databases are now configured.

Install the timeLines application

  1. Create a directory alongside the default web root (in this case "/var/www/html/") using the fully qualified domain name of the new site (in this case "/var/www/app.skybuilders.com"). Move into the new directory.
  2. Download the installation archive file from the skyBuilders.com downloads page.
  3. Decompress the installation archive into the the new site directory. All necessary application server pages, directories, and image files will now be in place in a directory called "timelines".
  4. Permissions must be set on the application directory. Create a group called "skyApp", if it has not yet been created. This will be the group that gives anonymous and administrator access to all timelines application sites.
       # /usr/sbin/groupadd skyApp
  5. Add users to this group. The apache user (in this case "apache") must be added so that requests to the web server will have permission to operate on the site. Other users that may need to be added to this group are any non-root administrators of the machine or the site, or any users who require ftp or sftp access (though any users who require different perissioning from the web users should be permissioned separately).
       # /usr/sbin/usermod -G skyApp apache
       # /usr/sbin/usermod -G skyApp dtd
  6. Change the group setting for the site directory (recursively, for all the files and directories below it).
       # cd /var/www
       # chown -R :skyApp app.skybuilders.com
  7. Set permissions for the site directory (recursively, for all the files and directories below it).
       # chmod -R 775 app.skybuilders.com
  8. Restart the web server httpd.
       # 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), waith an extra VirtualHost section for each timeLines installation:

   NameVirtualHost *

   <VirtualHost *>
     ServerName skybox3.skybuilders.com
     DocumentRoot /var/www/html
     AddType application/x-httpd-php .php .php4 .php3 .phtml .html .xml
   </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.

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).