added UPGRADING tips
[mir.git] / doc / INSTALL.mir
index 00c1341..190efc9 100755 (executable)
@@ -1,24 +1,32 @@
+MIR INSTALLATION HOWTO
+----------------------------------------------------------------
+
 Here is a short installation-howto of Mir.
 
 
 prerequisites: 
 
-- tomcat 
-- apache with mod_jk.so 
-- postgres 7.1.x
+- tomcat 4.0.3 or above (3.3 works too as of 04.04.2002, but this could change)
+  tomcat is available from http://jakarta.apache.org
+- apache with mod_jk.so
+- postgres 7.1.x or 7.2.x
 - ant (a java-based make) 
 - jaxp-1.1 (a SAX 2.0 compliant XML parser, comes with ant >= 1.4)
+- the JAI image framework (Java Advanced Imaging) versin 1.1.1 . get it from 
+  java.sun.com. ** NOTE: because JAI uses a native acceration library (a .so)
+  it must be placed in tomcat's "lib" (i.e $TOMCAT_HOME/lib) directory and
+  not under the default webapps/Mir/WEB-INF/lib directory **
 
 1. checkout the cvs
 
 CVS LOGIN:
 
-       cvs -d :pserver: cvsanon@brazil.indymedia.de:/var/cvs login 
-       password: cvs 
+  cvs -d :pserver:anonymous@mir.indymedia.org:/var/lib/cvs login
+       password: anonymous
 
 CVS CHECKOUT:
 
-       cvs -d :pserver: cvsanon@brazil.indymedia.de:/var/cvs co mir 
+       cvs -d :pserver:anonymous@mir.indymedia.org:/var/lib/cvsco mir 
 
 
 2. customize the config: 
@@ -29,12 +37,7 @@ CVS CHECKOUT:
 now customize config.properties for your needs.
 
 
-3. configure the build.xml file if neccessary
-    cd ..
-    cp build.xml-new build.xml
-
-
-4. configure the perms.sh file if neccessary -- IMPORTANT! READ THIS!
+3. configure the perms.sh file if neccessary -- IMPORTANT! READ THIS!
 We provide a script that sets all files' and direcories' permissions to
 a quite reasonable state. This script gets automagically called by
 ant after compilationl. The most important thing you have to do after
@@ -49,35 +52,41 @@ Now, change the install directory and group in perms.sh
        edit perms.sh 
 
 
-5. copy the mir/templates-dist-directory to mir/templates
+4. copy the mir/templates-dist-directory to mir/templates
+
 
+5. compile. For this step, you have to make sure that the TOMCAT_HOME
+environment variable is set to the root of your tomcat installation.
+The build.xml compile target will give up if this is not set.
 
-6. compile 
 Do this as root so the permissions script is able to set
 the permissions and owners correctly.
 
     ant 
 
 
-7. Link in the webapps directory of tomcat to the install directory (the 
+6. Link in the webapps directory of tomcat to the install directory (the 
 directory is called "Mir" and is located in the same directory in which 
 you installed the "mir" directory). 
-       cd /usr/share/tomcat/webapps
+       cd /path/to/tomcat/webapps (tomcat-4.0.x/webapps)
        ln -s Mir-install-dir Mir
 
-8. Modify your tomcat startup script and add an LD_LIBRARY_PATH variable
-that points to the WEB-INF/lib directory of your Mir install dir. (called
-"Mir"). Add something like the following at the top of tomcat.sh (tomcat.sh
-is found in the "bin/" dir. under $TOMCAT_HOME):
-    LD_LIBRARY_PATH=/path/to/Mir-install-dir/WEB-INF/lib
+with tomcat 4.0.x, you could dynamically reload and stop the Mir webapp without
+restarting tomcat by using the "Manager App" with the following url:
 
-An alternaive way to avoid this is to copy any dynamic library files 
-ending with ".so" in WEB-INF/lib to your jre/jdk lib directory (where the 
-other ".so" files live). Or, you can skip the whole thing and live without
-"native" acceleration for image manipulation
+http://localhost:8080/manager/stop?path=/mir
 
+This is practical if you are running several installations of mir on one 
+tomcat or other webapps and can't afford to shutdown all of them.
+See the tomcat documentation to learn how to enable and use the manager app.
 
-9a. create a new database 
+7. Copy any dynamic library files ending with ".so" (so far only the JAI native
+acceleration library found in the JAI package tarball or zip from sun) to your
+$JAVA_HOME/jre/lib/i386 directory (where the other ".so" files live). Or, you
+can skip the whole thing and live without "native" acceleration for image
+manupulation.
+
+8a. create a new database 
 The database name should be the same as in config.properties. Please look at
 the section "Database.*" to look up the names or change them to your needs. 
 
@@ -98,13 +107,13 @@ application call that you want to connect as a specific user. If you access
 the database from any other user's account, use the -U flag to connect to
 PostgreSQL as the database superuser ("postgres"):
 
-       createdb -U postgres Mir 
+       createdb -U postgres --encoding=unicode Mir 
 
 Please note that if you create the database from inside the psql application,
 the database name will likely be converted to lowercase letters.
 
 
-9b. create an unprivileged database user for Mir
+8b. create an unprivileged database user for Mir
 First, connect to the database as the database's superuser. 
 
        psql -U postgres Mir
@@ -118,7 +127,7 @@ this: "8ncx4un".
     CREATE USER Mir WITH PASSWORD 'joshua' NOCREATEDB NOCREATEUSER;
 
 
-9c. create base table
+8c. create base table
 Please note that we use the superuser "postgres" to connect to the "Mir"
 database, /not/ the user "mir". 
 
@@ -127,7 +136,7 @@ database, /not/ the user "mir".
     for i in dbscripts/populate*.sql ; do psql -Upostgres -f $i Mir ; done
 
 
-9d. Apply neccessary changes to config.properties
+8d. Apply neccessary changes to config.properties
 
 Please open config.properties and look for the lines that begin with
 "Database.". The interesting properties are "Username", "Password", "Host"
@@ -139,8 +148,18 @@ in Mir/src nor in Mir/WEB-INF/classes nor in the directory tree you compiled
 Mir from) is world-readable. Else you wouldn't have to install a password,
 anyway.
 
