Heroku で独自ドメイン設定(2016年版)

まず、お名前.com でドメイン取得している(または、する)前提で説明する。おそらく他で取得してもそこまでフローは違わないはず。

  1. Heroku で PointDNS を有効化し、ドメイン追加
  2. ドメインNavi でネームサーバー設定
  3. 最大で一日程度待って接続確認

1. Heroku で PointDNS を有効化し、ドメイン追加

your-domain-name.com というドメイン名を取得したとすると以下のようにコマンドをたたく。

$ heroku addons:create pointdns:developer
$ heroku domains:add your-domain-name.com

Heroku ダッシュボードからアプリを選択し、 Resource タブ内の Point DNS をクリック。
上部の Nameservers タブをクリックすると以下のような表が表示される。

PointDNS の Nameservers タブ

このページを後で使うので開いておく。

2. ドメインNavi でネームサーバー設定

  1. お名前.com のドメインNavi にアクセスしてログイン。
  2. 上部のドメイン設定タブを選択
  3. 右のメニューから “ネームサーバーの変更” を選択
  4. 確認画面が出るので “登録情報は正しいので、手続きを進める” をクリック(<出ない場合は無視してください)
  5. “他のネームサーバーを利用” をクリック
  6. ネームサーバー情報を入力のところに先ほどのページの URL 群を入れていく

ドメインNavi でネームサーバー情報を入力

以上で作業は終わり!

3. 最大で一日程度待って接続確認

反映されるには一般的には 1 日程度時間がかかるようなので接続できるまで待つ。自分の場合は 3 時間ほどで疎通確認できた。

Heroku x WordPres で Heroku にアップロード/ダウンロードしたファイルが消える問題への対策

Heroku は git push で簡単にデプロイされて便利だが、サーバーが固定のものではないため、Heroku 上に画像などのファイルを配置しても再起動などのタイミングで削除されてしまう。

そのため、ファイルは他のクラウドサービスを利用して参照する形にするか、ローカルからファイルをコミットして git push でアップロードする形となる。

自分の調べた限りだと、頻繁にアップロードする画像は他のクラウドサービス(S3 や Cloudinary)を利用して、更新の頻度の低いプラグインやテーマはローカルにダウンロードしたものを push する形が良さそう。WordPress自体のアップデートもこの問題に当てはまるのでローカルでアップデートできたものを確認できた後に push すべき。

ちなみに、プラグインの有効化や設定などはデータベースで管理されているため、ローカルでプラグインをダウンロードして設定していたとしても、Heroku にデプロイした際に有効化や設定は必要だと思われる。

プラグインなどのパターンは git を理解していればわかると思うので、以下では画像対応について説明する。

画像が消える問題の対策

自分の場合は無料でケチりたかったので Cloudinary を採用したが、S3 を採用する方は「WordPress 画像 S3」などとググれば色々出てくるはず。

Cloudinary で画像管理するフローを以下に説明する。

  1. Cloudinary 登録
  2. ローカル PC で Cloudinary プラグインを導入して push
  3. Cloudinary と WordPress の紐付け

1. Cloudinary 登録

Cloudinary にアクセス。

Cloudinary 登録
“SIGN UP FOR FREE” ボタンをクリック。

Cloudinary 登録フォーム
必要な情報を入力して CREATE ACCOUNT

アカウント作成に成功するとダッシュボードが表示されるので、”Environment variable” の CLOUDINARY_URL= 以下の部分をコピーする。

2. ローカル PC で Cloudinary プラグインを導入して push

  1. ローカル PC の localhost/wp-admin/ にアクセス
  2. プラグイン > 新規追加 > Cloudinary で検索すると Cloudinary – Image management and manipulation in the cloud + CDN が見つかるのでダウンロード
  3. 変更を git コミットして Heroku にデプロイ
  4. Heroku の WordPress ダッシュボードから Cloudinary プラグインを有効化

3. Cloudinary と WordPress の紐付け

  1. WordPress ダッシュボードに Cloudinary タブが追加されるので Settings をクリック
  2. フォームに 1 でコピーした CLOUDINARY_URL= 以下の文字列を貼り付けて Update Settings ボタンをクリック

