Archive for the ‘Coldfusion’ Category

Install Coldfusion 8 Multiserver on Debian 5.0 Lenny with Apache 2

Coldfusion, Development, Linux, Systemadministration | Posted by sebastian
Feb 23 2009

Dieser Artikel beschreibt, wie man Adobe Coldfusion 8 in der Multiserverkonfiguration installiert. Man kann diese Konfiguration für ein ISP ähnliches Setup verwenden. Jede Instanz/Virtualhost hat seinen eigenen Coldfusion Administrator mit eigenen Einstellungen.

1. Vorbedingungen:

* Apache 2 ist installiert und arbeitet korrekt.

* libstdc++5 ist installiert.

aptitude install libstdc++5

* Eine eigene Domain für den virtuellen Host steht bereit. (www.testsrv.local)

* Der neuste Coldfusion Installer wurde von www.adobe.com heruntergeladen. (z.B. coldfusion-801-lin64.bin)

2. Coldfusion Installation:

chmod +x coldfusion-801-lin64.bin
./coldfusion-801-lin64.bin

Bemerkung: Dies ist der 64-Bit Installer. Wenn kein 64-Bit Betriebssystem vorhanden ist, wird die 32-Bit Version benötigt (coldfusion-801-lin.bin).

Konfigurationseinstellungen:

CHOOSE LOCALE BY NUMBER: 1
PRESS <ENTER> TO CONTINUE: <ENTER>
PRESS <ENTER> TO CONTINUE: <ENTER>
...
DO YOU ACCEPT THE TERMS OF THIS LICENSE AGREEMENT? (Y/N): Y
Installation Choice: 1 (Install new version of Adobe ColdFusion 8 with a serial number)
Serial Number: XXXX-XXXX-XXXX-XXXX-XXXX-XXXX
Choose one of the following options:: 2 (Multiserver configuration)
Is there already a multiserver configuration of Adobe ColdFusion 8, or Macromedia JRun 4, installed?: 2 (No)
Select an option: 5 (Continue with installation)
Default Install Folder: /opt/jrun4 <ENTER>
PRESS <ENTER> TO CONTINUE: <ENTER>
PRESS <ENTER> TO CONTINUE: <ENTER>
...
DO YOU ACCEPT THE TERMS OF THIS LICENSE AGREEMENT? (Y/N): Y
Serial Number:: <ENTER>
Earlier Versions of Adobe ColdFusion installed?
ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS <ENTER> TO ACCEPT THE DEFAULT: 2 (No)
Configure Webserver: 1 (Add Web Server Configuration)
Select "Apache" 1
Directory: /etc/apache2
File: /usr/sbin/apache2
File: /etc/init.d/apache2
Choice: 4 (Continue with installation)
Directory: (DEFAULT: /etc/htdocs): /var/www
User Name: (DEFAULT: nobody): <ENTER>
Password: <Default Development Password>
Enable RDS  (Y/N): Y
Password: <Your Password>
PRESS <ENTER> TO CONTINUE: <ENTER>

Time for a cup of coffee ...

Press Enter to exit the installer: <ENTER>

3. Init-Skript anlegen:

Unter Suse oder Redhat kann man <pre>/opt/jrun4/bin/cf-init.sh install<pre> verwenden, um ein init-Skript anzulegen. Unter Ubuntu oder Debian muss man jedoch sein eigenes Skript anlegen:

vim /etc/init.d/coldfusion8multi
#!/bin/sh
# MultiServer cfusion instance Init-Script

CF_DIR="/opt/jrun4"

cfstart() {
echo "The ColdFusion 8 server is starting up and will be available shortly."
nohup $CF_DIR/bin/jrun -start cfusion > $CF_DIR/logs/cfusion-event.log &
echo "======================================================================"
echo "ColdFusion 8 has been started."
echo "ColdFusion 8 will write logs to $CF_DIR/logs/cfusion-event.log"
echo "======================================================================"
}

