Élevez votre PHP au nuage

Cet article vous guidera dans l'hébergement en nuage pour votre application PHP avec Pagoda Box. Il détaillera la gestion des dépendances PHP, la mise en place de vos bases de données MySQL (et le débogage local) et la personnalisation aisée de divers aspects de PHP..


introduction

En tant que développeur qui joue avec PHP depuis l'âge de 11 ans, il est difficile de se souvenir de nombreuses choses qui ont absolument changé ma façon de développer. En 2007, j'ai pris CodeIgniter, ce qui m'a amené à repenser la structure de mon code et à utiliser la POO pour faire avancer les choses. En 2010, j'ai commencé à travailler avec Git et Git Flow pour le travail d'équipe et la création de branches, mais récemment, la chose la plus importante pour changer mon flux de travail de développement a été une "plate-forme en tant que service", appelée Pagoda Box..

Vous êtes peut-être un développeur rockstar qui sait comment configurer une pile LAMP, mais combien de temps de développement pouvez-vous perdre en la configurant, en l’optimisant, en la sécurisant, en la verrouillant, en réduisant les ressources et en surveillant le trafic.

Chaque jour, je vois un développeur qui se bat pour défendre son serveur contre un groupe de pirates informatiques ou de scripts, se fait submerger de ports, a du mal à faire fonctionner un correctif de sécurité aléatoire, a du mal à migrer vers des serveurs plus gros, plus puissants, se met en colère pour essayer de configurer Capistrano , la liste continue. Des services tels que Pagoda Box peuvent vous aider à éviter tout cela. alors voyons comment.


Étape 1 - Inscrivez-vous à la boîte à pagodes

La première étape consiste à vous procurer un compte. C'est gratuit, alors allez-y.


Étape 2 - Créez votre application

Chaque application doit avoir un nom unique, car elles sont également utilisées pour les URL de prévisualisation. Vous pouvez appeler cette application comme bon vous semble, car vous la cacherez bientôt derrière un domaine, mais appelez-la comme une évidence et une mémorable..


Étape 3 - Configurer Git

Git est un système de gestion de versions extrêmement utile. À l'heure actuelle, il est très populaire grâce à des sites tels que GitHub qui permettent l'hébergement gratuit de code social, mais il est également idéal pour le déploiement de votre code..

Si vous êtes nouveau sur Git, essayez le cours intensif.

Si vous ne l'avez pas déjà fait, configurez Git. Leur documentation vous aidera à démarrer. Les utilisateurs Windows trouveront cela un peu plus difficile que les utilisateurs OSX ou Linux, donc si vous avez une machine virtuelle Ubuntu à traîner, ce serait un bon moment pour le lancer..


Étape 4 - Créez votre clé SSH

Pour envoyer votre code dans Pagoda Box, vous devez autoriser votre ordinateur à accéder en mode push aux applications de votre compte. Créez une clé SSH et collez-la ici.


Étape 5 - Déployez votre code

Commencez par configurer un dossier pour votre application, puis configurez les télécommandes Git. Les télécommandes sont essentiellement des pseudonymes pour une URL de référentiel. En installant cette télécommande, nous faisons savoir à notre dépôt Git local comment transmettre du code à Pagoda Box..

 $ mkdir my-awesome-app && cd mon-awesome-app $ git init Initialisation du référentiel Git vide dans /Users/phil/Sites/my-awesome-app/.git/ $ git remote ajouter une pagode [email protected] : mon-génial-app.git

Maintenant que tout le compte et l'environnement sont configurés, nous pouvons commencer à déployer du code. Pour le moment, nous allons déployer une application Hello World simple:

 $ echo ''> index.php

C'est un petit truc en ligne de commande pour mettre du texte dans un fichier. Vous pouvez également créer ce fichier avec votre éditeur de texte préféré ou IDE.

 $ git add index.php $ git commit -m "OH HAI" [maître (root-commit) 6aa23f4] OH HAI 1 fichiers modifiés, 1 insertions (+), 0 suppressions (-) créent le mode 100644 index.php

