Nginx (bitnami)+SSLにWordPressを複数インストールする

Amazon Web Service(AWS)のVPS”Lightsail”の”Nginx Bitnami 認定 1.16.0″を利用して、Wordpressを実際に運用可能なところまでやってみようと思います。

環境
Amazon Web Service LightSail
BITNAMI NGINX 5ドルプラン (1CPU 1Gメモリ)
実行日
2019年8月4日

準備

インスタンスを作成する前に用意してください。

SSLなしでWordpressを起動するだけならドメインはなくてもOKです。

複数のブラウザ

これから無数の不具合が発生するはずですW

でも 「FireFoxでは表示されたけど、Chromeでは表示されなかった」なんてことが起きます。

「自分が使っているブラウザでブログが表示されても、他のブラウザで表示されていなかった」なんてことになったら目も当てられません。

常に複数のブラウザで確認する習慣をつけましょう。

Lightsailの秘密鍵

最初にインスタンスを作成した時に”LightsailDefaultPrivateKey-ap-northeast・・・.pem”のような名前のファイルをダウンロードしているはずです。

秘密鍵ダウンロード

秘密鍵ダウンロード

もし見つからない場合は、インスタンス選択画面のキーペアの変更をクリック。

秘密鍵のダウンロード

秘密鍵のダウンロード

ダウンロードをクリック。

このようにいつでも再発行できますが、なくさないように保管しましょう。

SSHクライアントとFTPクライアント

Lightsailには付属のSSHクライアントがありますが、使いにくいです。

“SSHクライアント”などでインターネット検索して、気に入ったものを使ってください。この記事ではPUTTYの簡単な使用法を説明しています。

それとWordpress引っ越しのためにファイル転送用FTPクライアントが必要になります。

開発者モード

準備するではないですが、複数のブラウザで確認する際、必ず開発者モードにしてください。

f12をクリックすると開発者モードに切り替わります

通常モードだとブラウザにキャッシュが残ってしまい、本当に表示されている内容が見えません。

再起動

これも準備するではないですが、原因不明のトラブルに数時間悩まされたている時に、インスタンスやパソコンを再起動したら何事もなかったかのように正常に起動したという事が何回かありました、

何もトラブルがなくても、時々再起動するといい事があるかもしれません。

インスタンス作成

AWS Lightsail ホーム画面

AWS Lightsail ホーム画面

Amazon Web Service “Lihghtsail”のホームのインスタンスの作成をクリック

インスタンス選択画面

インスタンス選択画面

インスタンス選択でNGINX 1.16.0を選択

インスタンスプラン選択画面

インスタンスプラン選択画面

今回は5ドルプランでやります。

インスタンス確認画面

インスタンス確認画面

名前はデフォルトのままでもいいですが、インスタンスを複数立てると分かりにくいので、ここではドメイン名を使います。

名前を入力したらインスタンスの作成をクリック。

ホーム画面

ホーム画面

しばらく待ってインスタンスがアクティブになったら、インスタンス名をクリック。

ポート開放

ホーム画面

ホーム画面

あとはNginx 入門ガイドとBITNAMIのマニュアルに従って進めて行けば完成するはずです。

お疲れさまでした!

・・・とは言っても分かりにくい部分もあるので補足する感じでやっていこうと思います。

静的IPアドレスのアタッチ

静的IPアドレスのアタッチ

デフォルトのIPアドレスはインスタンスを再起動するたびに変わる動的IPアドレスなので、再起動しても変わらないように静的IPアドレスをアタッチします。

静的IPアドレスのアタッチをクリック。

IPアドレス5つまでは追加料金なしで利用できますが、5つ以内でもインスタンスにアタッチしていないIPアドレスは課金対象なので注意しましょう。

静的IPアドレス作成

静的IPアドレス作成

静的IPの作成をクリック。

静的IPアドレスのアタッチ

静的IPアドレスのアタッチ

プルダウンメニューから先ほど作成したインスタンスを選択。

IPに名前を変える事も可能ですが、ここではデフォルトのまま使用します。

作成をクリック。

静的IPアドレスのアタッチ

静的IPアドレスのアタッチ終了

これで静的IPアドレスがアタッチ出来ました。

DNS設定でドメインのIPアドレスを今アタッチしたIPアドレスに変更してください。

SSHのインストールと設定

phpMyadminにトンネル接続する

今回はBITNAMIのマニュアルにあるトンネル接続をするためにPUTTYを使います。

PUTTYのホームページからPUTTYをダウンロードしてインストールします。

今日(2019年8月6日)時点でのPUTTY最新版は0.72でした。

PUTTYgen設定

PUTTYgen設定

PUTTYgenを開いてLoadをクリック

ファイル選択画面

ファイル選択画面

Lightsailの秘密鍵を保存しているフォルダに行き、右下のプルダウンメニューからAll fileを選択すると、Lightsailの秘密鍵が表示されるので、それを選択して右下の開くをクリック

