Slik administrerer du flere applikasjoner i CodeIgniter

I dag skal vi undersøke hvordan du kan administrere flere applikasjoner i CodeIgniter web-rammen ved hjelp av en enkelt kodebase. I løpet av det vil vi gå videre og opprette to forskjellige CodeIgniter applikasjoner som vil dele kjernen CodeIgniter kodebase.

Å dele kjernekodebasen over forskjellige applikasjoner er ikke noe nytt, siden det allerede er praktisert av ulike rammer og åpen kildekode systemer, og CodeIgniter er ikke annerledes. Det lar deg enkelt administrere flere programmer som deler kjernen CodeIgniter-biblioteket og API-filene, og samtidig kan du bruke forskjellige databaser og nettstedspesifikke konfigurasjoner.

Til å begynne med vil vi gå gjennom fordelene ved multisite-oppsettet, og når vi går videre, går vi gjennom en praktisk demonstrasjon av hva som trengs for å sette opp flere applikasjoner i CodeIgniter-rammeverket.

Fordeler med multisite-oppsettet

I denne delen vil vi markere et par fordeler med å ha et flersidssettingsoppsett.

En av de mest åpenbare fordelene som jeg umiddelbart kunne påpeke er at multisitopsoppsettet deler en felles kodebase, og det bør gjøre oppgraderings- og vedlikeholdsprosessene i søknaden mye lettere.

For eksempel, tenk at du har ti forskjellige CodeIgniter-programmer som kjører under beltet ditt. Og du kom bare til å vite at en ny versjon av CodeIgniter-rammen er tilgjengelig for oppgradering, og du vil oppgradere den så snart som mulig for å sikre at koden forblir sikker og stabil.

Hvis du hadde en egen kodebase for hver av dine applikasjoner, ville det definitivt være en kjedelig prosess å gå gjennom hvert nettsted og oppgradere det i sin tur. Med multisite-oppsettet trenger du bare å gjøre det en gang som kjerne kodebase deles på tvers av alle nettstedene!

Deretter kan du bruke en annen database for hvert program, selv om de deler en felles kodebase. Faktisk er det en av de mest populære brukstilgangene med å sette opp multisite!

Bortsett fra å bruke en annen database for hver applikasjon, kan du opprette et oppsett som bruker samme database, men et annet tema eller layout i fronten.

Hvis du fremdeles bruker FTP-basert tilnærming til å flytte sidefilene dine på de forskjellige serverne, vil jeg si at du skal elske multisite-tilnærmingen, da det i stor grad minimerer arbeidet ditt!

Slik lager du flere applikasjoner

I denne delen konfigurerer vi den grunnleggende katalogstrukturen for å implementere et flersett-oppsett.

Ved roten til CodeIgniter-programmet ditt, opprett en applikasjoner katalogen. Dette er hovedkatalogen som holder våre forskjellige applikasjoner.

Deretter fortsett og opprett to nye kataloger-applikasjoner / app_one og applikasjoner / app_two. Selvfølgelig kan du nevne det slik du vil at det skal være, men jeg vil holde ting enkelt for nå.

Så, som du kan se, skal vi sette opp to forskjellige applikasjoner som vil bruke enkle kodebase av CodeIgniter-rammeverket. Selv om multisite-oppsettet vil gjenbruke de fleste CodeIgniter-rammafilene, må vi likevel duplisere et par filer og kataloger til hver applikasjon vi lager.

La meg raskt liste filene og katalogene du bør kopiere fra standardprogrammet i utgangspunktet.

Kopier følgende kataloger fra standardprogramkatalogen til applikasjoner / app_one og applikasjoner / app_two:

  • cache
  • config
  • logger

Som du kan se, er det åpenbart å ha separate kataloger for cache og logger for hver applikasjon. Og config katalog er et must for arbeidet med ditt CodeIgniter-program, så vi skal kopiere det uansett.

Deretter la vi kopiere et par filer sammen med de nødvendige katalogene som tillater oss å teste vår flersidige applikasjon.

Kopier følgende filer til vår app_one og app_two applikasjoner fra standard CodeIgniter-programmet:

  • styringer / welcome.php
  • visninger / feil
  • visninger / welcome_message.php

For din hurtige referanse, er styringer / welcome.php filen skal se ut som:

 * @se https://codeigniter.com/user_guide/general/urls.html * / offentlige funksjonsindeks () $ this-> load-> view ('welcome_message'); 

Og visninger / welcome_message.php filen skal se ut.

    Velkommen til CodeIgniter    

Velkommen til CodeIgniter! Du surfer på Application One!

Siden du ser på, genereres dynamisk av CodeIgniter.

Hvis du vil redigere denne siden finner du den på:

application / visninger / welcome_message.php

Tilsvarende kontroller for denne siden finner du på:

application / kontrollere / Welcome.php

Hvis du utforsker CodeIgniter for første gang, bør du starte med å lese brukerhåndboken.

Side gjengitt i ELAPSED_TIME sekunder. '. CI_VERSION. '': "?>

Selvfølgelig bør du endre følgende melding i visningsfilen slik at vi kunne skille applikasjonen under testingen.

Til applikasjoner / app_one / visninger / welcome_message.php, det skal se ut som:

Velkommen til CodeIgniter! Du surfer på Application One!

