プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

はてなブログに移行しました (1/2)

元々、日々の仕事で気になったことや調べたことをまとめた技術メモ的なものを残すのに、ブログは日付で管理している印象が強くて、技術のメモ書きなどある程度長期的な情報を貯めていくのに、どうなんだろうかと思ってました。なので、当初は、森ソフトのサイトで『技術メモ』として書いてました。

でも、ある時期から、

  • 結局のところ技術ネタだから、永続的な内容というわけでもないのと、
  • 『技術メモ』と題していたため、技術ネタ以外のことを自由に書きづらい

ことがあり、ちょっと不満を持っていました。そんな経緯の末、若干時間ができたので、思い切って、はてなブログに移行することにしました。 ここでは、その顛末についてまとめておきます。

Joomla! を使っていた経緯

元々、森ソフトのサイトは、Joomla!で作成しています。これを選んだ経緯は、そんなに大した理由もなく、

  • 当時使っていたレンタルサーバーのPHPだったかMySQLだったかが、Wordpressの動作要件を満たしていなかったのと
  • 知り合いが使っていた

という2点でした。

実際に使いはじめてみると、だんだんいろいろとわかってきて、Joomla!は(比較的)規模の大きい、多言語サイトなどを作るに向いており、ブログやちょっとしたサイトならWordpressのほうが向いていそうだとなりました。また、Joolma!は残念ながら日本語の情報が少なく、何か問題があっても、日本語ではなかなか情報が見つけられないという面もあります。

そんななか

Joomla! じゃぱん - Joomla! JAPAN

のサイト(日本語化プロジェクトのサイト)は最新版に対しても非常に素早い対応をしているので、頭が下がります。

まあ、そんなこんなで、Joomla!のサイト中に、ブログとは銘打っていませんが、ブログのような形で技術メモを貯めていたので、よりわかりやすくブログとして移行することになりました。

ちなみに、もうちょっと補足すると、Joomla!でもブログのような形で記事を書けますが(現に書いていましたが)、標準の機能だと、いわゆる一般的なブログほど自由に記事にアクセスできない、という側面があります。また、タグなどもあるのですがタグが導入される前から使っていたため、途中から使うには使いにくいなどという側面もありました。ま、半分はこんな理由ですが、もう半分は新しいのを使ってみたい、というのもあります。

移行先の選択肢

移行先の選択肢としては、いくつか候補がありました

  1. Joomla! にプラグイン等を追加して、ブログに仕立てる
  2. 現在のサイト全体をWordpressに移行する
  3. ブログ用の Wordpress を立ち上げる
  4. ブログサービスを利用する

あたりです。

元サイトでJoomla!を使っていたので、まず第1案について検討しました。確かに、Joomla!のブログ用にエクステンションも多数あり、若干のお金を支払えばそれなりに質のよさそうなものも手に入りそうでした。しかし、これらのうちいくつかを試してみたところ、一つの投稿に対して、Joolma!本体の記事とブログ用の記事の2つが存在するような造りになっており、どうもこれが気に入りません。 全てのエクステンションを試したわけではないですが、人気で上位に表示されているもの複数がこのような感じだったので、望み薄かなと思います。

次に、現在のサイトをWordpressに移行する案ですが、これも心惹かれませんでした。まあ、特にという理由もないのですが、ブログ部分だけでなく、サイト全体の作り直しになるので、若干手間がかかるかな、という理由です。

3番目のブログ用のWordpressを立ち上げる案ですが、考えてみるとこれもなしでした。既存サイトをJoomla!で運用して、ブログをWordpressで運用という形そのものはよくあると思います。でも、自分で2つのシステムを管理する手間を考えると、今後、Wordpressで仕事したいとでも思ってるならともかく、特に積極的な理由がないなら、ま、やめたほうが良いですね。

ということで、結局残ったのが、4番目のブログサービスを利用するという案でした。これも悩ましくて、数あるブログサービスから、どこを使うかが問題になります。

ブログサービスの選定

特に選定基準もないのですが、まあ、メジャーどころで、

あたりに絞って、詳しく調べてみました。 先に、結論を書いておくと、独自ドメインを使いたかったので、はてなブログのPro版を使うということにしました。

はてなブログ

Joomla!からの移行で採り得る方法は、

Joomla! -> Wordpress -> はてなブログ

という経緯をたどる方法です。

この場合、一時的なWordpressサイトを立ち上げ、FG Joomla to Wordpressというプラグインを使うと、Joomla!側のコンテンツをWordpressにインポートできそうです。 一旦、Wordpressに移行できれば、エクスポート機能を使って出力したものを、はてなブログ側でインポートできます。

あと、独自ドメインを使うには、有料版のpro版にしないといけないということです。数年単位で継続して利用するだろうから、これに関しては2年契約で問題ないと思うので、月額換算で600円となり、金額的にもそれほど不都合というわけではありません。