これで紐付けは完了

紐付け後の画像管理

Cloudinary と WordPress を紐付けたら、基本的に Cloudinary に画像をアップロードし、 URL を WordPress の記事に貼り付けて使う形となる。

画像のアップロードは Cloudinary タブ > Media library からおこなう。

最後に

これで画像の管理とプラグイン、テーマ、WordPress バージョンの管理が可能になった。次にこの一連の記事の終わりとして、ドメイン設定について書こうと思う。

WordPress をローカル PC (Mac) で動作するようにする(2016年版)

WordPress が Mac で動作するように、以下の流れで導入していく。なお、前回までの記事の WordPress が Heroku で動作する環境の構築は完了している前提で話を進める。

  1. MAMP 導入
  2. MySQL でなく PostgreSQL で動作するようにする
  3. ブラウザで localhost と入力すると WordPress のトップページを表示

基本的には、mhoofman/wordpress-heroku の Wiki の Setting Up a Local Environment on Mac OS X の流れで導入する。Windows も導入の流れは変わらず、 MAMP の代わりに XAMPP を使う感じになるはず。

1. MAMP 導入

https://www.mamp.info/en/downloads/ から MAMP をダウンロードしてインストール。インストールしたら起動しておく。MAMP は Pro じゃなくて OK。

2. MySQL でなく PostgreSQL で動作するようにする

http://postgresapp.com/ から PostgreSQL をダウンロードしてインストール。

インストールした Postgres を起動して、コマンドラインで以下のコマンドをたたく。

CREATE DATABASE wordpress;
CREATE USER wordpress WITH PASSWORD 'wordpress';
GRANT ALL PRIVILEGES ON DATABASE wordpress to wordpress;

WordPress のルートディレクトリ以下にある wp-config.php の $db = から始まる行を以下に書き換える。この設定で、ローカルでも Heroku でも PostgreSQL にアクセスできるようになる。

$db = parse_url($_ENV["DATABASE_URL"] ? $_ENV["DATABASE_URL"] : "postgres://wordpress:wordpress@localhost:5432/wordpress");

3. ブラウザで localhost と入力すると WordPress のトップページを表示

  1. MAMP を開いて、 Preferences (設定)をクリック。
  2. Web Server タブをクリックし、 Document Root 右のアイコンをクリック
  3. WordPress のルートディレクトリを選択して OK ボタンをクリック
  4. Ports タブをクリックし、 Apache Port に 80 と入力して OK ボタンをクリック
  5. サーバーを再起動
  6. localhost/wp-admin/ にアクセスして WordPress をインストール
  7. localhost にアクセスして、ブログが表示されていれば OK

6 のインストールは前の記事で Heroku にインストールした時と同じ手順で。特に難しいこともないのでそのまま進めば良い。

最後に

これで Mac で動作する環境を作ることができた。もろもろのバージョンアップ等で動作しない可能性もあるので、その際には他の記事をあたったほうが良いかも。その時に最適な repo を探すのが良いはず。

次の記事では Heroku で画像アップロードしても heroku の再起動で消えてしまうことに対する対策を書いていく。同じくプラグインやテーマの問題についても触れようと思う。

WordPress を Heroku にデプロイできるようにする(2016年版)

WordPress を Heroku にデプロイするためのセットアップ方法を紹介する。

まず、Heroku が初めての方は Heroku の Sign up から始めてください。

https://signup.heroku.com/

ローカルに git がない方は Mac だと Homebrew でインストールするとか、Windows だと Git for windows でインストールするなりでなんとかしてください。git の使い方はサポートしないので、 Git Book などをご参考ください。

以下では git のローカル環境へのインストールと Heroku のサインアップが終えている前提で話を進める。

WordPress を Heroku にデプロイする手順

手順は以下の 5 ステップ。なお、以下の操作を行った時点では課金は発生しないはず。もし今後 Heroku の仕様が変わったり、PostgreSQL の価格改定があった場合には課金になるかもしれないが、その際にはアラートなり確認を求める何かが出ると思う。

  1. macminiosx/wordpress-ja-pg4wp2-heroku リポを pull
  2. mhoofman/wordpress-heroku リポを別フォルダに pull してチョメチョメ
  3. Heroku でアプリケーション作成
  4. Heroku に PostgreSQL 導入
  5. Heroku に git push でデプロイ