Jusqu'à présent, nous avons créé un nouveau dossier pour notre site Web, initialisé Git, ajouté une télécommande qui indique à Git l'emplacement de l'application Pagoda Box et ajouté un nouveau index.php fichier, qui dira simplement Bonjour le monde!. Suivant:

 $ git push pagoda master Comptage d'objets: 3, terminé. Écriture d'objets: 100% (3/3), 244 octets, fait. Total 3 (delta 0), réutilisé 0 (delta 0) :: Déploiement automatique activé pour 'maître' +> à modifier, visitez https://dashboard.pagodabox.com/apps/my-awesome-app/admin :: Deploying à 6aa23f4 sur le maître :: Analyse du fichier Box :: Exécution du déploiement +> Init submodules +> Amorçage web1.1 - [22 févr. 2012 20:38:41] AVIS: fpm est en cours d'exécution, pid 54 - [22 févr. 2012 20:38:41] AVIS: prêt à gérer les connexions +> Propagation des mises à jour du réseau :: Nettoyage Pour [email protected]: my-awesome-app.git * [nouvelle branche] maître -> maître

C'est là que se passe la magie. Vous pousserez vers une télécommande Git comme n'importe quel autre référentiel, mais vous verrez ensuite la sortie de Pagoda Box prendre la relève et créer un déploiement. Cela déclenchera chaque fois une nouvelle instance et basculera instantanément de l'instance active à cette nouvelle instance, ce qui signifie des mises à jour immédiates, contrairement aux systèmes de déploiement de fichiers lents basés sur FTP. De plus, contrairement à certains services similaires, tous vos fichiers temporaires (cache, journaux, téléchargement d’images, etc.) seront présents après un redimensionnement ou un redéploiement. Impressionnant!

Maintenant, si vous actualisez la page Pagoda Box, vous verrez un tableau de bord avec toutes sortes d'options.


Étape 6 - Création d'un fichier boxfile

Pagoda Box a un fichier de configuration spécial: Boxfile. Cela va à la racine de votre application. Un exemple avancé peut ressembler à quelque chose comme ceci:

 web1: ############################################## ## RÉGLAGES GÉNÉRAUX ############################################## ## shared_writable_dirs: [/ system / cms / cache, / system / cms / logs, / uploads, / addons] ######################## ######################################################################################################################################################################### ########################### index_list: [index.php] ################ ################################ ## PARAMÈTRES SPÉCIFIQUES PHP ############## ################################### php_version: 5.3.8 php_extensions: [mysqli, curl, gd, mbstring] php_date_timezone: Europe / London php_max_execution_time: 30 php_max_input_time: 60 php_post_max_size: 25M php_file_uploads: Sur php_upload_max_filesize: 20M php_max_filesize: 20M

Cet exemple vous donne la possibilité de créer des dossiers accessibles en écriture, définissez votre index_list (qui est index.php par défaut) et changer toutes sortes de paramètres PHP qui seraient normalement dans un php.ini fichier.

La ligne la plus importante ici est:

 php_extensions: [mysqli, curl, gd, mbstring]

Pagoda Box vous permet de lister les dépendances de vos applications. Le "mysqli"driver est" MySQL Improved "que vous devriez commencer à utiliser, car" mysql "sera obsolète en PHP 5.4." curl "et" gd "sont assez standards et" mbstring "vous aide à travailler avec le code UTF-8.

Il est bon de savoir qu'ils sont disponibles - ainsi que de nombreux autres -, mais pour ce tutoriel, nous n'aurons besoin que des éléments suivants:

 php_extensions: [pdo, pdo_mysql]

Faisons donc notre nouveau fichier Boxfile et sauvegardons-le:

 web1: php_extensions: [pdo, pdo_mysql]

Nous utiliserons cela plus tard.


Étape 7 - Créer une base de données

Au moment de la rédaction de ce document, Pagoda Box ne prend en charge que les bases de données MySQL, ce qui est bien, car c’est ce que la majorité des développeurs utilisent..

