Astăzi, vom explora modul în care puteți gestiona mai multe aplicații în cadrul web al CodeIgniter utilizând o singură bază de coduri. În acest sens, vom continua și vom crea două aplicații CodeIgniter diferite care vor împărți codul de bază CodeIgniter codebase.
Schimbul de bază de coduri în diferite aplicații nu este ceva nou, deoarece este deja practicat de diferite cadre și sisteme open-source, iar CodeIgniter nu este diferit. Acesta vă permite cu ușurință să gestionați mai multe aplicații care partajează biblioteca principală CodeIgniter și fișierele API și, în același timp, puteți utiliza diferite baze de date și configurații specifice site-ului.
Pentru început, vom trece prin avantajele configurației multisite și, pe măsură ce vom trece mai departe, vom trece printr-o demonstrație practică a ceea ce este nevoie pentru a configura mai multe aplicații în cadrul CodeIgniter.
În această secțiune, vom evidenția câteva beneficii ale unei configurații multisite.
Unul dintre cele mai evidente beneficii pe care aș putea să-i arăt imediat este că configurația multisite are o bază de cod comună și că ar trebui să facă mult mai ușor procesele de actualizare și întreținere ale aplicației dvs..
De exemplu, să presupunem că aveți zece aplicații CodeIgniter diferite care rulează sub centură. Și tocmai ați aflat că o nouă versiune a cadrului CodeIgniter este disponibilă pentru upgrade și doriți să o actualizați cât mai curând posibil pentru a vă asigura că codul rămâne sigur și stabil.
Dacă ați avea o bază de cod separată pentru fiecare dintre aplicațiile dvs., ar fi cu siguranță un proces obositor de a trece prin fiecare site și de a-l actualiza la rândul său. Cu setarea multisite, trebuie doar să o faceți o dată pe măsură ce codul de bază este împărțit în toate site-urile!
Apoi, vă permite să utilizați o bază de date diferită pentru fiecare aplicație, chiar dacă aceștia au o bază de cod comună. De fapt, este unul dintre cele mai populare cazuri de utilizare a setării multisitelor!
În afară de utilizarea unei baze de date diferite pentru fiecare aplicație, puteți crea o configurație care utilizează aceeași bază de date, dar o altă temă sau aspect diferit în partea frontală.
Dacă încă folosiți abordarea bazată pe FTP pentru a muta fișierele site-ului dvs. pe diferite servere, aș spune că veți plăcea abordarea multisite, deoarece vă minimizează munca într-o mare măsură!
În această secțiune, vom configura structura directorului de bază pentru a implementa o configurație multisite.
La baza aplicației CodeIgniter, creați un aplicații
director. Acesta este directorul principal care va păstra diferitele noastre aplicații.
Apoi, continuați și creați două directoare noi-aplicatii / app_one
și aplicatii / app_two
. Desigur, ai putea să o numești așa cum vrei tu, dar eu voi păstra lucrurile simple pentru acum.
Deci, după cum puteți vedea, vom seta două aplicații diferite care vor folosi codul unic al cadrului CodeIgniter. Deși setarea multisite va reutiliza majoritatea fișierelor cadru CodeIgniter, este totuși necesar să duplicăm câteva fișiere și directoare pentru fiecare aplicație pe care o creăm.
Permiteți-mi să listați rapid fișierele și directoarele pe care ar trebui să le copiați de la aplicația implicită în primul rând.
Copiați următoarele directoare din directorul de aplicații implicit la aplicatii / app_one
și aplicatii / app_two
:
După cum puteți vedea, este evident să aveți directoare separate pentru ascunzătoare
și busteni
pentru fiecare aplicație. Si config
este o necesitate pentru funcționarea aplicației CodeIgniter, așa că o vom copia oricum.
Apoi, copiați câteva fișiere împreună cu directoarele necesare care ne permit să testați aplicația noastră multisite.
Copiați următoarele fișiere la adresa noastră app_one
și app_two
aplicații din aplicația implicită CodeIgniter:
Pentru referință rapidă, controlere / welcome.php
fișierul ar trebui să arate ca:
* @see https://codeigniter.com/user_guide/general/urls.html * / index public function () $ this-> load-> view ('welcome_message');
Si vizualizari / welcome_message.php
fișier ar trebui să arate ca.
Bun venit la CodeIgniter Bun venit la CodeIgniter! Căutați aplicația One!
Pagina pe care o priviți este generată dinamic de către CodeIgniter.
Dacă doriți să editați această pagină, veți găsi că se află la:
cerere / vizualizari / welcome_message.php
Controlorul corespunzător pentru această pagină se găsește la:
aplicatii / controlori / Welcome.php
Dacă explorați CodeIgniter pentru prima dată, ar trebui să începeți prin a citi Ghidul utilizatorului.
Pagina redată în timpul scurs secunde. ". CI_VERSION. '': "?>
Desigur, ar trebui să modificați următorul mesaj în fișierul de vizualizare, astfel încât să putem diferenția aplicația în timpul testării.
Pentru aplicatii / app_one / opinii / welcome_message.php
, ar trebui să arate ca:
Bun venit la CodeIgniter! Căutați aplicația One!
Si pentru aplicatii / app_two / opinii / welcome_message.php
, ar trebui să arate ca:
Bun venit la CodeIgniter! Căutați aplicația Two!
Acum, am făcut totul în ceea ce privește setarea noastră multisite. Cu toate acestea, aceasta nu va funcționa din cutie încă, deoarece încă mai trebuie să informăm CodeIgniter despre setarea noastră multisite, deoarece încarcă întotdeauna aplicația implicită localizată în cerere
director.
Să aruncăm o privire rapidă asupra setării care configurează directorul implicit al aplicației. Mergeți și deschideți index.php
fișier de la rădăcina aplicației dvs. și căutați următorul fragment de cod.
/ * * ----------------------------------------------- ---------------- * NUME DIRECTOR DE APLICARE * ----------------------------- ---------------------------------- * * Dacă doriți ca acest controler frontal să utilizeze o altă "aplicație" * mai mare decât cea standardă pe care o puteți seta aici. Directorul * poate fi redenumit sau mutat oriunde pe server. Dacă faceți asta, utilizați o cale de server absolută (completă). * Pentru mai multe informații, consultați ghidul de utilizare: * * https://codeigniter.com/user_guide/general/managing_apps.html * * NO TRAILING SLASH! * / $ application_folder = 'cerere';
Este destul de clar din fragmentul de mai sus că vă permite să setați calea aplicației dvs. implicite. Deci, acesta este locul unde putem face modificări, astfel încât să preia aplicația implicită dintr-un alt director decât cel implicit.
Desigur, ai putea merge mai departe și imediat să faci ceva de genul ăsta, și asta ar trebui să ruleze app_one
cerere.
$ application_folder = 'aplicații / app_one';
Pe de altă parte, ce ai face dacă vrei să fugi? app_two
? Ca un quickie, ai putea să copiezi index.php
fișier la index_app_one.php
și index_app_two.php
pentru fiecare aplicație. În gazda dvs. virtuală, asigurați-vă că faceți modificările în consecință.
Pe de altă parte, prefer o abordare puțin diferită și aș dori să mă bazez pe ENV
variabilă pentru a alege între diferitele aplicații la momentul executării.
De exemplu, puteți configura setările personalizate ENV
variabilă în NGINX așa cum se arată în fragmentul următor.
// setați variabila env CI_DEFAULT_APP în direcția "locație" a vhost fastcgi_param CI_DEFAULT_APP applications / app_one;
Dacă utilizați serverul web Apache, același lucru se poate obține și cu:
SetEnv CI_DEFAULT_APP aplicații / app_one
Apoi, să revizuim codul în index.php
fișier care profită de ENV
pentru a decide dacă aplicația implicită trebuie să ruleze.
... $ application_folder = (isset ($ _ SERVER ['CI_DEFAULT_APP'])? $ _SERVER ['CI_DEFAULT_APP']: 'cerere'); ...
Deci, după cum puteți vedea, verificăm existența CI_DEFAULT_APP
ENV
variabilă în primul rând, și dacă nu este disponibil, atunci vom reveni la aplicația implicită.
De cele mai multe ori, doriți să difuzați diferite aplicații pe diferite domenii. În mod ideal, aș dori să folosesc două gazde virtuale diferite pentru fiecare aplicație. Un exemplu rapid al fiecărei gazde virtuale ar trebui să arate așa ceva în contextul NGINX.
Domeniul www.ci-app-one.com indică app_one
:
server asculta YOUR_IP: 80; nume_serie www.ci-app-one.com; rădăcină / var / www / html; index index.html index.php; locație ~ * \ (jpg | jpeg | gif | css | png | js | ico | html) $ acces_log off; expiră max; locație / # Verificați dacă există un fișier sau un fișier index de director, altfel îl direcționați către index.php. încercați fișierele $ uri $ uri / /index.php; locație ~ \ .php $ root / var / www / html; rapidcgi_split_path_info ^ (. + \. php) (. *) $; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; rapidcgi_param SCRIPT_FILENAME / var / www / html $ fastcgi_script_name; fastcgi_param CI_DEFAULT_APP aplicații / app_one; includ fastcgi_params;
În mod similar, domeniul www.ci-app-two.com indică app_two
:
server asculta YOUR_IP: 80; numele serverului www.ci-app-two.com; rădăcină / var / www / html; index index.html index.php; locație ~ * \ (jpg | jpeg | gif | css | png | js | ico | html) $ acces_log off; expiră max; locație / # Verificați dacă există un fișier sau un fișier index de director, altfel îl direcționați către index.php. încercați fișierele $ uri $ uri / /index.php; locație ~ \ .php $ root / var / www / html; rapidcgi_split_path_info ^ (. + \. php) (. *) $; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; rapidcgi_param SCRIPT_FILENAME / var / www / html $ fastcgi_script_name; fastcgi_param CI_DEFAULT_APP aplicații / app_two; includ fastcgi_params;
Desigur, ai putea să mergi mai departe și să testezi schimbările pentru a vedea dacă funcționează sau nu! Nu ezitați să mă împușcați dacă aveți probleme.
Și acesta a fost modul destul de simplu în care puteți configura mai multe aplicații în cadrul CodeIgniter utilizând o singură bază de coduri.
Astăzi, am trecut printr-un aspect interesant al cadrului CodeIgniter care vă permite să gestionați mai multe aplicații utilizând o singură bază de coduri. Beneficiile evidente ale acestui lucru sunt îmbunătățirea ușoară și menținerea codului dvs. existent.
CodeIgniter este o platformă puternică pentru PHP. Indiferent dacă începeți sau nu începeți cu următoarea versiune, nu uitați să verificați ce avem la dispoziție pentru dvs..
Împărtășiți-vă gândurile dacă ați implementat deja ceva similar sau ați fi abordat-o într-un mod ușor diferit. În orice caz, mi-ar plăcea să vă aud gândurile!