ただ、支払方法が、はてなポイントという謎なシステムを経由しないと行けないのが、ちょっと気になります。自動継続時にはてなポイントの残額がないと、解約扱いになる、とかあるくせに、はてなポイントの有効期間が一年間なので、2年契約の自動更新用にポイントを自動補充することもできず、なんだこれは?という印象です。 ま、この手のものは利用期限が近付いたら、通知メールぐらい来るだろうと勝手に推測して、良しとしました。

素直にクレジットカードで決済してくれるなら、きっと利用者も増えるのに、もったいないなと感じてます。もっとも、はてなの日記によると、将来的には廃止の方向のようですので、安心しましたが、さっさとなくしてほしいものです。

Blogger

Joomla!(ないしWordpress)からBloggerへ移行する方法を調べてみたのですが、これがなかなか情報が見つかりません。いくつか見つけたのですが、基本的に古くて、今現在の有効かどうかわかりません。

http://www.15minutemondays.com/2015/01/26/moving-wordpress-blogger/ http://google.about.com/od/googleblogger/a/How-To-Move-Your-Blog-From-Wordpress-To-Blogger.htm

あと、それらの手順でも指摘されている、一番のネックが、画像のインポートが自動ではできなくて、すべて自分でで作業で貼りなおさないと行けなさそうでした。これは、今回のような既存のコンテンツを移行するには、ちょっとハードルが高すぎます。

ということで、移行先は、はてなブログということになりました。 実際の移行作業は

blog.mori-soft.com

にまとめます。

3.4.x -> 3.6.x へのアップデート

本サイトのJoomla! を 3.4.8 から 3.6.2 にアップデートしました。

普通だと、『コンポーネント』→『Joomla!の更新』を行えば、それで終わりなんですが、キャッシュをクリアしても、なぜか表示される更新対象のバージョンが 3.6.0 しか出てず、 3.6.2 が表示されませんでした。ちょっと気になったので、アップデート手順をとか情報を調べたら、注意が必要そうだったので、メモにまとめておきます。

ちなみに、表示されなかった原因は、多分、更新のオプション設定だったようです(下記を参照)。

 

こちらのページの『Setting Ipdate Server』の部分にオプションの意味が書いてあります(図入りなのでわかりやすい)。

https://docs.joomla.org/J3.x:Updating_Joomla_(Update_Method)

日本語はこちらにありますが、図がなかったので、最初オプションの内容の説明の意味がが分かりませんでした (><)。

https://docs.joomla.org/J3.x:Updating_from_an_existing_version/ja

 

3.6.xへのアップデート手順

こちらのダウンロードページ(下記ページのリンク元)に注記があるのですが、3.6.1にアップデートするときに注意が必要だそうです。

https://www.joomla.org/announcements/release-news/5666-the-joomla-3-6-1-update.html

 

実際の作業はこのページにある説明に従って作業をします。簡単に書くと、

  1. 『コンポーネント』→『Joomla!の更新』を使って、3.6.0 にアップデートします
  2. 『エクステンション』→『管理』→『アップデート』を選択し、表示される『Joomla! Update Component Update』 の更新を行います。今回の場合、3.6.0 から 3.6.1 に事前に上げておくことになります。
  3. 『コンポーネント』→『Joomla!の更新』を使って、3.6.2 にアップデートします

 

日本語サイトのほうには、上記注意点へのリンクがないようなので、気にしなくてもいいのかもしれませんが、ま、試していないのでなんとも言えませんが。。。

http://joomla.jp/news/release-news.html

 

いずれにせよ、ご参考までに。

今更ながらdocker試してみました

cartoDB をサーバーにインストールして試したいと思い、いろいろと調べていたらdockerのイメージがあるらしいということがわかりました。インストール手順とか眺めても、結構面倒そうだったので、最初のお試しとしてこれを利用しない手はないでしょう。

ということで、まずは、興味ありながらも手を出せていなかったdockerを今更ながら試してみることにしました。といっても、dockerの解説記事やチュートリアルはすでにネット上にたくさんあるので、ここでは参考にさせていただいた記事『いまさら聞けないDocker入門@IT』を元に、個人的に躓いた点などをメモ的にまとめておきたいと思います。

インストール

dockerをインストールして試す手ごろな環境がないか探してみたところ、古いノートPCにLubuntu(14.04 LTS, 32bit)を入れていたので、それで試してみることにしました。インストールは、記事中にもあるように

sudo apt-get install docker.io

で問題なく完了しました。ただし、すでにシンボリックリンクは最初から貼られていました。

コンテナの実行

実は、ここが一番はまりました。記事によると

docker pull ubuntu
docker run -it --name test ubuntu /bin/bash

で最新のUbuntuのイメージをダウンロードして、それを実行するということでしたが、なぜか

