MarkdownファイルをPelicanで 静的Webサイトに変換する方式で運営してましたが、WordPressへと移行しました。

最初はBlogEngine.NETで始まり、OrchardCMS、Pelican、はてなブログ、そしてPelicanと戻り、WordPressへと移ったのですが、これで落ち着く…はずです。

Pelicanのマークダウン記法で、以下を実現する方法を調べたので、そのメモ。 画像を指定幅に縮小して表示して、かつクリックされたときに新しいウィンドウ・タブに画像を表示するリンクを設定する Twitterのツイートや、Youtubeの動画などを埋め込む 元画像へのリンク付き縮小画像の表示 まず、画像を指定幅に縮小して表示する部分は、属性リストをマークアップに設定できるPython MarkdownのAttribute Lists拡張を利用します。 ![width 300 image]({filename}/images/201801/20180102_140000.jpg){ width=300 } 拡張を利用するには、pelicanconf.pyに以下のように記述します。 MARKDOWN = { ‘extension_configs’: { … ‘markdown.extensions.attr_list’Read More →

以前にPelicanを使ってMarkdownファイルを静的HTMLに変換するシステムでブログサイトを運営してきましたが、はてなブログからそちらに戻しました。 理由は、ブログの記事、写真をはてなに依存してきるのがどうもなじめないこと、また毎月のシステム費用をVPSに一本化したいと思ったからです。 リンク切れなどがあったら、徐々に直していきます。 今後もよろしくお願いします。

はてなブログに移行する前は、PelicanというMarkdownなどマークアップ言語のファイルをHTMLファイルに変換するツールと、BitBucket・Dockerを組み合わせて、自前のブログを構築していました。 Gitで管理されたMarkdownファイルをBitBucketにPushすると、BitBucketのフックが起動されて、Docker上のWebサーバでMarkdownファイルをPelicanで変換する仕組みです。 この自前ブログシステムからはてなブログへの移行手順をメモしておきます。 はてなブログへの移行方法 通常は、はてなブログへの移行は、移行元ブログでエクスポートしたMovableType(MT)形式かWordpress形式のデータを画像URLを調整してからインポートすればよいのですが、自前システムからの移行ではそれが使えません。 そのため、以下の手順で移行しました。 画像ファイルをはてなフォトライフにアップロードする。このとき、画像ファイルのパスとアップロードした画像のIDの対応表を作成する。 既存のMarkdownファイルで、画像の相対パスをIDに置換する。 置換したMarkdownファイルをはてなブログのAtom APIで投稿する。 なお、移行処理のスクリプトはすべてPythonで作成しました。 はてなフォトライフへのアップロード 画像ファイルは階層構造のフォルダで管理されて、Markdownファイルには特定フォルダからの相対パスで記述しています。この各ファイルについて、Base64でエンコードして、はてなフォトライフAtomAPIに従ってRestAPIを呼び出します。 # coding: utf-8 import sys import osRead More →

Pelicanを使ってMarkdownファイルを静的HTMLに変換するシステムでブログサイトを運営してきましたが、 運営方針を見直してはてなブログに移行することにしました。 今回の移行で、自前のブログシステムからMarkdownファイルをはてなブログに移行したのですが、 そのときの手順はまた紹介したいと思います。 今後もよろしくお願いします。

Pelicanを使ってMarkdownファイルを静的HTMLに変換するシステムでブログサイトを運営してきましたが、 運営方針を見直してはてなブログに移行することにしました。 DNSの設定が反映されたら、以下のURLでアクセスできると思います。 移転先はこちらです。> 熊小屋日誌 今後もよろしくお願いします。

これまでの記事で紹介したGit、BitBucketとPelicanを使ったブログシステム。今の仕組みでは予約投稿ができないのが欠点なのです。 で、どうすれば実現できるか検討したメモです。 予約投稿の実現案 予約投稿を実現するには、どこかにスケジューラを入れて指定されたタイミングでPelicanを起動すればいいのだけど、どこを直すか? 修正できそうな箇所は3か所あります。 MarkdownファイルのBitBucketへのプッシュ  2. BitBucketからプッシュがあったことを通知を受けるサーバ  3. PelicanでのMarkdown⇒HTMLの処理 予約日時はMarkdownファイルのDateヘッダから取るので3にする必要があって、さらに起動日時以降の原稿を後で処理するので、それは2のサーバで行うしかなさそうです。 結局は以下の方法になるかと。 Pelicanが処理する前に、MarkdownファイルのDateヘッダを調べて、起動日時より前でなければPelicanの処理対象から外す。さらにサーバに通知して、スケジューラに登録させる。 処理対象からの外し方は要検討。ファイルを消してしまうか移動するか。 Pelicanに手を入れるのが早いかもしれません。 スケジューラは予約された日時にPelicanを起動して原稿を処理する。 スケジュールはCronで間に合いそう。 もう少し調べることがありますが、その後に手早く実装してしまいます。

このブログの構築に使っているPelicanをPython 3.4の環境で導入しようと pip install pelican を実行したら、UnicodeEncodeErrorが発生してここ2日ほど原因を調査してましたが、 easy_install pelican であっさりとインストール終了。pelicanの動作も問題なし。 何かすっきりしませんが、この方法でPelicanの環境を構築することにします。 さて、ブログサーバ側のDockerを更新しないと。  

しばらくブログの更新が途絶えてました。 これは更新をさぼってた訳ではなくて、ブログを楽に更新できるシステムを構築していたためです。ようやく本稼働できたので、数回にわたってその仕組みを紹介したいと思います。 Pelicanでのブログ更新 これまでの記事で、静的Webサイト生成ツールのPelicanに移行したことや、Pelicanのインストールを書いてきました。PelicanによるWebサイト作成では、MarkdownやreStructuredTextで書いた記事をPelicanでビルドして、生成されたWebサイトのファイル一式をWebサーバに転送します。このブログの記事はMarkdownで書いてBitBucketに作成したGitリポジトリで管理しているので、以下のような流れです。 Gitで現行作成用のdraftブランチを作成する。 ローカルPCで原稿をMarkdownで作成する。 ローカルPCでPelicanのビルドを実行(make html)して、レイアウトや文体・誤字・脱字を確認する。 原稿が完成したら、Gitで変更点をコミットして、draftブランチをmasterブランチにマージする。 masterブランチをBitBucketにPushして取り込む。 PelicanでWebサイト用に発行(make public)する。 生成されたWebサイトのファイル一式をFTPでWebサーバに転送する。 この一連の作業が、記事を何篇も書いているうちに、だんだんと面倒になってきました。BitBucketに原稿を取り込んだらWebサイトも更新された状態になっていてほしいのですが、Pelicanの仕組みではビルドと生成ファイルの転送が必要です。 そこで考えたのが、BitBucketに変更点がPushされたことをWebサーバで検知したら、Pelicanでの発行処理を行うという仕組みでした。BitBucketにはリポジトリにPushされたら他システムに通知する仕組みが提供されています。これを使えばPushされたことを検知できそうです。 複数サイトの自動ビルドシステム構築 ブログサイト1箇所にこの自動ビルドシステムを構築するのは大した手間ではないのですが、ブログサイトが複数あるとそれぞれの横展開で同じ作業が続くことになり、作業漏れや作業ミスが起きる心配があります。 できれば、自動ビルドシステムを構築したWebサイトの雛形を作っておいて、それぞれのWebサイトは雛形をコピーして設定ファイルを直すくらいに簡略化したいものです。 このために目を付けたのがDockerと呼ばれる仮想化技術です。DockerはOS上に互いに隔離された空間を作成して、それぞれでプロセスを実行します。この空間はプロセス、ネットワーク、ファイルシステムが独立していて、コンテナと呼ばれます。OSを仮想化する仮想マシン技術と比べて、コンテナ仮想化はOSを共有しているのが特徴です。 (DockerRead More →

先日に言及した静的Webサイト生成ツールのPelican。Windows環境でのPelicaのインストール方法を紹介します。 以下では、Pelicanを"c:\blog\pelican"にインストールするものとします。 Pythonのインストール まず初めにPythonをインストールします。Pelicanの新しい版ではPython 3.3にも対応していますが、Python 2.7が推奨なので同バージョンをインストールします。 Pyhon 2.7のダウンロード先 インストール先は任意のフォルダで構いません。以下ではインストール先フォルダを"c:\Python\Python27"とします。また、PATH環境変数にインストール先フォルダを設定する必要はありません。 pipのインストール pipはPythonの各種のライブラリをインストールするツールです。 pipのインストール手順に従ってget-pip.pyをダウンロードしてPython 2.7で実行します。 :::shell > c:\Python\Python27\python.exe get-pip.py Virtualenvでの環境作成 Pelicanとその依存ライブラリをPythonにインストール前にVirtualenvをインストールします。 Pythonでは、プロジェクトごとに独立したPython環境を作成して、Read More →