Comment gérer plusieurs applications dans CodeIgniter

Aujourd'hui, nous allons explorer comment gérer plusieurs applications dans la structure Web CodeIgniter à l'aide d'une base de code unique. Au cours de cette opération, nous allons créer deux applications CodeIgniter différentes qui partageront le codeBase CodeIgniter.

Le partage de la base de code entre différentes applications n'est pas une nouveauté, car il est déjà utilisé par différents frameworks et systèmes à source ouverte, et CodeIgniter n'est pas différent. Il vous permet facilement de gérer plusieurs applications partageant la bibliothèque principale CodeIgniter et les fichiers d'API, tout en utilisant différentes bases de données et configurations spécifiques à un site..

Pour commencer, nous allons passer en revue les avantages de la configuration multisite et, au fur et à mesure, nous présenterons une démonstration pratique de la procédure de configuration de plusieurs applications dans le cadre CodeIgniter..

Avantages de la configuration multisite

Dans cette section, nous soulignerons quelques avantages d’une configuration multisite..

L'un des avantages les plus évidents que je puisse d'emblée souligner est que la configuration multisite partage une base de code commune, ce qui devrait faciliter les processus de mise à niveau et de maintenance de votre application..

Par exemple, imaginons que vous avez dix applications CodeIgniter différentes sous votre ceinture. Et vous venez de savoir qu'une nouvelle version du framework CodeIgniter est disponible pour la mise à niveau et que vous souhaitez le mettre à niveau dès que possible pour vous assurer que le code reste sécurisé et stable..

Si vous disposiez d'une base de code distincte pour chacune de vos applications, il serait certainement fastidieux de passer par chacun des sites et de le mettre à niveau à tour de rôle. Avec la configuration multisite, il vous suffit de le faire une fois, car la base de code est partagée sur tous les sites.!

Ensuite, il vous permet d'utiliser une base de données différente pour chaque application même si elles partagent une base de code commune. En fait, c’est l’un des cas d’utilisation les plus populaires de la configuration multisite.!

Outre l'utilisation d'une base de données différente pour chaque application, vous pouvez créer une configuration qui utilise la même base de données mais un thème ou une présentation différent dans l'interface frontale..

Si vous utilisez encore l'approche FTP pour déplacer vos fichiers de site sur différents serveurs, je dirais que vous allez adorer l'approche multisite, car elle minimise considérablement votre travail.!

Comment créer plusieurs applications

Dans cette section, nous allons configurer la structure de répertoires de base afin de mettre en œuvre une configuration multisite..

À la racine de votre application CodeIgniter, créez un applications annuaire. C'est le répertoire principal qui contiendra nos différentes applications.

Ensuite, allez-y et créez deux nouveaux répertoires-applications / app_one et applications / app_two. Bien sûr, vous pouvez le nommer comme vous le souhaitez, mais je vais garder les choses simples pour le moment..

Ainsi, comme vous pouvez le constater, nous allons configurer deux applications différentes qui utiliseront la base de code unique du framework CodeIgniter. Bien que la configuration multisite réutilise la plupart des fichiers de la structure CodeIgniter, nous devons encore dupliquer quelques fichiers et répertoires dans chaque application créée..

Permettez-moi de lister rapidement les fichiers et répertoires que vous devez copier à partir de l'application par défaut..

Copiez les répertoires suivants du répertoire d’application par défaut dans applications / app_one et applications / app_two:

  • cache
  • config
  • les journaux

Comme vous pouvez le voir, il est évident d’avoir des répertoires séparés pour cache et les journaux pour chaque application. Et le config Le répertoire est indispensable pour le fonctionnement de votre application CodeIgniter, nous allons donc le copier quand même..

Ensuite, copions quelques fichiers avec les répertoires nécessaires pour nous permettre de tester notre application multisite..

Copiez les fichiers suivants sur notre app_one et app_two applications de l'application CodeIgniter par défaut:

  • contrôleurs / welcome.php
  • vues / erreurs
  • views / welcome_message.php

Pour votre référence rapide, le contrôleurs / welcome.php Le fichier doit ressembler à:

 * @voir https://codeigniter.com/user_guide/general/urls.html * / public function index () $ this-> load-> view ('welcome_message'); 

Et le views / welcome_message.php le fichier doit ressembler à.

    Bienvenue chez CodeIgniter    

Bienvenue sur CodeIgniter! Vous parcourez Application One!

La page que vous regardez est générée dynamiquement par CodeIgniter.

Si vous souhaitez modifier cette page, vous la trouverez à l'adresse suivante:

application / views / welcome_message.php

Le contrôleur correspondant à cette page se trouve sur:

application / contrôleurs / Welcome.php

Si vous explorez CodeIgniter pour la toute première fois, commencez par lire le Guide de l'utilisateur..

Page rendue en temps écoulé secondes. '. CI_VERSION. '': "?>

Bien sûr, vous devez modifier le message suivant dans le fichier de vue afin que nous puissions différencier l’application lors des tests..

Pour applications / app_one / views / welcome_message.php, cela devrait ressembler à:

Bienvenue sur CodeIgniter! Vous parcourez Application One!

Et pour applications / app_two / views / welcome_message.php, cela devrait ressembler à:

Bienvenue sur CodeIgniter! Vous parcourez l'application deux!

