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 install
nous 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 duoutput_dev
dossier, vous n’avez donc pas à vous en soucier. Et pour la production, votre script de publication aura généralement--env=prod
etoutput_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.sh
et 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.