1 macminiosx/wordpress-ja-pg4wp2-heroku リポを pull

現時点の WordPress 最新バージョンが 4.6.1 であり、このリポジトリは 4.6 をサポートしているので、こちらのリポジトリを使わせていただく。読者が実際に導入する際には他の repo の方が使いやすい場合もあるかもしれないので事前に調べることを勧める。

$ git clone https://github.com/macminiosx/wordpress-ja-pg4wp2-heroku.git blog

フォルダ名の “blog” は好きな名前で良いが後で使うのでここでは “blog” と決め打ちしている

2 本当は 1 のリポだけで動いてほしいのだが、自分の場合正常に動作しなかったため、mhoofman/wordpress-heroku リポを別フォルダに pull してチョメチョメする。

$ git clone https://github.com/mhoofman/wordpress-heroku.git tmp
$ cp tmp/wp-login.php blog/
$ cp tmp/wp-config.php blog/
$ cp tmp/wp-content/db.php blog/wp-content/
$ cp tmp/.htaccess blog/.htaccess

これはあまりよくない方法なので、単独で動く別のリポジトリを見つけたらそちらを使ったほうがよい。そして私に教えて欲しい。

3 Heroku でアプリケーション作成

https://dashboard.heroku.com/apps にアクセスし、 アプリケーション作成する

Herokuでアプリケーション追加
画面右上の New > Create new app を選択

Herokuのアプリ名設定
App Name に自分が設定したいアプリ名を入力し Create App ボタンをクリック。ここで設定した名前から [App Name].herokuapp.com という URL が生成され、その URL でアクセスできるようになる。この URL は仮のものなので本番で独自ドメインをあてたい場合はそこまで気にしなくても良い。後の記事で独自ドメインの設定方法については触れる。

Heroku 設定から git URL を参照
Heroku ダッシュボードから Setting タブを選択するとオレンジの枠で囲んだ部分に git の URL が書かれている。

4 Heroku に PostgreSQL 導入

以下のコマンドをたたく。PostgreSQL を選んだ理由は MySQL の無料プランの容量が少なく、PostgreSQL の方が無料枠が大きかったため。

$ cd blog
$ heroku addons:create heroku-postgresql

Heroku の Web 上からアドオン追加することもできる。ダッシュボード > アプリ選択 > Resources タブ選択 > Add-ons から Postgres 検索 > 採用 という流れ。

5 Heroku に git push でデプロイ

$ git remote add heroku [git の URL]
$ git push heroku master

動作確認と初期化

  1. [App Name].herokuapp.com/wp-admin/ にアクセス
  2. ブログ名などを入力して初期化

WordPress インストール:フォーム
フォームにブログ名など入力

WordPress インストール:インストール完了
インストールできた。ログインボタンクリック

WordPress インストール:ログイン
先程設定したユーザー名とパスワードを入力してログインボタンクリック。(もし忘れた場合は、この時点だと Postgres を一度 Delete してインストールし直せば再度初期化できる)

WordPress インストール:ダッシュボード表示
ダッシュボードが表示されれば OK。

まとめ

上記の作業で WordPress がウェブ上で動作する環境が作れた。しかしこの状態だと画像アップロード問題やプラグイン、テーマなどを更新できない問題があるので次の記事でローカルの開発環境の構築について触れる。

レンタルサーバーから Heroku に WordPress を移行した理由(2016年版)

5年程 さくら VPS で WordPress を運用してきたが、色々と問題がでてきたので、Heroku で WordPress 移行した。レンタルサーバーで WordPress 運用をするデメリットと Heroku に移行するメリット・デメリットを書こうと思う。

なお、以下に書くレンタルサーバーのデメリットは私の怠惰さが問題でもあるので、これから WordPress を導入しようとする方は客観的に判断していただければと思う。

