X

Créer un blog avec Sculpin sur Laravel Forge


J’ai récemment transféré le site Web de The Five Minute Geek Show à Sculpin pour la gestion de son contenu. Si vous n’êtes pas familier, Sculpin est un générateur de site statique, ce qui signifie que j’ai mon contenu et mon modèle dans des fichiers Markdown, sur lesquels j’exécute ensuite un script, et le script génère des fichiers HTML statiques, que je déploie ensuite sur mon serveur. Cela signifie qu’il n’y a ni PHP, ni Ruby, ni Python, ni quoi que ce soit qui serve mes fichiers ; au moment où ils arrivent sur mon serveur Web, ils ne sont plus que du HTML plat.

Sculpin lui-même a une très bonne documentation, mais je voulais quand même fournir un aperçu des étapes que j’ai suivies pour que le site du Five Minute Geek Show fonctionne dans Sculpin et soit hébergé sur Forge.

Faire fonctionner Sculpin

Il est préférable de consulter le démarrage rapide Sculpin pour être opérationnel, mais en bref, voici les commandes que j’ai exécutées :

$ curl -O https://download.sculpin.io/sculpin.phar
$ chmod +x sculpin.phar
$ mv sculpin.phar ~/usr/local/bin/sculpin
$ cd ~/Sites
$ git clone https://github.com/sculpin/sculpin-blog-skeleton.git fiveMinuteGeekShowBlog
$ cd fiveMinuteGeekShowBlog
$ sculpin install
$ sculpin generate --watch --server
$ cd source/_posts
  # Edit whichever files
  # Preview in browser at http://localhost:8000/
$ sculpin generate --env=prod
$ rsync -avze 'ssh -p 999' output_prod/ user@example.com:public_html

Si vous êtes nouveau sur Sculpin ou sur les générateurs de sites statiques en général, veuillez lire la suite. Si ce n’est pas le cas, veuillez passer à la section “Chabot sur Forge”.

Voici les étapes énumérées ci-dessus, décomposées :

1. Installez le chabot

$ curl -O https://download.sculpin.io/sculpin.phar
$ chmod +x sculpin.phar
$ mv sculpin.phar ~/usr/local/bin/sculpin

Nos premières lignes téléchargent le sculpin.phar fichier exécutable sur notre ordinateur, en le marquant comme exécutable, puis en le déplaçant dans notre bin répertoire donc c’est dans notre PATH et sera exécutable depuis n’importe où sur le système (via le terminal.) Il est maintenant installé “globalement”, ce qui signifie qu’il n’est pas simplement connecté à un dossier ou à un projet particulier.

Cette étape a été exécutée avec succès si vous pouvez lancer une nouvelle fenêtre Terminal, naviguer n’importe où sur votre ordinateur et exécuter sculpin et obtenir une réponse positive. Si ce n’est pas le cas, le problème vient probablement de votre PATH.

2. Téléchargez un modèle

$ cd ~/Sites
$ git clone https://github.com/sculpin/sculpin-blog-skeleton.git fiveMinuteGeekShowBlog
$ cd fiveMinuteGeekShowBlog

Sculpin peut être utilisé pour bien plus que des blogs, mais le sculpin-blog-skeleton rend très facile la mise en place d’un blog basé sur Sculpin. Donc, nous clonons maintenant une copie du référentiel squelette du blog dans l’endroit où nous conservons nos sites (j’utilise ~/Sites).

3. Installez les dépendances Sculpin localement

$ sculpin install

sculpin install est essentiellement un wrapper autour composer installnous installons donc simplement nos dépendances localement à ce projet.

4. Générer un serveur de surveillance

$ sculpin generate --watch --server

sculpin generate scanne le source répertoire et génère des fichiers statiques dans output_dev ou, si le --env ENVNAMEHERE drapeau est utilisé, le output_ENVNAMEHERE dossier.

REMARQUE : Habituellement, vous ne réussissez jamais un --env drapeau. Sculpin est par défaut –env=dev, et il sert automatiquement ses aperçus à partir du output_dev dossier, vous n’avez donc pas à vous en soucier. Et pour la production, votre script de publication aura généralement --env=prod et output_prod intégrés, vous n’aurez donc pas à y penser du tout, sauf si vous écrivez un script de publication.

Ajout de la --watch flag le définit comme un script de longue durée (comme Grunt ou Gulp) qui surveille le système de fichiers et se génère automatiquement à chaque modification.

Ajout de la --server flag fait tourner un serveur à http://localhost:8000/ (vous pouvez spécifier le port avec --port=8090) pour que vous puissiez vérifier vos modifications sur.

5. Modifier les fichiers

Vous pouvez désormais modifier, ajouter ou supprimer des fichiers depuis n’importe où dans le source annuaire. Les articles de blog, dans ce squelette, entrent source/_posts. Vérifier app/config/sculpin_kernel.yml pour définir la structure d’URL de vos types de contenu, ou app/config/sculpin_site.yml pour modifier les variables à l’échelle du site.

