AWS + EC2 + CentOS + Kusanagi (WordPress) + SSL でサーバ費用を無料にしよう

先月よりWordPressのバージョンもいよいよver 5.x.x台となりました。
新しいエディタであるGutenbergに慣れるべく、何か練習用の記事を書いてみたいと思い、表題の件に関してまとめてみることにしました。

世の中、何かを勉強しようと思っても、初心者向けの記事でも敷居が高いことが多いように感じます。ここでは、可能な限り丁寧に、専門用語をなるべく使わずにゆっくり進めていきたいと思います。

ドメインを用意しよう

丁度、新しくドメインを取得し、新しくサーバも用意が必要であり、WordPressの環境が必要というケースがあり、その作業を行っていきたいと思います。

まずドメインを取得します。今回取得するドメインは台湾の会社(コーポレート)ドメインである “.com.tw” ドメインであり、AWSが提供しているドメインサービスの”Amazon Route53″では取得不可のドメインとなるため、このドメインを取り扱っている台湾のレジストラ(ドメイン屋さん)から購入(契約)手続きを行います。

ドメインが取れたら

whoisでドメインがきちんと取れていることを確認します。

https://www.whois.com/whois/example.net にアクセスします。

AWSのアカウントを作ろう

https://aws.amazon.com/jp/

右上の『今すぐAWSアカウントを作成 』をクリック
パスワードは安直なものはご法度です。ここでは自動生成されたランダムパスワードに設定します。
入力します。
入力し終わりました。次へと進みます。
支払い情報を入力し、次へと進みます。

検証コードをどのように受け取りますか?
SMSと電話が選択できますが、お友達から電話がかかってきたような感じで電話の方がなんとなく嬉しい感じがするので、ここでは電話をチョイスします。

『この電話は、アマゾン・ウェブサービスからの自動案内です。』
『ピン番号の認証が完了しました。』
『アマゾン・ウェブサービスに戻り、登録を完了させてください。』
『この度は、アマゾン・ウェブサービスに関心を寄せてくださり、ありがとうございました。』

次へ進みます。

ここでは、ベーシックプランを選択します。
黄色の「無料」ボタンをクリックします。

選択後、トップページにリダイレクトされました。
メールがくるそうです。
メールがきていました。
ここには特に情報はありません。

AWSにログインしよう

それでは、コンソール(管理画面)にサインイン(ログイン)してみたいと思います。

ここでは、「ルートユーザー」としてサインインします。

今回は、米国東部(オハイオ)となっているリージョン部分を、アジア・パシフィック(東京)としておきます。

ドメイン設定編

Route 53でDNS設定

『Route 53 』サービスを探します。

レジストラ(ドメイン屋さん)にてドメインを購入しましたが、 ドメイン屋さんでは細かなドメインにまつわる設定ができないので、AWSのドメイン管理サービスを使用します。

Route 53はアカウント開設初期の1年間の無料利用枠とは別に、1ドメインあたりの管理で月額で0.5USD程度の費用が発生しますが、便利なため今回は利用することにします。AWSでなくても問題ありません。GCPの方が、NS名が格好いい気がします。

『Route 53』に入りました。

先程までも横文字だらけの画面でしたが、ここではとうとう英語になりました。Webの世界は英語の世界、日本語なんてほんの一部です。月日が立てばここもいつか日本語対応されると思いますが、思い切って進んでいきましょう。

一番左の、”DNS management”を選択します。青い”Get started now”をクリックします。その際、”Get started now!”とネイティブっぽく声に出して読んでみましょう。

青い”Create Hosted Zone”(ホストゾーンの作成)ボタンをクリックします。
ホストゾーンとは一体何でしょうか。あまり深く考えないでいいはずです。

こんな画面に飛びます。

もう一度、青い”Create Hosted Zone”ボタンをクリックします。
次に何をするべきか、ボタンに分かりやすく青い色がついていますが、心配性の方にとっては不安ですよね。わかります。

“Domain Name”の部分に、ドメイン名を入力します。”example.net”と書いていますが、世のエンジニアさん達は一般化された表現にこだわるので、”hoge”やら”example”やら”foobar”やらの表現が飛び交います。ドメインを入力したら、下の青いボタンをクリックします。

