ghost

How to install Ghost on CentOS7 and MariaDB

少し前にGhost初のメジャーバージョンがリリースされました。 Attention Required! | Cloudflare Ghost 1.0は後方互換の無いアップデートで幾つもの大幅な変更がありました。 その中でGhostのインストール、設定、起動方法等も変わっています。1.0からはghost-cliを使ってGhostのインストール、設定、起動などができるようになりました。 ghost-cli Overview Ghost1.0をインストールするための環境として、以下が推奨されています。 Ubuntu 16.04 MySQL NGINX (minimum of 1.9.5 for SSL) Systemd Node

ghost

Update to Ghost 0.11.8

Ghost 0.11.8がリリースされました。 ✨ Ghost 0.11.8 いくつかのバグフィックスや機能改善がありますが、その中でも「複数人同時に同じ記事を更新して衝突が発生するのを防ぐ機能」が良さそう。 今までは同時に同じ記事を更新できました。ブラウザをリロードするともう一方で更新した内容が反映される感じでした。危うい。 さっそくどんな感じになったのか試してみます。 アップデートはいつもの手順でやります。以下のスクリプトを実行するだけ。 では実際にブラウザで複数のウインドウを開いて同時に編集してみます。 後から開いた方のウインドウで編集して、保存ボタンを押すと...。 ブロックされました!! ✨ 感想 私は一人ぼっちでこのブログを運用しているので縁のない機能ですが、複数人で運用しているブログ(会社のブログとか)ではとても有用そうですね!

ghost

Validate RSS feed

記事を更新したらslackのRSSアプリでチャンネルに投稿するようにしていたのですが、いつの間にか動いていなかったので調べたところ、RSSが壊れていました。 対応めんどくさいな〜と思っていたらどの部分が壊れているのかわかりやすく表示してくれるサイトがあるので使ってみました。 Feed Validator for Atom and RSS どうやらMackerel Meetup #9参加レポの記事に不正な文字が入っていたっぽい。 該当箇所を修正すると無事直りました。便利!

ghost

highlight.js with Ghost

今までコードブロックに書いたコードのシンタックスハイライトはPrismを使っていました。 Add syntax highlight to Ghost Prismを使うには以下の手順が必要でした。 テーマとハイライトしたい言語を選択して、ダウンロードボタンでprism.jsとprism.cssをダウンロードする content/themes/casper/assets/js/、content/themes/casper/assets/css/以下に設置する default.hbsのヘッダでファイルを読み込む このテーマのファイルをいじらなくてはいけない点に不満を持っていました(テーマをアップグレードしたり、別のテーマに変えると消失してしまうので)。 また、ハイライトを有効にする際、language-*と書かなければいけないのも若干面倒でした。 Prism自体は、見た目もきれいで好きなんですけどね.

ghost

Change Ghost blog Font

このブログはGhostというブログエンジンで動いていて、テーマはCasperを使っています。 このCasperのdefaultのフォントだと日本語の文字がちょっと細すぎて見辛いと感じることがあるので、別のフォントにしてみました。 Ghostには管理画面から任意のhtmlをヘッダ、フッタに挿入することができます。この機能を利用してフォントを変更してみます。 Code Injection 以下のコードを挿入しました。google fontのLatoフォントを使ってみました。 Google Fonts Google Fonts - Lato <link href='https://fonts.googleapis.com/css?family=Lato' rel='stylesheet' type='text/css'&

ghost

Ghost support AMP

スマートフォンでのgoogleの検索結果で、私の記事に「AMP」と表示されているものがありました。 AMPとは「Accelerated Mobile Pages」の略で、オープンソースで公開されている仕様らしい。仕様に則ることで、瞬時に読み込めるHTMLを作ることができるそう。 GoogleはAMPに則ったページを見つけるとキャッシュし、モバイルからのアクセスかつ有効なAMPページがあった場合はそのページを表示するようになっているとのこと。 AMPについて - Googleウェブマスター向け公式ブログ AMP ページの Google 検索ガイドライン - Search Console ヘルプ Accelerated Mobile Pages Project AMPマークの付いているページにアクセスすると、確かに一瞬でページが表示される! それはありがたいことだが、なぜAMP対応されたページがあるんだろう.

ghost

Install AddThis and DISQUS to Ghost

はてブボタンでも設置してみようと思ったのですが、うまくいかず!! はてなブックマークボタン 雑にcontent/themes/casper/post.hbs内の<section class="share">に埋め込むだけじゃだめっぽい。twitterとかfacebookのシェアボタンを真似して設置しようとしたけどうまく表示されなかった。 ちょっとすぐには実現できなそうな気配を感じたのでとりあえずAddThisに逃げた。 AddThis - Get more likes, shares and follows with smart website tools AddThisはかなり簡単に使えて便利。管理画面から好きなサービス選んで生成されたコードをcontent/themes/

ghost