レンタルサーバーで WordPress を運用するデメリット

  • Apache のログファイルの肥大化
  • WordPress のバージョンアップがうまくいかない
  • 気軽にテーマ編集やプラグイン追加がしにくくなる
  • 気軽にテスト投稿ができない
  • 自分で 5 年前に作った LAMP 環境の構成を忘れる
  • サーバー環境の更新方法がわからなくなる

Apache のログファイルの肥大化

Apache のログファイルが肥大化していき、次第に重くなってサーバーダウンする。これを根本解決するにはおそらくログローテーションの設定をしなければならないが、面倒なので一定期間ごとにログファイルを手動リセットw 良くない運用だが、根本解決するコストが結構めんどくさい。

WordPress のバージョンアップがうまくいかない

WordPress のバージョンアップが、ある時うまくいかなくなった。更新作業に失敗すると実際のサイトがダウンした状態になるので下手なこともできないという不安と戦いながら作業するのが大変だし、途中で投げ出すこともできないので精神的な疲労がでかい。

また、自分の場合は Markdown 形式でブログ投稿したかったため、 Jetpack の Markdown を利用したかったが、古いバージョンでは動作しないということでバージョンアップが必須であった。苦労してバージョンアップしたが、過去の記事データの影響か、 Markdown が全く有効にならなかった。一方 heroku で試験的に動かしていた方では、蓄積データがないせいか、古いファイルがないせいか理由は分からないが Jetpack の Markdown が正常に動いていたので、それも移行の理由のひとつとなった。

気軽にテーマ編集やプラグイン追加がしにくくなる

テーマ編集やプラグイン追加をすると本番環境に反映されるので(ステージングや開発環境があれば別だが)、気軽に導入テストができない。

気軽にテスト投稿できない

非公開で記事を投稿できるが、本番環境で気軽に投稿することはできないのはあまり良くない。

自分で 5 年前に作った LAMP 環境の構成を忘れる

さくら VPS で一から LAMP 環境を作った時は楽しかったしやりがいがあって面白かったが、 5 年も経つと構成が曖昧になってくる。ドキュメントにまとめれば良いのかもしれないが、未来の自分のためだけにドキュメントをまとめるのもアホくさい。

サーバー環境の更新方法がわからない

自分の場合、 5 年前に様々なサイトを参考に手探りで作った環境だったので、LAMP 環境のバージョンアップができなかった。それを調べるのも面倒になった。そのため、セキュリティ的にも脆弱な環境になっていく。

要は

色々と面倒だからラクしたかった。でもはてなブログみたいに用意された環境ではなく、色々と自分でカスタマイズはしたかった。

Heroku で WordPress を運用するメリット

  • 面倒なところは Heroku がブラックボックス化してくれる
  • サーバーがダウンしてもワン・コマンドで再起動できる
  • LAMP のバージョン管理をしなくて良い
  • 諸々の実験がラクにできる
  • git 管理しやすい
  • ローカルを開発環境にして git push で本番反映

面倒なところは Heroku がブラックボックス化してくれる

ログファイルの管理や LAMP の構築など、面倒なところを Heroku がブラックボックス化してくれる。また、近年 http のサイトが不利になっているなか、 https の URL も用意されているのは良い。

サーバーがダウンしてもワン・コマンドで再起動できる

もしサーバーがダウンしても以下のワン・コマンドをローカルから叩くだけでサーバー再起動ができるし、これは heroku 共通のコマンドなので apache コマンドのありかなど覚える必要がない。もっともサーバーダウンの原因が他のところによる場合は根本の原因を追求しなければならないが、一時的な負荷によるものなどよくあるものはなにも考えずにワン・コマンドで。

$ heroku restart

LAMP のバージョン管理をしなくて良い

apache や MySQL、 PHP などセキュリティに問題があるバージョンが合っても Heroku 側がなんとかしてくれるので、こちらで面倒なバージョンアップをする必要がない。

諸々の実験がラクにできる

テーマの反映やプラグイン導入、テスト投稿など試験的に導入したい機能を試すために、ローカルの開発環境を用意できる。

git でバージョン管理しやすい

Heroku 自体が git push でデプロイする形式ということもあり、自然にリポジトリを git で管理する流れになる。 github で管理すれば、複数の PC で開発、デプロイが簡単にできる。

ローカルを開発環境にして git push で本番反映