Og for applikasjoner / app_two / visninger / welcome_message.php, det skal se ut som:

Velkommen til CodeIgniter! Du surfer Application Two!

Nå har vi alt gjort så langt som vår multisite-oppsett er opptatt. Det vil imidlertid ikke virke ute av esken ennå, siden vi fortsatt trenger å informere CodeIgniter om vårt multisite-oppsett, siden det alltid laster standardprogrammet i applikasjon katalog.

Finpuss

La oss raskt se på innstillingen som konfigurerer standardprogramkatalogen. Gå videre og åpne index.php filen i roten til søknaden din og se etter følgende kodestykke.

/ * * ----------------------------------------------- ---------------- * APPLICATIONS DIRECTORY NAME * ----------------------------- ---------------------------------- * * Hvis du vil at denne frontkontrolleren skal bruke et annet "program" * katalog enn standard du kan angi navnet her. Mappen * kan også omdøpes eller flyttes hvor som helst på serveren din. Hvis du gjør det, * bruk en absolutt (full) serverbane. * For mer informasjon vennligst se brukerhåndboken: * * https://codeigniter.com/user_guide/general/managing_apps.html * * INGEN TRAILING SLASH! * / $ application_folder = 'application';

Det er ganske klart fra den ovennevnte koden at den lar deg sette banen til standardprogrammet ditt. Så dette er stedet der vi kan gjøre endringer slik at det henter standardprogrammet fra en annen katalog enn standard en.

Selvfølgelig kan du gå videre og straks gjøre noe slikt, og det skal løpe app_one applikasjon.

$ application_folder = 'applications / app_one';

På den annen side, hva ville du gjøre hvis du vil løpe app_two? Som en quickie kan du kopiere index.php fil til index_app_one.php og index_app_two.php for hver applikasjon. I din virtuelle vert, sørg for at du gjør endringene tilsvarende.

På den annen side foretrekker jeg en litt annen tilnærming, og jeg vil gjerne stole på ENV variabel å velge mellom de forskjellige applikasjonene på kjøretid.

For eksempel kan du sette opp egendefinert ENV variabel i NGINX som vist i følgende utdrag.

// sett env-variabelen CI_DEFAULT_APP i "stedet" -direktivet for vhost fastcgi_param CI_DEFAULT_APP applikasjoner / app_one;

Hvis du bruker Apache webserveren, kan det samme oppnås med:

SetEnv CI_DEFAULT_APP applikasjoner / app_one

Neste, la oss revidere koden i index.php fil som drar nytte av ENV variabel for å bestemme at standardprogrammet skal kjøre.

... $ application_folder = (isset ($ _ SERVER ['CI_DEFAULT_APP'])? $ _SERVER ['CI_DEFAULT_APP']: 'søknad'); ... 

Så, som du kan se, kontrollerer vi eksistensen av CI_DEFAULT_APP ENV variabel i utgangspunktet, og hvis den ikke er tilgjengelig, faller vi tilbake til standardprogrammet.

Oftere enn ikke, du vil kjøre dine forskjellige applikasjoner på forskjellige domener. Ideelt sett vil jeg gjerne bruke to forskjellige virtuelle verter for hvert program. Et raskt eksempel på hver virtuell vert bør se slik ut i sammenheng med NGINX.

Www.ci-app-one.com domene peker til app_one:

server listen YOUR_IP: 80; servernavn www.ci-app-one.com; root / var / www / html; indeks index.html index.php; plassering ~ * \. (jpg | jpeg | gif | css | png | js | ico | html) $ access_log off; utløper maks.  plassering / # Sjekk om det finnes en fil eller en katalogindeksfil, ellers rute den til index.php. try_files $ uri $ uri / /index.php;  plassering ~ \ .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 applikasjoner / app_one; inkludere fastcgi_params; 

På samme måte peker www.ci-app-two.com domene til app_two:

server listen YOUR_IP: 80; servernavn www.ci-app-two.com; root / var / www / html; indeks index.html index.php; plassering ~ * \. (jpg | jpeg | gif | css | png | js | ico | html) $ access_log off; utløper maks.  plassering / # Sjekk om det finnes en fil eller en katalogindeksfil, ellers rute den til index.php. try_files $ uri $ uri / /index.php;  plassering ~ \ .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 applikasjoner / app_two; inkludere fastcgi_params; 

Selvfølgelig kan du gå videre nå og teste endringene dine for å se om det virkelig fungerer eller ikke! Ikke nøl med å skyte meg noen spørsmål hvis du møter eventuelle problemer.

Og det var den ganske enkle måten å sette opp flere programmer i CodeIgniter-rammen ved hjelp av en enkelt kodebase.

Konklusjon

I dag gikk vi gjennom et interessant aspekt av CodeIgniter-rammeverket som lar deg administrere flere programmer ved hjelp av en enkelt kodebase. De åpenbare fordelene med dette er enkel oppgradering og vedlikehold av din eksisterende kodebase.

CodeIgniter er en kraftig PHP-plattform. Uansett om du bare begynner eller du begynner med neste versjon, ikke glem å sjekke ut hva vi har tilgjengelig for deg, så vel.

Del dine tanker om du allerede har implementert noe lignende eller du ville ha nærmet det på en litt annen måte. Uansett vil jeg gjerne høre tankene dine!