ホストゾーンが作成された状態

無事、このような画面になります。
ここで大切なのは、NSの4つの値。この値をコピーしておきます。

レジストラからNS設定を行う

ドメインを購入したところ(レジストラ=ドメイン屋さん)で設定を行います。NS(ネームサーバ)をAWSに向けますが、ややこしいことは抜きとして、ドメインからサーバへ矢印を向けるくらいの感覚で大丈夫です。

「このドメインの情報は、とりあえずここ(AWS)に行って聞いてみて!」
といった矢印をAWSに向けます。

NS設定はレジストラ毎に異なるため、ここでは説明しきれません。お名前.comあたりが一番多いのかもしれませんが、お名前.comには正直うんざりしており、紹介する気もありません。

すべて繁體中国語です

レジストラ毎に設定画面は異なりますが、設定の方法はどこも基本的に変わらず、先程取得したNSの4つの値を入力するのみです。最後にピリオドがついたりつかなかったり、の違いはあるかもしれません。

さて、昔はNS設定後すぐに作業開始はできなかったのですが、最近は早くNS設定が”浸透”するようです。浸透という言葉を使うと偉い人からツッコミがくるようなのですが、ここでは見逃してください。Web(蜘蛛の巣)に情報が浸透するのを待つ必要があります。

whoisにて確認が可能です。

しばらく待ってみて、
https://www.whois.com/whois/***
(例) https://www.whois.com/whois/example.net
にアクセスすると、ドメイン情報に先程のNSの値が紐付けられていることが確認できます。更新されていない場合は、右上の青いリロードアイコンをクリックするか、もう少し待ってみてから再びアクセスしてみましょう。それほど待たずに反映される世の中になりました。そこまで気にせず、先に進んでしまって問題ありません。

レジストラ側の設定は、これにて終了。AWSの画面へ戻ります。

EC2を設定しよう

左上の”サービス”から、EC2へと進みます。

EC2だの、S3だの、AWSには略称がよく出てきます。
私自身は略された単語は調べて理解しなければ前に進めないタイプです。
EC2とは、”Elastic Compute Cloud”の略です。
Elasticとは、柔軟な、という意味。適当な説明ですが、その名の通り、柔軟な設定が可能なクラウド上のサーバです。

「まずはEC2でインスタンスを立ち上げ~」などの会話が当たり前に飛び交う昨今ですが、この画面を見てパッと分かる方はどれだけいるのでしょうか。

細かい部分まで説明しきれないため、必要な部分のみに絞り進めていきたいと思います。

青い『インスタンスの作成 』 ボタンをクリックします。

“kusanagi”と入力し、エンターキーを押します。

このように検索結果が表示されます。

青い「選択」ボタンをクリックします。

青い”Continue”ボタンをクリックします。

インスタンスのタイプを選択する画面で、
「無料利用枠の対象」 となっている”t2.micro”を選択します。
デフォルトでは”t2.medium”となっているため、要注意です。
青い『作成と確認』ボタンをクリックします。

青い『作成』ボタンをクリック

こんなポップアップが出てきます。

セレクトボックスより、『新しいキーペアを作成』を選択します。
キーペア名は、ここでは”keypair”としていますが、プロジェクト名をそのままつけてみましょう。

このように進めていきます。
『③キーペアのダウンロード 』 にて、keypair.pem (hogeと入力した方は、hoge.pem)をダウンロードし、大切に保管しておきます。クラウドストレージに保存、などはご法度のため、可能な限り安全な場所に保管しておきます。

『インスタンスは現在作成中です』

十数秒ほど待ちます。

本当はぼかす必要などもないのですが、セキュリティ意識の高さをアピールするためにぼかしておくことにします。やっとこのあたりから本題のような気がします。

IAMユーザ作成編

IAMユーザを作成しよう

I am user. ではなく、”Identity and Access Management”の略となります。root権限で作業をすると偉い方に怒られます。
root権限の使い回しなどもってのほか。誰がいつどこでどんな作業をしたのかなどの記録の面からも、セキュリティの面からも、IAMユーザの作成は大切です。