cfstop() {
echo "Stopping ColdFusion 8, please wait"
nohup $CF_DIR/bin/jrun -stop cfusion
echo "ColdFusion 8 has been stopped"
}

case $1 in
    start)
        cfstart
    ;;
    stop)
        cfstop
    ;;
    restart)
        cfstop

    cfstart
    ;;
esac

exit 0

Init-Skript installieren:

update-rc.d coldfusion8multi defaults

Coldfusion Server starten:

/etc/init.d/coldfusion8multi start

Den Apache Connector einrichten:

/opt/jrun4/bin/cf-connectors.sh

Dies wird das “mod_jrun22″ für den Apache installieren und konfigurieren. (/etc/apache2/httpd.conf)

# JRun Settings
LoadModule jrun_module /opt/jrun4/lib/wsconfig/1/mod_jrun22.so
<IfModule mod_jrun22.c>
    JRunConfig Verbose false
    JRunConfig Apialloc false
    JRunConfig Ignoresuffixmap false
    JRunConfig Serverstore /opt/jrun4/lib/wsconfig/1/jrunserver.store
    JRunConfig Bootstrap 127.0.0.1:51020
    #JRunConfig Errorurl url <optionally redirect to this URL on errors>
    #JRunConfig ProxyRetryInterval 600 <number of seconds to wait before trying to reconnect to unreachable clustered server>
    #JRunConfig ConnectTimeout 15 <number of seconds to wait on a socket connect to a jrun server>
    #JRunConfig RecvTimeout 300 <number of seconds to wait on a socket receive to a jrun server>
    #JRunConfig SendTimeout 15 <number of seconds to wait on a socket send to a jrun server>
    AddHandler jrun-handler .jsp .jws .cfm .cfml .cfc .cfr .cfswf
</IfModule>

Den Apache neu starten:

/etc/init.d/apache2 restart

Nun kann man den Coldfusion Administrator öffnen:

http://<SERVER>/CFIDE/administrator/index.cfm

Nun kann man die Installation mit dem Coldfusion Administrator abschließen.

4. Eine neue Coldfusion Instanz und virtuellen Host anlegen:

Zuerst muss man die neue Instanz mit dem “Instance Manager” anlegen. Dazu den Coldfusion Administrator öffnen und unter “Enterprise Manager” den “Instance Manager” auswählen. Der nächste Schritt ist dort mit “Add New Instance” eine weitere Instanz anzulegen. Einfach einen neuen “Server Name” eingeben “webapp1″ in diesem Beispiel und das ganze mit “Submit” bestätigen.

Jrun erzeugt nun ein neues Serververzeichnis “/opt/jrun4/servers/webapp1″ und startet die neue Instanz. Im “Instance Manager” kann man diese sehen. Außerdem sieht man dort den zugewiesenen HTTP-Port. Zum Beispiel “8301″. Damit kann man nun den Coldfusion Administrator für diese neue Instanz öffnen “http://<SERVER>:8301/CFIDE/administrator/index.cfm”.

Das “Document root” befindet sich unter “/opt/jrun4/servers/webapp1/cfusion.ear/cfusion.war/”.

Man kann ein einfaches Test-Skript erzeugen:

vim /opt/jrun4/servers/webapp1/cfusion.ear/cfusion.war/test.cfm
<h2>Test</h2>
<cfset test="Hello World">
<cfoutput>#test#</cfoutput>

Man kann diese Skript mit “http://<SERVER>:8301/test.cfm” aufrufen.

Nun muss man einen virtuellen Host für “webapp1″ im Apache anlegen:

