Andere Pfadstruktur

Gesperrt
bgd-berlin
Beiträge: 31
Registriert: Di 7. Jun 2005, 00:26
Wohnort: Berlin
Kontaktdaten:

Andere Pfadstruktur

Beitrag von bgd-berlin »

Im Update Thread sind wir vom eigentlichen Thema abgekommen.

Also als Vorwort
Die Standardinstallation von Contenido setzt die komplette Ordnerstruktur für Frontend sowie auch für Backend in einem einzigen Baum. Die Tatsache dass es vielen so nicht gefällt, und dass viele Probleme damit haben die Pfade (richtig) zu ändern, sieht man in der Anzahl Threads, die sich mit dem Thema beschäftigen.
Ein weiteres Problem mit dem wir alle (oder einige) zu kämpfen haben, ist dass Lokal entwickelte Projekt, auf dem Remoteserver zum laufen zu bringen. Da sind meistens einige Anpassungen zu machen.

Ich habe mir meine eigene Lösung gestrickt, die ich auch für Grundinstallationen meiner Hostingpakete einsetze. Vielleicht gibt es ähnliche, oder bessere Lösungen, die wir hier diskutieren können.

Genug Bla Bla. Zur Sache:

In meinen Augen muss Frontend und Backend im Webpfad getrennt sein. Zum einem aus Sicherheitsgründen, und zum anderem, damit das Frontend direkt erreichbar ist (ohne /cms/...)

Angenommen das Grundverzeichnis ist "html", dann können wir ein Verzeichnis html/frontend/kunde1 und ein Verzeichnis html/backend anlegen. Bei mehreren Mandanten gibt es dann html/frontend/kunde2 usw. Für das Backend wird eine Subdomain z.B. admin.domain-kunde1.de direkt zum Verzeichnis html/backend/ geleitet. Hier kommen dann alle Dateien die zum Backend gehören, also die Verzeichnisse conlib, contenido und pear. Nun erreichen wir das Backend unter http://admin.domain-kunde1.de/contenido/ (ich mache es grundsätzlich ohne www).
Die Hauptdomain (www.domain-kunde1.de) unter der das Frontend erreichbar sein soll, leiten wir direkt zu html/frontend/kunde1/ . Dort kopieren wir alle Dateien und Verzeichnisse aus dem Ordner „cms“.

Die allererste Installation geht nur als Standardinstallation. Nach der ersten Erstellung der neuen Struktur, brauchen wir die Installationsroutine nicht mehr. Jede weitere Installation machen wir mit reinem Kopieren der Dateien (und der Datenbank).

Nun das Problem Testserver Lokal / Remote Server.

Ich denke viele von uns machen die Entwicklungsarbeit Lokal. Dann kommt die ganze Anpassung für den Remote Server.

Mein Ansatz:

Ich habe ein lokalen Server auf mein Windows Laptop (xampp). Dort unter htdocs habe ich die gleiche Kunden Struktur aufgebaut, wie sie auf allen meinen Remote Servern ist, also htdocs/webxx/html/…… Auf diesem Lokalen Server sind die Contenido Installationen genau so aufgebaut wie oben beschrieben. Die Datenbanknamen, db-Namen und db-Passwort sind identisch wie auf dem Remote Server.

Nun ein paar Anpassungen in den beiden config.php, damit diese automatisch erkennen auf welchem Server sie gerade ausgeführt werden:

contenido/includes/config.php

Code: Alles auswählen

<?php

/******************************************
* File      :   config.php
* Project   :   Contenido
* Descr     :   Defines all general
*               variables of Contenido.
*
* © four for business AG
******************************************/

global $cfg;

/* Section 1: Path settings
 * ------------------------
 *
 * Path settings which will vary along different
 * Contenido settings.
 *
 * A little note about web and server path settings:
 * - A Web Path can be imagined as web addresses. Example:
 *   http://192.168.1.1/test/
 * - A Server Path is the path on the server's hard disk. Example:
 *   /var/www/html/contenido    for Unix systems OR
 *   c:/htdocs/contenido        for Windows systems
 *
 * Note: If you want to modify the locations of subdirectories for
 *       some reason (e.g. the includes directory), see Section 8.
 */