IAM (Identity and Access Management) へと進みます。

『カスタマイズ』をクリック

細かな設定をしているとキリがありませんが、気になった部分を設定していくことにします。
「IAM ユーザーのサインインリンク」つまり、今回作成したAWSアカウントの管理ユーザーAさんがログインするためのURLを設定します。自動的にAWSのアカウントIDである12桁ほどの番号が割り振られたURLがデフォルトのログインURLとなっていますが、もう少し馴染みやすいURLにしたいと思います。このURLのみからログイン可能となるため、分かりやすくする、あるいはより複雑にするのも自由です。

好きな名前、あるいはプロジェクト名などを入力します。

hogeと入力すると、このようになります。

IAMユーザの作成へ進みます。

「個々の IAM ユーザーの作成」のアコーディオンをクリックし、
グレーの「ユーザーの管理 」ボタンをクリックします。

青い『ユーザーを追加』ボタンをクリックします。

青い『次のステップ:アクセス権限』ボタンをクリックします。

グレーの「グループの作成」ボタンをクリックします。

一番上の”AdministratorAccess”を選択し、青い『グループの作成』ボタンをクリックします。

ここで、グループ名は適当につけておきましょう。この部分に関わらず、ほとんど全て後からいつでも変更可能です。

青い『次のステップ:タグ』ボタンをクリックします。

青い『次のステップ:確認』ボタンをクリックします。

青い『ユーザーの作成』ボタンをクリックします。

グレーの『閉じる』ボタンを押す前に

セキュリティ情報がここで確認できるため、これらを全て安全な場所に記録しておきます。credentials.csv をダウンロードしておくと、必要な情報がまとめられているため、これを安全な場所に保存しておく形でも問題ありません。

グレーの『閉じる』ボタンをクリックします

ユーザーが作成されたことが確認できます。

ヘッダーナビゲーションより『アカウント』をクリックします

『編集』リンクをクリックします

ここで、IAMユーザーが作成されたため、一度rootユーザーをサインアウトし、IAMユーザーでサインインし直しますが、その前に「IAM ユーザー/ロールによる請求情報へのアクセス」を有効にしておきます。

「IAM アクセスのアクティブ化」にチェックを入れ、青い『更新』ボタンをクリックします

ここで、ヘッダーナビゲーションから「サインアウト」をクリックし、サインアウトします。

AWSからサインアウトした状態

さて、ここで新たに作成したIAMユーザーでサインインを行います。
先程設定したサインイン用URLから直接サインインを行います。

適宜入力し、青い「サインイン」ボタンをクリックします

ここで、
「アカウント」は一番最初にAWSアカウントを作成した際に指定したアカウント名を入力します。
「ユーザー名」は先程作成したIAMユーザー名(先程の例であればyourdomain@gmail.com)を入力します。
「パスワード」は、先程自動的に生成されてメモしておいたセキュリティ情報のものを入力します。

適宜入力し、青い「パスワード変更の確認」ボタンをクリックします

IAMユーザー作成時、デフォルトで「パスワードのリセットが必要」の項目が有効となっているため、このように初回のサインイン時にパスワードのリセットが要求されます。ここで新しいパスワードを入力し、古いパスワード情報のメモを更新しておきます。

IAMユーザーでサインインが完了した状態

一番上のメインナビゲーション右部の、サインインユーザー名部分が、自分のユーザー名となっていることを確認します。

Elastic IPの設定を行おう

再び”EC2″のサービス画面を開きます。

『1個の実行中のインスタンス』 リンクをクリックします

左サイドバーから『Elastic IP』リンクをクリックします

青い『新しいアドレスの割り当て』をクリックします

青い『割り当て』ボタンをクリックします

青い『閉じる』ボタンをクリックします

新しく作成したElastic IPの右クリックメニューより、「アドレスの関連付け」メニューをクリックします

適宜選択を行い、青い『関連付け』ボタンをクリックします

先ほどrootユーザーにて作成しておいたインスタンスをここで選択します。本記事の手順通りであれば、選択は一通りのはずですが、複数インスタンスを作成している場合はここで今回設定したいインスタンスを指定します。

