Wie kompiliere ich PHP5 für Typo3?

Voraussetzung für diese kleine Anleitung ist ein funktionierender Webserver (ich benutze lighttpd per FastCGI) und ein laufenden MySQL-Server. Das Betriebssystem ist bei mir ein Ubuntu 8.04 Server, die Anleitung sollte aber auch auf vielen anderen unixoiden Systemen in ähnlicher Weise funktionieren.

Als erstes solltest du dir die neueste Version von http://www.php.net/downloads.php#v5 besorgen. Diese ist bei mir die Version 5.2.8. Downloaden, entpacken und ins Verzeichnis wechseln.

wget http://de.php.net/get/php-5.2.8.tar.bz2/from/this/mirror
tar xjf php-5.2.8.tar.bz2
cd php-5.2.8/

Bevor kompiliert werden kann, musst du noch fehlende Pakete installieren.

apt-get install libfreetype6-dev libpng12-dev libmcrypt-dev

Jetzt kommt das Wichtigste: der configure-Befehl. Dieser sollte ohne Fehler durchlaufen, dann ist das PHP bereit zum kompilieren.

./configure --prefix=/usr --bindir=/usr/bin --enable-fastcgi --with-gd --with-freetype-dir --enable-mbstring --with-mysql --enable-discard-path --enable-force-cgi-redirect --with-mcrypt --with-zlib

Als Nächstes wird PHP kompiliert.

make

Je nach Rechnerleistung kann das eine Weile dauern.

Danach sollte ein

make test

laufen. Dort wird überprüft ob alles funktioniert. Eine Fehlermeldung am Ende, dass irgendetwas nicht funktionieren könnte, konnte ich ignorieren. Den Fehlerbericht hab ich trotzdem zu den Entwicklern geschickt :).

Dann ein

make install

und PHP5 sollte für ein Typo3 (meine Version: 4.2.6) installiert sein.

Typo3 komplett auf UTF-8 umstellen

There was a time, when I shared a blog. This post was written by Stephan. See all blogpost from him or stalk him on github.


Diese Tutorial soll zeigen, welche Schritte notwendig sind, um eine Typo3 Installation unter Linux von Beginn an auf UTF-8 einzustellen. Wenn diese Schritte befolgt werden, sollte es später keine Probleme mit Sonderzeichen im Frontend geben und auch in der Datenbank wird alles korrekt abgespeichert. Es wird davon ausgegangen, dass der Quellcode- und Dummy-Ordner von Typo3 bereits entpackt wurde und Typo3 über den Webbrowser erreichbar ist. Weiterhin sollte sich das Installtool noch im "123" Mode befinden, d.h. es wurde noch keine Datenbankverbindung erstellt und auch sonst keine weiteren Einstellungen vorgenommen.

MySQL

Als erstes werden wir eine Verbindung zum MySQL-Server aufbauen. Dazu öffnen wir ein neues Konsolenfenster und geben folgenden Befehl ein:

mysql -u root -p

Zur Erklärung:

mysql ----> Aufbau Verbindung zum MySQL-Server -u root ----> Einwahl als Nutzer root (u=User) -p ----> Abfrage des Passwortes für den Nutzer root

Die Anmeldung als root ist erforderlich, um neue Datenbanken anlegen zu dürfen. Dafür benötigst du natürlich das root-Passwort. In manchen Fällen ist es nicht standardmäßig gesetzt und der Parameter -p kann weggelassen werden (z.B. bei XAMPP-Installationen). Ist der Login erfolgreich verlaufen, können nun SQL-Anweisungen in der Konsole eingegeben werden.

Anlegen des Nutzers

Wichtig: Alle folgenden SQL-Befehle mit einem Semikolon (";") abschließen

Mit einem

CREATE USER 'typo3'@'localhost' IDENTIFIED BY 'password';

erzeugen wir nun einen neuen Datenbanknutzer. In unserem Beispiel soll dieser typo3 heißen und den lokalen MySQL-Server angehören. Werte in einfachen Anführungsstrichen sind bei Bedarf anzupassen.

Anlegen der Datenbank

Nun müssen wir noch eine neue Datenbank anlegen - natürlich mit UTF-8 Unterstützung. Dazu verwenden wir den SQL-Befehl

CREATE DATABASE `typo3` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Rechte für Datenbank anpassen

