Schrift
[thread]639[/thread]

Struktur einer Perl Webapplikation: Dateistruktur einer Webapplikation



<< >> 9 Einträge, 1 Seite
giotto
 2006-01-07 14:48
#6498 #6498
User since
2004-06-11
12 Artikel
BenutzerIn
[default_avatar]
Hallo Zusammen!

Ich bin gerade kurz davor, mit einem Webprojekt in Perl zu beginnen, jedoch stelle ich mir immer vorher die Frage, wie ich meine Applikation in der Dateistruktur gestalten soll. Ich habe auch schon in Büchern nachgeschlagen, habe jedoch nichts gefunden und auch das Internet hat nichts brauchbares geliefert, desshalb hier die Frage an euch: Wie sieht die Dateistruktur einer Webapplikation aus, die folgende Kriterien erfüllt?

- Lauffähig unter mod_perl und normalem CGI
- Verteilbar, z.B. die ganze Applikation in ein Archiv verpacken
- Sicher

Wo verstaut ihr

- CGI Scripts
- Module
- Templatefiles von HTML::Template
- Configfiles
- Bilder/Grafiken
- CSS Styles
- Javascripts

Wäre cool, wenn ihr eure Ideen/Vorstellungen mal hier notieren würdet, es würde mir enorm helfen beim Design von neuen Anwendungen!

Besten Dank und Gruss
giotto
bloonix
 2006-01-07 19:04
#6499 #6499
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=giotto,07.01.2006, 13:48]Hallo Zusammen!
Wo verstaut ihr

- CGI Scripts
- Module
- Templatefiles von HTML::Template
- Configfiles
- Bilder/Grafiken
- CSS Styles
- Javascripts
[/quote]

Hallo giotto,

oh je, genau diese Frage hat mich auch mal gequält, als ich mit dem
Entwickeln von Webapplikationen begonnen habe. Diese Frage ist
auch garnicht so leicht zu beantworten, weil ziemlich viele Faktoren
dabei eine Rolle spielen können.

Zum Beispiel kann es darauf ankommen, wieviele Applikationen auf dem
Webserver laufen und ihre eigene Subdomain, ihren eigenen Alias
besitzen.

Für mich habe ich es immer in jedem Fall so geregelt, dass ich einen
Ordner habe, in dem alle Dokumente liegen, die öffentlich sind. Darunter
zählen HTML-Dokumente, Perlskripte, PHP-Skripte. Auf der gleichen Ebene
liegen alle weiteren Ordner.

Beispiel einer meiner Applikationen:

$home ist klar. Das ist das Heimatverzeichnis der Software.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# auch die Skripts im web-Ordner greifen hierdrauf zu
$home/bin         # Skripts zur Verwaltung von Logs, SID's uvm.
$home/modules     # könnte man auch include nennen
$home/doku        # README's
$home/temp        # für alle Skripts
$home/sessions    # Session-IDs
$home/log         # Skriptlogs, die's, warnings, log etc.

# Profile, config-Dateien uvm.
$home/config
$home/config/globals
$home/config/profiles
$home/config/hosts

# Nur der web-Ordner ist für den Webserver freigegeben,
# man könnte ihn auch public nennen oder wie jeder möchte
$home/web         # öffentliches Verzeichnis
$home/web/cgi     # ausführbare Skripts
$home/web/tmpl    # Templates
$home/web/img     # Bilder, Grafiken
$home/web/css     # CSS-Dateien
$home/web/html    # statitsche HTML-Dateien
$home/web/data    # Datendateien, falls keine Datenbank genutzt wird


Ganz wichtig ist nur, dass du öffentliche Dateien von nicht öffentlichen
Dateien klar trennen solltest, am besten mit verschiedenen Verzeichnis-
ebenen. Da Javascript auch in HTML-Dateien stehen oder mit CGI-Skripts
ausgegeben werden kann, ist ein extra-Verzeichnis meines Erachtens
nicht notwendig.

Die Software für dieses Beispiel arbeitet ohne Datenbank. Ist noch alles
Selfmade, deshalb auch der Session- und Profile-Ordner.
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
ptk
 2006-01-07 19:30
#6500 #6500
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ich versuche, bekannte Unix-Strukturen nachzubilden:
etc
bin
lib
htdocs
htdocs/js
htdocs/css
htdocs/images

In etc packe ich oft eine Include-Datei für httpd.conf. Locations und Aliases sind relativ definiert, so dass ein einfaches Include reicht, weitere Konfiguration ist nicht notwendig.

Manchmal installiere ich Perl-Module ganz normal, manchmal lasse ich sie in lib. CGI-Skripte schreibe ich nur selten.
ptk
 2006-01-07 19:35
#6501 #6501
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=opi,07.01.2006, 18:04]
Code: (dl )
$home/doku        # README's
[/quote]
Solltest du vielleicht in $home/doc umbenennen. Der Rest ist schön einheitlich englisch.
bloonix
 2006-01-07 19:36
#6502 #6502
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=ptk,07.01.2006, 18:30]In etc packe ich oft eine Include-Datei für httpd.conf.[/quote]
hmm... daran habe ich noch garnicht gedacht.

bisher habe ich die *.conf Dateien immer nach
/etc/(apache|httpd/apache2) ... entpackt.

werd ich gleich mal auf meine ToDo-Liste packen.\n\n

<!--EDIT|opi|1136655435-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
bloonix
 2006-01-07 19:38
#6503 #6503
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=ptk,07.01.2006, 18:35][quote=opi,07.01.2006, 18:04]
Code: (dl )
$home/doku        # README's
[/quote]
Solltest du vielleicht in $home/doc umbenennen. Der Rest ist schön einheitlich englisch.[/quote]
ToDo added

jetzt halst du mir aber arbeit auf :-)
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
esskar
 2006-01-07 20:25
#6504 #6504
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ptk
 2006-01-07 20:57
#6505 #6505
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=opi,07.01.2006, 18:36][quote=ptk,07.01.2006, 18:30]In etc packe ich oft eine Include-Datei für httpd.conf.[/quote]
hmm... daran habe ich noch garnicht gedacht.

bisher habe ich die *.conf Dateien immer nach
/etc/(apache|httpd/apache2) ... entpackt.[/quote]
Wenn man mod_perl zur Verfügung hat, kann man mit Perl-Sections arbeiten. Also ungefähr so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
<Perl>
use File::Basename qw(dirname);
my $project_root = dirname(dirname()); # $0 oder FindBin zusammen mit FindBin->again geht auch

$PerlConfig = <<EOF;
Alias /testproject $project_root/htdocs

# weitere Alias- und Location-Definitionen

EOF

</Perl>


Dadurch spart man sich einige Konfigurationsvariablen.
giotto
 2006-01-08 16:15
#6506 #6506
User since
2004-06-11
12 Artikel
BenutzerIn
[default_avatar]
Hallo Zusammen!

Erstmal Danke für die Antworten! Sind interessante Konzepte, besonders das mit dem Apache Include Configfile! Dieses hat jedoch den Haken, dass die Applikation nicht auf einem typische Webhosteraccount, auf dem man keine rootrechte hat, nicht installieren lässt! Ich habe auch versucht, einige Applikationen runterzuladen und die Struktur mal zu analysieren, jedoch habe ich keine gefunden, die Templates, Module, usw eingebaut hat... Weiss zufälligerweise einer, wie die Struktur des neuen Boards, das ja in Entwicklung ist, aussieht?

Besten Dank und Gruess
Giotto
<< >> 9 Einträge, 1 Seite



View all threads created 2006-01-07 14:48.