ところで、インスタンスという呼び方自体もどこか曖昧で、とっつきづらいように感じてしまいますね。ここでは「サーバ」と言い換えて考えてしまいましょう。

青い『閉じる』ボタンをクリックします

セキュリティ(SSL)の設定を行う

このままだと、httpのみでしかサイトにアクセスできない状態であるため、httpの他に”https”通信も許可しておく必要があります。

グレーの『編集』ボタンをクリック

左サイドバーのセキュリティグループをクリックし、”KUSANAGI for AWS -“から始まるセキュリティグループを選択し、「インバウンド」タブの「編集」をクリックします。

グレーの『ルールの追加』ボタンをクリックします。

ここで、「インバウンド」の通信ルールとしてhttpsを選択肢、青い『保存』ボタンをクリックします。

このように、1箇所しか指定していないHTTPSが2行出てきてビックリしてしまうかもしれませんが、これで正常な動作であり、問題ありません。

ドメインのAレコードを設定する

ここで、”Elastic IP”の設定(関連付け)が完了しました。こちらのIPをメモしておきます。

次に、Route 53を開きます。今回はRoute 53にてDNS設定を行っていますが、DNS設定はAWSでなくても、GCPでも、普段お使いのサーバでも、どこでも大丈夫です。

“Hosted Zones”をクリックします

今回設定するドメインをクリックします。

青い『Create Record Set』 ボタンをクリック

適宜入力し、青い『Create』ボタンをクリック

「Value」の部分に先程のElastic IPの値を入力します。
Nameの部分は、空欄で構いません。
例えば、example.netが既にあり、test.example.net を今回設定した場合は、Nameの部分はtestと入力します。

また、世の中”www”が先頭につくパターンのドメイン設計も多いため、ここではwwwありのものも同時に指定しておくとよいかもしれません。

Aレコードの設定はこれで完了

SSH接続を行う

ここではWindows環境で進めていきます。MacはMacで別記事として取り上げる時間があるかはわかりませんが、本質は同じです。ここでは、使用ツールとして”Rlogin”を使用します。

http://nanno.dip.jp/softlib/man/rlogin/

32bit/64bitの環境に合わせてダウンロード、インストールを行います。

『新規』ボタンをクリックします

「エントリー/コメント」の部分は、適当に何か入力しておきましょう。
「タブ/前接続先」の部分に何か入力すると、接続先がディレクトリで管理でき便利です。
「Server Address」の部分は、先程設定したElastic IPを入力します。
「User Name」の部分は、”centos”となります。
「Password/phrase」の部分は、空白となります。
「SSH Identity Key」 の「参照」をクリックし、今回ダウンロードしたpemファイルを指定します。先程の例では”‘keypair.pem”となります。

OKをクリックしてみましょう。

「OK」ボタンをクリック

「接続する」をクリック

カラーの背景設定から、背景を若干半透明にしてあるため、背景が透けてしまって少し恥ずかしいのですが、このような画面になります。

RLoginにてSSH接続を行ったところです。

sudo su –

sudo su –

コマンドラインはなかなか慣れないものですが、Alt+V, Ctrl+Vなど、コピー・ペーストしやすいように事前に環境設定が必要かもしれません。

yum –enablerepo=remi,remi-php56 update -y

待つことおよそ5分

地味に時間がかかるため、コーヒーでも淹れて待つことにします。
自動的に画面が流れていきますが、ここでは黙って画面を見つめることで、エンジニア感が増します。

無事終わった模様


reboot
サーバ再起動中のため、念の為20~30秒ほど待っておきましょう。

sudo su -

まずはroot権限に切り替えます。

$マークが、#マークになればOKです。

kusanagi init --tz tokyo

ここから、Kusanagiの初期設定を始めていきます。
いくつかの質問がきますので、それらを適切に指定し、適宜記録し、安全な場所に保存しておきます。

Select your using language.
1 : English
2 : 日本語
q : quit

1と入力し、エンターキーを押します。
ここでは、設定したい言語環境に合わせます。2で問題ありません。

