Archive for November, 2008

Log Apache2 access log into a MySQL database on Debian Lenny

General, Linux, Systemadministration | Posted by sebastian
Nov 26 2008

Dieser Artikel beschreibt wie man Apache sein Access Log in eine MySQL Datenbank schreiben lässt.

Man benötigt einen installierten und konfigurierten Apache2 Webserver sowie MySQL Datenbankserver.

Installation:

Auf dem Webserver:

aptitude install libapache2-mod-log-sql-mysql
a2enmod unique_id

Auf dem Datenbankserver:

Erstelle eine Datenbank “apachelogs” und einen entsprechenden Benutzer für diese Datenbank.

Konfiguration des virtuellen Hosts:

Ersetze “PASSWORD” und “DATABASE_SERVER” mit deinen eigenen Daten.

LogSQLLoginInfo mysql://apachelogs:PASSWORD@DATABASE_SERVER/apachelogs
LogSQLCreateTables on
LogSQLDBParam socketfile /var/run/mysqld/mysqld.sock
LogSQLTransferLogFormat IAbPcMfRhluTrmHtUapzqQsSV

<virtualhost www.testsrv.local:80>
ServerName www.testsrv.local
ServerAdmin servermaster@testsrv.local
DocumentRoot /var/www/vhost1/htdocs
ErrorLog /var/www/vhost1/logs/error.log
CustomLog /var/www/vhost1/logs/access.log common

LogSQLTransferLogTable vhost1_access_log

</virtualhost>
/etc/init.d/apache2 reload

mod-log-sql-mysql wird nun eine Tabelle “vhost1_access_log” erstellen und die Access Log Einträge dort speichern.

Probleme:

Es können verschiedene Probleme im Apache Error log auftauchen nach der Installation des Moduls:

1. “No such file or directory: attempted append of local preserve file ‘/etc/apache2/logs/mod_log_sql-preserve’ but failed.”

Man muss das Verzeichnis “/etc/apache2/logs” manuell anlegen oder einen entsprechenden Symlink auf “/var/log/apache2″.

2. “failed to create table: score_board”

Es gibt ein Problem bei der automatischen Erstellung der “scoreboard” Tabelle, sie muss per Hand angelegt werden:

CREATE TABLE IF NOT EXISTS `scoreboard` (
`id` int(14) NOT NULL auto_increment,
`vhost` varchar(50) NOT NULL default '',
`bytes_sent` int(14) NOT NULL default '0',
`count_hosts` int(12) NOT NULL default '0',
`count_visits` int(12) NOT NULL default '0',
`count_status_200` int(12) NOT NULL default '0',
`count_status_404` int(12) NOT NULL default '0',
`count_impressions` int(18) NOT NULL default '0',
`last_run` int(14) NOT NULL default '0',
`month` int(4) NOT NULL default '0',
`year` int(4) NOT NULL default '0',
`domain` varchar(50) NOT NULL default '',
`bytes_receive` int(14) NOT NULL default '0',
PRIMARY KEY  (`id`),
UNIQUE KEY `vhost` (`vhost`,`month`,`year`,`domain`)
) TYPE=MyISAM;

Danke an Alexandre Bulté für die Lösung !

Links:

http://blog.bulte.net/2008/04/apache-modlogsql-problem-with.html
http://www.outoforder.cc/projects/apache/mod_log_sql/
http://www.howtoforge.com/apache2-logging-to-a-mysql-database-with-mod_log_sql-on-debian-etch

Deploy Adobe Coldfusion 8 on Tomcat 6 in a virtual host environment

Coldfusion, Development, General, Linux, Systemadministration | Posted by sebastian
Nov 24 2008

Dieser Artikel beschreibt, wie man den Adobe Coldfusion 8 Server auf einem Tomcat 6 mit virtuellen Hosts installiert. Bitte zuerst den Apache Tomcat 6 Artikel für die Basisinstallation lesen.

