Apache füe Dummies

Werbung
Buch „Apache für Dummies“
__________________________________________________________________________________________
Apache für Dummies.
S.56 Ins Internet mit mehreren Rechnern
Der Einwahlrechner vom seinem Internet-Provider nur eine IP-Adresse bekommt. Zwei
Lösungen:
 Ein Proxy (auf dem Einwahlrechner wird eine zusätzliche Software installiert: die
Proxy-Software – empfehlenswert für Windows ist der Java-Server; auf dem zweiten
Rechner trägtm man nun in Browser den Einwahlrechner als Proxy ein)
 Das so genannte Masquerading (aber der Einwahlrechner muss ein Linux-Rechner
sein)
Der Aufbau eines lokalen Netzwerks (mit zwei Rechnern)
Hardware:
 Für jeden Rechner eine Ethernet-Netzwerkkarte (beide Karten identische
Übertragungs-Geschwindigkeit haben)
 Ein so genanntes Kategorie-5-Gross-Over-Twisted-Pair-Kabel mit RJ45-Steckern
Nach den Aufbau starten Sie die Rechner und konfigurieren Sie die Netzwerkkarten – Aus
allen möglichen IP-Adressen wurden drei Bereiche ausgewählt, die nicht im Internet benutzt
werden und nur für lokale Netzwerke bestimmt sind:



Alle IP-Adresse, die mit 10 beginnen (am bequemsten)
Alle IP-Adresse, die mit 172.16.0, 172.16.2 bis 172.16.1.31 beginnen
Alle IP-Adresse, die mit 192.168 beginnen
Neben den IP-Adressen müssen Sie aber auch die Netzwerk-Maske bestimmen, an denen
erkennen die Rechner, ob Sie nur lokal auf einen Rechner in Ihrem Netzwerk zugreifen
wollen oder ob Sie Ihren Rechner im Internet meinen. Die drei typischen Netzwerk-Masken
sind:
 255.0.0.0
 255.255.0.0
 255.255.255.0
Stellen wir uns vor, dass Rechner A hat die IP-Adresse 10.20.0.1 und B – 10.20.0.2, als
Netzwerk-Maske – 255.255.0.0.
A will Daten an B schicken und muss sich entscheiden, ob er B im lokalen Netz oder im
Internet findet. Dazu merkt er von seiner IP-Adresse nur die Stellen, wo in der NetzwerkMaske die 255 steht. Heraus kommt: 10.20. In Fälle von B käme dabei 10.20 heraus. Nun
vergleicht er die beiden gemerkten Werte: Sind sie gleich, dann ist der Rechner im lokalen
Netz, sind sie nicht gleich, dann ist der Rechner im Internet.
S.63. Für den reinen Schleifenbetrieb über einen Loopback-Adresse braucht Ihr Rechner
keine Netzwerkkarte. Die Loopback-Adresse ist ein Schleifenbetrieb unter der Nummer
127.0.0.1.In jedem Fall brauchen Sie aber TCP/IP, für die Überprüfung dieses Protokolls
benutzen Sie unter der DOS-Konsole den Ping-Befehl:.


