!! ======================== !!
※この記事は1年前のものです。著者はもうWordPressを使用しておりません。この記事で紹介している内容は2019年当時の内容である事を理解した上で、実際に設定する際は最新の情報を確認しながら行ってください。
2019/9/26追記
2020年1月1日より静的IPが有料になる旨Googleから発表がありました。
$0.004/時間=最大約300円/月が有料となります。
それ以外の部分についても無料でなくなり次第記事を更新してまいります。
情報: @mattn 様
2020/3/20追記
まだ請求額が0円だったので「あれ?」って思って調べたら、上記の静的IP有料の変更は1/1から反映されてるものの、キャンペーンで2020/4/1までは割引されている事に気がついたので注釈追記しました。ちなみに割引されなかった場合、1ヶ月フルで199円(ドル変換なので上下あり)でした。storageとかで無料枠超えたものは除外。
2020/4/15追記
コロナの影響で、割引期間が6/30まで延長される旨のメールがGCPより届きました。6/30まではAlways Freeの範囲で無料で使用できます。
!! ======================== !!
「WordPressを簡単に、てっとり早くベストプラクティスな環境を作りたい!」
そんな方に、私が日頃行っていて、一番簡単かつ最強と思っている方法をご紹介します。
今回は初心者の方向けに、ターミナルや特別なツールは一切使いません。
- [1/5]クラウドサーバーにWordPressを構築 (1クリックでコンテナをデプロイ)
- [2/5]CDN連携 & DNS設定 (永久https化/負荷軽減対策)
- [3/5]クラウドストレージとWordPressの自動連携 (容量対策)
- [4/5]簡易セキュリティ対策 (ハッキング対策)
- [5/5]推奨プラグインのインストール
ここまでを1時間で完全無料で用意する方法をご紹介します。
(ターミナルを用いた、発展的な内容については、需要がありましたら別記事を作成します。)
※今回の記事に関してDNS設定の為にドメインが必要となります。まだドメインをお持ちで無い方は、こちらの記事をご参考に無料ドメインを取得してください。
( @mattn 様ご指摘 6/5追記)
※2019/11/12追記 @skillsharejp 様のご指摘記事の通り、各所説明不足と語弊のある部分がありましたので追記修正致しました。私の至らなさから日が経ってからの対応となってしまい大変申し訳有りませんでした。
[1/5] クラウドサーバーはGoogle Cloud Platformを選択する
この項目では土台となるクラウドサーバーのアカウント作成から、必要となる設定を全てご紹介します。
まず、WordPressに最も適しているサーバーはGoogle Cloud Platform一択です。
何故ならば、WordPressを構築する強力なプラグインとの連携や、デプロイするコンテナがGoogle Cloud Platformでは一手間で作成できるからです。
また、永年無料でサイトを公開できるのもありがたいです。
今回ご紹介する方法では、この永年無料で運営できるプランの設定を前提にすすめていきます。
もし現在、AWSやConohaを利用されていて移行したいという方は、簡単に一クリックで移行できる「All-in-One WP Migration」を利用してみてください。
まずはGoogle Cloud Platformにアカウントを作成する
アカウント作成は5分程度で完了できます。
こちらのリンクから公式サイトに飛び、下記画像の赤丸のボタンを押してください。
お支払い情報はGoogleアカウントに登録されているクレジットカードの情報が反映されます。
まだ登録していない方は、新しくクレジットカードかバーチャルカード(未成年でも可能 LinePayなど)を登録してください。
Google Cloud Platformのダッシュボードを開く
登録が完了したら、先程の画面に「コンソール」ボタンが追加されますのでクリックしてください。
もしくは、こちらのリンクから直接コンソールを開いて下さい。
コンソール画面から、左上の「≡」メニューをクリックして、「Marketplace」を選択しましょう。
WordPressのコンテナを選択して、1クリックでデプロイする
「Marketplace」を開くと、下記のように大きな画面が開きます。
この画面からは、Djangoなどの主要なWebアプリケーションのコンテナが搭載されたサーバーを1クリックでデプロイしてくれます。
ここでは、「wordpress with nginx and ssl certified by bitnami」と検索してください。
このコンテナは純粋なWordPressよりも大幅に安価/高速で、かつ今流行のletsencryptが最初から搭載されています。(ちなみに他に有名なコンテナであるKUSANAGIは、今回ご紹介する方法では有料となる(有料のmachine typeを要求される為)為選択しておりません。 2019/11/12修正 @skillsharejp 様ご指摘)
こちらから「COMPUTE ENGINE上で起動」をクリックしてください。
下記の通りに設定画面を編集して、「デプロイ」ボタンを押して下さい。
(us-east4は除く。 @negiboudu 様6/4によるご指摘。)
(高速化を目指す場合、有料となりますがUSでなく日本におきます)
WordPress構成完了
以上の工程で、WordPressのサイトがクラウドサーバー上に構築され、全世界に公開されました!
早速、下記画像の赤枠内をクリックして、構築したばかりのWordPressサイトを確認してみましょう。
ここまでで、WordPressの本体を公開状態にする事はできました。
ここからあと2つ、Google Cloud Console上で操作をしましょう。
動的IPを静的にする
こちらのURLをクリックすると、外部IPアドレスというページに飛びます。
こちらに先程作成したプロジェクトのIPアドレスが「エフェメラル」というタイプを、「静的」に変更してください。
この時、一番左に表示されているIPアドレスをコピーしておきましょう!
Cloud Storageの設定にて、バケットの権限を付与する
こちらのURLから、サイト用のCloud Storageを作成しておきます。
左上の「バケットを作成」を押して、設定画面に入ってください。
名前だけ適当に入力しましょう。(本来はサイトドメイン名が好ましいのですが、Google Search Consoleの設定が必要なため、中級者向き。今回は一旦無視。)そして、「デフォルトのストレージクラス」をRegional、「場所」をus-east4以外のus-***を選択してください。
(@Chikana 様情報 6/13追記)
バケットが作成されたら、画像の右に赤枠で囲ってある部分を押して、「パケットの権限を編集」を押しましょう。
下記のような画面が開きますので、「ストレージオブジェクト閲覧者」のメンバーに「allUsers」を追加してください。(8/30追記 @suikasu123 様ご指摘)
👇👇👇
👇👇👇
👇👇👇
以上でGoogle Cloud Platform上の設定は完了です!
ここまで、「アカウント作成」⇛「コンテナをデプロイ」⇛「動的IPを静的にする」⇛「DNS設定をしてドメインを有効化する」⇛「Cloud Storageを有効化する」方法をご紹介して参りました。
[2/5]CDN連携 & DNS設定
この項目では、常時https化とサイトスピード向上化(負荷軽減)を実現するCDN連携と、そのCDNが提供しているDNS設定の方法をご紹介します。
本来https化するためには、自分で証明書を作ったり手動で更新したりしないといけないのですが、この方法なら永久自動https化されます。
まずはこちらのCloudflareというサイトに登録しましょう。
会員登録が済んだら、ダッシュボードに飛びます。
「Add a Website」という欄に、自分のサイトのURLを入力しましょう!
プランは必ず「Free」を選んで下さい。
有料プランの方は大規模会員サイトなどで必要となりますが、100万PVに満たないほどの中規模サイトであれば不要です。
次にDNSレコードに関する設定画面(下記画像)が出てきます。
こちらでは、登録したいIPアドレスとドメインを紐付けるDNS設定を行う事が可能です。こちらで先程Google Cloud Platformで作成したIPアドレスをコピーペーストしましょう!
最後に新しいネームサーバーの登録が求められます。このネームサーバーを、ドメインを買ったサイト(お名前ドットコムなど)に登録してください。
これで登録は完了です。反映に30分ほどかかりますが、干渉する事はありませんので、そのまま待つか次の作業を始めるなどしましょう。反映が完了すると、ダッシュボードに行く事ができるようになります。
次に、Cloudflareの設定画面から「Always Use HTTPS」を選択しましょう!
これを選択しておくと、反映に30分くらいかかりますが、自動でHTTPS化されます。
また、「Automatic HTTPS Rewrites」もONにしましょう。
例えばCSSをhttpで指定しているファイルが合った場合、この機能を使う事でリファレンスが壊れないようにしてくれます。
( @negiboudu 様ご指摘。6/6追記。 )
最後にCryptメニューから「SSL」項目を確認して、Fullに設定してください。
サブドメインも追加したい場合
Cloudflareを使用する場合、サブドメインもネームサーバー変更の必要があります。
具体的な手順についてはこちらをご参照ください。
https://sekai1blog.com/wordpress/1561/
(8/7追記)
[3/5]クラウドストレージとの自動連携
次に先程Google Cloud Platformで作成したストレージに、WordPressから投稿した画像が自動保存⇛URLも自動でストレージのURLに書き換えられる方法をご紹介します。
今回紹介するプラグインを使う事で、一手間でクラウドストレージと連携する事が可能です。
(注意: 相当大きな容量ではありますが、月5GBの容量までが無料枠です。仮にこの枠を超える場合で、かつ無料の枠内でサイトを構築したい場合は、この項目は無視してください。)
まずWordPressの設定画面から、「WP-Stateless – Google Cloud Storage」というプラグインをインストールしてください。
インストールが完了すると、下記のような設定画面になります。ここからBegin Setup Assistantを選択して進んで下さい。
まずはじめに、Google Loginを押してGoogleアカウントの認証を得ましょう。
次に、先程作成したクラウドストレージのバケットをこちらから選択してください。
上の赤枠には自分が作成したプロジェクト名を、下の赤枠にはバケット名を選択してください(クリックすると自動で候補が出てきます。)
これで設定は完了です!
普通にクラウドストレージとの連携を行おうとするとかなり手間なはずなのですが、このプラグインを使うとこんな一瞬で終ってしまいます。
実際になにか画像をアップロードしてみましょう!
この通り、メディアから画像をアップしただけでクラウドストレージに保存され、URLもクラウドストレージに当たっている事がわかりますでしょうか?
画像や動画などはこうしてクラウドストレージに保管する事で、サイトのスピードを向上させたりサーバーの容量圧迫から守りましょう!
(※実際に設定画面に入った時に混乱するかもしれませんが、この画面では3番目のCDNを選択しましょう。)
[4/5]簡易セキュリティ対策
今回は、プラグイン一つで十分なセキュリティ対策をご紹介します。
本来であればポート変更したり、Firewall Black ListのIPをブロックしたり、色々と操作は必要です。
ですが!今回は初心者の方でも簡単に設定できるよう、理論上ほとんどの攻撃をブロックできるプラグインをご紹介します。
そのプラグインとは、「SiteGuard WP Plugin」です。こちらをまずは追加してください。
このプラグインは、WordPressで最も人気のセキュリティソフトです。
インストールするだけで、ログイン時のReCapcha設定が有効になり、不正ログインブロックが有効になったりと、インストールするだけで必要十分なセキュリティ機能がつきますが、1点だけやらなければいけない事があります。
WordPressは管理画面のURLが一意に「/wp-admin/」となっている為攻撃者にとってターゲットにされやすく、SiteGuardはそれを防ぐためにURLを変えてくれるのですが、この機能は今回使用しているnginxというサーバー環境には対応しておらず、ログインがそもそもできない不具合が発生してしまいます。
ですので、下記の画面からログインページのURL変更機能をオフにしましょう。
(@muuuuuuura さん
@kunikazutayama さん
@KyotaSato1 さん
@negiboudu さん
@falloul75 さん
情報 6/13追記)
また、画像認証において不具合が発生する方がいらっしゃるようです。
キャッシュの関係かと思われますが、念の為トラブルが起きると二度と治らない可能性があるのでオフにする事を推奨致します。
(@ukiradio さん
@sasagin さん
https://qiita.com/sasagin/items/6c5bddb2faacbf6038e9
情報 7/29追記)
この状態ですと当然セキュリティ的に危険な為、Google Authenticatorというプラグインをログイン&有効化して二段階認証を設置します。
次に、お使いのスマートフォンにGoogle二段階認証の鍵を保管するアプリをインストールしましょう。
Android
iOS
アプリのインストールが完了したら、WordPressの左メニューから、「ユーザー」を選択して、自分のユーザー設定画面を開きましょう。中段あたりにGoogle Authenticatorの設定項目が現れているはずです。
そこでは下記画像の通りに設定を行い、「Secret」の中にあるキーを、先程スマホにインストールしたアプリに入れましょう。(アカウントはメルアドなどで大丈夫です。)
以上の設定が完了すれば、下記画像の通り二段階認証が動作している事が確認できるはずです。
[5/5]推奨プラグインのインストール
次に、WordPress運用にあたって必ず入れていなければならないといっても過言ではないプラグインを紹介します。
これらはSEOのために必要だったり、バックアップの為に必要だったり、SendGridを入れる為に必要だったり、とにかく絶対に入れて頂きたいものです!
Updraft Plus
これは、究極全てのWordPressユーザーが入れなければいけないものです。
バックアッププラグインはBackWPupなど他にも山程ありますが、Updraftが最も最強のプラグインです。
というのも、
- クラウドストレージと連携できる
- バックアップの細かい回数やファイルの指定ができる
- 極めつけに、1クリックで簡単に復元できる(他のプラグインは、手動でDB復元とか面倒な作業が必要)
という理由があるからです。
絶対に入れましょう!
WP Mail SMTP ( @shimo_513 様ご質問 6/5追記 )
サーバーにWordPressをインストールしただけでは、メールサーバーが立ち上がっておらずメールが送れないようになっています。本来であればGSuiteなど連携しなければいけなくとても面倒なのですが、今からご紹介するSendGridという外部ツールを用いると、1度コピーペーストするだけでメールが送れるようになります!
まずはSendGridに登録して、無料でAPIを取得しましょう。(日本語のサイトに行くと、変な審査などで1週間待たされたりするので必ずこのリンクの海外のSendGridサイトから作成しましょう。)
会員登録が済んだら、https://app.sendgrid.com/guide/integrate/langs/smtpに遷移して、こちらでAPIを作成してください。
次にWordPressのプラグイン追加画面から、「WP Mail SMTP」のプラグインを追加してください
プラグインを有効化したら、設定画面の最初にて下記のように先程作成したAPI Keyを貼り付けてください。
設定はこれだけで完了です!試しに設定画面の「Email Test」からメールを送信してみてください。実際に成功できているのが確認できたでしょうか?
IP Geo Block
(@eruside 様情報 6/13追記)
IP Geo Blockは、特定の国やIPアドレスからのアクセスを遮断してくれます。
これが何故必要かというと、Google Cloud Platformでは中国とオーストラリアからのアクセスに特別料金を設けているからです。またハッキングのリスクを防ぐためにも、必ず入れておきましょう。
インストールが完了したら設定画面を開き、
①ブラックリストを選択
②「国コードのブラックリスト」に「AU,CN」を入力してください。
次に下にスクロールして、「バックエンドの設定」では全てのチェックボックスにチェックを入れてください。
最後に下にスクロールして、「フロントエンドの設定」では「国コードで遮断」だけチェックを入れてください。
これで設定は完了です。
WP Optimize
Wp optimizeは、WordPressの内部データベースを最適化するプラグインです。
インストールするだけで自動更新がかかるので、必ず入れておきましょう。
WebSub/PubSubHubbub & Google XML Sitemaps
サイトマップの更新/送信を自動化する上、Googleに更新をすぐインデックスされるようになります。
これを使うことで、自分が一番最初に記事を公開した事の証明となり、サイトコンテンツのコピー防止になります。
Broken Link Checker
サイト内のリンクが切れていないかを全てチェックしてくれるプラグインです。
記事を読んでいる方が不便な思いをしないように、こちらも必ず入れておきたいのですが、このプラグインは非常に重いので、頻繁に駆動させないようにしましょう。ですので、「【推奨レベル】」と仮書きさせて頂きました。
Cloudflare
Cloudflare公式のプラグインです。
キャッシュされたファイル群(CSSファイルなど。HTMLはデフォルトでキャッシュされない。)を更新した時に、本来CloudFlare管理画面でキャッシュ削除しなければならない手順が、自動でキャッシュ削除できるように設定されます。
導入方法は外部記事となりますがこちらをご参照ください。
(2019/11/12 @skillsharejp 様ご指摘)
必要最低限なプラグインは以上になります。
キャッシュ系プラグインは、事故が多発するのでやめておきましょう
上記、あくまでサイト管理者の管理意識によるものであり、断定的な表現で語弊を招いてしまいました。
外部サイトとなりますがこちらの記事などに導入例&方法がございますのでご参照ください。
(2019/11/12追記 @skillsharejp 様情報)
まとめ
いかがでしたでしょうか?
今回は、完全無料で1時間で簡単にWordPressを構築する方法をご紹介しました。
私はこういった簡単なセットアップまでを、クライアント様との初回面談で実際に構築しながら、お客様に見てもらっています。
Wordpressなら
— アプリもウェブもPython | 村上昴平 (@klono_ryuta) May 26, 2019
①1分:GCP MarketかAWS Lightsailでデプロイ
②1分:業種にあったテーマ適用(アパレル⇨TCD等)
③1分:certbotで自動https化
④1分:wp-statelessで自動CDN化
この時点でSEO/速度は95点
初回面談中にこれやる⇨お客様笑顔
モダンな技術は無いです
けどお客様の安心を優先するなら最強
外枠くらいは、「すぐに」「簡単に」「ベストプラクティスで」完成させたいものです。
今回の方法を行えば、慣れれば20分くらいで簡単にできてしまうので、ぜひ興味のある方は試してみて下さい。
おまけ FTP設定やポート変更などの発展編について
今回は初心者の方に向けた記事でしたので、ターミナルを用いた設定方法などは完全に省略しました。
本来であればFTP設定とか、ポート変更とか、Stack Driverの設定などを他にも色々と必要だったりします。
また、開発環境についてもDockerを用いたより高度かつモダンな方法があります。
もし需要があれば、コメントを頂ければ別記事でまたご紹介したいと思います。
さらなるおまけ コマンド集
今回、初心者の方に向けてターミナルを使う操作は一切入れないでいたのですが、それでは少々使い続けていくには足りない操作がありましたので追記致します。
まずはGoogle Cloud Platformの下の画面から、以下のリンクから「VMインスタンス」という画面を開いてください。
画面を開きましたら、自分がデプロイしたサイトのリストの、「接続」⇛「SSH」ボタンを押してください!
ボタンを押したら、以下のような画面がポップアップしたら準備完了です!
①右下のロゴを外す
以下のコマンドをコピペして、Enterを押してください
sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1 && sudo
/opt/bitnami/ctlscript.sh restart nginx
②Cloudflareを用いずに永久自動https化する
!!! YOURMAILの部分は、ご自身のメールアドレスに
!!! YOURDOMAINの部分は、ご自身のドメインに変更してください。
sudo /opt/bitnami/letsencrypt/scripts/generate-certificate.sh -m YOURMAIL -d YOURDOMAIN
( @hiropy0123 様ご指摘 6/8追記 )
③アップロードサイズの上限を増やす
※以前はコピペで動くコマンドを記載していましたが、2回行うと不具合が生じるのでやはり手動で行っていただくように変更しました。
- /opt/bitnami/apps/wordpress/conf/nginx-app.confに
client_max_body_size 128m;
を追記(既に記載がある場合は修正) - /opt/bitnami/php/etc/php.iniに
upload_max_filesize = 128M
を追記(既に記載がある場合は修正) - /opt/bitnami/php/etc/php.iniに
post_max_filesize = 128M
を追記(既に記載がある場合は修正) - 変更を反映するために
sudo /opt/bitnami/ctlscript.sh restart nginx && sudo /opt/bitnami/ctlscript.sh restart php-fpm
を行ってください
(@tomoka1211 さん
@muuuuuuura さん
@mugi_chan_tea さん
情報 8/2追記)