Wird der Coldfusion Server in verschiedenen virtuellen Hosts installiert, wird jeder seinen eigenen Coldfusion Administrator mit eigenen Einstellungen besitzen.

1. Download

Zuerst die entsprechende Installationsdatei coldfusion-801-lin.bin (oder coldfusion-801-lin64.bin für 64-Bit) von der Adobe Webseite herunterladen.

wget http://trials.adobe.com/Applications/ColdFusion/801WWE/coldfusion-801-lin64.bin
chmod +x coldfusion-801-lin64.bin

2. System vorbereiten

2.1 Bibliotheken installieren

Coldfusion benötigt noch einige zusätzliche Bibliotheken für die Installation:

aptitude install libstdc++6 libstdc++5
ln -s /usr/lib/libstdc++-libc6.2-2.so.3 /usr/lib/libstdc++-libc6.1-1.so.2

2.2 Virtuelle Hosts im Tomcat anpassen

vim /opt/tomcat/conf/server.xml
<!-- www.testsrv.local -->
<host name="www.testsrv.local" appBase="/var/www/vhost1/htdocs" unpackWARs="true" autoDeploy="true">
    <context path="" docBase="cfusion" debug="0" reloadable="true"/>
    <valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/www/vhost1/logs"  prefix="tomcat_access_" suffix=".log" pattern="common" resolveHosts="false"/>
</host>

2.3 Virtuelle Hosts im Apache anpassen

