À l'occasion de la migration numéro trente huit mille cinq cent quatre vingts six.
📢 Attention : les extraits de code présents dans ce fichier sont là à titre d'illustration, et diffèrent du code utilisé en pratique. Pour avoir une idée précise des choses qui se passent, il faudra plonger dans le vrai code !
ℹ️ Les addons doivent être installés à partir des packages zip, par exemple
Serotonin/_releases/Xyzt-Serotonin-1.0.0-dev.zip
, pas à partir du code
source !
-
Logs
nginx
:$> sudo cat /var/log/nginx/www.psychonaut.fr-error.log
-
Recharger la config de
nginx
:$> sudo systemctl reload nginx.service
-
Packager un addon Xenforo :
$> sudo php /var/www/my_webapp/www/cmd.php xf-addon:build-release Xyzt/SuperAddonDeLaMort
-
Je veux
chmod
tous les sous-dossiers d'un répertoirenudes
en755
(rwxr-xr-x
), et tous les fichiers inclus en644
(rw-r--r--
) :$> cd nudes $> chmod -R 755 . $> find . -type f -exec chmod 644 -- {} +
Les configuration des autres services que Xenforo et consorts (PHPMyAdmin, Cockpit...) ne sont pas présentes sur ce repo.
Configuration racine pour le domaine apex.
Paramètres généraux pour le logiciel Xenforo.
Configuration de PHP et lien avec fastcgi
et php-fpm
.
Rewrite nécessaire au fonctionnenement de Kétamine, addon chargé de la redirection des anciens liens de sujet.
Redirection des anciens liens de topic (car les liens morts c'est l'enfer)
Addon custom Kétamine exécuté en production.
-
NE PAS NUKE la table de logs issue de l'importation de MyBB !
-
Importer l'ancienne table du plugin SEO
psy_google_seo
dans la DB sur laquelle est déployée Xenforo.
-
Ancienne URI :
➡️ https://www.psychonaut.fr/Thread-SOS-modo-battu-VS-Solidarit%C3%A9-drogu%C3%A9-r%C3%A9prim%C3%A9
-
nginx
s'occupe de faire un rewrite, car en l'état actuel cette URL n'est pas routable par le router de Xenforo. Le rewrite est en gros sous la forme :location /Thread- { rewrite ^/Thread-Jadore-me-droguer$ mybb-thread/Jadore-me-droguer/ permanent; }
-
Substring issue du router :
➡️
SOS-modo-battu-VS-Solidarit%25C3%25A9-drogu%25C3%25A9-r%25C3%25A9prim%25C3%25A9
-
Percent-decode :
➡️
SOS-modo-battu-VS-Solidarité-drogué-réprimé
-
Requête sur l'ancienne table du plugin SEO :
SELECT `id` FROM `psy_google_seo` WHERE `url` = "SOS-modo-battu-VS-Solidarité-drogué-réprimé" AND `idtype` = 4 AND `active` = 1;
➡️
15674
-
Requête sur la table de logs d'importation :
SELECT `new_id` FROM `import_log_psychonaut_2` WHERE `content_type` = "thread" AND `old_id` = 15674;
➡️
15389
-
Requête sur la table de threads de Xenforo :
SELECT * FROM `xf_thread` WHERE `thread_id` = 15389;
➡️
15389 4 [SOS modo battu] VS [Solidarité drogué réprimé] 1561 307516 2876 Loutre 1285847487 1 visible 1 ...
-
Résolution d'URI par Xenforo, qui renvoie un code HTTP
301 moved permanently
:➡️ https://www.psychonaut.fr/index.php?threads/sos-modo-battu-vs-solidarite-drogue-reprime.15389/
-
Après rewrite par
nginx
:➡️ https://www.psychonaut.fr/threads/sos-modo-battu-vs-solidarite-drogue-reprime.15389/
Addon Sérotonine a exécuter une seule fois.
-
NE PAS NUKE la table de logs issue de l'importation de MyBB !
-
Avoir l'ancienne table du plugin de likes
psy_g33k_thankyoulike_thankyoulike
accessible au moment de lancer le script. Elle peut être supprimée après. -
Se préparer à un downtime de quelques minutes.
-
SELECT `pid`, `uid`, `dateline` FROM `psy_g33k_thankyoulike_thankyoulike` ORDER BY `psy_g33k_thankyoulike_thankyoulike`.`tlid` DESC;
655328 1317 1702746012 655327 5699 1702739963 655271 1317 1702732244 ...
-
SELECT `new_id` FROM `import_log_psychonaut_2` WHERE `content_type`="post" AND `old_id`=655328;
629981
-
SELECT `new_id` FROM `import_log_psychonaut_2` WHERE `content_type`="user" AND `old_id`=1317;
1317
Attention, des fois la requête ne retournera rien car il y a des users qui sont passés à la trappe lors de l'importation somehow...
-
Préparer ses jouets :
protected function getReactionRepo() { return \XF::app()->em()->getRepository('XF:Reaction'); } protected function findUser($id) { return \XF::finder('XF:User')->where('user_id', $id)->fetchOne(); } $repo = getReactionRepo();
-
Pour la réaction :
$post_id = 629981; $user_id = 1317; // Cf. \XF\Repository\Reaction $repo.insertReaction( $reactionId = 1, $contentType = "post", // Inchallah $contentId = $post_id, $reactUser = findUser($user_id), $publish = false, $isLike = true );
-
Et
$repo->rebuildReactionCache()
pour finir.