Der neue Nutzer braucht nun noch Rechte für die neue Datenbank, die wir später für Typo3 verwenden möchten. Volle Rechte an der erstellten Datenbank "typo3" erhalten wir mit dem SQL-Befehl:

GRANT ALL PRIVILEGES ON `typo3` . * TO 'typo3'@'localhost' WITH GRANT OPTION;

Im weiteren werden keine Kommandozeileneingaben mehr benötigt. Die Eingabe von

exit

beendet die Verbindung zum MySQL-Server bzw. schließt die Konsole.

Installtool einstellen

Im Browser kann nun das Installtool im "123" Mode aufgerufen werden (siehe oben). Die Felder Nutzername, Passwort und Host werden mit den eingangs gewählten Werten gefüllt. Wenn die vorherigen Befehle eins zu eins übernommen wurden, müsste folgendes eingetragen werden:

Im nächsten Schritt wählen wir die zu verwendende Datenbank aus (hier typo3).

Nach dem Anlegen der benötigten Tabellen geht es mit der Konfiguration im Installtool von Typo3 weiter. Unter dem Menüpunkt "All configurations" müssen dann folgende Einstellungen vorgenommen werden:

Zunächst sagen wir Typo3, das es UTF-8 verwenden soll. Im Feld [forceCharset] tragen wir deshalb folgendes ein:

utf-8

Weiterhin muss im Feld [setDBinit] folgendes eingetragen werden:

SET NAMES utf8;
SET CHARACTER SET utf8;
SET SESSION character_set_server=utf8;
SET character_set_connection = utf8;

Typo3 ist nun vollständig auf UTF-8 eingestellt. Vorallem die definierten Werte unter [setDBinit] tragen dazu bei, dass die Datenbank vor dem Schreibzugriff auf UTF-8 eingestellt wird.

Bei der Verwendung eines neuen Templates muss folgende Zeile im TypoScript angegeben werden, um auch eine UTF-8 Ausgabe im Frontend zu erreichen.

config.metaCharset = utf-8

Herzlichen Glückwunsch, Typo3 und UTF-8 sollten jetzt funktionieren, let's rock

lighttpd + MySQL + Ruby on Rails + FastCGI

Ich habe diese Anleitung geschrieben, da ich kein wirklich durchgehendes Tutorial gefunden habe, welches das Aufsetzen eines lighttpd Webservers mit FastCGI und Ruby on Rails beschreibt. Ich verwende Fußnoten um auf andere Anleitungen zu verweisen, die mir nützlich waren und die dir vielleicht auch weiterhelfen.

Als Ausgangsposition solltest du ein funktionierendes Linuxsystem haben. Ich nutze für diese Anleitung Debian 4.0 Etch in der Minimalinstallation. Es kann also sein das du gegebenenfalls die Befehle anpassen, einen anderen Paketmanager nutzen oder andere Paketnamen verwenden musst oder manche Pakete einfach schon vorhanden sind.

lighttpd installieren

Als erstes benötigst du ein paar Pakete um lighttpd kompilieren zu können.  (1)

sudo apt-get install build-essential libpcre3-dev zlib1g-dev libbz2-dev subversion libssl-dev debhelper

die neueste Lighttpd Version. Geh auf http://www.lighttpd.net/download und kopiere dir den Downloadlink. Bei mir ist die 1.4.20 die aktuellste Version. Hol dir das Paket, entpacke es und wechsel in das entpackte Verzeichnis.

wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.28.tar.gz
tar -xzf lighttpd-1.4.28.tar.gz
cd lighttpd-1.4.28

Mit einem einfachen

./configure

kannst du testen welche Pakete dir noch fehlen.  Wenn das fehlerfrei durchläuft, kannst du dich um das Paket bauen kümmern.

svn checkout svn://svn.lighttpd.net/lighttpd/branches/post-upload-cleanup/debian debian
nano debian/changelog

Füge jetzt ganz oben folgendes ein:

lighttpd (1.4.28) unstable; urgency=low

  * updated to 1.4.28

 -- Your Name <you@domain.com>  Mon, 9 Feb 2009 17:48:00 -0000

Achte darauf, dass du die Version einträgst, die du runtergeladen hast. Jetzt noch schnell kopieren

cp debian/changelog changelog

Jetzt als root folgendes ausführen:

dpkg-buildpackage

Jetzt wird lighttpd kompiliert. Nachdem es fertig ist, wechsele ein Verzeichnis höher und installiere das Paket.

cd ..
dpkg -i lighttpd_1.4.28_i386.deb

