AWS EC2 + Bitnami で始める WordPress

2019-08-15
amazon%20awswordpressubuntubitnami%E3%83%84%E3%83%BC%E3%83%ABec2apache
    

目次

bitnamiはWebアプリケーションや開発ツールのインストラーやソフトウェアパッケージのライブラリです。 提供するスタックにはWordPress、Drupal、Joomla、Redmine、AbanteCart、PrestaShop、Magento、MediaWikiなどがあります。 ここではAWS EC2 のマーケットプレイスで公開されている Bitnami WordPress の AMI で WordPressサイトを構築するまでの方法と各種ツール・設定ファイルについて紹介します。

なおこの記事は、2019/08/15時点での情報です。

Bitnami WordPressを使うメリット

個人的に感じた3つのメリット

これまで、自前で構築した環境 + WordPress→ Amazon Lightsail + Bitnami WordPress → AWS EC2 + Bitnami WordPressという形でWordPress環境を利用してきました。

パッと思いつくBitnamiの良い点は次の3つであると思います。

  1. 安い (無料!)
  2. 設定が簡単 & 拡張しやすい
  3. 便利設定ツールが用意されている
1の料金についてですが、AWSのBitnami AMIは0$で提供されています。よく比較されているAmimoto AMIは利用時間当たりの若干の課金を払わなければなりません。

2の「設定が簡単 & 拡張しやすい」は、ディレクトリ構成やApacheの設定が拡張しやすいような構成になっていたため、1つのインスタンスで複数サイトを動かす際にも環境を用意しやすいと感じました。

3つめの「便利設定ツールが用意されている」については、記事の後半でも詳しく触れますが、SSLの設定やApache、MySQLの管理をBitnamiで用意されているコマンドを用いて簡単に管理することができます。

つまり、自らモジュールを導入したり設定する際の負荷を低くすることができます。

Amimoto AMI と比較して

Amimoto AMIを利用したことがないので、なんとも言えませんが Bitnami と Amimoto AMIと比較して Bitnami の方がパフォーマンス的に劣るというデータがあります。

比較方法は負荷テスト時のパフォーマンスでありデータを見るとが Amimoto が負荷分散に強い Nginx で Bitnami で Apache を利用していることもあり妥当な比較方法だとは思えません。

(Bitnami は Nginx版の WordPress AMI も用意している。)

https://support.amimoto-ami.com/en/articles/934104-amimoto-ami-%E3%81%A8-bitnami-%E3%81%AE%E6%AF%94%E8%BC%83

また、環境がAWSということもあり CloudFront やS3を組み合わせることでレスポンスの向上や負荷分散は十分に行えると思います。

Bitnami AMIについて

AMIの選択画面でWordPressを検索した時の状態

「WordPress」で検索し、AWS Marketplaceで絞り込むとBitnami WordPress の AMI が出てきます。

ここで一番上にある「WordPress Certified by Bitnami and Automattic」を選択してインスタンスを起動します。その他、セキュリティグループやEBS、ネットワーク関連の設定は任意とします。

Bitnami WordPressの構成と設定

WordPress Certified by Bitnami and Automattic のAMI を例に構成と設定を紹介します。

サーバの構成

AMIで設定されていた各種アプリケーションのバージョンは次のようになっています。

  • Ubutnu 16.04
  • Apache 2.4
  • PHP 7.3.6
  • MySQL 8.0.16

各種設定

次に各種設定状況やディレクトリ構成について説明します。

MySQL

このテーブルはデフォルトの状態でWordPressが利用しているテーブルです。

  • ユーザ: bn_wordpress
  • ホスト: localhost
  • テーブル: bitnami_wordpress
  • パスワード: /home/bitnami/apps/wordpress/htdocs/wp-config.php の DB_PASSWORD に定義
  • 文字コード: UTF-8

WordPress

  • 初期ユーザ: user
  • 初期パスワード: /home/bitnami/bitnami_credentials に記載

Apache

ルートの設定ファイルが各種アプリケーションの設定を読み込むような配置となっています。