ping 127.0.0.1
ping localhost
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 1 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
Der Apache läuft auch auf einem Einzelplatzrechner mit TCP/IP und Loopback ohne
Probleme.
Im Netz gibt es einen Server und einen oder mehrere Clients.
Die Nummer der IP des Servers muss immer manuel festgelegt weden. Dagegen können die
Clients vom Server navh Anmeldung an der Domain über DCHP (Dynamic Host
Configuration Protocol) dynamisch eine Adressierung erhalten.
Systemszeuerung->Netzwerkverbindungen->LAN ...->(rechte MAUSTASTE) ->
Eigenschaften -> markieren TCP/IP und Eigenschaften.
Datei: C:\WINDOWS\system32\drivers\etc\hosts
Kommentare werden mit dem Symbol der Raute (#) gekennzeichnet.
Ihre Adressen der hosts für einen Server und zwei Clients könnte so ausssehen:
127.0.0.1
10.20.30.1
10.20.30.2
10.20.30.3
localhost
apache
client01
client02
 In der hosts als Leerzeichen zwischen der IP-Adresse und dem Namen immer die
Taste Tab verwenden!
Die hosts Ihere Clients werden ebenfalls nach diesen Schema aktualisiert.
S.144 CGI via Dateiendung:
AddHandler cgi-script .cgi
<Location />
Options ExecCGI
</Location>
CGI-Verzeichnisse (die CGI-Programme müssen gar nicht mehr auf .cgi enden):
<Location /meinecgis>
Options ExecCGI
SetHandler cgi-script
</Location>
Freitag, 17. Februar 2006
S. 146:
http://localhost/cgi-bin/hallowelt.bat :
@echo off
echo Content-Type: text/html
echo.
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 2 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
echo Hallo Welt als Batch-Datei
-----Ein kostenloser Free Borland C++ Builder Compiler für Windows:
http://www.borland.com/bcppbuilder/freecompiler/
Habe von Buch-CD (H:\WEB\Apache_fuer_Dummies\tools\BorlandC++5.5) installiert in
D:\C.
http://localhost/cgi-bin/hallowelt.exe :
#include <stdio.h>
int main()
{
printf("Content-type: text/html\n\n");
printf("<html><body>");
printf("<h1> Hallo Welt in C!</h1>");
printf("</html></body>");
return 0;
}
S.150:
http://localhost/cgi-bin/beispiel1.shtml - geht nicht! Hier nur die Scripte sollen stehen. Fehler:
\ statt / in Tag!
[Sat Feb 18 18:51:57 2006] [error] [client 127.0.0.1] D:/Programme/Apache/Apache2/cgibin/beispiel1.shtml is not executable; ensure interpreted scripts have "#!" first line
httpd.conf:
<Directory "D:/Programme/Apache/Apache2/htdocs">
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs-2.0/mod/core.html#options
# for more information.
#
#§§§§ 2006/02/18 Options Indexes FollowSymLinks
Options Indexes FollowSymLinks Includes
#§§§§ 2006/02/18 Options Indexes FollowSymLinks
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
C:\apache\conf:
<Directory "/Apache/htdocs">
#2006/02/21 Options Indexes FollowSymLinks MultiViews
Options Indexes FollowSymLinks MultiViews Includes
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 3 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
#
#2006/02/21
AddType text/html .shtml
AddHandler server-parsed .shtml
http://localhost/beispiel1.shtml - in Verzeicnis htdocs!
<html><head><title> Server Side Includes Testing</title></head>
<body>
<h1>Server Side Includes</h1>
Datum/Uhrzeit auf dem server-Rechner:
<!--#echo var="DATE_LOCAL"--><br>
Name dieser HTML-Datei:
<!--#echo var="DOCUMENT_NAME"--><br>
Installierte Server-Software:
<!--#echo var="SERVER_SOFTWARE"--><br>
Ihr WWW-Browser:
<!--#echo var="HTTP_USER_AGENT"--><br>
</body></html>
http://localhost/beispiel2.shtml : (Ok bei C:\ Apache 1.3.20)
<html><head><title> Server Side Includes Testing</title></head>
<body>
<h1>Server Side Includes 2</h1>
Der Inhalt des aktuellen Verzeichnisses:
<pre>
<!--#exec cmd="DIR"-->
</pre>
</body></html>
Aber es geht nicht!:
[Sat Feb 18 18:59:13 2006] [error] [client 127.0.0.1] (OS 2)Das System kann die angegebene
Datei nicht finden. : Failed to read cgi file DIR for testing
[Sat Feb 18 18:59:13 2006] [error] [client 127.0.0.1] (OS 2)Das System kann die angegebene
Datei nicht finden. : don't know how to spawn cmd child process:
D:/Programme/Apache/Apache2/htdocs/beispiel2.shtml
http://localhost/beispiel2_help.shtml
http://localhost/beispiel2bat.shtml
http://localhost/beispiel2z.shtml
http://localhost/beispiel3.shtml (funktioniert!):
<html><head><title> Server Side Includes Testing</title></head>
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 4 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
<body><h1>Server Side Includes 3</h1>
<!--#if expr="$HTTP_USER_AGENT = /MSIE/" -->
<h1>Holla! Internet Explorer!</h1>
<!--#else -->
<h1>Holla! Kein Internet Explorer!</h1>
<!--#endif -->
</body></html
http://localhost/beispiel4a.shtml (funktioniert!):
<html><head><title> Server Side Includes Testing</title></head>
<body>
<h1>Server Side Includes 4</h1>
<h2><!--#include virtual = "beispiel4b.txt" --></h2>
<br>------------<br>
include virtual = "beispiel2.shtml" - wird interpretiert!
<h3><!--#include virtual = "beispiel2.shtml" --></h3>
<br>------------<br>
include virtual = "beispiel1.shtml" - wird interpretiert und bearbeitet!
<h3><!--#include virtual = "beispiel1.shtml" --></h3>
</body></html>
Eine komplette Übersicht über alle SSI-Anweisungen:
http://httpd.apache.org/docs/mod/mod_include.html
Einige Seite wurden kopiert in H:/WEB/Apache_fuer_Dummies
S.161 Perl:
H:\WEB\Apache_fuer_Dummies\perl\win\mod_perl1.26\mod_perl.so
kopieren in
D:\Programme\Apache\Apache2\modules
Path - H:\Perl\bin
Datei htppd.conf:
#§§§§ 2006/02/20
<Directory "D:/Programme/Apache/Apache2/htdocs/mod-perl">
SetHandler perl-script
PerlHandler Apache::Registry
Options ExecCGI
PerlSendHeader On
Allow from all
</Directory>
#§§§§ 2006/02/20
#§§§§ 2006/02/20
LoadModule perl_module modules/mod_perl.so
#§§§§ 2006/02/20
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 5 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
S.162 Mit der Anweisung SetHandler perl-script aktivieren Sie den Perl-Handler für dieses
Verzeichnis. Über Apache::Registry wird die Ausführung über den Webserver vermittelt.
S.166 Mit der Anweisung PerlSetVar legen Sie das Verzeichnis für die globalen Variablen
bzw. die so genannten Include-Dateien fest.
D:\Programme\Apache\Apache2\htdocs\mod-perl\hello-modperl.pl:
print "Content-type: text/html\n\n";
#### print "Content-Type: text/html\n\"; -Error in Header
print "<HTML>";
print "<BODY><center><b>Hello MOD - Perl</b>";
print "</BODY ></HTML>";
Dieses sehr einfache Skript veranschaulicht gut den programmiertechnischen Unterschied zu
Perl über CGI. Es fehlt der Pfad zum Interpreter. Das nimmt Ihnen das Apache-Perl_Modul
ab. Das Modul selbst erkennt wiederum das Skript anhand der Endung, in diesem Fall also
„.pl“.
Dennoch ein Fehler wir gemeldet: „das Modul mod_perl.so wurde nicht gefunden worden“;
vielleicht, weil neue Apache-Version installiert wurde.
http://localhost/mod-perl/hello-modperl.pl :
Geht nicht auch in C:\ Apache 1.3.20, Error:
Bareword found where operator expected at /apache/htdocs/mod-perl/hello-modperl.pl line 4,
near "/b>";
print "</BODY"
(Might be a runaway multi-line // string starting on line 3)
(Missing operator before BODY?)
String found where operator expected at /apache/htdocs/mod-perl/hello-modperl.pl line 4, at
end of line
(Missing operator before ?)
[Tue Feb 21 10:52:36 2006] [error] Can't find string terminator '"' anywhere before EOF at
/apache/htdocs/mod-perl/hello-modperl.pl line 4.
http://localhost/mod-perl/drivers.pl : (Ok C:\ Apache 1.3.20)
#!C:\perl\bin\perl -w
#available Drivers
use DBI;
print "Content-type: text/html\n\n";
@drivers = DBI->available_drivers;
print " <center><b>available Drivers are:</b><p>";
foreach (@drivers)
{print " $_<br>"; }
<stdin>
http://localhost/mod-perl/mysqlconnect.pl :
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 6 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
Installation MySQL zuerst ist erforderlich!
S.240
Von H:\WEB\Apache_fuer_Dummies\mysql\win\mysql3.23.49\mysql-3.23.49-win.zip\setup
in C:\mysql (wenn in anderes Verzeichnis, da entsteht Datei my.ini).
C:\mysql\bin\winmysqladmin.exe :
Username: vater
Password: vater
http://localhost/mod-perl/mysqlconnect.pl :
Useless use of string in void context at /apache/htdocs/mod-perl/mysqlconnect.pl line 13.
DBI->connect(mysql) failed: Access denied for user: 'vater@localhost' (Using password:
YES) at /apache/htdocs/mod-perl/mysqlconnect.pl line 13
[Tue Feb 21 12:15:57 2006] [error] Can't call method "prepare" on an undefined value at
/apache/htdocs/mod-perl/mysqlconnect.pl line 15.
S.263, MySql-Monitor starten ohne Passwort:
C:\mysql\bin\mysql –h localhost –u root
http://localhost/mod-perl/mysqlconnect.pl : (Ok)
!C:\perl\bin\perl.exe -w
#Connecting MySQL
use DBI;
print "Content-type: text/html\n\n";
my $db = "mysql";
# Name Database
my $SQL_Driver = "mysql";
# Name Driver
##my $SQL_User = "vater";
my $SQL_User = "root";
# Name User
##my $SQL_Passw = "vater";
my $SQL_Passw = "";
# Name Password if required
my $dbconn = DBI->connect("DBI:$SQL_Driver:$db", $SQL_User,
$SQL_Passw) or "Connection failed: $DBI::errstr\n";
my $table = $dbconn->prepare("SELECT * FROM host");
#here we take the table host
$table->execute();
print "<B>And the Result is:</B>:<p>";
my $rows = DBI::dump_results($table);
#Giving out all insert data
<stdin>
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 7 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
S.166
ASP – Active Server Pages, für Microsofr und Visual Basic Script. Mod-perl hat nichts mit
ASP zu tun, dafür kann zwar die übliche Endung “.asp.” benutzt werden.
C:\Apache\conf\httpd.conf:
#§§§§ 2006/02/21 (oder durch <Directory..> oder mit der Anweisung PerlSetVar)
<Files ~ (\.asp)>
SetHandler perl-script
PerlHandler Apache::ASP
</Files>
S.166:
Ein kleines ASP-Skript ist hinterlegt unter: http://www.apache-asp.org
Auffällig ist die konsequente Nutzung der ASP-Tags <% für Anfang und %> für das Ende
eines Scripts. Ansonsten schreibt man Perl in test.asp.
http://localhost/asp/test.asp : (aber dennoch Datei kann nicht geöffnet werden!)
http://localhost/test.asp (C:\Apache\htdocs\test-asp - Datei wurde geöffnet, aber nicht
gearbeitet)
<html>
<body>
For loop incrementing font size: <p>
<% for (1..5) { %>
<!-- iterared html text -->
<font size="<%=$_%>" > Size = <%=$_%> </font> <br>
<% } %>
</body>
</html>
C:\Apache\asp\env.html (oder http://localhost/env.html ):
<!--#include file=header.inc-->
<H3>Environment variables</H3>
<UL>
<% foreach my $key (sort (keys(%ENV))) { %>
<LI><b>
<%=$key%></b>:
<%=$Request->ServerVariables($key)%>
</LI>
<% } %>
</UL>
<!--#include file=footer.inc-->
C:\Apache\asp\Header.inc :
<HTML>
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 8 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
<HEAD><TITLE><Using Apache::ASP</TITLE>
</HEAD><BODY>
C:\Apache\asp\Footer.inc :
</BODY>
</HTML>
Aber:
[Wed Feb 22 09:49:54
/apache/htdocs/env.html
2006]
[error]
[client
127.0.0.1]
File
does
not
exist:
S.168 – Visual Basic Asp
Für Visual Basic ASP:
 Die Einrichtung des IIS (Internet Information Server) auf einen Alternativport
 Die Einrichtung des Apache für das Redirection von ASP-Dateien
Verwaltung-> Internet-Informationsdienste (IIS V 5.1) -> ... Standartwebseite ->(rechte
Maustaste)-> Eigenschaften -> kann unter TCP Anschluss die Portnummer auf Port 85
geändert werden.
Beachen Sie bitte das Rechesystem des IIS. Unter Verzeichnisssicherheit muss eine Anonyme
Anmeldung für das Hauptverzeichnis möglich sein, sollten Sie auch von außerhalb zugreifen
wollen.
Nun können Sie den IIS starten.
Verwaltung->Dienste->WEB-Publishing
Der IIS läuft jetzt auf Port 85.
httpd.conf:
#§§§§ 2006/02/27 (für VB durch IIS)
RedirectPermanent "/asp-bin" http://localhost:85
#§§§§ 2006/02/27.
Diese Anweisung bedeutet, dass permanent alle Anfragen von Dateien für das (fiktive)
Apache-Unterverzeicnis asp-bin in die URL http://localhost:85 weitergeleitet werden.
Alle ASP-Dateien liegen hierfür im Hauptdokumentenverzeichnis des IIS, per Default also
unter C:\Inetpub\wwwroot\.
(Oder: RedirectPermanent "/asp-bin" http://localhost:85/asp.bin
Zuvor müssen Sie allerdings das Verzeichnis asp-bin im Verzeichnissystem des IIS
integrieren.)
Danach wird die Anfrage auf die Datei daytime.asp über
http://localhost/asp-bin/daytime.asp an
http://localhost:85/daytime.asp
weitergeleitet.
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 9 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
aber geht nicht! – “Connection "conn" cannot connect” (Nach dem Start des Tomcat geuh
auch nicht) – „Die angeforderten Daten können nicht gedownloadet werden“
C:\Inetpub\wwwroot\daytime.asp:
<%@ Language="VBScript" %>
<!---daytime.asp--->
<head>
<title> daytime.asp - durch IIS!</title>
</head>
<html>
<body bgcolor="orange">
<b>VB shows the Daytime: <% Response.Write time%> </b><br>
<b>VB shows the Date: <%=date %> </b>
</body>
</html>
In IIS habe IP-Adresse gesetzt (stand vorher keine!)
Neustart des Rechners:
Starten ISS
Starten Apache
Wieder nichts!
In IIS habe IP-Adresse 127.0.0.1 gesetzt.
S.170
http://localhost/mod-perl/einmaleins.pl
nicht!):
(ok; aber nur beim einigen kleinen Fehler geht
print "Content-type: text/html\n\n";
print "<html>";
print "<head>";
print "<TITLE>ein mal eins </TITLE>";
print "</head>";
print "<body bgcolor = #ffffff>";
print "<h1> ein mal eins </h1>";
print "<table border =1>";
print "<tr>";
print "<td></td>";
for ($i=1;$i<=10;$i++)
{
print "<td><b>$i</b></td>";
}
print "</tr>";
for ($j=1;$j<=10;$j++)
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 10 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
{
print "<tr>";
print "<td><b>$j</b></td>";
for ($i=1;$i<=10;$i++)
{
print "<td>",($i*$j),"</td>";
}
print "</tr>";
}
print "</table>";
print "</body>";
print "</html>";
http://localhost/mod-perl/zahlenraten.pl (mit dem Surfer interagieren):
use CGI;
$form=new CGI;
$geraten=$form->param("geraten");
$zufall=$form->param("zufall");
$zaehler=$form->param("zaehler");
print "Content-type: text/html\n\n";
print "<html>";
print "<head>";
print "<TITLE>Zahlenraten </TITLE>";
print "</head>";
print "<body>";
print "<h1> Zahlenraten mit Perl! </h1>";
if ($geraten!="")
{
print "<h1>";
print &richtig($geraten);
print "</h1>";
print "($zaehler Versuch)<p>";
}
else
{
print "<h1> Rate meine Zahl!</h1>";
&neustart();
}
print "<form method=post>";
print "<input type=text name=geraten>";
print "<input type=submit value=Submit>";
print "<input type=hidden name=zaehler";
print " value=\"".$zaehler."\">";
#print "<input type=hidden name=zufall";
print "<input type=text name=zufall";
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 11 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
print " value=\"".$zufall."\">";
print "</form>";
print "</body>";
print "</html>";
sub richtig
{
$zaehler++;
# if(@_[0]==$zufall) - statt & besser die $ benutzen)
if($_[0]==$zufall)
{
$x=$zaehler;
&neustart();
return "Richtig! Nur $x Versuche! Noch mal??";
}
# elsif(@_[0]>$zufall)
elsif($_[0]>$zufall)
{
return "Zu gross!!";
}
else
{
return "Zu klein!!";
}
}
sub neustart
{
$zufall=int(rand(99)+1);
$zaehler=0;
}
S.175
PHP und JSP (Java Server Pages) sind mit HTML-Seite geschrieben und dann vom Vebserver
zur Ausführung gebracht. PHP - Programm bei jedem Aufruf der Website neu gestartet wird
und wenn die Webseite übertragen wurde, ist auch das PHP – Programm abgelaufen und wird
beendet. Bei JSP hingegen wird das Programm beim Starten des Webservers mit gestartet und
läuft dann permanent (egal ob die JSP - Webseite gerade aufgerufen wird oder nicht). Jeder
Aufruf einer JSP – Webseite wird dann von diesem einen – immer laufenden – JSP –
Programm erledigt.
PHP unter MS Windows.
A. Als CGI integrieren
(das ist empfohlene Alternative zu de Ausführung über das PHP4-Modul).
Schritt 1: PHP entpacken
H:\WEB\Apache_fuer_Dummies\php\win\php4.1.1\php4.1.1.zip\php.exe __________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 12 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
extrahieren (in C:\PHP)
Schritt 2: PHP über die php.ini konfigurieren
php.ini-dist in php.ini benennen und anpassen.
Schritt 3: Den Apache über die httpd.conf anpassen
In Section 2 „Main“:
#§§§§ 2006/02/23
ScriptAlias /php4 "C:/php"
Action application/x-httpd-php .php /php4/php.exe
#§§§§ Der Pfad zu der ausführenden php.exe setzen.
AddType application/x-httpd-php .php .php3 .php4 .phtml
#§§§§ Dem Apache die Dateiendungen und Pfad bekannt machen,
#§§§§ die über die php.exe ausgeführt werden sollen.
#§§§§ 2006/02/23
und auch Options ExecCGI nicht vergessen. Z.B.:
<Directory "/Apache/htdocs">
Options Indexes FollowSymLinks MultiViews Includes ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Schritt 4: PHP testen
http://localhost/phpinfo.php4
<html>
<head>
<title> Status PHP 4</title>
</head> -(ohne <body> !)
<? phpinfo(); ?>
</body>
</html>
Werden viele Informationen ausgegeben.
B. Windows erhält ein Modul.
Schritt 1: PHP4ts.dll in das System32 – Verzeichnis kopieren (nach der Anpassung php.ini, in
einigen Fällen ist es notwendig diese Datei auch in Windows-Verzeichnis zu transferieren)
Schritt 2: Wenn Ihr PHP - Verzeichnis nicht C:\php heißt, Systemvariable PATH anpassen
(z.B. PATH=C:apache\php4\dlls=
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 13 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
Schritt 3: php4apache.dll als SO – Modul einsetzen
H:\WEB\Apache_fuer_Dummies\modules\mod_php\win\ php4apache.so
in C:\Apache\modules
Schritt 4: Den Apache über die httpd.conf anpassen
LoadModule php4_module modules/php4apache.so
AddType application/x-httpd-php .php .php3 .php4 .phtml
Schritt 5: Neustart des Apache
http://localhost/hallowelt.php :
<html>
<head>
<title> Hallo Welt mit PHP</title>
</head>
<body>
<?
for ($i=0;$i<10;$i++)
{
echo "Hallo Welt!<br>";
}
?>
</body>
</html>
http://localhost/einmaleins.php :
<html>
<head>
<TITLE>ein mal eins PHP</TITLE>
</head>
<body bgcolor = #ffffff>
<h1> ein mal eins PHP</h1>
<table border =1>
<?
echo "<tr>";
echo "<td></td>";
for ($i=1;$i<=10;$i++)
{
echo "<td><b>$i</b></td>";
}
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 14 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
echo "</tr>";
for ($j=1;$j<=10;$j++)
{
echo "<tr>";
echo "<td><b>$j</b></td>";
for ($i=1;$i<=10;$i++)
{
echo "<td>",($i*$j),"</td>";
}
echo "</tr>";
}
?>
</table>
</body>
</html>
S.195. So genannte PHP Session Management – hier kann man im PHP-Programm
definieren, welche Variablen man bis zum nächsten Aufrufen des PHP-Programms behalten
möchte, z.B. über Cookies.
Beispiel: Zahlenraten.
http://localhost/zahlenraten.php :
<html>
<head>
<TITLE>Zahlenraten mit PHP</TITLE>
</head>
<body>
<h1> Zahlenraten mit PHP! </h1>
<?
if ($geraten!="")
{
echo "<h1>";
echo richtig($geraten);
echo "</h1>";
echo "($zaehler Versuch)<p>";
}
else
{
echo "<h1> Rate meine Zahl!</h1>";
neustart();
}
?>
<form method=post>
<input type=text name=geraten>
<input type=submit value=Submit>
<input type=text name=zaehler
value="<? echo $zaehler; ?>">
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 15 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
<input type=text name=zufall
value="<? echo $zufall; ?>">
</form>
</body>
</html>
<?
function richtig($v)
{
global $zaehler, $zufall;
$zaehler++;
if($v==$zufall)
{
$x=$zaehler;
neustart();
return "Richtig! Nur $x Versuche! Noch mal??";
}
else if($v>$zufall)
{
return "Zu gross!";
}
else
{
return "Zu klein!";
}
}
function neustart()
{
global $zaehler, $zufall;
srand((double)microtime()*1000000);
$zufall=rand(1,100);
$zaehler=0;
}
?>
Java
OOP – ein Programm wird nicht nach Funktionen in Unterprogramme unterteilt, sondern nach
„Objekten“ unterteilt, die im Programm – Szenario vorkommen.
Ein Objekt ist das tatsächliche im Speicher des Rechners liegende und laufende Programm.
Damit das Objekt aber in den Speicher gelangen kann, muss es programmiert werden. Das,
was man programmiert, ist die Klasse. Sehr, sehr vereinfacht dargestellt!.
http://www.eclipse.org
Programmieren.
-
eine
Java-Entwicklungsumgebung
für
ernsthaftes
Java-
Es gibt zwei Möglichkeiten, Java in einem Webserver einzusetzen:
 Java Server Pages (ähnlich wie PHP eingesetzt, aber startet nur einmal beim Starten
des JSP-Servers – JSP Engine oder JSP Container)
 Servlets (kann man mit CGI vergleichen – das Java-Servlet-Programm erzeugt bei
jedem Aufruf eine komplette Webseite, die dann zum Browser des Surfers geschickt
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 16 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
wird, startet auch nur einmal beim Starten des Servlet-Servers – ServletEngine oder
Servlet Container)
Die bekannteste Software, die diese Engines ermöglicht, ist Tomcat. Tomcat löst das ApacheModul mod_jserv als Servlet Engine ab.
S.216 - Installation unter Windows.
Java Development Kit: H:\WEB\Apache_fuer_Dummies\java\win\jsdk2\j2sdk-1_3_1-win.exe
- in H:\Java wurde installiert.
Tomcat (aktuelle Version: http://jakarta.apache.org/tomcat/ ):
1. Den Tomcat installieren
H:\WEB\Apache_fuer_Dummies\java\win\tomcat\tomcat4.0.1\jakarta-tomcat-4.0.1.exe in H:\Tomcat4\Apache Tomcat4.0
2. Neue Variable zu vermitteln:
CATALINA_BASE=H:\Tomcat4\Apache Tomcat 4.0
CATALINA_HOME= H:\Tomcat4\Apache Tomcat 4.0
CLASSPATH=
H:\ H:\Tomcat4\Apache Tomcat 4.0\bin\bootstrap.jar;H:\Java\lib\tools.jar
JAVA_HOME= H:\Java
3. Der erste Start
H:\Tomcat4\Apache Tomcat 4.0\bin\startup.bat
4. Der erste Tomcat auf Ihren Browser
http://localhost:8080 - Ok!
5. Den Tomcat nachträglich konfigurieren (falls notwendig)
server.xml in dem conf-Verzeichnis.
Mod_webapp im Apache einbinden:
H:\WEB\Apache_fuer_Dummies\modules\mod_webapp\win\mod_webapp.so und libapr.dll in C:\Apache\modules kopieren. In httpd.conf:
LoadModule webapp_module modules/mod_webapp.so
#um die weiterletung zum Tomcat zu realisieren (nur innerhalb eines VirtualHost#Containers):
WebAppConnection conn warp localhost:8008
WebAppDeploy examples conn /examples
VirtualHost-Container:
#§§§§ 2006/02/23 (für Tomcat):
<VirtualHost 127.0.0.1>
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 17 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
ServerAdmin rootr@apache
DocumentRoot "C:/apache/htdocs/manual"
ServerName 127.0.0.1
WebAppConnection conn warp localhost:8008
WebAppDeploy examples conn /examples/
<Directory "C:/apache/htdocs/manual">
Options Indexes Includes FollowSymLinks MultiViews
Order allow, deny
Allow from all
</Directory>
</VirtualHost>
Tomcat-Verzeichnis mit dem Namen webapps ist wie htdocs im Apache. Dort werden auch
alle Java Servlets und Java Server Pages (wie PHP mit einer verbindlichen Endung namens
.jsp) ausgeführt.
Testen: http://localhost/examples/ (entspricht dem direkten Zugang zum Tomcat unter
http://localhost:8080/examples/ ) - Ok. Damit ist die „Connection“zwischen dem Apache
„vorne“ und dem Tomcat „hinten“ über mod_webapp hergestellt.
(Tomcat muss zuerst gestartet werden!)
Es wird das Inhalt des Verzeichnisses H:\Tomcat4\Apache Tomcat 4.0\webapps\examples
ausgegeben.
Beispiel - H:\Tomcat4\Apache Tomcat 4.0\webapps\examples\HelloWorld.jsp und Ausruf
über http://localhost/examples/HelloWorld.jsp :
<html>
<head>
<title>HelloWorld.jsp</title>
</head>
<%@ page session="false"%>
<body bgcolor="#FFFFFF">
<%
out.print("<center><h2>Hello World</h2></center>");
%>
</body>
</html>
Wenn diese Date geändert wird; verändern auch automatisch die Dateien HelloWorld$jsp.java
und HelloWorld$jsp.class in H:\Tomcat4\Apache Tomcat 4.0\work\localhost\examples (oder
H:\Tomcat4\Apache Tomcat 4.0\work\127.0.0.1\examples). Aver wann und warum genau?
Habe HW.jsp eingegeben. http://localhost/examples/HW.jsp - ok.
Erstellung eines Programms in der Datei:
H:\Tomcat4\Apache Tomcat 4.0\webapps\ROOT\WEB-INF\classes\helloworld.java:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 18 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
public class helloworld extends HttpServlet
{
int b=0;
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<head>");
out.println("<title>Hello, world!</title>");
out.println("</head>");
out.println("</body>");
out.println("<h1>Hello, world mit Java-Programm!</h1>");
for(int i=1;i<10;i++)
{
out.println(i);
}
out.println("<p>");
out.println("<b="+b+")");
b++;
out.println("</body>");
Der Tomcat ist nicht in der Lage, dieses Java-Programm von sich aus zu übersetzen, das kann
er nur bei JSP-Programmen automatisch. Sie müssen also selbst das Java-Programm
übersetzen.
„öffnen mit“:
H:\Java\bin\javac helloworld.java
JavaTrans.bat:
H:\Java\bin\javac helloworld.java
<stdin>
Aber DOS-Fenster ist schnell vorbei. Braucht man JavaBuilder!
Von SIEMENS-CD habe installiert und deinstalliert.
Wieder:
F:\install_windows.exe – full in H:\JBuilder6
Auch Dreamweaver scheint innerhalb sein! Aber fordert Key!
Näher: F:\Windows\register_jb.html
Von F:\Jdk1.4\j2-sdk-1_4_0-win.exe und j2-sdk-1_4_0-doc.zip in H:\J2SDK_4
S.223 - Sie müssen dem Java-Compiler mittteilen, wo er Informationen über Servlrts findet;
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 19 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
export CLASSPATH= H:\Tomcat4\Apache Tomcat 4.0\common\lib\servlet.jar
Habe gegeben CLASSPATH=
H:\Tomcat4\Apache
Tomcat
4.0\bin\bootstrap.jar;
H:\Tomcat4\Apache Tomcat 4.0\common\lib\servlet.jar
H:\J2SDK_4\lib\tools.jar;
Danach Ok! Erscheint die Datei Helloworld.class neben der Java-Datei- In dieser Datei
befindet sich das übersetzte, lauffähige Java-Programm.
Statten Sine nun Ihren Tomcat und rufen Sie folgende URL in Ihrem Browser auf:
http://localhost:8080/servlet/helloworld : aber geht nicht.
Ein Versuch:
nicht.
http://localhost:8080/webapps/ROOT/WEB-INF/classes/helloworld - geht
S.228 Der große Nachteil von Java-Servlets - nach jedem Ändern des Java-Programms
müssen Sie es umständlich neu übersetzen und auch noch den Tomcat neu starten. Mit JSP ist
es viel einfacher: Der Tomcat kann automatisch die Java-Programme übersetzen und auch das
Neustart entfällt bei einfachen JSP-Programmen.
In der Realität werden Programme aber viel zu groß; als dass mann sie komplett in JSP
implementieren würde. Aus diesem Grund wird man bei größeren Projekten aus der JSP-Seite
auf andere Java-Klassen zugreifen und nur die Programmteile, die die Ein- und Ausgabe
steuern, und vielleicht noch die Programmsteuerung selbst in JSP implementieren.
In diesem Beispiel wollen wir das Zahlentaten in JSP implementieren. Ein Teil wird als ganz
einfache Java-Bean implementiert. Den Rest implementieren wir dann als JSP-Seite.
1.Ein Java-Programm in H:\Tomcat4\Apache
INF\classes\zr\zahlenraten.java erstellen:
Tomcat
4.0\webapps\ROOT\WEB-
package zr;
import java.util.Random;
public class zahlenraten
{
int zufall;
int zaehler;
public zahlenraten()
{
reset();
}
public String richtig(int v)
{
zaehler++;
if(v==zufall)
{
int x=zaehler;
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 20 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
reset();
return "Richtig! Nur "+x+" Versuche! Noch einmal??";
}
else if(v>zufall)
{
return "Zu gross!";
}
else
{
return "Zu klein!";
}
}
public int wieoft()
{
return zaehler;
}
public void reset()
{
zufall=Math.abs(new Random().nextInt()%100+1);
zaehler=0;
}
}
2. Übersetzen, z.B. durch H:\Tomcat4\Apache
INF\classes\zr\JavaTr_zahlenraten.bat :
Tomcat
4.0\webapps\ROOT\WEB-
H:\J2SDK_4\bin\javac zahlenraten.java
More
Neue Datei zahlenraten.class entstand.
3. Erstellen die Datei H:\Tomcat4\Apache Tomcat 4.0\webapps\ROOT\ zahlenraten.jsp :
<html>
<head><TITLE>Zahlenraten mit JSP ind Java-Bean</TITLE></head>
<body>
<h1> Zahlenraten mit JSP und Java! </h1>
<jsp:useBean id="zahl" class="zr.zahlenraten"
scope="session"/>
<%
int i;
if (request.getParameter("geraten")!=null)
{
out.println("<h1>");
i=Integer.parseInt (request.getParameter("geraten"));
out.println(zahl.richtig(i));
out.println("</h1>");
out.println ("("+zahl.wieoft()+" Versuch)<p>");
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 21 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
}
else
{
out.println ("<h1> Rate meine Zahl!</h1>");
}
%>
<form method=get>
<input type=text name=geraten>
<input type=submit value=Submit>
</form>
</body>
</html>
http://localhost:8080/zahlenraten.jsp - ok!:
S.249 – FTP
Nier geht es um die Konfiguration eines FTP-Servers im Zusammenspiel mit dem Apache.
Erlauben Sie Ihren Benutzern, Ihren eigenen Webserver zu betreiben und auch Inhalte zu
verändern.
H:\WEB\Apache_fuer_Dummies\ftp\win\niteserver\niteserver.zip
Ist gratis unter http://home.knuut.fe/Turtie erhältlich.
In H:\Web – dummes Programm
H:\WEB\Apache_fuer_Dummies\ftp\win\bulletproff_trial\gftpserv.zip
Software-> Windows-Komponenten hihzufügen/Enfernen -> Internet-Informations Dienste
(IIS) (FTP in Details kreuzen) – aber nur zum Teil installiert werden (WWW.Dienst ist grau)
Verwaltung-> Internet-Informationsdienste (IIS V 5.1).
1. Die Einrichtung eines neuen Benutzers
(Habe erstellt Verzeichnis H:\Web\Oscar\htdocs für Benutzer Oscar)
Systemsteuerung->Benutzerkonten
Oscar sollte unbedingt die Mitgliedschaft in der Gruppe Gäste erhalten.
(Eingeschränktes Konto, kennwortgeschützt)
Kennwort: oscar
Und unter Profil muss der lokale Pfad gleich dem FTP-Pfad sein, für Oscar also
H:\Web\Oscar\htdocs. Wie das kann schaffen??
Die notwendige Einstellung von Kenn- und Passwort gilt auch für das zukünftige FTPVerzeichnis und sollte dem neuen FTP-User unbedingt mitgeteilt werden.
2. Der virtuelle Host für den Apache
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 22 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
#§§§§ 2006/02/26 (für FTP):
<VirtualHost 127.0.0.2> - ??
ServerAdmin root@youserver
ServerName Oscar.yourserver
DocumentRoot "H:/Web/Oscar/htdocs"
ErrorLog "H:/Web/Oscar/logs/error.log"
CustomLog "H:/Web/Oscar/access.log" common
<Directory "H:/apache/htdocs/cgi-bin">
Order Allow,Deny
Allow from all
Options +ExecCGI
</Directory>
</VirtualHost>
#§§§§ 2006/02/26.
3. Die Konfiguration des virtuellen FTP-Verzeichnisses
Verwaltung-> Internet-Informationsdienste (IIS V 5.1)-Y FTP-Sites->Standart-FTP-Site>(rechte Maustaste) Neu->Virtuelles Verzeichnis:
Alias: oscar
Pfad: H:\Web\Oscar\htdocs
Zulassen: lesen, schreiben
4. Endlich ein Test...
H:\WEB\Apache_fuer_Dummies\ftp\win\WS_FTP-Client\wsftppro_german.exe – installiert
in H:\Web, aber sollte ihn zuerst kaufen! Wieder deinstaliert.
Mit einem FTP-Client Ihrer Wahl soll nun Oscar seinen FTP-Account erreichen können.
Anonyme FTP-Verzeichnisse
Verwaltung-> Internet-Informationsdienste (IIS V 5.1) -> FTP-Sites->Standart-FTP-Site>(rechte Maustaste) Eigenschaften ->Sicherheitskonten:
S.316 Eine Firewall schützt.
Eine Firewall ist ein Programm, das den Rechner von unbemerkten und unbefugten Zugriffen
von außerhalb schützen soll.
http://www.tinysoftware.com
Bei der Installation konfiguriert sich die Tiny Personal Firewall automatisch als Dienst.
S.323 Die besten Apache-Ressourcen
http://httpd.apache.org
xml.apache.org
perl.apache.org
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 23 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
www.php.net
php.apache.org
dev.apache.org
modules.apache.org
jakarta.apache.org
apr.apache.org
tcl.apache.org
http://selfhtml.teamone.de
S.341 Die Größten Apache - Webserver:
www.apple.com
www.ibm.com
www.amazon.com
www.bbc.co.uk
www.ard.de
www.spiegel.de
www.zeit.de
www.gmx.de
S.119 Virtuelle Hosts einrichten, zwei Methoden:


VirtualHost – Container (IP-basierte: jeder HOST hat eigene IP-Adresse)
NameVirtualHost – Container (nur erst ab HTTP 1.1 unterstützt)
###Section 3: Virtual Hosts
NameVirtualHost 10.20.30.1
<VirtualHOST 10.20.30.1>
ServerName www.piggi.net
....
</Virtual Host>
<VirtualHOST 10.20.30.1>
ServerName www.gonzo.com
....
</Virtual Host>
Beim Windows-Rechner “client02” sollte die hosts folgende Zeilen aufweisen:
127.0.0.1
localhost
10.20.30.2 client02
10.20.30.3
client03
10.20.30.1 server
10.20.30.1 www.piggi.net
10.20.30.1 www.gonzo.com
Dienstag, 28. Februar 2006
S.115 MultiViews – jeder Dateiname wird um ein Länderkürzel erweitert und je nachdem,
welche Sprache ein Benutzer in seinem Browser eingestellt hat, bekommt er eine
entsprechende Datei vom Apache angezeigt – etwa index.html.de, index.html.ru etc.
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 24 von 25.
Buch „Apache für Dummies“
__________________________________________________________________________________________
Ein Prozess ist einfach ein laufendes Programm auf dem Rechner und ein Thread ist quasi ein
laufendes Prozess innerhalb eines Prozess.
S.120. Namenbasierte virtuelle Hosts – nur ab HTTP 1.1 – der Browser möchte die URL
www.piggy.net auf unseren Apache anfragen. Um nun zu wissen, welche IP-Nummer
www.piggy.net nun wirklich hat, nutzt der Client entweder einen DNS-Dienst oder ganz
einfach die Hosttabellen auf dem lokalen Rechner. Ab http 1.1 wird zusätzlich zu der IPNummer (aus Hosttabelle) der angefragte Domain-Name mit geschickt. Daran erkenn der
Apache, das es sich um eine Anfrage für den virtuellen Host www.piggy.net handelt.
S.263 E-Mail
SMTP ist das Protokoll, über das sich alle Mail-Server im Internet miteinander verständigen.
SMTP wieder wirklich nur zum Verschicken der Mails verwendet. Für den Empfang von EMail – also z.B. vom Mail-Server Ihres Providers zu Ihrem Windows- oder Linux-Rechner –
gibt es zwei eigene Protokolle: das Post Office Protocol (POP) ind das Internet Message
Access Protocol (IMAP).
Sendmail-Server für Windows: http://www.indigostar.com
Es gibt einmonatige Trialversion (auch auf Buch-CD). Das Programm IndigiMail hat eine
sendmail.exe, die E-Mails über ein Webmailer verschicken kann. Es ist aber kein SMTPServer, sondern benötigt selbst einen externen Postausgangsserver, der E-Mails weiterleitet.
Ungefähr so: Über ein Skript innerhalb des Windows-Apache wird eine E-Mail an die
sendmail.exe gereicht, die Mail schließlich an den Mail-Server Ihrer offiziellen E-MailAdresse weiterleitet.
__________________________________________________________________________________________
Datei: D:\579891904.doc.
Seite 25 von 25.
Herunterladen