vim /etc/apache2/sites-available/webapp1
<VirtualHost *>
    ServerName www.testsrv.local

    <IfModule mod_jrun22.c>
        JRunConfig Verbose false
        JRunConfig Apialloc false
        JRunConfig Ignoresuffixmap false
        JRunConfig Serverstore /opt/jrun4/lib/wsconfig/1/jrunserver.store
        JRunConfig Bootstrap 127.0.0.1:51000
        #JRunConfig Errorurl url <optionally redirect to this URL on errors>
        #JRunConfig ProxyRetryInterval 600 <number of seconds to wait before trying to reconnect to unreachable clustered server>
        #JRunConfig ConnectTimeout 15 <number of seconds to wait on a socket connect to a jrun server>
        #JRunConfig RecvTimeout 300 <number of seconds to wait on a socket receive to a jrun server>
        #JRunConfig SendTimeout 15 <number of seconds to wait on a socket send to a jrun server>
        AddHandler jrun-handler .jsp .jws .cfm .cfml .cfc .cfr .cfswf
    </IfModule>

    DocumentRoot /opt/jrun4/servers/webapp1/cfusion.ear/cfusion.war/
    <Directory /opt/jrun4/servers/webapp1/cfusion.ear/cfusion.war/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined
</VirtualHost>

Bemerkung: Sehr wichtig ist die Zeile “JRunConfig Bootstrap 127.0.0.1:51000″. Für jede Multiserver-Instanz erzeugt Coldfusion einen eigenen Port für den “JRunProxyService”. Dieser Port ist in der “jrun.xml” für jede Instanz definiert.

vim /opt/jrun4/servers/webapp1/SERVER-INF/jrun.xml
...
<service class="jrun.servlet.jrpp.JRunProxyService" name="ProxyService">
...
<attribute name="port">51000</attribute>
<attribute name="deactivated">false</attribute>
...
</service>
...

Nun kann man den neuen virtuellen Host installieren:

a2ensite webapp1

und den Apache Server neu laden:

/etc/init.d/apache2 reload

Nun kann man mit “http://www.testsrv.local/test.cfm” auf das Test-Skript zugreifen.

Auch auf den Coldfusion Administrator kann über “http://www.testsrv.local/CFIDE/administrator/index.cfm” zugegriffen werden

Man sollte natürlich noch weitere Konfigurationen an dem virtuellen Host vornehmen. Zum Beispiel den Zugriff auf “CFIDE” mit einer zusätzlichen “.htaccess” Datei einschränken, das Verzeichnisauflisten deaktivieren und weitere Apache Sicherheitseinstellungen vornehmen.

5. Init-Skript anpassen:

Der Coldfusion Server startet die Instanzen nicht automatisch beim starten. Deshalb müssen die Instanzen zum Init-Skript hinzugefügt werden. Hier ist eine angepasste Version für “webapp1″:

#!/bin/sh
# MultiServer cfusion instance Init-Script

CF_DIR="/opt/jrun4"

cfstart() {
echo "The ColdFusion 8 server is starting up and will be available shortly."
nohup $CF_DIR/bin/jrun -start cfusion > $CF_DIR/logs/cfusion-event.log &
nohup $CF_DIR/bin/jrun -start -childVM webapp1 > $CF_DIR/servers/webapp1/cfusion.ear/cfusion.war/WEB-INF/cfusion/logs/cfusion-event.log &
echo "======================================================================"
echo "ColdFusion 8 has been started."
echo "ColdFusion 8 will write logs to $CF_DIR/logs/cfusion-event.log"
echo "======================================================================"
}

cfstop() {
    echo "Stopping ColdFusion 8, please wait"
    nohup $CF_DIR/bin/jrun -stop cfusion
    nohup $CF_DIR/bin/jrun -stop -childVM webapp1
    echo "ColdFusion 8 has been stopped"
}

case $1 in
    start)
        cfstart
    ;;
    stop)
        cfstop
    ;;
    restart)
        cfstop
        sleep 20
        cfstart
    ;;
esac

exit 0

Bemerkung: Man könnte auch eigene Init-Skripte für jede Instanz anlegen. Die Haupt Coldfusion Applikation wird übrigens nicht benötigt um die Instanzen laufen zu lassen.

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.