MJHD

エモさ駆動開発

Ghostをapache上に設置+α

f:id:wait0000:20150823184605p:plain かっこいいGhostはかっこいいnode.jsを使っている。node.jsは基本的に、スタンドアロンでアクセスを待ち受けてレスポンスを返す仕組みのため、apacheを動かしているサーバと相性が良くない。

もしそのままghostを設置する場合は、訪問者様に2368ポートにわざわざアクセスしていただかなくてはならない。

基本的な設定は、Installing Ghost on Apacheの通りなのだが、一部引っかかった場所があったので、そこに注意しながら説明したいと思う。

インストール

https://github.com/tryghost/Ghost ここのGetting Startedに書いてある通りにインストールしていく。

node.js

VineLinuxにはnode.js v0.10.5パッケージがあったので簡単にインストールできる。 $ sudo apt-get install nodejs

ghost

gitでcloneしてもいいのだが、 https://github.com/TryGhost/Ghost#getting-started-guide-for-developers に従って自分でいろいろとビルドしなければならないので、無理に開発版を使う必要はない。

Download The Ghostにアクセスし、インストールしたいディレクトリに解凍する。

$ wget https://ghost.org/zip/ghost-0.4.1.zip
$ unzip ghost-0.4.1.zip

そして、npmを使って必要なライブラリをダウンロードする。

$ npm install --production

node.jsを永続化させるためのforeverをインストールする。

$ npm install forever -g

これで基本的なインストールは終わりである。

設定

ghostを解凍したディレクトリにある、config.example.jsをコピーする。 $ cp config.example.js config.js

このconfig.jsを編集することで設定していく。

Ghostの設定

productionの項を設定していく。

production: {
        url: 'http://設置するurl/', //変更
        mail: {
        },
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost.db')
            },
            debug: false
        },
        server: {
            // Host to be passed to node's `net.Server#listen()`
            host: '0.0.0.0', //変更
            // Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
            port: '2368'
        }
    },

こんな感じに変更していく。

Ghostの起動

$ NODE_ENV=production forever start index.js

これで起動できる。NODE_ENVという環境変数にproductionを入れて、foreverコマンドを実行するという意味である。

ひとまず、Ghostは起動させておいて、次はapacheの設定をする。

Apacheの設定

まず、Apacheでmod_proxyが有効になっていることを確認する。

/etc/apache2/conf/httpd.confに以下の行があることを確認する。

LoadModule proxy_module modules/mod_proxy.so

次に、VirtualHostを使う場合は、/etc/apache2/conf.d/vh-blog.confなどの名前のファイルを作成して、

<VirtualHost *:80>
    ServerAdmin 連絡先のメールアドレス
    DocumentRoot ghostを解凍したパス
    ServerName config.jsに設定したブログのurl
    ErrorLog  logs/blog-error_log
    CustomLog logs/blog-access_log common

    ProxyPass / http://127.0.0.1:2368/ retry=0 timeout=5
    ProxyPassReverse / http://127.0.0.1:2368/
    ProxyPreserveHost on
</VirtualHost>

と設定し、

$ sudo service apache2 reload

を実行すれば完成である。

もしVirtualHostを使わない場合は、httpd.confにProxyPass以降の行を追加すれば設定することが出来る。

α

初期設定では、記事一覧のページで、記事の全文が表示されてしまっている。

冒頭部分だけ表示するためには、テーマを編集する必要がある。

ghostのディレクトリ/content/themes/casper/index.hbsを編集する。

        <section class="post-excerpt">
            <p>{{excerpt}}&hellip;</p>
        </section>

となっている部分を、

        <section class="post-excerpt">
            <p>{{content characters=100}}&hellip;</p>
            <a href="{{url}}">続きを読む</a>
        </section>

このように変更することで、記事の冒頭部分だけを、一覧で表示することが可能である。

おわり

サーバ開始時にghostを自動実行できる設定なども検索すれば見つかる。

次はその設定をしてみたい。