Nous pouvons lancer autant de petites instances de base de données que nous le souhaitons gratuitement; nous ne commençons à payer que lorsqu'ils grandissent, de sorte que vous ne serez pas surpris par une facture massive destinée uniquement à la construction d'un site Web. Tout comme les instances Web, elles peuvent également être adaptées pour évoluer avec votre site Web..

Pour en créer un nouveau, cliquez sur le bouton + icône et lui donner un nom. Vous verrez une barre de progression en haut pendant la construction; alors la page s'actualisera.


Étape 8 - Connexion à partir de votre application

Se connecter via PHP est un jeu d'enfant. On vous donne plusieurs $ _SERVER les variables, qui contiennent des informations d'identification pour chaque base de données que vous avez. Cela signifie que vous pouvez conserver les mots de passe codés en dur dans votre application - ce qui est très utile si vous ne voulez pas que tous vos développeurs voient les mots de passe actifs, ou si vous avez tout votre site Web sur GitHub, comme certains commencent à le faire..

 $ db = new PDO (sprintf ('mysql: hôte =% s; nombase =% s; port =% s', $ _SERVER ['DB1_HOST'], $ _SERVER ['DB1_NAME'], $ _SERVER ['DB1_PORT'] ), $ _SERVER ['DB1_USER'], $ _SERVER ['DB1_PASS']);

Ceci est un exemple de base des variables utilisées - la connexion à votre base de données MySQL via l'extension PDO. Si vous utilisez un framework, tel que CodeIgniter, vous pouvez insérer ces variables dans votre database.php fichiers de configuration.


Étape 9 - Connexion à distance

PhpMyAdmin est installé sur certains serveurs Web - en particulier les configurations cPanel standard ", et peut être configuré pour autoriser l'accès à distance aux bases de données MySQL..

Au lieu de cette approche, Pagoda Box utilise Ruby Gem pour, entre autres, créer un tunnel SSH sécurisé temporaire. Cela signifie que vos bases de données MySQL sont verrouillées derrière un pare-feu et sont uniquement accessibles via cette connexion SSH sécurisée..

Donc, pour installer la gemme exécutez:

 $ sudo gem install pagoda

Ensuite, pour créer le tunnel, lancez simplement:

 tunnel pagode $ db1

La première fois que vous exécutez cette commande (ou toute autre commande de pagode bijou), un nom d'utilisateur et un mot de passe vous seront demandés. Ceci est votre nom d'utilisateur et votre mot de passe Pagoda Box, et est nécessaire pour que la gemme puisse agir en votre nom et n'a rien à voir avec votre base de données.

 $ pagoda tunnel db1 il semble que ce soit la première fois que vous utilisiez notre client Nom d'utilisateur: someguy Mot de passe: Tunnel Established! Accepter les connexions sur: -------------------------------------------------- - HOST: 127.0.0.1 (ou localhost) PORT: 3307 USER: (trouvé dans le tableau de bord pagodabox) PASS: (trouvé dans le tableau de bord pagodabox) --------------------- -------------------------- (note: ctrl-c Pour fermer ce tunnel)

Accédez à votre tableau de bord et cliquez sur la base de données, puis cliquez sur "Afficher les informations d'identification" pour afficher une fenêtre d'informations semblable à celle-ci:

Utilisez ces informations d'identification pour vous connecter. N'oubliez pas de spécifier quel port; il est répertorié dans la sortie de la gemme ci-dessus - pas la boîte verte. Rappelez-vous que vous vous connectez au tunnel local et non directement à la base de données..


Étape 10 - Créer un blog

Quel genre de tutoriel serait-il s'il ne s'agissait pas de créer un blog en 20 minutes??

Pour tout développement, vous devriez vraiment construire des choses localement en utilisant MAMP, XAMPP, WAMP, etc., puis déployer le code et les modifications de base de données en utilisant une sorte de "Migration" ou de suivi des modifications de schéma, mais nous procéderons de la manière habituelle..

