2004 - Custom Build

From MITNA
Revision as of 20:24, 27 July 2009 by Alvarso (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

The web server runs Debian, etc. ~root/log contains a list of the things that I (plam) did to bring the system into its current configuration. The server is physically located upstairs in the Sailing Pavilion in a locked black box. It is set up to allow people to log in using their Athena passwords as long as they have a local account (the local password works, but is not mandatory). The web space is located in ~mitna/public_html (configured in the Apache config files to be the root server for sailing.mit.edu). I usually add people to group 'mitna', which has permission to write ~mitna/public_html.

The server is now backed up using TSM. The username is 'sailing'.

sailing.mit.edu has a static IP address and the DNS name is registered to Athletics. Carol Elder administers systems for Athletics but is not involved with actually running this computer.

Hard disk partitions

The hard disk was originally partitioned in a very strange way (according to me <alvarso>), or better put, in a way that causes a lot of problems because individual partitions constantly get full. Specifically, doing a

 sudo df -h

(2008-Apr-23) lists:

 Filesystem            Size  Used Avail Use% Mounted on
 /dev/sda1             250M   80M  158M  34% /
 tmpfs                 221M     0  221M   0% /lib/init/rw
 udev                   10M   48K   10M   1% /dev
 tmpfs                 221M     0  221M   0% /dev/shm
 /dev/sda9             221G  7.4G  202G   4% /home
 /dev/sda8             361M  8.1M  334M   3% /tmp
 /dev/sda5             4.6G  1.4G  3.1G  31% /usr
 /dev/sda6             2.8G  975M  1.7G  37% /var

as can be seen, the huge bulk of the space is given to

 /home

which has 202G.

However, some critical partitions are very small:

 /  (root) has only 250M
 /var      has only 2.8G
 /usr      has only 4.6G

Root has been a problem constantly. The most recent change was to move all parts of "tsm" (backup --- which is NOT working as of April 2008) out of room and put it into

 /opt/tivoli/tsm --> /home/tivoli/tsm

because I had to move it, it has to be re-installed to work again.

Partition /var got full (April 2008) with the "logs". Therefore I had to move

 /var/logs --> /home/logs

and created a sym-link in /var/ so that logs can still be written, but are stored in the /home partition.

It might be smart to also move /var/lib/mysql, which stores the MySQL data, to /home/mysql_data or something like that, so that it can have huge amounts of space available. However, it is not critical, since the MySQL databases are less than 100M at this point (and are likely to not reach 200M for many years).

The /usr has not given any problem yet.

PHP

GD Library

Since I used a non-graphical utility to get weather data, I have to make my own graphics... so I wanted to use the GD library. While the default installation is supposed to have GD installed, something was not working.

Patrick Lam helped me out by deleting the old library:

 rm /usr/local/lib/libgd*

and then restarting apache. (He used "/etc/init.d/apache2 restart" instead of what I used: "apache2 -k restart", although both should work).

This entry helps me remember how to delete old libraries which may be 'corrupt' (the current guess is that when installing things for gallery2, the gd library was corrupted).

Data Warehouse (Oracle) Access

In order to get access to the data Warehouse, I had to install PHP support for Oracle.

I installed the Oracle OCI interface, specifically the "Oracle 10 Instant Client" to

 /usr/local/pkgs/oracle/instantclient_10_2

Needed both the Basic and SDK versions from:

 http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html
 instantclient-basic-linux32-10.2.0.3-20061115.zip
 instantclient-sdk-linux32-10.2.0.3-20061115.zip

This part simply required to 'unzip' the files to the directory.

The directions at http://ubuntuforums.org/archive/index.php/t-92528.html were very helpful. The basic steps I did, I think, were:

 mkdir -p /usr/local/pkgs/oracle/instantclient_10_2
 cd /usr/local/pkgs/oracle/instantclient_10_2
 unzip instantclient-basic-linux32-10.2.0.1-20050713.zip
 unzip instantclient-sdk-linux32-10.2.0.1-20050713.zip
 echo /usr/local/pkgs/oracle/instantclient_10_2 >> /etc/ld.so.conf
 ldconfig

Create symbolic links:

 ln -s libclntsh.so.10.1 libclntsh.so
 ln -s libocci.so.10.1 libocci.so

Install OCI8:

 pecl install oci8 (don't remember if I had to install 'pear' before using pecl?)
 Answer ORACLE_HOME = instantclient,/usr/local/pkgs/oracle/instantclient

Modify the /etc/php/apache2/php.ini file:

 Add:
   extension=oci8.so

Add the environment variables to apache:

 To: /etc/apache2/envvars
 Add:
   LD_LIBRARY_PATH="/usr/local/apache2/lib:/usr/lib/oracle/10.2.0.3/client:$LD_LIBRARY_PATH"
   TNS_ADMIN="/usr/lib/oracle/10.2.0.3/client"
   LANG=en_US
   
   export LD_LIBRARY_PATH LANG TNS_ADMIN

(But I'm not sure if this did anything, I had to use "PutEnv" in the PHP code, see below).

Lastly, I had to modify the Oracle files to tell it where the MIT Data Warehouse is:

 Create /usr/local/pkgs/oracle/instantclient_10_2/tnsnames.ora 
 With data:
 warehouse =
   (DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = warehouse.mit.edu)(PORT = 1521))
     )
     (CONNECT_DATA = (SID = DWRHS))
   )

and nothing else in it. THIS IS ESSENTIAL!

To connect to the DW in PHP, I created the interface file oracle.php, with the following basic elements:

 PutEnv("ORACLE_SID=DWRHS");
 PutEnv("ORACLE_HOME=/usr/lib/oracle/10.2.0.3/client/");
 PutEnv("TNS_ADMIN=/usr/lib/oracle/10.2.0.3/client/");
 PutEnv("LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.3/client/lib");
 
 function ora_query($sql,&$err)
 {
   $conn = oci_pconnect('sailuser','sail2WAREhouse','warehouse');
 
   if (!$conn)
   {
     $err = "No connection!";
     return false;
   }
 
   // empty the error
   $err = "";
 
   // parse the query string
   $stid = oci_parse($conn,$sql);
   if (!$stid)
   {
     $err = oci_error($conn);
     return false;
   }
 
   // execute the actual query
   $res = oci_execute($stid, OCI_DEFAULT);
   if (!$res)
   {
     $err = oci_error($stid);
     return false;
   }
 
   return $stid;
 }
 function ora_fetch_array($res)
 {
   return oci_fetch_assoc($res);
 }

These work mostly equivalent to the mysql 'query' and 'fetch' functions.

MySQL

The MySQL configuration is at:

 /etc/mysql/my.cnf

The data is at

 /var/lib/mysql

Start/stop/restart

 sudo /etc/init.d/mysql [start|stop|restart]

Accounts

The server links to the MIT kerberos server to authenticate users. However, when using "SUDO" you must use your local password (which can be the same as your kerberos password, but which would NOT be updated when you change it).

The link to the Kerberos was set to happen automatically by Patrick Lam (Commodore 05-06), so I have no detailed information on that.

To create new accounts:

 adduser <username>
 adduser <username> mitna  <-- to give access to website development

Using the standard adduser process will give the user access either via the local password (set by the admin when calling adduser) or the Kerberos password.