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;
?>
Wer hat eine Meinung dazu?