Nun ist lighttpd erfolgreich auf deinem System!

MySQL installieren

Hier sollte ein einfaches

apt-get install mysql-server

genügen.  Der Benutzer root erhält hierbei standardmässig ein leeres Passwort. Wenn dir das zu unsicher ist oder du deine Datenbank mit Programmen wie phpmyadmin öffentlich zugänglich gemacht hast solltest du mit

mysqladmin -u root -p password "geheim"

ein root-Passwort vergeben. Wenn du Rails nur mal auf deinem lokalen Rechner testen willst, kann du diesen Schritt übersrpingen. ((http://wiki.ubuntuusers.de/MySQL#Benutzer))

Ruby on Rails installieren

Hole dir als erstes die neueste Version von Ruby auf http://www.ruby-lang.org/de/downloads/. Bei mir ist das Ruby 1.8.7-p72.

wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz
tar -xzf ruby-1.8.7-p72.tar.gz
cd ruby-1.8.7-p72

Nun musst du die ganze Sache wieder kompilieren und installieren. Hier kann es wieder sein, dass der configure Befehl abbricht, weil Pakete fehlen, diese eventuell noch per apt-get install nachinstallieren.

./configure
make
make install

Unter Debian/Ubuntu bietet sich statt dem letzten Befehl ein "checkinstall" an um ein Paket zu erstellen und dieses zu installieren. (ggf. muss hier dann vorher ein "sudo apt-get install checkinstall" ausgeführt werden)

Wenn alles ohne Fehler durchläuft, hast du ein funktionierendes Ruby.

Nun brauchst du noch RubyGems,  Ruby's eigenen Paketmanager. Dieser funktioniert genauso wie aptitude, bloß halt für Ruby. Du kannst dir die aktuelle Version auf http://rubyforge.org/frs/?group_id=126 runterladen. Nach dem Download kannst du RubyGems dann direkt installieren.

wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
tar -xzf rubygems-1.3.1.tgz
cd rubygems-1.3.1
sudo ruby setup.rb

Bei manchen System kann es notwendig sein ein --prefix=/usr an den letzten Befehl anzuhängen.

Jetzt kannst du alle benötigten Gem-Pakete und deren Abhängigkeiten per

gem install rails rake mysql fcgi

installieren. Hier kann es passieren, dass mysql und fcgi nicht installiert werden können. Mit

apt-get install libmysqlclient15-dev libfcgi-dev

kann dieses Problem behoben werden.

Ein Railsprogramm erstellen

Jetzt kannst du mit

rails myfirstapp -D -d mysql

deine erste Ruby on Rails Applikation erstellen. Der Name kann natürlich auch anders lauten. Die Option -D erzeugt den Dispatcher für unsere FCGI-Anbindung. Die Option -d mysql erzeugt eine Anbindung an die MySQL-Datenbank. http://guides.rubyonrails.org/gettingstartedwithrails.html#creatingtheblog_application

http://guides.rubyonrails.org/gettingstartedwithrails.html#configuringadatabase

Jetzt kannst du mit

rake db:create

eine Datenbank für deine Railsapplikation erzeugen.

Mit FastCGI und lighttpd starten

Um dein Rails-Programm mit FastCGI ((http://www.fastcgi.com/)) und lighttpd nutzen zu können, musst du jetzt nur noch eine Änderung in der lighttpd.conf vornehmen.

nano /etc/lighttpd/lighttpd.conf

Am Ende der Datei folgendes einfügen: ((https://help.ubuntu.com/community/RubyOnRails#Lighttpd))

server.modules   += ( "mod_fastcgi", "mod_rewrite" )

$HTTP["host"] == "localhost" {
        server.document-root = "/home/to/myfirstapp/public/"

        server.dir-listing          = "disable"
        server.error-handler-404 = "/dispatch.fcgi"

        fastcgi.server      = ( ".fcgi" => ( "myfirstapp" => (
                "min-procs"       => 1,
                "max-procs"       => 1,
                "socket" => "/tmp/ruby-myfirstapp.socket",
                "bin-path" => "/home/to/myfirstapp/public/dispatch.fcgi",
                "bin-environment" => ( "RAILS_ENV" => "development" )
        ) ) )

}

Jetzt den Server mit

/etc/init.d/lighttpd restart

neustarten und im Browser localhost aufrufen. Herzlichen Glückwunsch, du hast es geschafft! Viel Spass beim Rails nutzen!