PUTTYgen画面

PUTTYgen

OKをクリック

PUTTY秘密鍵設定

PUTTY秘密鍵設定

Save privatekey keyをクリック

PUTTYgen画面

PUTTYgen

はいをクリック

ファイル保存画面

ファイル保存

ファイル名に適当な名前を入力して保存をクリック。

すぐに画面が切り替わるので見えませんが、適当な名前.ppkというファイルが保存されます。

PUTTY初期設定

PUTTY初期設定

PUTTYを立ち上げ、Host Nameに先ほど作成した静的IPアドレス、Portに22、Seved Sessionsに適当な名前を入力します。

PUTTY秘密鍵設定

PUTTY秘密鍵設定

左メニューのConection→SSH→Authと進んでPrivate key file for authenticationのBrowseをクリック

ファイル選択画面

ファイル選択画面

秘密鍵を保存しているフォルダに行き、さきほど作成した適当な名前.ppkを選択して開くをクリック

PUTTYトンネル設定

PUTTYトンネル設定

左メニューConnection→Dataと進んで、Auto-Logins usernameにbitnamiと入力。


ubuntuでログインでもログインできますが、何かのはずみで設定がおかしくなります。ubuntuでのログインは避けましょう。

PUTTYトンネル設定

PUTTYトンネル設定

左メニューのTunnelsでSource portに8888、Destinationにlocalhost:80を入力。

Addをクリック。

PUTTY初期設定

PUTTY初期設定

左メニューのSessionでSaveをクリックして設定を保存した後、Openをクリックしてインスタンスに接続します。

phpmyadminトンネル接続

phpmyadminトンネル接続

ブラウザにlocalhost:8888/phpmyadminを入力。

phpMyadminのログイン画面が表示されればトンネル接続成功。

データベース作成

2019年8月5日現在、Nginx Bitnami 認定 1.16.0のMYSQLのバージョンは5.7.26。

このMYSQLにデータベースを作成します。

その前にパスワードを確認します


cd ~
vi bitnami_application_password

ホームディレクトリに戻る
パスワード確認


mysql -u root -p

パスワードを確認したらMYSQLにログイン。
パスワード入力を求められるので入力、コピペでもOK。


CREATE DATABASE でーたべーす;
CREATE USER ゆーざー@localhost IDENTIFIED WITH mysql_native_password BY 'ぱすわーど';
GRANT ALL PRIVILEGES on でーたべーす.* to ゆーざー@localhost;
quit

データベース作成。
ユーザー作成。
ユーザーに権限付与。
ログアウト

※パスワードはアルファベット大文字、同小文字、数字、記号を全て使用した8文字で設定します。

例 AAaa-112

データベース等の作成に失敗したら修正するより、作り直した方が速いかもしれません


DROP DATABASE でーたべーず;
DROP USER ゆーざー@localhost;

データベース削除
ユーザー削除

WordPressインストール

WordPress最新日本語版をダウンロードしてインストールします。


sudo mkdir /var/www && cd /var/www
sudo wget https://ja.wordpress.org/latest-ja.tar.gz
sudo tar xvf latest-ja.tar.gz


sudo cp -r wordpress test.vpsfan.net
sudo chown -R daemon:daemon test.vpsfan.net

名前をvhostの設定ファイルと同じものに変更。
所有者、所有グループをdaemon:daemonに再帰的に変更。

NGINX設定

Nginx Bitnami 認定 1.16.0はBitnami によって安全かつ最新であることが認定され、業界のベストプラクティスを使用してパッケージ化されています。

ということなので出来るだけデフォルトを変えずにNGINXを設定して行きます。

BITNAMIの起動、停止、再起動

全体
sudo /opt/bitnami/ctlscript.sh start
sudo /opt/bitnami/ctlscript.sh stop
sudo /opt/bitnami/ctlscript.sh restart
sudo /opt/bitnami/ctlscript.sh status

nginxのみ
sudo /opt/bitnami/ctlscript.sh start nginx
sudo /opt/bitnami/ctlscript.sh stop nginx
sudo /opt/bitnami/ctlscript.sh restart nginx
sudo /opt/bitnami/ctlscript.sh status nginx

nginxをmysql、php-fpmに変えると個別に操作できます。

nginx.conf設定

BITNAMI NGINXの設定ファイル場所に移動


cd /opt/bitnami/nginx/conf/
vi nginx.conf


client_max_body_size 20M;

nignx.confのhttpディレクティブに最大アップロードサイズを追記します。php.iniは40Mに設定されているので40Mまでです。

このディレクトリのvhostsをバーチャルホスト設定ファイル置き場にします。


User daemon
Group daemon
Include /opt/bitnami/nginx/conf/bitnami/bitnami.conf

この3つを覚えておきます。

バーチャルホスト設定


cd bitnami
vi bitnami.conf