Pour un excellent exemple (c’est celui que j’ai utilisé) de la façon de modifier ce squelette pour les sites Web de podcast, consultez le référentiel Full-Stack Radio d’Adam Wathan.

6. Synchronisez

$ rsync -avze 'ssh -p 999' output_prod/ user@example.com:public_html

La méthode prescrite par défaut pour déplacer vos fichiers de votre site local vers votre serveur distant est pas git ; vous économisez votre source dans git, mais vous ne connectez pas réellement le site Web de production à votre référentiel git. Au lieu de cela, vous utilisez cette dernière ligne pour copier les fichiers du output_prod dossier de votre installation locale jusqu’au public_html (ou autre) dossier sur votre serveur de production.

Décomposer la commande rsync

rsync -avze 'ssh -p 999' définir le contexte de base, les drapeaux et les autorisations pour cette session rsync.

output_prod/ montre à partir de quel répertoire copier.

user@example.com est votre nom d’utilisateur et votre domaine pour votre serveur distant.

public_html est la télécommande directement vers laquelle il doit être téléchargé.

Chabot sur Forge

Si vous avez déjà utilisé Forge auparavant, vous savez qu’il est absurdement facile de faire tourner un serveur et de le connecter à un référentiel Github.

Donc, j’ai créé un nouveau dépôt Github – c’est pas la seule façon de le faire, mais c’est certainement une option – nommée FiveMinuteGeekShowPublic – et l’a rendue vide. Je l’ai ensuite cloné sur mon ~/Sites annuaire.

J’ai créé un nouveau site sur Forge sur une boîte Linode pour http://fiveminutegeekshow.com/lui a dit d’extraire ses données de ce nouveau référentiel, puis de le définir sur “Déploiement rapide” (ce qui signifie que chaque fois que je pousse vers la branche principale, il exécute un certain script).

J’ai modifié le script Quick Deploy pour qu’il soit approprié pour ce site :

cd /home/forge/fiveminutegeekshow.com
git pull origin master

Ensuite, j’étais prêt à partir. J’ai configuré un script de publication dans mon FiveMinuteGeekShow repo qui génère du HTML de production, copie les fichiers de Sculpin’s output_prod dossier sur mon local FiveMinuteGeekShowPublic dossier, puis git commits et pushs.

L’Iran chmod +x publish.shet maintenant je publie mon blog en naviguant vers le fiveMinuteGeekShow répertoire et saisie ./publish.sh.

Publication plus propre

Comme vous pouvez le constater, mon script de publication repose sur une certaine structure de répertoires sur ma machine locale, ce qui est rapide et facile mais aussi un peu piraté.

Vous pouvez voir dans la documentation par défaut de Sculpin que vous pouvez également simplement utiliser rsync pour copier les fichiers directement sur votre serveur. Consultez les notes ci-dessus sur la structure réelle de votre commande rsync.

Vous pouvez le faire avec Forge. Ne synchronisez pas un référentiel Github et utilisez les informations d’identification qui vous ont été envoyées par e-mail lorsque vous avez lancé ce serveur Forge pour la première fois pour configurer le rsync pour copier votre output_prod dossier jusqu’au serveur distant. Même accord, et il ne repose pas sur Git.

Configuration 404 et nginx

je dois remercier Adam Wathan pour celui-ci. J’ai essayé d’obtenir une page 404 personnalisée en définissant error_page 404 /404/index.html dans ma configuration Forge nginx et j’ai découvert que cela ne fonctionnerait pas.

Adam m’a aidé à réaliser que les références par défaut de Forge à tous les .php les fichiers le remplaceraient jamais en atteignant la page 404, alors il m’a aidé à nettoyer ma configuration nginx. Ça a fini par ressembler à ça :

server {
    listen 80;
    server_name fiveminutegeekshow.com;
    root /home/forge/fiveminutegeekshow.com;
    error_page 404 /404/index.html;

    # FORGE SSL (DO NOT REMOVE!)
    # ssl_certificate;
    # ssl_certificate_key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    index index.html index.htm;

    charset utf-8;

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/fiveminutegeekshow.com-error.log error;

    location ~ /\.ht {
        deny all;
    }
}

Désormais, chaque fois que quelqu’un visitera un mauvais itinéraire, il obtiendra la page 404.

Illusion de coquille de conque

Comme vous pouvez le voir, vous familiariser avec Sculpin – et les générateurs de sites statiques en général – peut prendre une minute, mais une fois que vous l’avez compris, c’est en fait un processus très simple, et l’héberger sur Forge est étonnamment simple.

L’utilisation des pages Github ou Heroku sont également d’excellentes options, mais si vous êtes déjà dans l’espace Forge – ou si vous souhaitez éventuellement ajouter d’autres fonctionnalités au site autres que les fichiers statiques générés par Sculpin – Sculpin + Forge est une excellente combinaison.