/* Änderungen für eine universelle Instalation
 * --------------------------------------------
 *
 * Definiert die Pfade zum unveränderten Einsatz
 * im lokalem Testserver und Remote Server
 * (beim Provider)
 *
 *
 * Moduländerung
 * 
 * Richard Martin
 * Brinner Grafische Dienste GmbH
 * www.bgd-berlin.de
 * rmartin@bgd-berlin.de
 */



/* Hier die Einstellungen die lokal und remote gleich sind */
	$web = 'webxx';
	$db_suffix = '_1';
	$tbl_praefix = 'con';
	$pw = 'password';
	$db_praefix = 'usr_';
	$hostname = 'localhost';

/* Jetzt Prüfen ob es der Lokale Testserver ist
*  Die abgefragte Datei wurde eigens für diesem Zweck dort platziert
*/
if (file_exists( 'E:/web/xampp/serverislocal.txt')) 
	{ 

/* Hier werden die Variablen für den Lokalen Testserver eingegeben */
	$backend_webpath = 'http://rechnername/'.$web.'/html/backend/';
	$prepath = 'E:/web/xampp/htdocs/';
	$webeditor= 'contenido/external/wysiwyg/tinymce2/';
} else { 

/* Hier werden die Variablen für den Remoteserver eingegeben */
	$backend_webpath = 'http://admin.domain.tld/';
	$prepath = '/srv/www/htdocs/';
	$webeditor= 'contenido/external/wysiwyg/tinymce2/';
	} 



/* Ab hier nichts mehr ändern */
$backend_serverpath = $prepath.$web.'/html/backend/';
$frontend_serverpath = $prepath.$web.'/html/frontend/';
$database = $db_praefix.$web.$db_suffix;


/* The root server path to the contenido backend */
$cfg['path']['contenido']               = $backend_serverpath.'contenido/';

/* The web server path to the contenido backend */
$cfg['path']['contenido_fullhtml']      = $backend_webpath.'contenido/';

/* The root server path where all frontends reside */
$cfg['path']['frontend']                = $frontend_serverpath;

/* The root server path to the conlib directory */
$cfg['path']['phplib']                  = $backend_serverpath.'conlib/';

/* The root server path to the pear directory */
$cfg['path']['pear']                    = $backend_serverpath.'pear/';

/* The server path to the desired WYSIWYG-Editor */
$cfg['path']['wysiwyg']                 = $backend_serverpath.$webeditor;

/* The web path to the desired WYSIWYG-Editor */
$cfg['path']['wysiwyg_html']            = $backend_webpath.$webeditor;

/* The server path to all WYSIWYG-Editors */
$cfg['path']['all_wysiwyg']                 = $backend_serverpath.'contenido/external/wysiwyg/';

/* The web path to all WYSIWYG-Editors */
$cfg['path']['all_wysiwyg_html']            = $backend_webpath.'contenido/external/wysiwyg/';





/* Section 2: Database settings
 * ----------------------------
 *
 * Database settings for MySQL. Note that we don't support
 * other databases in this release.
 */

/* The prefix for all contenido system tables, usually "con" */
$cfg['sql']['sqlprefix'] = $tbl_praefix;

/* The host where your database runs on */
$contenido_host = $hostname;

/* The database name which you use */
$contenido_database = $database;

/* The username to access the database */
$contenido_user = $web;

/* The password to access the database */
$contenido_password = $pw;

$cfg["database_extension"] = 'mysql';

$cfg["nolock"] = false;

$cfg["is_start_compatible"] = false;
?>

Und nun die config.php im Frontend

Code: Alles auswählen

<?php

/* Für lokal und remote gleich */
$web = 'web6';

