Cum să gestionați mai multe aplicații în CodeIgniter

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.

Beneficiile setării multisite

Î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ă!

Cum se creează mai multe aplicații

Î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:

  • ascunzătoare
  • config
  • busteni

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:

  • controlere / welcome.php
  • vizualizari / erori
  • vizualizari / welcome_message.php

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.

Ultimele retușuri

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.

Concluzie

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!

Cod