Heute werden wir untersuchen, wie Sie mehrere Anwendungen im CodeIgniter-Web-Framework mit einer einzigen Codebase verwalten können. Im Zuge dessen werden wir zwei verschiedene CodeIgniter-Anwendungen erstellen, die die Codebasis Core CodeIgniter gemeinsam nutzen.
Die gemeinsame Nutzung der Kerncodebase für verschiedene Anwendungen ist nicht neu, da sie bereits von verschiedenen Frameworks und Open-Source-Systemen praktiziert wird, und CodeIgniter unterscheidet sich nicht. Auf diese Weise können Sie problemlos mehrere Anwendungen verwalten, die die CodeIgniter-Kernbibliothek und die API-Dateien gemeinsam nutzen. Gleichzeitig können Sie verschiedene Datenbanken und standortspezifische Konfigurationen verwenden.
Zu Beginn werden wir die Vorteile des Multisite-Setups durchgehen und im weiteren Verlauf eine praktische Demonstration zeigen, was erforderlich ist, um mehrere Anwendungen im CodeIgniter-Framework einzurichten.
In diesem Abschnitt werden einige Vorteile eines Multisite-Setups hervorgehoben.
Einer der offensichtlichsten Vorteile, auf den ich gleich hinweisen könnte, ist, dass das Multisite-Setup eine gemeinsame Codebase verwendet, und dies sollte die Upgrade- und Wartungsprozesse Ihrer Anwendung erheblich vereinfachen.
Nehmen wir zum Beispiel an, Sie haben zehn verschiedene CodeIgniter-Anwendungen, die unter Ihrem Gürtel laufen. Sie haben gerade erfahren, dass eine neue Version des CodeIgniter-Frameworks für ein Upgrade verfügbar ist, und Sie möchten das Upgrade so schnell wie möglich durchführen, um sicherzustellen, dass der Code sicher und stabil bleibt.
Wenn Sie für jede Ihrer Anwendungen eine eigene Codebase hätten, wäre es definitiv ein langwieriger Prozess, jede einzelne Site durchzugehen und sie nacheinander zu aktualisieren. Mit dem Multisite-Setup müssen Sie dies nur einmal tun, da die Kerncodebase von allen Sites gemeinsam genutzt wird!
Als Nächstes können Sie für jede Anwendung eine andere Datenbank verwenden, obwohl sie eine gemeinsame Codebase verwenden. In der Tat ist dies einer der beliebtesten Anwendungsfälle für die Einrichtung von Multisites!
Abgesehen davon, dass Sie für jede Anwendung eine andere Datenbank verwenden, können Sie ein Setup erstellen, das dieselbe Datenbank verwendet, jedoch ein anderes Design oder Layout im Frontend.
Wenn Sie immer noch den FTP-basierten Ansatz verwenden, um Ihre Site-Dateien auf den verschiedenen Servern zu verschieben, würde ich sagen, dass Sie den Multisite-Ansatz lieben werden, da er Ihre Arbeit stark reduziert!
In diesem Abschnitt richten wir die grundlegende Verzeichnisstruktur ein, um ein Setup für mehrere Standorte zu implementieren.
Erstellen Sie im Stammverzeichnis Ihrer CodeIgniter-Anwendung ein Anwendungen
Verzeichnis. Dies ist das Hauptverzeichnis, in dem unsere verschiedenen Anwendungen gespeichert werden.
Als Nächstes erstellen Sie zwei neue Verzeichnisse-Anwendungen / app_one
und anwendungen / app_two
. Natürlich können Sie es so benennen, wie Sie es wünschen, aber ich halte es für jetzt einfach.
Wie Sie sehen, werden wir also zwei verschiedene Anwendungen einrichten, die die einzige Codebase des CodeIgniter-Frameworks verwenden. Obwohl das Setup für mehrere Standorte die meisten CodeIgniter-Framework-Dateien wiederverwenden wird, müssen noch einige Dateien und Verzeichnisse für jede einzelne von uns erstellte Anwendung dupliziert werden.
Lassen Sie mich schnell die Dateien und Verzeichnisse auflisten, die Sie zuerst aus der Standardanwendung kopieren sollten.
Kopieren Sie die folgenden Verzeichnisse aus dem Standardanwendungsverzeichnis nach Anwendungen / app_one
und anwendungen / app_two
:
Wie Sie sehen können, ist es offensichtlich, separate Verzeichnisse für Zwischenspeicher
und Protokolle
für jede Anwendung. Und das Konfig
Das Verzeichnis ist ein Muss für das Funktionieren Ihrer CodeIgniter-Anwendung. Wir werden es also trotzdem kopieren.
Als nächstes kopieren wir ein paar Dateien zusammen mit den erforderlichen Verzeichnissen, die es uns ermöglichen, unsere Multisite-Anwendung zu testen.
Kopieren Sie die folgenden Dateien in unser app_one
und app_two
Anwendungen aus der Standardanwendung CodeIgniter:
Für Ihre schnelle Referenz die Steuerungen / welcome.php
Die Datei sollte folgendermaßen aussehen:
* @sehe https://codeigniter.com/user_guide/general/urls.html * / public function index () $ this-> load-> view ('welcome_message');
Und das views / welcome_message.php
Datei sollte aussehen.
Willkommen bei CodeIgniter Willkommen bei CodeIgniter! Sie durchsuchen die Anwendung Eins!
Die von Ihnen betrachtete Seite wird von CodeIgniter dynamisch generiert.
Wenn Sie diese Seite bearbeiten möchten, finden Sie sie unter:
application / views / welcome_message.php
Den entsprechenden Controller für diese Seite finden Sie unter:
Anwendung / Steuerungen / Welcome.php
Wenn Sie CodeIgniter zum ersten Mal erkunden, sollten Sie zunächst das Benutzerhandbuch lesen.
In gerenderte Seite verstrichene Zeit Sekunden. '. CI_VERSION. '': "?>
Natürlich sollten Sie die folgende Meldung in der Ansichtsdatei ändern, damit wir die Anwendung während des Tests unterscheiden können.
Zum applications / app_one / views / welcome_message.php
, es sollte so aussehen:
Willkommen bei CodeIgniter! Sie durchsuchen die Anwendung Eins!
Und für Anwendungen / app_two / views / welcome_message.php
, es sollte so aussehen:
Willkommen bei CodeIgniter! Sie durchsuchen die Anwendung Zwei!
Nun haben wir alles in Bezug auf unser Multisite-Setup getan. Es funktioniert jedoch noch nicht sofort, da wir CodeIgniter immer noch über unser Multisite-Setup informieren müssen, da immer die Standardanwendung geladen wird, die sich in der befindet Anwendung
Verzeichnis.
Lassen Sie uns einen kurzen Blick auf die Einstellung werfen, die das Standardanwendungsverzeichnis konfiguriert. Mach weiter und öffne die index.php
Datei im Stammverzeichnis Ihrer Anwendung und suchen Sie nach dem folgenden Code-Snippet.
/ * * ------------------------------------------- ---------------- * ANWENDUNGSVERZEICHNISNAME * ----------------------------- ---------------------------------- * * Wenn dieser Frontcontroller eine andere "Anwendung" verwenden soll * Verzeichnis als das Standardverzeichnis können Sie hier seinen Namen festlegen. Das Verzeichnis * kann auch an beliebiger Stelle auf Ihrem Server umbenannt oder verschoben werden. Wenn Sie dies tun, * verwenden Sie einen absoluten (vollständigen) Serverpfad. * Weitere Informationen finden Sie in der Bedienungsanleitung: * * https://codeigniter.com/user_guide/general/managing_apps.html * * KEIN TRAILING SLASH! * / $ application_folder = 'application';
Aus dem obigen Snippet ist ziemlich klar, dass Sie den Pfad Ihrer Standardanwendung festlegen können. Dies ist der Ort, an dem wir Änderungen vornehmen können, sodass die Standardanwendung aus einem anderen als dem Standardverzeichnis abgerufen wird.
Natürlich könnte man gleich weitermachen und so etwas tun, und das sollte laufen app_one
Anwendung.
$ application_folder = 'applications / app_one';
Auf der anderen Seite, was würden Sie tun, wenn Sie laufen möchten app_two
? Als Quickie könnten Sie das kopieren index.php
Datei in index_app_one.php
und index_app_two.php
für jede Anwendung. Stellen Sie sicher, dass Sie die Änderungen in Ihrem virtuellen Host entsprechend vornehmen.
Andererseits ziehe ich einen etwas anderen Ansatz vor und möchte mich auf die ENV
Variable zur Auswahl zwischen den verschiedenen Anwendungen zur Laufzeit.
Beispielsweise können Sie den Benutzer einrichten ENV
Variable in NGINX wie im folgenden Snippet gezeigt.
// Setze die Umgebungsvariable CI_DEFAULT_APP in der "location" -Direktive von vhost fastcgi_param CI_DEFAULT_APP applications / app_one;
Wenn Sie den Apache-Webserver verwenden, können Sie Folgendes erreichen:
SetEnv CI_DEFAULT_APP-Anwendungen / app_one
Als nächstes überarbeiten wir den Code in der index.php
Datei, die den Vorteil ausnutzt ENV
Variable, um die Ausführung der Standardanwendung zu bestimmen.
... $ application_folder = (isset ($ _ SERVER ['CI_DEFAULT_APP'])? $ _SERVER ['CI_DEFAULT_APP']: 'application');…
Wie Sie sehen, prüfen wir also die Existenz der CI_DEFAULT_APP
ENV
Variable in erster Linie, und wenn es nicht verfügbar ist, werden wir auf die Standardanwendung zurückgreifen.
Meistens möchten Sie Ihre verschiedenen Anwendungen in verschiedenen Domänen ausführen. Im Idealfall möchte ich für jede Anwendung zwei verschiedene virtuelle Hosts verwenden. Ein schnelles Beispiel für jeden virtuellen Host sollte im Kontext von NGINX so aussehen.
Die Domain www.ci-app-one.com verweist auf app_one
:
Server listen YOUR_IP: 80; Servername www.ci-app-one.com; root / var / www / html; index index.html index.php; location ~ * \. (jpg | jpeg | gif | css | png | js | ico | html) $ access_log off; verfällt max; location / # Überprüfen Sie, ob eine Datei- oder Verzeichnisindexdatei vorhanden ist, oder leiten Sie sie an die index.php weiter. try_files $ uri $ uri / /index.php; location ~ \ .php $ root / var / www / html; fastcgi_split_path_info ^ (. + \. php) (. *) $; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME / var / www / html $ fastcgi_script_name; fastcgi_param CI_DEFAULT_APP-Anwendungen / app_one; include fastcgi_params;
In ähnlicher Weise verweist die Domäne www.ci-app-two.com auf app_two
:
Server listen YOUR_IP: 80; Servername www.ci-app-two.com; root / var / www / html; index index.html index.php; location ~ * \. (jpg | jpeg | gif | css | png | js | ico | html) $ access_log off; verfällt max; location / # Überprüfen Sie, ob eine Datei- oder Verzeichnisindexdatei vorhanden ist, oder leiten Sie sie an die index.php weiter. try_files $ uri $ uri / /index.php; location ~ \ .php $ root / var / www / html; fastcgi_split_path_info ^ (. + \. php) (. *) $; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME / var / www / html $ fastcgi_script_name; fastcgi_param CI_DEFAULT_APP-Anwendungen / app_two; include fastcgi_params;
Natürlich können Sie jetzt loslegen und Ihre Änderungen testen, um zu sehen, ob es wirklich funktioniert oder nicht! Zögern Sie nicht, mir Fragen zu stellen, wenn Sie Probleme haben.
Und das war die ziemlich einfache Möglichkeit, mehrere Anwendungen im CodeIgniter-Framework mit einer einzigen Codebase einzurichten.
Heute haben wir einen interessanten Aspekt des CodeIgniter-Frameworks durchlaufen, mit dem Sie mehrere Anwendungen mit einer einzigen Codebase verwalten können. Die offensichtlichen Vorteile davon sind die einfache Aktualisierung und Wartung Ihrer vorhandenen Codebase.
CodeIgniter ist eine leistungsfähige PHP-Plattform. Egal, ob Sie gerade erst anfangen oder mit der nächsten Version beginnen, vergessen Sie nicht, zu prüfen, was wir für Sie zur Verfügung haben.
Teilen Sie Ihre Gedanken mit, wenn Sie bereits etwas Ähnliches implementiert haben oder sich etwas anders damit befasst hätten. Auf jeden Fall würde ich gerne Ihre Gedanken hören!