vim /etc/apache2/sites-enabled/vhost1
<virtualhost www.testsrv.local:80>
    JkMount /*.cfm default
    JkMount /*.cfc default
    JkMount /*.cfchart default
    DirectoryIndex index.cfm index.html index.htm
    ServerName www.testsrv.local
    ServerAdmin servermaster@testsrv.local
    DocumentRoot /var/www/vhost1/htdocs/cfusion
    ErrorLog /var/www/vhost1/logs/error.log
    CustomLog /var/www/vhost1/logs/access.log common
    <directory /var/www/vhost1/htdocs/cfusion>
        Options -Indexes
    </directory>
    <directory /var/www/vhost1/htdocs/cfusion/WEB-INF>
        Options -Indexes
        AllowOverride None
        deny from all
    </directory>
    <directory /var/www/vhost1/htdocs/cfusion/META-INF>
       Options -Indexes
       AllowOverride None
       deny from all
    </directory>
</virtualhost>

Bemerkung: Man sollte das CFIDE Verzeichniss ebenfalls absichern. Zum Beispiel mit einer .htaccess Datei.

3. WAR Datei erstellen

./coldfusion-801-lin64.bin

“J2EE configuration (WAR file)” auswählen
Dies wird eine cfusion.war Datei unter /opt/coldfusion8 anlegen.

4. WAR Datei für den virtuellen Host installieren

cp /opt/coldfusion8/cfusion.war /var/www/vhost1/htdocs/

Bemerkung: Tomcat wird die WAR Datei entpacken und das cfusion Verzeichniss anlegen. Danach kann die WAR Datei gelöscht werden.

5. Konfiguration anwenden

/etc/init.d/tomcat restart
/etc/init.d/apache2 reload

6. Coldfusion Installation abschließen

Nun kann auf den Coldfusion Administrator mit dem Browser zugegriffen werden:

http://www.testsrv.local/CFIDE/administrator/index.cfm

Deploy OpenBlueDragon on Tomcat 6 in a virtual host environment

Coldfusion, Development, General, Linux, Systemadministration | Posted by sebastian
Nov 24 2008

Dieser Artikel beschreibt, wie man den OpenBlueDragon Server auf einem Tomcat 6 mit virtuellen Hosts installiert. Bitte zuerst den Apache Tomcat 6 Artikel für die Basisinstallation lesen.

Wird der BlueDragon Server in verschiedenen virtuellen Hosts installiert, wird jeder seinen eigenen Coldfusion Administrator mit eigenen Einstellungen besitzen.

1. Download

Die “J2EE WAR Distribution” kann unter http://www.openbluedragon.org/download.cfm heruntergeladen werden.

2. System vorbereiten

2.1 Virtuelle Hosts im Tomcat anpassen

vim /opt/tomcat/conf/server.xml
<!-- www.testsrv.local -->
<host name="www.testsrv.local" appBase="/var/www/vhost1/htdocs" unpackWARs="true" autoDeploy="true">
    <context path="" docBase="openbluedragon" debug="0" reloadable="true"/>
    <valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/www/vhost1/logs"  prefix="tomcat_access_" suffix=".log" pattern="common" resolveHosts="false"/>
</host>

2.2 Virtuelle Hosts im Apache anpassen

vim /etc/apache2/sites-enabled/vhost1
<virtualhost www.testsrv.local:80>
    JkMount /*.cfm default
    JkMount /*.cfc default
    JkMount /*.cfchart default
    DirectoryIndex index.cfm index.html index.htm
    ServerName www.testsrv.local
    ServerAdmin servermaster@testsrv.local
    DocumentRoot /var/www/vhost1/htdocs/openbluedragon
    ErrorLog /var/www/vhost1/logs/error.log
    CustomLog /var/www/vhost1/logs/access.log common
    <directory /var/www/vhost1/htdocs/openbluedragon>
        Options -Indexes
    </directory>
    <directory /var/www/vhost1/htdocs/openbluedragon/WEB-INF>
        Options -Indexes
        AllowOverride None
        deny from all
    </directory>
</virtualhost>

3. WAR Datei für den virtuellen Host installieren

Kopieren der heruntergeladenen openbluedragon.war Datei nach /var/www/vhost1/htdocs/

Bemerkung: Tomcat wird die WAR Datei entpacken und das cfusion Verzeichniss anlegen. Danach kann die WAR Datei gelöscht werden.

4. Konfiguration anwenden

/etc/init.d/tomcat restart
/etc/init.d/apache2 reload

5. Konfiguration testen

Nun kann die Installation getestet werden indem man die BlueDragon CFML Testseite öffnet:

http://www.testsrv.local/index.cfm

6. Administration

Unter http://bdadmin.riaforge.org ist ein Webadministrationsinterface für den OpenBlueDragon Server verfügbar.

Install Tomcat 6 on Debian (Lenny) with virtual hosts and Apache2 integration

Coldfusion, Development, General, Linux, Systemadministration | Posted by sebastian
Nov 24 2008

Dieser Artikel ist eine überarbeitete Version meines Tomcat 5.5 Artikels. Ich habe diesmal die Installation des Open Bluedragon in einen eigenen Artikel getrennt beschrieben. Es soll Tomcat 6 unter Debian Lenny installiert werden und mit mehreren virtuellen Hosts betrieben werden. Tomcat 6 ist unter Debian leider nicht über die Quellen zu beziehen, deshalb muss er manuell installiert werden. (Ubuntu bietet Tomcat 6 per apt-Installation an)

1. Installation von Java 6 runtime:

Eine der folgenden Java JDK Installationen wählen:

1.1 OpenJDK

aptitude install java6-runtime

1.2 Sun JDK (non-free)

vim /etc/apt/sources
deb http://ftp.de.debian.org/debian/ lenny main non-free
deb-src http://ftp.de.debian.org/debian/ lenny main non-free
aptitude update
aptitude install sun-java6-jdk

Bemerkung: Nicht vergessen, dass eine andere Konfiguration beim Apache Connector erforderlich sein wird, sollte Sun JDK verwendet werden.

2. Download Tomcat

Download Tomcat 6 von der Tomcat 6 Download Seite.

Zum Beispiel:

wget http://apache.imsam.info/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.tar.gz

3. Installation von Tomcat

tar -xzvf apache-tomcat-6.0.18.tar.gz
mv apache-tomcat-6.0.18 /opt/tomcat

4. Init-Skript erstellen

vim /etc/init.d/tomcat
#!/bin/sh
# Tomcat Init-Script
case $1 in
    start)
        sh /opt/tomcat/bin/startup.sh
    ;;
    stop)
        sh /opt/tomcat/bin/shutdown.sh
    ;;
    restart)
        sh /opt/tomcat/bin/shutdown.sh
        sh /opt/tomcat/bin/startup.sh
    ;;
esac
exit 0
update-rc.d tomcat defaults

5. Aktivieren des Tomcat Managers

vim /opt/tomcat/conf/tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
    <role rolename="manager"/>
    <role rolename="admin"/>
    <user username="YOUR_USERNAME" password="YOUR_PASSWORD" roles="admin,manager"/>
</tomcat-users>

6. Start Tomcat

/etc/init.d/tomcat start

Nun kann man den Tomcat Manager mit http://SERVER:8080/manager/html aufrufen.

5. Installation des Apache2 Connectors

Tomcat besitzt zwar einen eingebauten Webserver, jedoch ist der Apache2 Webserver wesentlich leistungsfähiger außerdem sind so die Apache Module verwendbar. (mod_rewrite zum Beipiel)

aptitude install apache2 libapache2-mod-jk
vim /etc/apache2/workers.properties
workers.tomcat_home=/opt/tomcat
workers.java_home=/usr/lib/jvm/java-6-openjdk
ps=/
worker.list=default
worker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1

Bemerkung: Falls die non-free Java Runtime von Sun verwendet wird, muss “/usr/lib/jvm/java-6-openjdk” durch “/usr/lib/jvm/java-6-sun” ersetzt werden.

JK Konfigurationsdatei

vim /etc/apache2/conf.d/jk.conf
<ifmodule mod_jk.c>
    JkWorkersFile /etc/apache2/workers.properties
    JkLogFile /var/log/apache2/mod_jk.log
    JkLogLevel error
</ifmodule>
/etc/init.d/apache2 stop
/etc/init.d/tomcat restart
/etc/init.d/apache2 start

6. Neuen Virtuellen Host anlegen

Nun soll ein neuer VirtualHost angelegt werden. Dieser muss im Apache und im Tomcat angelegt werden.

6.1 Verzeichnisse anlegen

mkdir /var/www/vhost1
mkdir /var/www/vhost1/htdocs
mkdir /var/www/vhost1/logs
vim /etc/apache2/sites-available/vhost1

6.2 Apache

<virtualhost www.testsrv.local>
    JkMount /*.jsp default
    ServerName www.testsrv.local
    ServerAdmin servermaster@testsrv.local
    DocumentRoot /var/www/vhost1/htdocs
    ErrorLog /var/www/vhost1/logs/error.log
    CustomLog /var/www/vhost1/logs/access.log common
    <directory /var/www/vhost1/htdocs>
        Options -Indexes
    </directory>
</virtualhost>

Bemerkung: Man könnte auch alle Dateien an den Tomcat weiterleiten “JkMount /*” oder alle Dateien innerhalb eines Verzeichnisses “JkMount /folder/*“.

a2ensite vhost1
/etc/init.d/apache2 reload

6.3 Tomcat

vim /opt/tomcat/conf/server.xml
<!-- www.testsrv.local -->
<host name="www.testsrv.local" appBase="/var/www/vhost1" unpackWARs="true" autoDeploy="true">
    <context path="" docBase="htdocs" debug="0" reloadable="true"/>
    <valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/www/vhost1/logs"  prefix="tomcat_access_" suffix=".log" pattern="common" resolveHosts="false"/>
</host>
/etc/init.d/tomcat restart

Bemerkung: Man kann weitere Domains mit:

<alias>additionaldomain.com</alias>

hinzufügen.

7. Testseite anlegen

vim /var/www/vhost1/htdocs/test.jsp
<html>
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <h1>Hello World</h1>
        Today is: <%= new java.util.Date().toString() %>
    </body>
</html>

Nun kann man durch den Aufruf von http://www.testsrv.local/test.jsp die Konfiguration/Installation testen.