/* Erst Prüfen ob es der Lokale Testserver ist
   Die abgefragte Datei wurde eigens für diesem Zweck dort platziert */
if (file_exists( 'E:/web/xampp/serverislocal.txt')) 
	{ 
	$prepath = 'E:/web/xampp/htdocs/';
} else { 
	$prepath = '/srv/www/htdocs/';
	} 

/* ab hier nichts mehr ändern */
$backend_serverpath = $prepath.$web.'/html/backend';

//path to contenido, for all inclusions
$contenido_path = $backend_serverpath."/contenido/";


$load_lang = "1";
$load_client = "1";

/* Various debugging options */
$frontend_debug["container_display"] = false;
$frontend_debug["module_display"] = false;
$frontend_debug["module_timing"] = false;
$frontend_debug["module_timing_summary"] = false;

/* Set to 1 to brute-force module regeneration */
$force = 0;

?>
Das eine oder andere ist vielleicht nicht so elegant, aber es funktioniert,und es erleichtert meine Arbeit sehr viel.

Wer hat eine Meinung dazu?
www.webrunde.eu (auch .de und .com) ist online.
Erster Baustein: Forum für Webdesigner / Webentwicker.
Mein Domain Blog
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

eine meinung dazu ?

nicht wirklich... ich glaub ich habs nicht verstanden was du jetzt genau machen willst...

ich brauch noch nen kaffee...
*** make your own tools (wishlist :: thx)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Grundsätzlich beschreibt er, wie man Contenido mit mehreren echten Mandanten betreibt. Das ist in ähnlicher Weise bereits im Forum (und ich glaube sogar in der Contenieo-FAQ beschrieben worden).

Der interessante Ansatz ist, dass mit seinen Änderungen sowohl Contenido, als auch die Mandanten-Verzeichnisse einfach komplett übertragen werden können, ohne dass weitere Anpassungen notwendig sind.

Allerdings stellen sich mir mehrere Fragen: Das Konzept funktioniert nur, wenn alle Änderungen nur durch den Admin durchgeführt werden oder es eine Datenbank pro Mandant gibt - sonst würde ein einfaches Kopieren der DB die Änderungen der anderen Mandanten überschreiben. Ist das so?

Und: Was ist mit den Mandanteneinstellungen unter Administration -> Mandanten (in der DB)?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
bgd-berlin
Beiträge: 31
Registriert: Di 7. Jun 2005, 00:26
Wohnort: Berlin
Kontaktdaten:

Beitrag von bgd-berlin »

Emergence - 'ne Tasse Kaffee brauch ich auch.
HerrB - Du hast es gleich richtig verstanden.

Also 2 vorgänge mache ich manuell:

Tabelle con_code leeren
Pfade im Backend - System-Mandanten neu eingeben.

Aber bei den ganzen PHP Profis hier, lässt sich sicherlich auch das automatisieren. Vielleicht postet mal jemand das nötige Script.

Besonders wichtig ist diese Prozedur während der Entwicklungsphase, da arbeiten meistens nicht mehrere Redakteure dran.

Systeme mit mehreren Mandanten mache ich grundsätlich nur, wenn die Mandanten wirklich zusammen gehören.

Ansonsten, wenn größere Änderungen vorliegen, bekommen alle Backend berechtigte eine Meldung. Dann wird das Ganze Heruntergeladen, lokal bearbeitet, und dann wieder hochgeladen. Die gefahr, bestimmte Änderung im Live-Zustand zu machen ist mir zu groß.

So, nun werde ich auch mein Kaffe trinken.

Nachtrag:
Kaum war ich fertig, oops Server geht nicht mehr.
Ganz schön häufig in letzter Zeit!!!
Zum Glück habe ich mir angewöhnt bei solchen online Texten, immer markieren und strg-C vor dem senden.
www.webrunde.eu (auch .de und .com) ist online.
Erster Baustein: Forum für Webdesigner / Webentwicker.
Mein Domain Blog
Gesperrt