Select your keyboard layout.
1 : English
2 : Japanese
q : quit

1と入力し、エンターキーを押します。
ここでは、設定したいキーボード環境に合わせます。 2で問題ありません。

Changing password for user kusanagi.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

CLI(コマンド・ライン・インターフェース)は真っ黒な画面でぶっきらぼうで怖くなってしまいがちですが、臆せず入力していきましょう。新しいPasswordは安全なランダムパスワードを事前に用意しておき、コマンドライン上でペーストするとよいでしょう。

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):

ここは設定を行いません。Enterキーを2回押下します。

KUSANAGI can choose middlewares.
Please tell me your web server option.
1) NGINX(Default)
2) Apache

ここは、デフォルトの(1) NginXでよいので、そのままEnterキーを押します。

Then, Please tell me your application server option.
1) PHP7(Default)
2) HHVM
3) PHP5

ここも、デフォルトのPHP7で問題ないので、そのままEnterキーを押します。

Kusanagiの実行環境によっては、あるいは旧バージョンのKusnagiでは、HHVMがデフォルトとなっていましたが、やはり癖のある実行環境であり、HHVM上では動かないアプリケーションが多く悩まされるためここではPHP7が無難といえます。このあたりは今後いつでもコマンドラインから変更可能です。

黄色い文字が出たりしますが、みんな出るので問題ありません。何一つ間違っていないので、ご安心ください。

Then, Please tell me your ruby version.
1) Ruby2.4

1つしかない選択肢を迫られます。ここは黙ってEnterキーを押します。

Then, Please tell me your Database system.
1) MariaDB(Default)
2) PostgreSQL

ここも、Enterキーを押します。

Enter MySQL root password. Use [a-zA-Z0-9.!#%+_-] 8 characters minimum.

MySQLのrootパスワードを求められます。安全なパスワードを用意しておき、ここで入力し、Enterキーを押します。確認のためにもう一度入力する必要があるので、改めて入力し、Enterキーを押します。

Do you want to install Mroonga ?:

ここはyと入力しEnterキーを押します。
Kusanagiのオフィシャルドキュメントにはない質問などもいくつか登場しますが、落ち着いて対応すれば問題ありません。

一旦これにてKusanagiの初期設定は完了となります。
続いて、プロビジョニングを行っていきます。
プロビジョニングとは、Kusanagi上に乗せるサイトの設定のことです。

  kusanagi provision kusanagi_html

オフィシャルのドキュメントでは上記のようになりますが、kusanagi_html はあまりにもそのままであり、かつ1つのサーバ(Kusnagi環境)に複数のサイトを載せられるため、サイト名(プロジェクト名)を特定しやすいような名称が好ましいでしょう。もちろん、そのままでも構いません。

kusanagi_htmlの部分は任意として、上記のコマンドを入力しEnterキーを押します。

  Choose the installation language of WordPress.
1 : en_US
2 : ja
q : quit

環境に合わせ、適宜選択します。
ここでは英語を選択したいため、そのままEnterキーを押してみました。
すると、

Which do you choose?:  
Please select
1 : en_US
2 : ja
q : quit
Which you want?:

若干食い気味の表現で再質問が飛んできます。1, 2, qのいずれかを入力して選択しないといけないようです。適宜選択し、次へ進みます。

Enter hostname(fqdn) for your website. ex) kusanagi.tokyo

ここで、FQDNを入力します。今回設定したいドメイン名となります。
example.net
test.example.net
などとなります。
先程Route 53にてAレコードを設定したドメインをここで2回入力し、Enterキーを押します。

さて、Kusanagiでは事前にドメイン名を決めなければ設定ができません。しかし、ここで指定するドメイン名は今後随時コマンドから変更可能なため、心配する必要はありません。

In order to use Let's Encrypt services, you must agree to Let's Encrypt's Term of Services.
If you agree to this TOS, type your email address; if not, hit enter twice.
TOS of Let's Encrypt : https://letsencrypt.org/repository/

無料SSLサービスの”Let’s Encrypt”の設定をここで行います。対話式でここまで聞いてくれるので、非常に親切です。自分のメールアドレスを入力しておきましょう。