去年より個人ブログのポスト数を2倍くらい増やせたのでなぜなのか書く

この記事はfeedforceアドベントカレンダーの11日目の記事なんだからね! feedforce Advent Calendar 2016 - Adventar 昨日は@tmd45さんのターンでした。私も脂肪が増えてきた気がするので減らしていこうと思います(戒め)。まずは野菜だ!(ちなみに最初フト「れ」ない話に空目して関連する人物が3人ほど脳内サジェストされました。) フトらない話 - TMD45'β'LOG!!! さて、今回は「分散惑星間データセンター(Grid Interplanetary Data Center)時代のデータ通信技術」について書こうとしたのですが、すごい難しそうなので諦めました。 公転の関係で季節によって通信先の惑星とのレイテンシが変わったり、公転の関係で通信先の惑星が太陽の向こう側に隠れると通信できなくなったり、太陽風とか重力レンズ効果を考慮しないとだめとか多分そんな感じです。 ていうかそもそもまだ地球以外の惑星にデータセンターと呼べるものがないのでは?(怒)

nodejs

Update nodejs 4.x to 6.x

ghost v0.11.3からnodejs6系がサポートされるようになりました。 Release 0.11.3 · TryGhost/Ghost · GitHub ので4.xから6.xにあげてく(もちろんghostは0.11.3にアップグレード済み)。 まずは諸々やる前にdropletのスナップショットをとっておく。 最悪スナップショットからサーバ立てて復活できるので! doctl compute droplet-action snapshot <dropletのID> --snapshot-name ponpokopon.me-$(date +%Y%d%m%

ghost

Write blog with Ghost Desktop

ghostのオフィシャルブログを見ていたらこんな記事が。 Ghost Desktop 1.0 & Alpha 7 デスクトップアプリあるんだ!!どうやら今年の4月にリリースされていたっぽい。 Ghost Desktop GitHub - TryGhost/Ghost-Desktop: ⚡️ Ghost for Desktops 今まではMacDownというMacのマークダウンエディタで下書きしていました。 MacDown: The open source Markdown editor for OS X. ブラウザの記事投稿画面から行ってもよいのですが、うっかり前のページに戻ってしまって記事が消失したりしてキレそうになったことが何度かあったのでMacDownを使っていました。 ghostのデスクトップアプリならそんな失敗はすることが無いと思うので、良さそうですね。

shellscript

Update Ghost 0.11.1 to 0.11.2 with shell script

ghostのアップデートが出ました。 Ghost 0.11.2 メモリリークに関する修正があったみたいですね。メモリリークと言えば、最近ghostを0.11.1に上げたあたりからどうもmackerelからメモリ使用量のアラートがちょくちょく来るようになったので(元々メモリカツカツですが)解消することが期待できそうです。 アップデートは手作業でやりたくないので、シェルスクリプトで行っています。どのディレクトリを入れ替えればいいかなどは公式のドキュメントにアップデート手順があるのでそれを参考にしています。 How to Upgrade Ghost マイナーアップデートはこのシェルスクリプトで充分そう。ghostのディレクトリやパーミッションなどがハードコーディングされていてあんまり汎用的ではないですが、自分用なのでとりあえず良いかなと思っています。 課題はthemeのアップデートで、GAやAlgoliaのためにthemeをいじっているので、まるごと入れ替えができないことです。これはなんとかしたいな〜と思っています。面倒なときはcoreのアップデートだけしてます。 diffを取って内部的な変更(リファクタっぽいのとか)が多かったり、リリースノートで見た目の変更など大きなアップデートが紹介されていたら更新する感じです。 diff

algolia

Completion of Algolia in-site search box

Trying out Algoliaで敗北しInstall Algolia Search on Ghostで中途半端ながらにAlgoliaを使ったサイト内検索ボックスを設置してきました。 Install Algolia Search on Ghostで書いたように検索結果を強調表示してしまうがゆえに、urlにemタグが挿入されてしまうのが問題でした。 今回それが解決できたので書く! 解決方法 正規表現でemタグを除去。思いつきでjsの文字列置換があるか調べたらあった!ので、それを使った。 String.prototype.replace() - JavaScript | MDN このように書いていたのを、 suggestion: function(suggestion) { document_root = "https:

algolia

Install Algolia Search on Ghost

Trying out Algoliaでは大敗北しましたが、今回無理やり検索結果に一致したページに飛べるように半分なった!のでメモ。 やりたいこと! 検索ボックスで検索した結果としてタイトルの文字列を返したい。またそのタイトルはタイトルの記事へのリンクになって欲しい。 検索ボックスの見た目を変えたい。トップページの記事一覧のように画面に合わせてボックスの大きさを伸縮したい。また、Free版を使っているので、algoliaのロゴを検索ボックス付近に設置しなければならない。 やったこと JS suggestion._highlightResult.<attribute>.valueで検索したときに返すattributeを決定できるみたいなので、検索結果に表示する文字列はsuggestion._highlightResult.title.valueで良い ある文字列をリンクにするためにはlink()メソッドが使えそう link先のurlはhttps://ghost.ponpokopon.me/とsuggestion._highlightResult.

ghost

Trying out Algolia

2016/12/28追記 algoliaシリーズ Install Algolia Search on Ghost ghostブログにalgoliaの検索ボックスを導入する AlgoliaというSaaSの全文検索エンジンが良さそう。 Algolia | Hosted cloud search as a service 料金体系。 無料 有料に比べ機能に制約がある サイトに設置する際はAlgoliaのロゴを一緒に表示しなければならない 有料 無料版に比べなんか多機能な感じ(こなみ) ブログに設置できないか試してみた。が、挫折!!!!!!!!!!!!!!! Algoliaの設定自体はできたんだけど、それをうまくサイトに組み込んで検索結果から該当のページに飛ばす部分はユーザーに任されていて、そこで死んだ。でもやったところまではメモる。 以下の内容はだいたいチュートリアルの流れに従っている。

ghost

Check maingun status on mackerel

ghostにはmailの設定がある。mailは今のところ、パスワードをわすれた時に再設定メールを送る際に使用される。バージョン0.8からはβ機能の一つのsubscribers機能からも使う(まだメール送信機能は無いっぽいけど)。 Mail Configuration on self-hosted version of Ghost 送信元メールアドレスの設定方法はいくつかある。 Mailgun Amazon Simple Email Service Gmail このうち簡単に試せそうなmailgunで設定していた。 こんな感じ。 mail: { fromaddress: 'lorentzca@ghost.ponpokopon.me', transport: 'SMTP', options: { service: 'Mailgun',

ghost

Setting the canonical link to ghost

CloudFlare one-click SSLを使ってサイトをSSL化しているんだけど、 ページのソースを表示した時にcanonical linkがhttpのままであることを職場のパイセンに指摘されて( ゚д゚)ハッ!っとなったので直した!(割と前の話ですが…!) ghost/config.js内でproductionのurlをhttpsにしてghostを再起動すればOK こんな感じ config = { // ### Production // When running Ghost in the wild, use the production environment // Configure your URL and mail settings here production:

ghost

change database of ghost blog

最初に書いておくと、一番楽チンでダウンタイムも少ないであろう、 sqliteからデータをダンプして、mysqlのダンプに変換する方法は諦めたorz SQLiteからMySQLへデータのマイグレーション(変換)|DB|ブログ|ノノログで紹介されていたPythonのスクリプトを使ってみたんだけど、だめだった ※ ちなみにghostのdbはデフォルトでsqlite3を使っていて、ghost/content/data/ghost.dbにある ghostには記事や設定のエクスポート機能があるので、この機能を使う 流れは以下 記事をエクスポートする ghostの設定をmysqlを使うように書き換えてghost再起動 まっさらなghostにエクスポートしたファイルをインポート 当然ghost再起動した段階で初期状態になってしまうのでダウンタイムになるけどまあ個人ブログだし妥協 設定の書き換え ghost/config.jsを以下のように修正(元の設定をコメントアウトしてmysqlの設定を追加している) production: { ... //database: { // client: 'sqlite3', // connection:

ghost

Use swiftype in ghost

サイト内検索をいい感じにしてくれるSwiftypeなるサービスを見つけた 個人利用で機能制限付きのアカウントなら無料で利用できるらしいので試してみた 登録後自動で30日のトライアルのプランになる。30日が終わるとfreeプランにダウングレードするか、有料版にアップグレードするか選ぶ感じらしい(最初からfreeプランにはできない) この辺mackerelもそういう感じだった気がする 登録してまずインデックスを作る サイトのurlを入力するとクロールされてインデックスがSwiftypeサーバー上に作られる サーチエンジン名は好きな名前にする このインデックスは複数のサイト分作成できて、それぞれサーチエンジン単位で管理ページに登録される(たぶんfreeプランだとこのサーチエンジンが上限1つ) サーチエンジンページ内では検索がどのように動くかのプレビューや、実際にページに設置するためのjavascriptのコードが取得できる 今回はjavascriptのコードを利用した トップページに検索窓を設置したかったのでghost/content/themes/casper/index.hbsを以下のように修正 {{!< default}} {{! The tag above means - insert everything in this

ghost

Add syntax highlight to Ghost

ghostでシンタックスハイライトさせる Prismを使う。テーマとハイライトしたい言語を選択して、ダウンロードボタンでprism.jsとprism.cssをダウンロード それぞれghost/content/themes/casper/assets/js/、ghost/content/themes/casper/assets/css/以下に設置 パーミッションも他のファイルと合わせておく(0666) ghost/content/themes/casper/default.hbsを編集 <head>内に以下を追記 {{! The main