AWS EC2 + Bitnami で始める WordPress

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

目次

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/

    

関連記事

AWS Amplify で コンテナベースのデプロイを行い REST API を構築
検証した環境 やってみる 初期準備 パイプラインを確認 終了処理 参考 AWS Amplify で コンテナベースのデプロイを行い REST API を構築した際のメモです。 検証した環境 amplify 5.1.…

php-fpmのステータスページを表示 Apache & htaccess
試した環境 php-fpm の pm.status_path について php-fpmのconfの設定 .htaccess の設定 アクセスしてみる 参考にしたサイト Apache環境で php-fpm のステータスページを htaccess…

PHP-FPM(php7.4) Apache2.4 on Ubutnu20.04 Webサーバ構築
環境 パッケージの更新 Apache と PHP のインストール Apache のサービスを開始する PHPファイルを作成 参考にしたサイト Ubuntu20.04 に PHP7.4 + Apache2.4 をインストールしてWeb…

PHP-FPM(php7.4) Apache2.4 でWebサーバ構築 on CentOS8
環境 php7.4 のインストール apacheのインストール php-fpmの設定を変更する php-fpm の起動 apacheの起動 確認 おまけ: エラーと解決方法 "System has not been booted with systemd as…

CentOS8 に PHP7.4 インストール
環境 普通にインストールしようとするとphp7.2がインストールされる modularityについて php7.4 インストール CentOS8 に modularity を利用して PHP7.4をインストールした際のメモです。 環境 CentOS8.…

UNIXドメインソケット通信 vs INETドメインソケット通信 php-fpmで動作させる場合の違いについて
結論 ソケット通信について ソケットについて ソケット通信の種類 UNIXドメインソケット通信を行う場合のメリット 参考にしたサイト php-fpm の設定方法で調べた際にIPとポートで設定するパターンとUNIX…

Amplify CLI のインストール
Amplify CLI のインストール Amplify CLI の設定 バックエンド環境作成 Amplify CLI のインストールから設定まで Amplify CLI をインストール 設定 Amplify アプリを初期化 Amplify CLI…

AWS Amplify に Next.js (SSG) で作ったアプリをデプロイする
はじめに 操作 Next.js (React) アプリの作成、Gitへのプッシュ AWS Amplifyでプロジェクト作成 参考にしたサイト この記事では、React / Next.js アプリケーションを作成し、AWS Amplify…

ファイルの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…

最新の投稿

[Mac]ipコマンドの導入[iproute2mac]
iproute2macについて 導入 homebrewで導入 直接インストール 確認 サポートコマンド を導入して、macOSでipコマンドを導入した際のメモ iproute2macについて brona/iproute2mac: CLI wrapper for…

AutotoolsでconfigureやMakefileの作成
はじめに Autotools 環境 準備 ツール類のインストール ソースコードの作成 configure.ac と Makefile.am configure Makeの生成 その他 makeオプション autoreconf について Perlの場合 リンク はじめに C…

RPMパッケージ作成 Dockerを利用して
はじめに RPMパッケージ step1.環境構築からRPMパッケージングまで 事前準備 ワークスペースの作成 プログラム配置 specファイル rpmbuild インストール リンク はじめに Dockerを利用してRPM開発環境を用意し、実際にRPM…

RPMのspecファイルで利用するマクロ・変数
はじめに マクロ一覧 基本情報系 Body項目 コメント 参考文献 はじめに RPM(Fedora/CentOS系)を作成する際に利用するspecファイルで利用できるマクロについて調べた際のメモです。 マクロ一覧 基本情報系 パッケージの名前を定義します。これはspec…

CentOS8/RHEL8でのRPM管理における検討事項
初めに 前提 rpm rpm yum dnf コマンド リポジトリ リポジトリとライフサイクル AppStream Compatibility Level について AppStreamのサポート期間 Yum v3 -> Yum v4 リンク 初めに CentOS8/RHEL…

homebrewでnodejsインストール&任意のバージョン利用
初めに homebrewインストール nodejsの検索 インストール nodejsの利用 初めに homebrewでサクッとnodejsのインストールを行なった際のメモです。 環境はMacを対象としていますが、Linux…

tracerouteコマンドでネットワークの経路を洗い出す
tracerouteの用途 tracerouteの原理 IPヘッダのTTL コマンドを実行してみる 参考文献 tracerouteコマンドでネットワークの経路を洗い出した際の操作をメモしました。 環境はmacで実施しています。 また、traceroute…

[Vue]フロントエンド機能のみでダウンロードを実装する[JS]
実装 ポイント ソース デモ 参考サイト フロントエンドのみ(=サーバサイドがダウンロードさせない) でダウンロードを行う機能を実装した時のメモです。 Vueを利用して実装していますが、ここで記載しているコードはVueに依存した機能ではなく、ピュアなJSのAPI…

Node.js で作成した REST API を Docker化
Node.jsでREST APIを作成 コンテナ化 コンテナ化定義 コンテナ化作業 参考 Node.js で作成した REST API を Docker化した際のメモです。 Node.jsでREST APIを作成 まずはNode.js…

JavaScriptで優先度付きキューを実装する
優先度付きキューについて ソース 参考 JavaScriptで優先度付きキュー (プライオリティキュー) を実装する 優先度付きキューについて 具体的には次のような機能があります。 キューに対して要素を優先度付きで追加 (push…

Tags

Dates

s-yoshiki
s-yoshiki
githubtwitterqiita
ただの備忘録です。
JS/TS/node.js/PHP/AWS/OpenCV/CentOS
※このブログの内容は個人の見解であり、所属する組織等の見解ではありません。
© 2022   404 motivation not found