Commencez par vous connecter à votre base de données à distance via le tunnel, puis lancez cette requête pour créer une nouvelle table:

 CREATE TABLE posts ('id' int (11) NOT NULL AUTO_INCREMENT, 'title' varchar (255) NOT NULL, 'slug' varchar (255) NOT NULL, texte 'summary' NOT NULL, 'corps' NOT NULL, ' created_at 'int (11) NON NULL,' updated_at 'int (11) NON NULL, PRIMARY KEY (id)) ENGINE = InnoDB; INSERT INTO posts VALUES ('1', 'Les femmes adorent les mecs qui utilisent FuelPHP', 'Les amours-femmes-mecs-qui-utilisent-fuelphp', 'Il est prouvé que les filles adorent les développeurs, mais les choses ne l'ont jamais été aussi Bon pour les développeurs PHP. Tous ceux qui commencent à utiliser FuelPHP auront 150% de femmes supplémentaires au cours du premier mois. Fait. ',' Il est prouvé que les filles aiment les développeurs, mais les choses n'ont jamais été aussi bonnes pour les développeurs PHP. En effet, FuelPHP génère 150% plus de femmes que le premier mois. Fact. ',' 1322825332 ',' 1322934052 '), (' 2 ',' Les personnes qui font écho au HTML depuis une application meurent plus tôt ',' Mauvaises pratiques ',' Les scientifiques ont Il est prouvé que les développeurs PHP qui font directement écho à l’HTML de nos fichiers PHP meurent plus jeunes. Cela arrive souvent pendant que le développeur est au bureau. Pendant qu’ils sont assis, ils souffrent de nombreuses blessures, mais apparemment, il n’ya pas de témoins, même si leurs collègues étaient dans le bureau. office \ "refactoring bad code \" toute la journée. ',' Texte important du corps ',' 1322826479 ',' 1322826479 ');

Avec quelques postes de test en place, nous pouvons créer ce fichier index.php:

 query ('SELECT * from posts') sous la forme $ row) echo "

$ row ['title']

"; écho "

Posté le: ".date ('l jS \ of F Y', $ row ['created_at']])."
"; echo $ row ['summary']."

";

Une fois ce fichier enregistré et notre nouveau fichier Boxfile (à partir de l'étape 6) en place, nous pouvons déployer ces nouvelles modifications:

 $ git add Boxfile index.php $ git commit -m "Modifications de Boxfile et déployé index.php" $ git push pagoda master

Aller à "http://my-awesome-app.pagodabox.com" et voir la sortie:

Ce n'est clairement pas quelque chose que vous voudrez exécuter sur votre site Web, mais cela en fait assez. Vous pouvez voir que le contenu de votre base de données est en cours de sortie vers le navigateur et que votre URL de démonstration fonctionne. Vous pouvez remplacer ceci par votre CMS de choix ou créer quelque chose de personnalisé.


Étape 11 - Utilisez un domaine réel

Il ne sert à rien d'avoir votre nouveau blog merveilleux sur un pagodabox.com sous-domaine; alors garons un domaine sur le dessus.

Tout d’abord, dans l’onglet DNS / SSL de votre tableau de bord, ajoutez quelques entrées pour votre domaine:

Maintenant que votre application est prête à accepter un domaine, vous devez vous adresser à celui qui gère le DNS pour votre domaine. Accédez à la zone de gestion DNS et définissez une UNE fiche pour "myawesomedomain.com" être "50.97.141.37" - qui est l'adresse IP indiquée sur l'interface de votre application. Ces adresses IP ne sont pas uniques par application, mais ne seront pas toujours les mêmes. Définir un enregistrement CNAME pour "www.myawesomedomain.com" alias "myawesomedomain.com" et vous devriez être tous ensemble.


Résumé

Tout cela peut sembler assez différent de votre façon de travailler en ce moment, mais commencez à penser à combien de travail vous vous épargnerez à long terme. L'utilisation de PaaS est la même raison pour laquelle nous utilisons jQuery sur du JavaScript natif, ou des frameworks PHP sur l'écriture de PHP natif. Pourquoi déconner avec des détails mineurs alors que vous pouvez vous concentrer sur la création d'une application géniale?

PHPFog et Orchestr.io sont des alternatives qui offrent des services similaires. Amusez-vous et merci d'avoir lu!