+8e. Tweak mime-type extensions mappings in etc/web.xml file.
+
+*** Note the defaults should be o.k for most installations ***
+
+Add or remove any mime types you wish to support. This is used to figure
+out the mime-type when (broken browsers?) browsers don't send the mime-type
+in the content-type header field when uploading a media file. Note add the
+moment you still have to add these to the media_type SQL table as well which
+maps the mime-types to the correct mediaHandler class. See the comments in
+the MirMedia class in javadoc for more details.
 
-9e. Setup PostgreSQL so that all connections have to pass a password
+8f. Setup PostgreSQL so that all connections have to pass a password
 
 In /etc/postgresql/pg_hba.conf you should make sure that nobody can
 use the database without a password:
@@ -167,22 +186,22 @@ database takeover harder. Rememer: Security is a process.
 
 
 
-10. Add the dupe prevention trigger to the database:
+9. Add the dupe prevention trigger to the database:
        cd dbscripts/dupetrigger
        
        There, read INSTALL and follow the instructions.
        
 
-11. restart tomcat 
+10. restart tomcat 
 
-12. configure mod_jk 
+11. configure mod_jk 
 
 insert the following patch into /etc/apache/httpd.conf. Edit the directories
 to suit your needs.
 
 <IfModule mod_jk.c>
-JkWorkersFile /usr/share/tomcat/conf/workers.properties
-Include /usr/share/tomcat/conf/mod_jk.conf-auto
+JkWorkersFile /path/to/tomcat/conf/workers.properties
+Include /path/to/tomcat/conf/mod_jk.conf-auto
 </IfModule>
 
 Do not put any JkMount lines into your httpd.conf!
@@ -191,6 +210,14 @@ If mod_jk.conf-auto doesn't get written or is 0 bytes in size, check your
 system for file ownership/permissions problems.
 
 
+12. configure apache
+
+edit http.conf:
+* set the document root to the same directory as in the mir config file
+* enable shtml includes:
+  - add LoadModule includes_module /usr/lib/apache/1.3/mod_include.so
+  - make sure your directory contains "Options Includes"
+
 
 that's it :)
 
@@ -205,6 +232,22 @@ and the openposting-servlet via
 standard login is redaktion/indymedia
 
 
+SEARCHING
+
+The Mir code offers no internal search facilities, rather, the design
+expects the use of an external program to crawl and index the static
+site.  One (recommended) tool for doing this is htdig
+(http://htdig.org), which generates static databases of the site
+content and then accesses those databases through a very fast CGI
+program written in C.  In the scripts directory, a perl CGI script 
+which wraps calls to htsearch is provided (scripts/search.pl) which
+will allow searching based off of media type.  (This is possible
+because the standard templates will include META keywords like
+hasAudio, hasVideo, etc.)  
+
+UPGRADING
+
+see the UPGRADING.mir file.
 
 TROUBLESHOOTING
 
@@ -213,4 +256,8 @@ You can give these a try if anything goes wrong:
 + Restart Tomcat. Especially after compiling the sources Tomcat has to be
   restarted.
 
-+ Check file permissions and ownership. Try and run perms.sh.
\ No newline at end of file
++ Check file permissions and ownership. Try and run perms.sh.
+
+----------------------------------------------------------------
+
+2001, 2002 - the Mir coders