Je suis en train d'écrire un script qui installera WordPress automatiquement pour moi, pour me faciliter la vie car je dois déployer des installations de WordPress constamment.
Cependant, j'essaie de faire en sorte de ne jamais avoir à interagir avec lui, et cela m'empêche de dormir.
Pour générer les mots de passe des bases de données et autres, j'utilise apg, puis j'utilise sed pour remplacer une chaîne de caractères par le bon mot de passe. Cela ressemble à quelque chose comme ça :
DOMAIN="$2"
DB_NAME_USER="$(echo $DOMAIN | sed -e 's/\.//g')"
DB_PASSWORD="$(apg -a 1 -n 1 -m 64 -d -c cl_seed -E \_\"\'\`\/\\\=)"
sed -i "s/database_name_here/$DB_NAME_USER/g" /srv/"$DOMAIN"/wp-config.php
sed -i "s/username_here/$DB_NAME_USER/g" /srv/"$DOMAIN"/wp-config.php
sed -i "s/password_here/$DB_PASSWORD/g" /srv/"$DOMAIN"/wp-config.php
Le remplacement de la base de données et du nom d'utilisateur fonctionne très bien, mais lorsqu'on remplace le mot de passe, six fois sur dix, le remplacement se fait mal et le mot de passe ne peut être remplacé. Je me retrouve avec quelque chose comme ça :
define('DB_PASSWORD', 'Ymb{X-dT~l5Agg9q561A^?n mot de passe_ici D;$U,s>mu*:f7|BK4?oM#OH>cHgsI9GndW@~SkBQ') ;
L'accent est mis sur la question. Au lieu de supprimer la partie "password_here" et de la remplacer par le mot de passe réel, il fusionne en quelque sorte la chaîne au milieu du mot de passe.
J'ai pensé que cela pouvait être un caractère généré par apg qui perturbait sed, mais j'ai supprimé un certain nombre de caractères du mot de passe généré en utilisant -E et j'obtiens toujours ce problème.
La même chose se produit avec d'autres remplacements, qui impliquent toujours apg et sed. Remplacer des choses comme _MOT DE PASSE_ ICI_. entraînent le même problème de temps en temps.
Y a-t-il un moyen de contourner ce problème ou dois-je continuer à essayer de trouver les personnages qui posent problème et les ajouter à la liste d'exclusion d'apg ? Ou peut-être dire à sed de remplacer toute la ligne au lieu de seulement la chaîne que je veux ?
Merci d'avance !
0 votes
Pourquoi ne pas simplement utiliser le
wp
commande ? Mettre au point son propre système est un travail trop important alors qu'il peut déjà faire tout ce dont vous avez besoin.0 votes
Le script gère un peu plus que la simple installation de WordPress, comme l'appel à une API pour ajouter des enregistrements DNS, créer des tmpfs pour la mise en cache et d'autres choses, c'est pourquoi WP-CLI seul ne suffira pas. Je veux dire, la génération du fichier wp-config.php pourrait être faite avec WP-CLI, mais cela ne résoudrait pas les autres problèmes que sed rencontre avec apg, comme la génération d'un fichier .my.cnf avec le mot de passe de la base de données pour un accès plus facile.
0 votes
Pour le reste, vous devriez probablement utiliser quelque chose comme ansible de toute façon.
0 votes
@MichaelHampton Je prévois de passer à Ansible plus tard, mais pour l'instant je préfère écrire ceci en bash parce que j'ai clairement besoin d'améliorer mes compétences en bash, et écrire ceci est une belle expérience d'apprentissage.