当初はbitnami.confを修正してバーチャルホスト用設定ファイルにしたのですが、phpMyadminに接続すると404エラーを吐きまくり。


include "/opt/bitnami/nginx/conf/bitnami/bitnami-apps-prefix.conf";

どうもこれがトンネル接続用で大切な役割を果たしているようなので、bitnami.confも下手に手を加えずデフォルトのまま使用します。


include "/opt/bitnami/nginx/conf/bitnami/phpfastcgi.conf";

これを覚えておきます。


include "/opt/bitnami/nginx/conf/bitnami/bitnami-apps-vhosts.conf";

bitnami.confの最終行、これにつながるように設定します。


sudo vi bitnami-apps-vhosts.conf


include "/opt/bitnami/nginx/conf/vhosts/*.conf";

追記します。といっても一行だけですが。

これでvhostディレクトリのconfファイルを読み込むようになります。


cd .. && cd vhosts
sudo vi vpsfan_net.conf

vhostsに移動して、confファイルを新規作成します。


upstream php {
server unix:/opt/bitnami/php/var/run/www.sock;
server 127.0.0.1:9000;
}

server {
listen 80;
server_name test.vpsfan.net;
root /var/www/test.vpsfan.net;
index index.php;

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location / {

try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}

include "/opt/bitnami/nginx/conf/bitnami/phpfastcgi.conf";

}

NginxホームページのWordpress設定を基に、bitnami.confの1行を追加します。

server_nameとrootは適当に変更します。

独自ドメインがない人はIPアドレスに変更します。


sudo /opt/bitnami/ctlscript.sh restart nginx

NGINX再起動

これでtest.vpsfan.netにアクセスするとWordpressが立ち上がるはずです。

Wordpressセットアップ画面

WordPressセットアップ画面

しっかりと設定が出来ていれば、自動的にwp-config.phpに書き込まれます。

Wordpressインストール失敗

WordPressインストール失敗

もしこの画面が出て手動でwp-config.phpに書き込んでも、問題か解決していない状態ではWordpressは起動しません。

WordPressの所有者
データベースのパスワード、権限付与、

などをもう一度確認してください。

動作確認

Wordpressインストール成功

WordPressインストール成功

WordPressが立ち上がったら、一応パーマリンクの変更、ログインログアウトなどを試してください。

BITNAMIのベストプラクティスなので問題なく動くはずです。

SSL設定

WordPressの確認が終わったらSSLを設定します。

ドメインがない人は読み飛ばしてください。


/opt/bitnami/ctlscript.sh stop
sudo apt install certbot
sudo certbot certonly

BITNAMI停止
certbotインストール
certbot起動


How would you like to authenticate with the ACME CA?
-------------------------------------------------------------------------------
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

1を選択


Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):

メールアドレスを入力


-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel:

Aを選択


-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o:

Nを選択

Please enter in your domain name(s) (comma and/or space separated) (Enter 'c'
to cancel):

SSL化するドメインを入力
例 vpsfan.net test.vpsfan.net

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/vpsfan.net/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/vpsfan.net/privkey.pem
Your cert will expire on 2019-06-10. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

SSL証明書取得成功したので

/etc/letsencrypt/live/vpsfan.net/fullchain.pem
/etc/letsencrypt/live/vpsfan.net/privkey.pem

この2行をこれから作成するSSL設定ファイルに追記します。


/opt/bitnami/ctlscript.sh start

BITNAMIを起動します。


cd /opt/bitnami/nginx/conf/vhosts
cp test_vpsfan_net.conf test_vpsfan_net_ssl.conf
vi test_vpsfan_net_ssl.conf

NGINXディレクトリに移動して、HTTPの設定ファイルをコピーします。

コピーした設定ファイルにSSL設定をを追加します。

server {
listen 443 ssl;
server_name test.vpsfan.net;
root /var/www/test.vpsfan.net;
index index.php;

ssl_certificate /etc/letsencrypt/live/vpsfan.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vpsfan.net/privkey.pem;
ssl_session_tickets on;
ssl_protocols TLSv1.2;
ssl_ciphers AESGCM:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location / {

try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}

include "/opt/bitnami/nginx/conf/bitnami/phpfastcgi.conf";

}

修正、追記が終わったらNGINXを再起動します。

Nginx SSL化

Nginx SSL化成功

URLの左が緑になっていればSSL化成功です。

2つ目のWordpressインストール

1つ目のWordpressと同じ作業を繰り返します。

データベース作成
Wordpressインストール
SSL取得
設定ファイル作成

ドメインなどを変えるだけですが、設定ファイルの


upstream php {
server unix:/opt/bitnami/php/var/run/www.sock;
server 127.0.0.1:9000;

(略)

location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php;

upstreamとfastcgi_passのphpをphp_1などに変えてください。

未分類
スポンサーリンク
仮想犬

コメント

タイトルとURLをコピーしました