ローカル環境(自分の場合 Mac)で開発やプラグインやテーマを好きなだけ時間をかけて決めて git push すると一発でデプロイできる。

Heroku で WordPress を運用するデメリット

  • 本番環境のファイル更新をするのは NG
  • 一通りの環境を構築するのが結構大変だった
  • 最安構成にするためには色々と工夫が必要
  • 最新の情報が少ない

本番環境のファイル更新をするのは NG

本番環境のファイルを更新したり、ファイルをアップロードすること自体は可能だが、 heroku を再起動すると全ての更新がリセットされる。heroku はそういうサービスなのでそう割り切るしかない。そのため、以下のような問題が発生する。

  • 記事のための Heroku に画像アップロードできない
  • プラグイン、テーマをダウンロードしてもリセットされる

これらはもちろん対応する術がある。

記事のための Heroku に画像アップロードできない

これは WordPress のプラグインを用いることで簡単に他のクラウドサービスと連携できる。具体的には S3 や Cloudinary などのサービスがある。
自分の場合は最大限ケチりたかったので、Cloudinary で無料で管理する方法を選んだ。

プラグイン、テーマをダウンロードしてもリセットされる

これも画像問題と同じことが原因である。これを回避するためにローカル環境でダウンロードして git push でデプロイするのが基本となる。ローカル環境に手動でプラグインをダウンロード&配置しているような記事を見かけたが、これだと正常に配置できたか確認できない。そのため、ローカルでも動作する環境を構築することを強く勧める。

一通りの環境を構築するのが結構大変だった

ローカル環境で動作し、Heroku にデプロイでき、画像アップロード問題も解消するためには結構な労力が必要だった。もっとも情報収集・選別に費やした時間が圧倒的に大きかったので、これ以降の記事を読んでいただいた方はその部分がラクになればと思う。

最安構成にするためには色々と工夫が必要

これも上記と同じようなことだが、Heroku で最安構成にするためには工夫が必要だった。私の場合、Heroku は過去に登録した Legacy プランが残っていたのでそれを利用して、実質ドメイン代だけで年間1600円(初年度400円)くらいで運用できる環境になった。これから Heroku を始める方は Heroku 代 $7 (今だと714円) + ドメイン代になるはず。それでもドメインによっては月額 1000 円以内で運用できるはず。

最安にするためには、

  • MySQL をあきらめて PostgreSQL を採用
  • ローカルを開発環境にする
  • 古い記事を信じない(この記事も古くなったら信じないほうが…)

MySQL の無料プランの容量が小さいのに対し、PostgreSQL の方が大きい(これは 2016 年 9 月時点なので導入の際には確認したほうがよい) 。PostgreSQL を採用したことによって、月額 $10 削減できるが、マイナーな構築方法だったので、その分情報も少なく導入コストが膨らんだ。

最新の情報が少ない

クラウドサービスの価格改定などが最近活発にされており、過去の記事で紹介されているサービスがほぼ課金サービスとなっており、気軽に使えない。可能な限りケチりたかったので、最新のケチな運用方法を知るのに時間がかかった。しかし、この記事を 2016 年付近に読んでいる方には役に立てばと思う。

まとめ

以下つらつらと書いてきたが、あまりまとまってなくて、ただラクしてお金払いたくないとゴネているだけな気がしてきた。実際にどうやって構築するか気になる方は次の記事に読み進めて欲しい。

Heroku x WordPress でラクにブログ運用(2016 年版)

これまでさくら VPS で WordPress のブログを運用していたのだが、諸々の理由で Heroku で運用したくなったので、その経緯と導入手順をまとめる。

WordPress をラクに運用するために様々な記事があったのだが、そこで紹介されているサービスが次々と有料になっていて、2016 年時点で Heroku で WordPress を開始する意義と共に、現時点の最安構成を紹介しようと思う。

  1. レンタルサーバーから Heroku に WordPress を移行した理由
  2. WordPress を Heroku にデプロイできるようにする
  3. WordPress をローカル PC (Mac) で動作するようにする
  4. Heroku にアップロード/ダウンロードしたファイルが消える問題への対策
  5. 独自ドメイン設定