mor@lenovo:~$ docker run -it --name test ubuntu /bin/bash
exec format error
FATA[0000] Error response from daemon: Cannot start container 9bd88c529a26a934e661b55a242078d0fa4f224b665a521687388b8af3cf3598: [8] System error: exec format error 
mor@lenovo:~$ 

というエラーが表示されて、実行できませんでした。

途方にくれながら、ググってみると、ホストOSが32bitの場合、コンテナのイメージも32bitである必要がありそうです。

http://d.hatena.ne.jp/rougeref/20150724 http://stackoverflow.com/questions/29072605/can-not-start-docker-on-lubuntu-cannot-start-container-exec-format-error

ということで、32bitイメージを取得して再度試してみました。

docker pull 32bit/ubuntu:14.04
docker run -it --name test1 32bit/ubuntu:14.04 /bin/bash

おぉ、問題なく動作しました。なお、イメージ取得時にタグ名をお忘れなく。

Dockerfileを試す

基本的には記事にあるとおりに作業すればよいのですが、

FROM 32bit/ubuntu:14.04
MAINTAINER mor
RUN apt-get update
RUN apt-get -y install nginx
ADD index.html /usr/share/nginx/html/

のように若干調整が必要でした。docker build を実行時にいくつかエラーが表示されていたのですが、まあ、動いていたので今回は気にしないことにしておきます。

あと、こちらのページのコラム記事に nsenter を使って、動作中のコンテナに接続する方法が紹介されています。しかし、残念ながら32bit版のLubuntuでは、こちらの記事の方法(dockerイメージによるインストール方法)は使えませんでした。さて、困ったと思っていたところ、dockerのバージョンアップに伴い、動作中のコンテナに接続してコマンドを実行する機能が追加されていました。

http://agekuno.hatenablog.com/entry/2014/10/18/010128

試してみるとこんな感じでした。

mor@lenovo:~$ docker exec --help

Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Run a command in a running container

  -d, --detach=false         Detached mode: run command in the background
  --help=false               Print usage
  -i, --interactive=false    Keep STDIN open even if not attached
  -t, --tty=false            Allocate a pseudo-TTY
mor@lenovo:~$ 
mor@lenovo:~$ docker exec -it 0bfb /bin/bash
root@0bfb951cf79a:/# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   2268   528 ?        Ss   15:38   0:00 /bin/sh -c /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
root         7  0.0  0.2  14900  3180 ?        S    15:38   0:00 nginx: master process /usr/sbin/nginx -g daemon off; -c /etc/nginx/nginx.conf
www-data     8  0.0  0.0  15044  1396 ?        S    15:38   0:00 nginx: worker process                                  
www-data     9  0.0  0.0  15044  1396 ?        S    15:38   0:00 nginx: worker process                                  
www-data    10  0.0  0.0  15044  1396 ?        S    15:38   0:00 nginx: worker process                                  
www-data    11  0.0  0.0  15044  1396 ?        S    15:38   0:00 nginx: worker process                                  
root        18  1.0  0.1   3544  1708 ?        Ss   15:39   0:00 /bin/bash
root        32  0.0  0.0   3144   976 ?        R+   15:39   0:00 ps aux
root@0bfb951cf79a:/# exit
exit
mor@lenovo:~$ 

これを使えば、パッケージのインストールなどしなくても一発でコンテナの様子を調べられます。便利!

Docker Hub の利用

解説記事の最後はDocker Hub を使ってみるということです。こちらも試してみました。

Docker Hub のアカウント登録で、GitHubのアカウントも使えるとあったのですが、今回試した際は見つけることができませんでした。なので、アカウントを新たに登録して、ログインしてみます。

docker push

でリポジトリに追加できました。なお、dockerの場合、『リポジトリ』がイメージ名に対応しているようです。

pushコマンドで追加した場合、何もしなければpublicリポジトリになるようです。これをprivateに切り替えるためには、リポジトリの詳細画面を開いて、タブメニューのSettingsを選択して、『Visibility Settings』でprivateにすればOKのようです。しかし、無料枠だとprivateリポジトリが1つだけなので、なかなか難しいところです。

なお、今回は Automated Build は試しませんでした。

Dockerをどう使うか?

触ってみた感触だと、テスト的にあれこれするには非常に便利そうに感じてます。まずはいろんな環境を手軽に作ったりするのに使う感じになりそうかな。

ネットの記事をあれこれ読むと、dockerを利用してサーバー運用とかもできそうですが、結局データをどう保存しておくのかとか、コンテナ同士のやりとりをどうするのか、といった面がまだ見えていません。

でも、Dockerfile によってサーバーの設定を記述できるなどは非常に魅力的です。ま、もっとも、Chefとかのツールを使ってもいいんじゃないか思うので、そのあたりの違いもちょっと見えていない面があります。

これを機に、少しDockerに触ってみようと思います。