Enter the name of your database.

Enter user name for database ****************.

Enter password for database user '****************'.
USE [a-zA-Z0-9.!#%+_-] 8 characters minimum.

このあたりも同様に続きますが、適宜入力し、きちんと保存しておきます。

Congratulations! とお祝いされ、ここで一旦設定は一区切りついた形です。
実はまだまだ必要な設定が残っているのですが、とりあえず設定完了したドメインにアクセスしてみましょう。

表示されることが確認できました。

常時SSL化

httpとhttpsの両方でアクセスできる状態です。httpは不要なので、自動的にリダイレクトされるようにしておきます。

kusanagi ssl --https redirect プロファイル名
(例) kusanagi ssl --https redirect kusanagi_html

[root@kusanagi80 ~]# kusanagi ssl --https redirect kusanagi_html
Set redirect all traffic on dearu.com.tw to HTTPS.(Permanently)
Modified nginx/httpd config files and restart.
Done.
You have new mail in /var/spool/mail/root

これにて常時SSL化対応完了となります。

Basic認証を付与

このままの画面ではよくないため、まずは最も手軽に実装可能なBasic認証を付与しておきます。

SFTP接続を行う

FTPでグラフィカルなUIでサイトの運営を行いたいものです。
ここでは、FileZillaを行います。Mac/Windows関係ないはずです。

AWSのEC2にアクセスしようとすると、SSHでもFTPでもやたらとpkkというファイル形式の話になりがちですが、RLogin+FileZillaであれば全てpemファイルで問題ありません。

 

適宜設定し、「接続」ボタンをクリックします。

なお、鍵ファイル(pemファイル)はこのように指定すればファイル一覧に表示されます。全てのファイルを表示でも問題ありません。
背景色はAWSのLOGOに合わせてOrangeにしてみました。

「OK」ボタンをクリック

「常にこのホストを信用し、この鍵をキャッシュに追加」は任意でチェックします。

FTP接続できました。

しかし、このcentosユーザはFTP上ではほぼ権限がなく、役に立ちません。
rootとkusanagiの両方でSFTP接続を行えるようにします。

先程のRLoginの画面より、

vi /etc/ssh/sshd_config

と入力し、Enterキーを押します。

ここの行にて、”root”ユーザのログインが無効なように設定されています。
この行をコメントアウト、つまり先頭に#マークを入れます。
viエディタの使い方に関しては若干慣れが必要ですが、テキストで説明します。

↓ボタンで49行目までカーソルを持っていきます。
aなどのキーを押すと、下に”– INSERT –“と白い文字が表示されます。
これはINSERTモードになってことを表しています。
49行目の先頭にカーソルを合わせ、#キーを入力します。
キーボード左上の”ESC”キーを押します。
:wq
上記の3文字を続けてを入力し、Enterキーを押します。
これで保存された状態です。

続いて、centosの鍵ファイルをrootでも使用可能なようにしておきます。

cp /root/.ssh/authorized_keys /root/.ssh/authorized_keys_bk
cp /home/centos/.ssh/authorized_keys /root/.ssh/authorized_keys

と続けて2回入力します。

cp: overwrite ‘/root/.ssh/authorized_keys’?

2行目は上記のように確認されるため、yキーを入力します。

service sshd reload

ここで、sshdを一度リロードします。

先程centos用に作成しておいたエントリを複製し、ユーザー名をrootに変更、鍵ファイル(pem)はそのままで、接続をクリックします。

これで、root権限でSFTP接続が可能となりました。
セキュリティ上推奨される方法ではありませんが、これでkusanagiのpemファイルを取得しやすくなります。
(先程のコマンドライン画面のroot権限SSH接続から、vim /root/kusanagi.pem で鍵情報を取得することも可能です)

/root/ディレクトリ上のkusanagi.pemをダウンロードした後は、必要に応じて先程の手順で PermitRootLogin no の先頭のコメントアウトの#をもとに戻し、再び禁止しておきます。

ここで、kusanagiアカウントによるSFTP接続が可能となります。
centosアカウントは不要なので、それを上書きしてkusanagi用にしてもよいのですが、上図では3つのアカウントでSFTP接続を可能にしたことを示すために残してあります。

前回までの記事で、root, kusanagiユーザでAWS EC2インスタンスへSFTP接続するところまでを行いました。

サイトがこのままではよくないため、早く設定を行う必要がありますが、
・速やかに設定を行い、index.phpを削除する
・速やかに設定を行い 、Under Maintenanceページでもつけておく
・速やかに設定を行い 、Coming Soonプラグインでも導入する
・アクセスの少ない夜間にアクセスしたいので、Aレコードを消しておく
・一旦誰にも見られたくないので、SFTPからファイル名を変更して非表示にしておく

いろいろ選択肢がよぎりますが、最もスマートな方法はどれでしょうか。
この場合、とりあえずBasic認証でも付けておけばいいと思います。

htpasswd -c /home/kusanagi/.htpasswd [ユーザー名]
(例) htpasswd -c /home/kusanagi/.htpasswd user1

SSH接続ツール(今回の場合はRLogin)より、上記のように入力します。

[root@kusanagi80 ~]# htpasswd -c /home/kusanagi/.htpasswd user1
New password:
Re-type new password:
Adding password for user user1

パスワードは”madadayo”としておきました。ちなみにBasic認証は8文字までのため、9文字以上のパスワードを入力しても8文字分までしか認識されません。

これでKusanagi環境にBasic認証がかかったと思いきや、もうひと手間必要なようです。Kusanagiのオフィシャルのドキュメントには掲載されていない情報かもしれません。

/etc/nginx/conf.d/

から

kusanagi_html_http.conf
kusanagi_html_ssl.conf

のファイルを編集します。

SFTPツールとエディタの関連付けは既に済んでいるものとします。
また、今回は常時SSL化が完了しているため、
kusanagi_html_ssl.conf
上記のconfファイルのみの変更でもよいのですが、話を一般化させるため、ここでは2ファイル変更するようにします。

kusanagi_html_ssl.conf (変更前)

kusanagi_html_ssl.conf (変更後)

kusanagi_html_http.conf (変更前)

kusanagi_html_http.conf (変更後)

kusanagi_html_ssl.conf:76行目
kusanagi_html_http.conf:54行目
変更前:location ~* /wp-login\.php|/wp-admin/((?!(admin-ajax\.php|images/)).)*$ {
変更後:location ~ [^/]\.php(/|$) {

kusanagi_html_ssl.conf:78行目
kusanagi_html_http.conf:57行目
変更前: allow 0.0.0.0/0;
変更後: #allow 0.0.0.0/0;

上記のように設定の書き換えが完了したら、コマンドラインより

systemctl restart nginx

のコマンドで、Nginxを再起動させます。
また、再びBasic認証を取り外す場合は、allow 0.0.0.0/0;のコメントアウト記号の#を取り外してNginxを再起動するだけで問題ありません。

User Name: user1
Password: madadayo

とし、再びWordPressの初期設定を行います。
ここではあくまでKusanagiのサーバ構築に関して記したいため、WordPressの初期設定に関しては省略します。

ダッシュボードには、以下のようなセキュリティ上の警告が表示されています。まずは一つづつ処理していきます。

wp-config.php exist in the public folder. Please move wp-config.php to DocumentRoot and improve security. 

まずは wp-config.php をkusanagi_html ディレクトリまでつまみ出します。

このタイミングで、wp-config.php の設定も同時に行っておきます。

define('FS_METHOD', 'ftpsockets');
define('FTP_HOST', 'localhost');
define('FTP_USER', 'kusanagi');
define('FTP_PASS', '

*

********');

先頭の#を取り、kusanagiパスワードを設定しておきます。

次に、wp-config.phpのパーミッションを440に変更しておきます。

cd /home/kusanagi/***
chown kusanagi.www wp-config.php    

chownコマンドにて、オーナーをkusanagi.www へ変更しておきます。

最後は wp-content ディレクトリのパーミッションを755に変更しておきます。

これで全ての項目が緑になり、セキュアな状態となりました。

 

2019-03-09T00:07:01+09:002019/01/13|カテゴリーなし|