このApacheの設定がなかなか複雑なため次の章で詳細に見ていきます。

  • ルート
    • 設定ファイル: /opt/bitnami/apache2/conf/*.conf
  • WordPress
    • ドキュメントルート: /opt/bitnami/apps/wordpress/htdocs
    • 設定ファイル: /opt/bitnami/apps/wordpress/conf/*.conf
  • phpMyAdmin
    • ドキュメントルート: /opt/bitnami/apps/phpmyadmin/htdocs
    • 設定ファイル: /opt/bitnami/apps/wordpress/conf/*.conf

Linux

デフォルトの作業ユーザは「bitnami」となっています。また、bitnamiのホームディレクトリ以下に各種設定ファイルが配置されていたり、ドキュメントルートが設定されています。

  • ユーザ: bitnami
  • ホームディレクトリ: /home/bitnami
ホームディレクトリ以下は次のようになっています。

bitnami_credentials以外はエイリアスとなっています。

appsはドキュメントルートやアプリケーションの設定ファイルが置いてあるディレクトリへのエイリアス、

bitnami_credentialsはWordPressの初期ユーザの情報、

htdocsはデフォルトのドキュメントルート、

となっています。

/home/bitnami/
├── apps -> /opt/bitnami/apps
├── bitnami_credentials
├── htdocs -> /opt/bitnami/apache2/htdocs
└── stack -> /opt/bitnami

Apacheの設定を読み解く

$ ls -la /opt/bitnami/apache2
total 8352
drwxr-xr-x 14 root    root    4096 Jun 21 06:41 .
drwxr-xr-x 18 root    root    4096 Jun 21 06:53 ..
drwxr-xr-x  2 root    root    4096 Jun 21 06:38 bin
-r-xr--r--  1 root    root 8493630 Jun 19 15:51 bnconfig
drwxr-xr-x  2 root    root    4096 Jun 21 06:38 build
drwxr-xr-x  2 root    root    4096 Jun 21 06:41 cgi-bin
drwxr-xr-x  5 bitnami root    4096 Aug 15 09:15 conf
drwxr-xr-x  3 root    root    4096 Jun 21 06:38 error
drwxr-xr-x  3 bitnami root    4096 Jun 21 06:38 htdocs
drwxr-xr-x  3 root    root    4096 Jun 21 06:38 icons
drwxr-xr-x  2 root    root    4096 Jun 21 06:38 include
drwxr-xr-x  3 root    root    4096 Aug 13 03:04 logs
drwxr-xr-x  2 root    root    4096 Jun 21 06:38 modules
drwxr-xr-x  2 root    root    4096 Jun 21 06:38 scripts
drwxr-xr-x  3 root    root    4096 Jun 21 06:38 var

WordPressを動かすapacheは/opt/bitnami/apache2にインストールされています。

Apacheの基本設定ファイル

bitnamiアプリケーション全体で利用される設定ファイルは/opt/bitnami/apache2/conf以下に置かれています。

/opt/bitnami/apache2/conf
├── bitnami
│   ├── bitnami-apps-prefix.conf
│   ├── bitnami-apps-vhosts.conf
│   ├── bitnami.conf
│   ├── httpd-2xlarge.conf
│   ├── httpd.conf -> /opt/bitnami/apache2/conf/bitnami/httpd-micro.conf
│   ├── httpd-large.conf
│   ├── httpd-medium.conf
│   ├── httpd-micro.conf
│   ├── httpd-small.conf
│   └── httpd-xlarge.conf
├── deflate.conf
├── extra
│   ├── httpd-autoindex.conf
│   ├── httpd-dav.conf
│   ├── httpd-default.conf
│   ├── httpd-info.conf
│   ├── httpd-languages.conf
│   ├── httpd-manual.conf
│   ├── httpd-mpm.conf
│   ├── httpd-multilang-errordoc.conf
│   ├── httpd-ssl.conf
│   ├── httpd-userdir.conf
│   ├── httpd-vhosts.conf
│   └── proxy-html.conf
├── httpd.conf
├── magic
├── mime.types
├── modsecurity.conf
├── original
│   ├── extra
│   │   ├── httpd-autoindex.conf
│   │   ├── httpd-dav.conf
│   │   ├── httpd-default.conf
│   │   ├── httpd-info.conf
│   │   ├── httpd-languages.conf
│   │   ├── httpd-manual.conf
│   │   ├── httpd-mpm.conf
│   │   ├── httpd-multilang-errordoc.conf
│   │   ├── httpd-ssl.conf
│   │   ├── httpd-userdir.conf
│   │   ├── httpd-vhosts.conf
│   │   └── proxy-html.conf
│   └── httpd.conf
├── pagespeed.conf
├── pagespeed_libraries.conf
├── php-fpm-apache.conf
├── privkey.pem
├── server.crt
├── server.csr
├── server.key
├── ssi.conf
├── example.com.crt -> /opt/bitnami/letsencrypt/certificates/example.com.crt
└── example.com.key -> /opt/bitnami/letsencrypt/certificates/example.com.key

アプリケーションごとの設定ファイル

/opt/bitnami/apps/wordpress/conf
├── banner.conf
├── certs
├── htaccess.conf
├── httpd-app.conf # デフォルトで読み込まれる
├── httpd-prefix.conf
├── httpd-vhosts.conf # デフォルトで読み込まれていない
└── php-fpm
    ├── php-settings.conf
    └── pool.conf

VirtualHostを使って管理したい場合は、「httpd-vhosts.conf」に設定を記述して読み込むようにします。

(例えば、サイトと管理画面のURLを変えたい場合やSSLか非SSLで制御を変えたい場合など)

bnconfigコマンド

bnconfigコマンドを使うことでアプリケーションの様々な設定を変更することができます。

所有者がrootなのでsudoで実行する必要があります。

コマンド例では

sudo /home/bitnami/apps/wordpress/bnconfig

と書いてありますが wordpress の部分は任意のアプリケーション名に変えます。

Helpをみる

sudo /home/bitnami/apps/wordpress/bnconfig --help

Bitnamiロゴを消す

次のコマンドを実行することでBitnamiのロゴを消します。

sudo /opt/bitnami/apps/wordpress/bnconfig –disable_banner 1

アプリケーションのホスト名を設定する

sudo /opt/bitnami/apps/wordpress/bnconfig --machine_hostname 0.0.0.0

URL prefixを設定する

sudo /home/bitnami/apps/wordpress/bnconfig --appurl /

デフォルト言語の設定

sudo /home/bitnami/apps/wordpress/bnconfig --installer-language ja

bncert-tool によるSSL証明書の取得とHTTPS化

bncert-toolはLet's Encryptによる証明書の取得を行い、自動で設定するためのツールです。

またhttpからhttpsへのリダイレクトのルールなどを編集することもできます。

ツール呼び出しは次のコマンドで実行します。

sudo /opt/bitnami/bncert-tool

次のように聞かれるのでSSL化対象のURLを入力します。

複数入力する場合はスペースでつなぎます。

----------------------------------------------------------------------------
Welcome to the Bitnami HTTPS Configuration tool.

----------------------------------------------------------------------------
Domains

Please provide a valid space-separated list of domains for which you wish to 
configure your web server.

The web server name will be configured as the first provided domain name.

If you provide a non-www domain (e.g. example.com) but not its www subdomain 
(e.g. www.example.com), it will be added automatically, and viceversa.

Domain list []: test-exmaple.com   # ← SSL化するURL(複数可)を記述する

ドメインを入力すると自動的にhttpsへのリダイレクトのルールなども作られます。

「Do you agree to these changes?」に対して 「Y」 を入力すると表示されているルール通りにapacheの設定ファイルが書き換えられます。

「n」を入力すると自分でルールを編集できます。

----------------------------------------------------------------------------
Changes to perform

The following changes will be performed to your Bitnami installation:

1. Stop web server
2. Configure web server to use an existing Let's Encrypt certificate and renew: 
/opt/bitnami/letsencrypt/certificates/test-example.com.crt
3. Disable existing Let's Encrypt cron jobs configured with the tool
4. Configure a cron job to automatically renew the certificates each month
5. Configure web server name to: test-example.com
6. Enable HTTP to HTTPS redirection (example: redirect 
http://test-example.com to https://test-example.com)
7. Enable non-www to www redirection (example: redirect test-example.com 
to www.test-example.com)
8. Start web server once all changes have been performed

You can modify the list of changes to perform if you select 'No'

Do you agree to these changes? [Y/n]: n

nを選択した場合、次の質問を聞かれます。

----------------------------------------------------------------------------
Additional configuration

Please select the list of changes you wish to perform on your Bitnami 
installation.

Enable HTTP to HTTPS redirection [Y/n]: Y

Enable non-www to www redirection [Y/n]: n

Enable www to non-www redirection [y/N]: y

「Enable HTTP to HTTPS redirection」: httpsのリダイレクトを行う場合は Y そうでなければ n を入力します。

「Enable non-www to www redirection」: example.com から www.example.com へのリダイレクトです。

「Enable www to non-www redirection」: www.example.com から example.com へのリダイレクトです。「Enable non-www to www redirectionを有効にしている場合は「N」を選択しなければなりません。

----------------------------------------------------------------------------
Create a free HTTPS certificate with Let's Encrypt

Please provide a valid e-mail address for which to associate your Let's Encrypt 
certificate.

Domain list: test-example.com www.test-example.com

Server name: test-example.com

E-mail address []: example@gmail.com

The Let's Encrypt Subscriber Agreement can be found at:

https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf

Do you agree to the Let's Encrypt Subscriber Agreement? [Y/n]: Y

最後にメールアドレスを入力します。エラーがなければ無事にcrtファイルとkeyファイルが/opt/bitnami/letsencrypt/certificates/に生成されます。

エラーがあった場合でも割と丁寧なメッセージでエラー原因を教えてくれました。

ctlscript.shで各種サービスの管理

サービスに必要な各種アプリケーションは/opt/bitnami/ctlscript.shで管理します。

Apacheを起動・停止・再起動

次のコマンドでApacheを管理します。

各種設定を変更した後はapacheの再起動を行わないと設定が反映されない場合が多いです。

# 起動
sudo /opt/bitnami/ctlscript.sh start apache

# 停止
sudo /opt/bitnami/ctlscript.sh stop apache

# 再起動
sudo /opt/bitnami/ctlscript.sh restart apache

# ステータス確認
sudo /opt/bitnami/ctlscript.sh status apache
## apache already running</span>

mysql や php-fpm についても同様に ctlscript.sh で管理します。

sudo /opt/bitnami/ctlscript.sh restart php-fpm
sudo /opt/bitnami/ctlscript.sh restart mysql</span>

http://designhack.slashlab.net/how-to-setup-multiple-wordpress-without-multisite-with-bitnami/

https://docs.bitnami.com/installer/how-to/understand-bncert/

https://docs.bitnami.com/aws/apps/trac/administration/generate-configure-certificate-letsencrypt/

    
s-yoshiki
s-yoshiki
githubtwitterqiita
Web作ってますが、インタラクティブなプログラミングも好きです。
JavaScript / Vue / node.js / PHP / AWS / OpenCV

関連記事

ファイルの1行目を表示 Linuxコマンド head
head コマンド例 headコマンドでファイルの 1行目もしくは指定した行数だけ表示する方法。 head 利用できるオプション コマンド例 の 1行目だけを表示 の 5行目までを表示 カレントディレクトリ以下の全てのtxtファイルの1行目を表示

Amazon S3 と ローカルファイルのチェックサムの比較
s3apiでEtagを取得 検証 マルチアップロード時の注意点 Amazon S3 の Etagを使ってファイルの整合性チェックをする。 s3apiでEtagを取得 S3 APIを利用するとEtagを取得します。この値はmd5のハッシュ値になります。 検証 MD…

GitHub Actions で Gatsby をビルドし Amazon S3 にデプロイする
GitHub Actions について あらかじめ準備しておくもの AWS IAM ユーザを環境変数にセットする workflowの記述 ビルド バッジを利用する 終わりに 参考にしたところ Gatsbyで作った静的サイトを、GitHub Actions…

WordPressやめます Gatsbyに移行しました
これまでのWordPress運用 なぜWordPressを捨てるのか? なぜGatsbyを利用するのか? gatsbyについて WordPressから記事の救出 移行対象記事の抽出 記事の置換 Gatsbyテーマの作成 Gatsby…

WordPressのDBから記事データを抽出する
WordPressのDB関連図 公開記事一覧の取得 タグ・カテゴリの取得 サムネイルの取得 おまけ: PHPスクリプト化しました 参考にしたところ WordPressにため込んだデータMarkdown化しGatsby…

AWS BlackBeltを写経する EC2編
問われやすいサービス EC2 AWSサービス別資料 https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-service-cut/ 問われやすいサービス EC2 Amazon EC2 (201…

WordPressを静的サイトに変換するプラグインの紹介。WP2Static
静的化の目的 WP2Static StaticPress Simply Static 3つを比較して WordPressを静的化するプラグインとして、simply staticやStaticPress、WP2Static…

WordPressをAmazon S3 + CloudFront構成で月額200円で運用
システム全体の この構成のメリット・デメリット AWSの構成 静的ページを作成するWordPressプラグイン WP2Static WP Offload Media Lite WordPress on Docker環境 まとめ AmazonS…

WordPress + WP2Static で静的サイトを生成する
クイックスタート 保存対象URLの補完 WP2StaticはWordPress から静的サイトを生成するプラグインです。 これまで同じく静的サイトを生成する「StaticPress」や「Simply Static…

SAA試験対策 AWS BlackBeltを写経する
はじめに 写経の例 EC2 EBS

最新の投稿

SQL整形ツールを作成した
特徴 使い方 FW/ライブラリ等 nuxt sql-formatter-plus Monaco Editor おまけ ソース SQL整形ツールを作成しました。 URLはこちらです。 SQL…

ファイルの1行目を表示 Linuxコマンド head
head コマンド例 headコマンドでファイルの 1行目もしくは指定した行数だけ表示する方法。 head 利用できるオプション コマンド例 の 1行目だけを表示 の 5行目までを表示 カレントディレクトリ以下の全てのtxtファイルの1行目を表示

Amazon S3 と ローカルファイルのチェックサムの比較
s3apiでEtagを取得 検証 マルチアップロード時の注意点 Amazon S3 の Etagを使ってファイルの整合性チェックをする。 s3apiでEtagを取得 S3 APIを利用するとEtagを取得します。この値はmd5のハッシュ値になります。 検証 MD…

github.io / gitlab.ioで公開されている質の高い技術ドキュメント
AWSによるクラウド入門 Pythonプログラミング入門 普通の人が資産運用で99点をとる方法とその考え方 2018年の段階で私が知らないこと github.io / gitlab.io で無料で公開されている興味深いドキュメントのmemo AWS…

10進数から2進数 2進数から10進数への変換 JavaScript
10進数から2進数 2進数から10進数 テスト 10進数から2進数、2進数から10進数への変換を行うJavaScriptのコードの紹介。 JSの場合、10進数から2進数への変換はメソッド。2進数から1…

JavaScriptの配列ショートハンド (AtCoder用)

JavaScriptでワーシャルフロイド法を実装
AtCoder ABC012 D問題 D - バスと避けられない運命 解説 実装 AtCoder ABC012 の D問題でワーシャルフロイド法が利用できる問題が出てきたので、 JavaScriptで実装しました。 AtCoder ABC012 D問題 D…

GitHub Actions で Gatsby をビルドし Amazon S3 にデプロイする
GitHub Actions について あらかじめ準備しておくもの AWS IAM ユーザを環境変数にセットする workflowの記述 ビルド バッジを利用する 終わりに 参考にしたところ Gatsbyで作った静的サイトを、GitHub Actions…

cloudinaryによる画像ファイルの管理 はじめてみる
目的 cloudinary について 他のサービスとの比較 料金プラン アカウントの登録 利用してみる ダッシュボード 画像の編集 APIベースでのアクセス 感想 参考 画像の管理や配信、さらには加工といった事ができるsaas型のcloud…

JavaScriptによる2分探索(バイナリサーチ) のサンプルコード
2分探索について ソース 参考 JavaScriptで2分探索(バイナリサーチ)を実装してみました。…

Tags

Dates

© 2020   404 motivation not found