Dans la première partie de cette série, nous avons pu utiliser Mina pour déployer WordPress. Nous avons appris que Mina crée un fichier de script shell, puis pousse WordPress sur le serveur pour s'exécuter. Puisque toutes les commandes sont exécutées dans une seule connexion SSH, Mina est très rapide..
En utilisant cela, nous pouvons écrire des tâches pour automatiser le contrôle WordPress. Nous pouvons transformer des tâches WordPress normales telles que créer des utilisateurs, installer un plugin, sauvegarder nos données, etc. en une séquence de commandes shell. Ensuite, nous combinons ces commandes shell dans la tâche Mina.
Mais comment pouvons-nous créer les commandes shell pour effectuer ces tâches? WP-CLI est la réponse. Cela aide à contrôler WordPress en ligne de commande. Vous n'avez pas besoin de vous connecter au tableau de bord WordPress pour effectuer des tâches d'administration. WP-CLI nous donne un ensemble de commandes correspondant aux tâches d'administration de WordPress. Une fois que nous connaissons les commandes WP-CLI pour une tâche spéciale, il ne nous reste plus qu'à les placer dans une tâche Mina..
Un exemple très rapide pour que vous puissiez avoir une tâche de ce que nous avons avec WP-CLI. Lorsque vous commencez à développer un site WordPress, vous devez créer des publications factices ou des comptes d'utilisateurs factices à des fins de test..
En tapant ceci (une fois que vous aurez installé wp-cli) sur votre terminal, vous créerez 100 messages factices sans effort minimal.
php wp-cli.phar publier --compte 100
Vous voyez combien de temps cela vous fera économiser? Mais avons-nous vraiment besoin d'exécuter ces choses en ligne de commande??
Gagner du temps, c'est bien, mais ce n'est pas une nécessité.
Voici une très bonne raison de faire ceci: Sécurité. Certaines actions du tableau de bord WordPress nécessitent une autorisation en écriture sur le wp-content
dossier. Exemple: téléchargement de plugins, téléchargement de thèmes, mise à niveau de WordPress, etc. Plus nous accordons d’autorisation au public, plus nous exposons le danger à notre site..
Imaginons qu'un attaquant accède à notre tableau de bord WordPress. L'attaquant sera en mesure de télécharger des scripts malveillants sous forme de plugin. Un moyen d’empêcher cela est de désactiver l’autorisation en écriture sur tout dossier ou fichier de WordPress, à l’exception du wp-content / uploads
dossier. Par conséquent, personne ne peut télécharger un plugin ou un thème sur un serveur Web..
Dans la première partie de ce didacticiel, nous apprenons à donner le privilège d’écriture à Apache sur wp-content / uploads
dossier. Nous avons changé de bateau propriétaire de wp-content / uploads
à l'utilisateur du serveur Web. De cette façon, le serveur Web peut écrire dans le dossier de téléchargement. WordPress peut donc télécharger des images et écrire dans notre les téléchargements
dossier.
Toute action nécessitant l’écriture dans le dossier WordPress (à l’exception du les téléchargements
dossier) doit être effectué via la ligne de commande. En d'autres termes, nous allons ajouter le fichier manuellement à partir de notre machine locale, valider et déployer sur le serveur avec Mina. Avec cette configuration, notre répertoire WordPress devient une boîte en lecture seule (à l’exception du les téléchargements
dossier utilisé pour stocker nos médias).
La fonctionnalité de téléchargement multimédia de WordPress possède déjà une couche de sécurité pour empêcher le téléchargement de fichiers PHP. Si vous voulez aller plus loin, vous pouvez configurer pour ne pas exécuter les fichiers PHP à l'intérieur les téléchargements
dossier, mais c’est l’idée et ne sera pas couvert dans ce tutoriel. Nous allons nous concentrer davantage sur l'action en ligne de commande avec WP-CLI.
Une fois l'autorisation d'écriture supprimée, la mise à jour automatique ne fonctionnera plus et vous ne pourrez plus simplement mettre à jour l'application à partir du tableau de bord WordPress. Puisque nous gérons notre code WordPress avec Git, nous devrions faire la mise à jour manuellement..
Nous pouvons télécharger le fichier zip / tar WordPress, le décompresser, écraser le fichier WordPress actuel. Ensuite, nous validons le nouveau code, passons à notre référentiel et effectuons un déploiement avec Mina..
Une tâche dans Mina est juste une tâche normale de rake avec un queue
méthode qui a mis en file d'attente les commandes shell à exécuter sur le serveur ultérieurement. Pour toute commande que nous voulons exécuter sur le serveur, nous pouvons utiliser le queue
méthode comme suit.
desc "Décrivez cette tâche"
tâche: exemple de file d'attente "ls # deploy_to" / "file d'attente" actuelle, touchez /tmp/test.log "end
le desc
le bloc est facultatif mais c'est bien d'avoir. Si vous tapez mina
sans aucun paramètre, le desc
les informations seront imprimées à l'écran pour votre référence.
$ mina mina - Outil de déploiement et d’automatisation de serveur très rapide Options: -h, --help Afficher l’aide -V, --version Afficher la version du programme -v, --verbose Afficher les commandes à l’arrivée -S, --simuler Exécuter en simulation mode -t, --trace Affiche les traces lorsque des erreurs se produisent -f FICHIER Utilisez FILE comme configuration de déploiement. Utilisation de base: aide mina # Affiche l'aide. mina init # Crée un exemple de fichier de configuration. tâches mina # Affiche toutes les tâches. Tâches du serveur: mina clean_cache # Nettoyer le cache nginx mina db_export # Exporter la base de données WordPress vers un déploiement partagé / de sauvegarde # Déploie la version actuelle sur le serveur. mina rollback # Revient à la version précédente mina run [commande] # Exécute une commande sur le serveur. mina setup # Configure un site. mina toggle_plugin [plugin] # Basculer un plugin mina toggle_theme [theme] # Activer le thème mina wp_version # Afficher la version WordPress actuelle Toutes les options de Rake sont également disponibles en tant qu'options 'mina'. Voir 'rake --help' pour plus d'informations.
Pour toute commande que nous voulons exécuter sur la machine locale, nous pouvons utiliser le backtick (')
personnage.
tâche: un échantillon met 'pwd' met 'ls -la' end
Testons-le avec échantillon de mina
pour voir ce qu'il imprime sur votre machine locale.
Donc, fondamentalement, une tâche Mina est construite en créant un bloc de task: nom_tâche do //… end
La tâche peut être invoquée avec mina nom_tâche
. Si nous devons passer des arguments à la tâche, nous pouvons utiliser cette syntaxe:
task: nom_tâche,: arg,: another_arg do | cmd, args | met args [: arg] met args [: another_arg] end
Le support []
n’est que la manière Ruby d’accéder à un hachage. Vous pouvez penser à cela comme un tableau associatif PHP. Nous nommons l'argument, puis à l'intérieur du corps de la tâche, nous pouvons facilement accéder à sa valeur avec args [: nom_argument]
. Dans cet exemple, nom_argument est : arg
et : une autre_arg
La tâche peut être appelée avec cette syntaxe: nom de tâche mina [param1, param2]
. Plus d'arguments peuvent être ajoutés et nous y passerons plus de paramètres tels que nom de tâche mina [param1, param2, param3, param4]
.
Vous pouvez imaginer que le Nom de la tâche
est un méthode
nom et nous appelons une méthode et passons son argument. Si le paramètre a un espace, nous devrions envelopper le paramètre entier avec une citation.
Laissez essayer ci-dessus la tâche maintenant. Il imprime simplement ce que nous y passons.
$ mina nom_tâche [valeur1, "valeur 2 avec un peu d'espace"]
valeur1
valeur 2 avec un peu d'espace
Si vous avez utilisé le shell zsh, vous devez vous échapper [et] avec la barre oblique inverse:
$ mina nom_tâche \ [valeur1, "valeur 2 avec un peu d'espace" \]
Une autre chose à noter est la dans le répertoire
méthode de Mina. Il est très probable que vous aurez besoin de CD
dans un répertoire et exécutez quelques commandes. Au lieu de faire la queue manuellementCD
commande, nous pouvons utiliser le pratique dans le répertoire
méthode. Il lancera la commande dans le répertoire indiqué.
tâche: sample do in_directory "# deploy_to / current" do queue "pwd"
fin fin
Ok, assez pour la théorie. Commençons la partie amusante: nous allons installer wp-cli, puis configurer quelques tâches.
Tout ce dont nous avons besoin est de télécharger le fichier PHAR de WP-CLI. C'est un fichier unique qui est exécutable par le moteur PHP. Au lieu d'avoir un tas de fichiers PHP, vous pouvez les compresser en un seul fichier exécutable par PHP.
C'est un moyen très simple de distribuer des paquets PHP. Tout comme sous Windows, vous téléchargez un logiciel dans un seul fichier .exe et vous l'exécutez. Pour faire ça, CD
dans votre code WordPress sur la machine locale, exécutez cette commande:
curl -L https://raw.github.com/wp-cli/builds/gh-pages/phar/wp-cli.phar> wp-cli.phar chmod + x wp-cli.phar
Vérifions que cela fonctionne. Sur votre ordinateur local, lancez wp-cli.phar --info
et vous devriez obtenir la sortie suivante.
./wp-cli.phar --info
PHP binaire: / usr / bin / php
Version PHP: 5.4.24
php.ini utilisé: /etc/php.ini
Répertoire racine WP-CLI: phar: //wp-cli.phar
Configuration globale WP-CLI:
Configuration du projet WP-CLI:
Version WP-CLI: 0.14.1
Maintenant, wp-cli est dans le même répertoire que votre WordPress, commettons-le et
pousser vers votre référentiel et faire un déploiement.
git add wp-cli.phar git commit -m "Ajouter wpcli" git push origine mina deploy
À ce stade, wp-cli se trouve dans notre répertoire WordPress sur le serveur. Faisons de la magie: écrire la tâche Mina avec wp-cli.
Dans cette section, je vais vous montrer comment effectuer certaines tâches de base avec wp-cli et comment les intégrer à Mina afin que vous puissiez avoir un aperçu de l'aspect réel et écrire votre propre tâche en fonction de votre flux de travail et de vos besoins. avoir besoin. Premières choses d'abord: Hello World.
La toute première commande très simple de wp-cli consiste à afficher la version actuelle de WordPress. Laissons créer une autre tâche Mina. Ajoutez ceci à votre config / deploy.rb
fichier:
desc "Tâche" Afficher la version actuelle de WordPress ": wp_version =>: environnement ne file d'attente% [echo" -----> Bonjour tout le monde. Je suis dans cette version: "] file d'attente" cd # deploy_to / current &&. /wp-cli.phar version de base "fin
Maintenant, essayez de l'exécuter:
$ mina wp_version -----> Bonjour tout le monde. Je suis dans cette version: 3.8.1 Temps écoulé: 0.00 secondes
Nous allons télécharger un plugin à la main, l'extraire, l'ajouter au référentiel, le valider, puis déployer et exécuter une autre tâche mina pour activer un plugin..
Voici le code dont nous avons besoin pour cette tâche
desc Tâche "Basculer un plugin": toggle_plugin,: arg1 do | cmd, plugin | queue% [echo "----> Activer le thème # thème"] in_directory "# deploy_to / current" ne file pas% [./ plug-in wp-cli.phar bascule # plugin] end end
Nous mettons en file d'attente une commande echo pour générer du texte. La commande pour activer un plugin de wp-cli est plugin bascule plugin_name
.
Par exemple, disons que nous voulons installer le plugin Mathjax Latex, et que nous l’avons déjà mis dans wp-content / plugins
.
Nous pouvons installer de cette façon:
ajouter le plugin git push wm-content / plugins / mathjax-latex
Maintenant, le plugin est installé. L'activation peut être effectuée via le tableau de bord WordPress. Mais puisque nous avons notre tâche Mina, essayons-la:
$ mina toggle_plugin \ ["mathjax-latex" \] # devrait sortir ----> Activer / désactiver le plugin mathjax-latex Success: Le plugin 'mathjax-latex' est activé.
La mise à jour d'un plugin est exactement la même procédure. Vous téléchargez le plugin, copiez-le sur wp-content / plugins / [plugin-need-to-update]
, commettre et redéployer.
Le flux de travail est juste comme nous le faisons avec le plugin, seulement une commande wp-cli différente pour activer le thème. Il suffit d’ajouter le thème dans Git, d’engager, de pousser, de déployer.
Regardez l'exemple suivant dans lequel nous allons installer ce thème. Nous l'avons déjà téléchargé et mis dans wp-content / themes / natsume.
git add wp-content / themes / natsume git commit -m "Ajouter un plugin mathématique" git push origin master
Encore une fois, l'activation du thème peut être effectuée sur l'interface utilisateur de WordPress. Mais faisons une tâche Mina afin que nous puissions l’activer une fois déployée, à partir de la ligne de commande.
Voici la tâche:
desc "Activer le thème"
tâche: toggle_theme,: theme do | cmd, args |
theme = args [: theme]
queue% [echo "----> Activer le thème # thème"]
in_directory "# deploy_to / current" do
file d'attente% [./ wp-cli.phar theme activate # theme]
fin
fin
Pour activer un thème, exécutez notre tâche:
$ mina toggle_theme \ ["natsume" \]
Cette tâche videra la base de données WordPress dans un fichier gzip dans partagé / sauvegarde
dossier. Si le dossier de sauvegarde n'existe pas encore, nous le créerons, puis nous appellerons la commande wp-cli db pour vider la base de données dans un fichier..
Le nom du fichier sera la combinaison de la date et de l'heure lorsque nous exportons dans ce format "[année] [mois] [jour] _ [heure] [minute] [seconde] .sql.gz".
Composons notre tâche Mina.
desc "Tâche" Exporter la base de données WordPress vers la sauvegarde / sauvegarde partagée ": db_export do # crée un répertoire de sauvegarde si ce n'est pas quitter backup_to =" # deploy_to / shared / backup "file d'attente% [[-d # backup_to] || mkdir -p # backup_to] in_directory "# deploy_to / current" do time = Time.new file = "# time.year # time.month # time.day _ # time.hour # time.min # time.sec .sql.gz "file d'attente% [echo" ----> Sauvegarde de la base de données vers # fichier "] file d'attente% [./ wp-cli.phar db export - | gzip> # backup_to / # file] end end
[-d nom]
est une syntaxe pour vérifier l'existence du dossier. Sinon, nous utilisons mkdir pour le créer.
Ensuite, nous utilisons l'objet Time de Ruby pour extraire la date et l'heure et les concaténer pour créer notre nom de fichier..
Lorsque vous souhaitez sauvegarder, à partir de votre ordinateur local, tapez:
$ mina db_export
Simple et élégant Une commande et vous avez tout.
Très souvent, lorsque vous changez de domaine, vous devez le reconfigurer dans wp-config.php ou mettre à jour manuellement le domaine dans la base de données. De toute façon, c'est beaucoup de travail.
Il suffit de résoudre ce problème une fois. La commande pour mettre à jour une option est: wp-cli option update [clé_option] [valeur_option]
. Selon la documentation de WordPress, le domaine comporte deux options: maison
et URL du site
.
update_option ('siteurl', 'http: //example.com'); update_option ('home', 'http: //example.com');
Alors, voici notre tâche:
desc "Changer de domaine en un nouveau"
tâche: update_domain,: domain do | cmd, args |
domaine = args [: domaine]
met le domaine
in_directory "# deploy_to / current" do
file d'attente% [./ wp-cli.phar option update home # domain]
file d'attente% [./ option wp-cli.phar mise à jour siteurl # domaine]
fin
fin
Invoquez-le depuis la ligne de commande:
$ mina update_domain \ ["http://log.axcoto.com" \]
Une fonctionnalité très pratique de wp-cli est la post-génération. Pendant la période de test, vous pouvez créer manuellement de nombreuses publications factices. La commande pour créer un post avec wp-cli est wp-cli post génère --count = quantité
. Comme toujours, vous pouvez lire la syntaxe vous-même sur le site Web de wp-cli.
Nous allons créer un appel de tâche gen_dummy_post
avec un paramètre est le nombre de messages. Pour obtenir le contenu de la publication, nous utiliserons curl pour obtenir un texte lorem ipsum via le Loripsum API. cURL est un outil de ligne de commande généralement préinstallé sous Linux / Mac OS qui vous permet d’envoyer une requête HTTP..
Vous pouvez le voir comme un navigateur, mais en ligne de commande. Ainsi, au lieu de taper une adresse dans votre navigateur et de voir la sortie sur votre navigateur, vous donnez à cURL une adresse de site Web, qui renvoie le contenu du site..
Essayons ci-dessous la commande:
$ curl http://loripsum.net/api/5Lorem ipsum dolor sit amet, consectetur elip adipiscing elit. Ab son oratores, ab son imperatores ac rerum publicarum principes extiterunt. Cupidites non Epicuri divisione finiebat, sed sua satietate. Venit ad extremum; Duo Reges: constructio interrete. Répondre à totidem verbis. Quis Aristidem non mortuum diligit? Quid Zeno?
Nihil acciderat ei, quod nollet, nisi quod anulum, quo delectabatur, in mari abiecerat. Nondum autem explicitatum satis, erat, quid maxime natura vellet. Quod autem satis est, un accès rapide, nimium est; Tum ille: Ain tandem? Sed ille, ut dixi, vitiose. Quantum Aristoxeni ingenium consumptum videmus in musicis? Quid enim possumus hoc agere divinius? Vous consommez beaucoup de choses, mais vous voulez vraiment, vous voulez que ça se passe.
Sed quid moins probandum quam esse aliquem beatum nec satis beatum? Que pensez-vous de la qualité de la vie? Tout le monde dicérent alium alio beatiorem! Iam ruinas videres. Beatum, renseigner. Deinde disputat, quod cuiusque generis animantium statui deceat extremum. Nihil enim iam habes, quod ad corpus referas;
Quod ea non occurrentia finger, vincunt Aristonem; Non semper, inquam; Quid de Platone aut de Democrito loquar? Faites-vous une idée de la fête tant que vous êtes affiliés, mais rien n’est pour vous, c'est une bonne idée, mais vous en avez besoin. Scaevolam M. Recte, inquit, intellegis. Uterque enim summo bono fruitur, id est voluptate. Sic exclusis sententiis reliquorum cum praeterea nulla esse possit, haec antiquorum valeat necesse est. Sed fortuna fortis; Mihi quidem Antiochum, audition, satis belle videris attendere.
Vous voulez savoir quoi, tout est fait pour vous, si vous possédez un macello peti? Nonne igitur tibi videntur, inquit, mala?
Ainsi, lorsque vous l'exécutez, cinq paragraphes de lorem ipsum sont renvoyés. Vous pouvez changer le numéro après / api
pour obtenir plus de paragraphe.
Nous savons avoir du contenu, nous allons l'envoyer à wp-cli pour créer un post. La syntaxe pour le faire est la suivante:
curl http://loripsum.net/api/5 | wp post generate --post_content --count = 10
Remarquez le caractère |
, cela signifie que nous sommes en train de rediriger le contenu vers la prochaine commande. Nous savons avoir la syntaxe, nous pouvons commencer à composer la tâche
desc "Tâche" Générer une publication aléatoire ": gen_dummy_post,: combien font | cmd, args | howmany = args [: howmany] met combien de répertoires in_directory "# deploy_to / current" ne font la file d'attente% [curl http://loripsum.net/api/5 | ./wp-cli.phar publier --count = # combien de fois --post_content] end end
Une fois que vous connaissez la syntaxe de la tâche Mina, vous pouvez en savoir plus sur la commande WP-CLI pour écrire votre propre tâche, par exemple créer un utilisateur, générer des utilisateurs factices à des fins de test…
Si vous voulez en savoir plus sur wp-cli, vous pouvez visiter ces liens:
Nous savons maintenant assez bien comment écrire les tâches Mina, comment utiliser le pouvoir de wp-cli. Avec la combinaison de ces deux outils, nous espérons que vous déploierez très rapidement et que votre installation WordPress sera plus sécurisée qu’avant, tout en réduisant le temps consacré aux tâches d’administration..
Ne vous limitez pas. Les informations contenues dans ce didacticiel sont très succinctes. Ajoutez d’autres éléments à vos fichiers de tâches et indiquez-nous vos commentaires..
Si vous avez un problème, s'il vous plaît laissez un commentaire, j'aime aider et parler. Bonne automatisation WordPress!