Maintenant, nous avons tout fait en ce qui concerne notre configuration multisite. Cependant, cela ne fonctionnera pas encore, car nous devons toujours informer CodeIgniter de notre configuration multisite, car elle charge toujours l’application par défaut située dans le répertoire. application annuaire.

La touche finale

Examinons rapidement le paramètre qui configure le répertoire d'application par défaut. Allez-y et ouvrez le index.php fichier à la racine de votre application et recherchez l'extrait de code suivant.

/ * * --------------------------------------------------- ---------------- * NOM DU RÉPERTOIRE DES APPLICATIONS * ----------------------------- ---------------------------------- * * Si vous voulez que ce contrôleur frontal utilise une "application" différente * répertoire que celui par défaut, vous pouvez définir son nom ici. Le répertoire * peut également être renommé ou déplacé n’importe où sur votre serveur. Si vous le faites, * utilisez un chemin de serveur absolu (complet). * Pour plus d'informations, consultez le guide de l'utilisateur: * * https://codeigniter.com/user_guide/general/managing_apps.html * * NO TRAILING SLASH! * / $ application_folder = 'application';

L’extrait ci-dessus indique clairement que cela vous permet de définir le chemin de votre application par défaut. C'est donc l'endroit où nous pouvons apporter des modifications pour que l'application par défaut soit sélectionnée dans un répertoire autre que celui par défaut..

Bien sûr, vous pouvez aller de l'avant et faire tout de suite quelque chose comme ça, et cela devrait faire tourner app_one application.

$ application_folder = 'applications / app_one';

D'autre part, que feriez-vous si vous voulez courir app_two? Comme un coup rapide, vous pouvez copier le index.php déposer dans index_app_one.php et index_app_two.php pour chaque application. Dans votre hôte virtuel, veillez à apporter les modifications en conséquence..

D'autre part, je préfère une approche légèrement différente et je voudrais m'appuyer sur les ENV variable pour choisir entre les différentes applications au moment de l'exécution.

Par exemple, vous pouvez configurer la personnalisation ENV variable dans NGINX comme indiqué dans l'extrait suivant.

// définit la variable env CI_DEFAULT_APP dans la directive "location" de vhost fastcgi_param CI_DEFAULT_APP applications / app_one;

Si vous utilisez le serveur Web Apache, vous pouvez obtenir la même chose avec:

SetEnv applications CI_DEFAULT_APP / app_one

Ensuite, révisons le code dans le index.php fichier qui profite de la ENV variable pour décider de l'application par défaut à exécuter.

… $ Application_folder = (isset ($ _ SERVER ['CI_DEFAULT_APP']))? $ _SERVER ['CI_DEFAULT_APP']: 'application');… 

Comme vous pouvez le constater, nous vérifions l’existence de la CI_DEFAULT_APP ENV variable en premier lieu, et si elle n'est pas disponible, nous retomberons sur l'application par défaut.

Le plus souvent, vous souhaitez exécuter vos différentes applications sur différents domaines. Idéalement, j'aimerais utiliser deux hôtes virtuels différents pour chaque application. Un exemple rapide de chaque hôte virtuel devrait ressembler à ceci dans le contexte de NGINX.

Le domaine www.ci-app-one.com pointe vers app_one:

serveur listen YOUR_IP: 80; nom_serveur www.ci-app-one.com; root / var / www / html; index index.html index.php; emplacement ~ * \. (jpg | jpeg | gif | css | png | js | ico | html) $ accès_log off; expire max;  location / # Vérifiez si un fichier ou un fichier d'index de répertoire existe, sinon, dirigez-le vers index.php. try_files $ uri $ uri / /index.php;  emplacement ~ \ .php $ racine / 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 applications / app_one; inclure fastcgi_params; 

De même, le domaine www.ci-app-two.com pointe vers app_two:

serveur listen YOUR_IP: 80; nom_serveur www.ci-app-two.com; root / var / www / html; index index.html index.php; emplacement ~ * \. (jpg | jpeg | gif | css | png | js | ico | html) $ accès_log off; expire max;  location / # Vérifiez si un fichier ou un fichier d'index de répertoire existe, sinon, dirigez-le vers index.php. try_files $ uri $ uri / /index.php;  emplacement ~ \ .php $ racine / 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 applications / app_two; inclure fastcgi_params; 

Bien sûr, vous pouvez maintenant aller de l'avant et tester vos modifications pour voir si cela fonctionne vraiment ou non! N'hésitez pas à me lancer des questions si vous rencontrez des problèmes.

Et c’était la manière assez simple de configurer plusieurs applications dans le cadre CodeIgniter à l’aide d’une seule base de code..

Conclusion

Aujourd'hui, nous avons étudié un aspect intéressant du framework CodeIgniter qui vous permet de gérer plusieurs applications à l'aide d'une seule base de code. Les avantages évidents de cette solution sont la mise à niveau et la maintenance faciles de votre base de code existante..

CodeIgniter est une plate-forme PHP puissante. Que vous veniez de commencer ou que vous commenciez avec la prochaine version, n'oubliez pas de vérifier ce que nous avons à votre disposition..

Partagez vos pensées si vous avez déjà implémenté quelque chose de similaire ou si vous l'auriez abordé d'une manière légèrement différente. De toute façon, j'aimerais entendre vos pensées!