Dockerを使ってOpenLiteSpeedとWordPressを簡単インストール!

前回「Oracle Cloud Free Tier」で仮想サーバを構築しましたが、今回はそのサーバ上でWordPressを動作させる方法についてご紹介します。

まとめ
  • Dockerを利用することで簡単にインストール可能
  • すべて無料で利用可能 (2020/5/6現在)
  • 今回はドメイン名を取得せずにローカルファイルを編集することで動作確認してます
  • ドメインを取得していればSSLサーバ証明書の設定も合わせて実施できます
  • WEBアクセスするためにOracle Cloudの管理画面のセキュリティリストの編集が必要です

長い記事になってますがお付き合いいただけますと幸いです。

Oracle Cloud Free Tierの仮想サーバの構築方法は以下を記事を参考にしてください。

Oracle Cloud Free Tier で仮想サーバを構築する!
「Oracle Cloud Free Tier」でWordPressに利用する仮想サーバの構築方法についてご紹介します。 まとめ SSHログイン用のSSHキーを事前に作成する必要があります 今回はTeraTermを利用してSSHログインまで...
スポンサーリンク

DockerとOpenLiteSpeedについて

Dockerとは

Dockerとは、アプリケーション等をコンテナと呼ばれる箱に入れて、OS上で動かすことができ、仮想環境を作成、配布、実行するためのプラットフォームです。無料で利用ができ、WordPressなど多くのアプリケーションのコンテナも無料で公開されているためコンテナを利用することで、インストール作業を従来の方法よりもかなり簡単に実施できるようになります。

Dockerの詳細は以下のサイトが分かりやすかったです。

Docker入門(第一回)~Dockerとは何か、何が良いのか~ | さくらのナレッジ
みなさん、こんにちは。Acroquest Technology (アクロクエストテクノロジー) の横山 仁(よこやま じん)と申します。 主に仕事ではインフラ関係やDevOps推進に向けた活動などに携わっています。最近で

OpenLiteSpeedとは

OpenLiteSpeedは、「Apache」や「nginx」と同じWEBサーバのアプリケーションです。高速性をウリにしており無料で利用可能です。その他、以下の特徴があります。

  • 「HTTP/2」にも対応しています。(設定画面上だとHTTP/3のベースになる「QUIC」の設定もあります)
  • LiteSpeed CacheというWordPressのプラグインが提供されていて、非常に高速かつ高性能なキャッシュ機能を使うことができます。

今回のインストール条件

今回は以下のテスト用に以下のパラメータでインストールしています。皆様の環境に合わせて変更していただければと思います。

  • ドメイン名:test01.home    (今回のテスト用です)
  • OpenLiteSpeedのWEB管理画面用にパスワード: litespeed-pass
  • MySQL
    • データベース名:dbtest01
    • ユーザ名:db01user
    • パスワード:db01pass
  • 管理者用メールアドレス: [email protected]
    (存在しないメールアドレスので実施の際はご利用のメールアドレスを利用してください)
  • WordPress管理画面ログイン用
    • ユーザ名:wpuser01
    • パスワード:wppass01-xlfcJ$bud

事前準備:Oracleクラウド上でWEBアクセスを許可する

今回、Dockerでインストールするアプリケーションでは以下のポート番号を利用します。

  • TCP 80 : WordPressのWEBサイトや管理画面のHTTPアクセス
  • TCP 443 : WordPressのWEBサイトや管理画面のHTTPSアクセス
  • TCP 7080 : OpenLiteSpeedのWEB管理画面へのアクセス
  • TCP 8080 : phpMyAdminのWEB管理画面へのアクセス

これらのポート番号はOracleクラウド上の初期設定では許可されていないので、セキュリティ・リストを編集してアクセスできるように許可設定を追加します。

Oracleクラウド上の管理画面で以下の手順で設定変更できます。

画面左上のメニューから「仮想クラウド・ネットワーク」を選択

仮想サーバーで利用しているバーチャルクラウドネットワークを選択

リソース内の「セキュリティ・リスト」を選択

「イングレス・ルールの追加」を選択

TCP 80, 443, 7080, 8080を追加する。ソースCIDRの部分は「0.0.0.0/0」とするとどこからでもアクセス可能になります。外部からのアクセスを止めたい場合は、自身のグローバルIPアドレスを指定にすれば自分のみアクセス可能になります。

追加実施後にルール一覧に4つのルールが表示されていれば設定終了です。

事前準備:hostsファイルの編集

【ドメイン名を取得している場合はこの作業は不要です。】

今回は、テスト用に「test01.home」というインターネット上では利用できないドメインでテストしたいと思います。インターネット上では名前解決できないため、

  • WEBアクセスするWindowsPC側の「”C:\Windows\System32\drivers\etc\hosts”」ファイル
  • サーバ側のhostsファイル「/etc/hosts」

を編集します。

WindowsPC側「”C:\Windows\System32\drivers\etc\hosts”」ファイル

【ドメイン名を取得している場合はこの作業は不要です。】

メモ帳などでファイルを開き以下のとおり最後の部分にサーバのIPアドレスとテスト用ドメイン名「test01.home」を追加してください。

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
  :
  :
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
140.XXX.XXX.XXX test01.home

※「140.XXX.XXX.XXX」はサーバのIPアドレスを入力してください。

サーバ側のhostsファイル「/etc/hosts」

【ドメイン名を取得している場合はこの作業は不要です。】

サーバ上で「echo -e “【IPアドレス】\t【ドメイン名】” >> /etc/hosts」を実行してテスト用にドメインを自身のIPアドレスに登録してください。

下記の例は

  • テスト用ドメイン「test01.home」
  • IPアドレス「140.XXX.XXX.XXX」

です。「140.XXX.XXX.XXX」はサーバのIPアドレスを入力してください。

root@testsv:~# echo -e "140.XXX.XXX.XXX\ttest01.home" >> /etc/hosts
root@testsv:~#
root@testsv:~#
root@testsv:~# cat /etc/hosts
127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
127.0.1.1 testsv testsv

140.XXX.XXX.XXX test01.home
root@testsv:~#

Dockerのインストール

パッケージの更新

まずは、SSHで作成した仮想サーバへログインし「sudo su -」コマンドでrootになる。

ubuntu@testsv:~$ sudo su -

dockerをインストールする前に、パッケージリストの更新(apt-get update)と、インストール済みのパッケージ更新(apt-get upgrade)を行う。

root@testsv:~# apt-get update
root@testsv:~# apt-get upgrade

dockerのインストール

Ubuntu用の「docker.io」 と 複数のコンテナ起動させるため「docker-compose」をインストールするため「apt-get install docker.io docker-compose」を実行する。

root@testsv:~# apt-get install docker.io docker-compose

docker と docker-compose がインストールされているか確認するため、それぞれのバージョンを確認する「docker -v」と「docker-compose -v」を実行してバージョン情報が得られるか確認する。

root@testsv:~# docker -v
Docker version 19.03.8, build afacb8b7f0
root@testsv:~#
root@testsv:~# docker-compose -v
docker-compose version 1.25.0, build unknown
root@testsv:~#

OpenLiteSpeedとWordPressのDockerファイルのダウンロードと起動

以下のサイトを参考にインストールを進めていきます。

LiteSpeed Documentation
Documentation for all things LiteSpeed

サーバー上で以下のコマンドを実行する

  • git clone https://github.com/litespeedtech/ols-docker-env.git
  • cd ols-docker-env/
  • docker-compose up -d
root@testsv:~# git clone https://github.com/litespeedtech/ols-docker-env.git
Cloning into 'ols-docker-env'...
remote: Enumerating objects: 807, done.
remote: Total 807 (delta 0), reused 0 (delta 0), pack-reused 807
Receiving objects: 100% (807/807), 159.48 KiB | 330.00 KiB/s, done.
Resolving deltas: 100% (452/452), done.
root@testsv:~#
root@testsv:~#
root@testsv:~# cd ols-docker-env/
root@testsv:~/ols-docker-env#
root@testsv:~/ols-docker-env# docker-compose up -d
Creating network "ols-docker-env_default" with the default driver
Pulling mysql (mariadb:10.3.17)...
 :
 :
Creating ols-docker-env_mysql_1      ... done
Creating ols-docker-env_litespeed_1  ... done
Creating ols-docker-env_phpmyadmin_1 ... done
root@testsv:~/ols-docker-env#

起動完了後に「docker stats」コマンドで、「mysql」「litespeed」「phpmyadmin」の3つのDocker が起動していることを確認する。

root@testsv:~/ols-docker-env# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
9f3f4f74f64e ols-docker-env_mysql_1 0.03% 74.49MiB / 976.9MiB 7.62% 1.37kB / 0B 57.5MB / 17.2MB 30
f91f879feaac ols-docker-env_litespeed_1 0.08% 7.602MiB / 976.9MiB 0.78% 5.12kB / 2.21kB 53.9MB / 1.19MB 6
499e5a761bb3 ols-docker-env_phpmyadmin_1 0.01% 19.29MiB / 976.9MiB 1.97% 1.37kB / 0B 54.8MB / 168kB 7

OpenLiteSpeedとWordPressのインストール

OpenLiteSpeedのWEB管理画面のログイン用のパスワード設定。今回はパスワードを「litespeed-pass」としています。

root@testsv:~/ols-docker-env# bash bin/webadmin.sh litespeed-pass
Update web admin password.
root@testsv:~/ols-docker-env#

今回利用するドメインを設定。今回はパスワードを「test01.home」としています。

root@testsv:~/ols-docker-env# bash bin/domain.sh --add test01.home
root@testsv:~/ols-docker-env#

MySQLのデータベース設定。以下のパラメータで設定してます。

  • ドメイン名:test01.home
  • MySQL
    • データベース名:dbtest01
    • ユーザ名:db01user
    • パスワード:db01pass
root@testsv:~/ols-docker-env# bash bin/database.sh --domain test01.home --user db01user --password db01pass --database dbtest01
Database: dbtest01
Username: db01user
Password: db01pass
root@testsv:~/ols-docker-env#

WordPressのインストール。以下のパラメータで設定してます。

root@testsv:~/ols-docker-env# ./bin/appinstall.sh --app wordpress --domain test01.home
Set owner to 1000
Install unzip package..
Install ed package..
root@testsv:~/ols-docker-env#

Let’s EncryptでSSLサーバ証明書の取得のため、ACMEをインストールする。メールアドレスはご自身のメールアドレスで登録してください。

root@testsv:~/ols-docker-env# ./bin/acme.sh --install --email [email protected]
[Start] Checking ACME
[Start] Install ACME
 :
 :
[End] Install ACME
[Start] Adding ACME hook
[End] Adding ACME hook
Please run acme.sh --domain [DOMAIN_NAME] to apply certificate
root@testsv:~/ols-docker-env#

Let’s Encrypt証明書でサーバー証明書を取得。今回はテスト用ドメインだったので、最後の方にエラー表示がでてますが、本番のドメインであればエラーにならないと思います。

root@testsv:~/ols-docker-env# ./bin/acme.sh --domain test01.home
[Start] Checking ACME
 :
 :
[Tue May 5 10:35:30 EDT 2020] Create new order error. Le_OrderFinalize not found. {
"type": "urn:ietf:params:acme:error:rejectedIdentifier",
"detail": "Error creating new order :: Cannot issue for \"test01.home\": Domain name does not end with a valid public suffix (TLD)",
"status": 400
}
[Tue May 5 10:35:30 EDT 2020] Please add '--debug' or '--log' to check more details.
[Tue May 5 10:35:30 EDT 2020] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh
[End] Apply Lets Encrypt Certificate
root@testsv:~/ols-docker-env#

セキュリティ向上させるOWASP ModSecurityを適用する。

root@testsv:~/ols-docker-env# bash bin/webadmin.sh --mod-secure enable
Install git
Download OWASP rules
Config OWASP rules.
Enable modsecurity
root@testsv:~/ols-docker-env#

これでインストール作業終了です。

WordPress初期設定

WordPressの初期設定のため、WEBブラウザから「 http://test01.home/ 」へアクセスします。

言語は日本語を選択

サイト名や管理者のログイン用情報を登録

  • WordPress管理画面ログイン用
    • ユーザ名:wpuser01
    • パスワード:wppass01-xlfcJ$bud
  • 管理者用メールアドレス: [email protected]
    (存在しないメールアドレスので実施の際はご利用のメールアドレスを利用してください)

インストール完了!ログインをしてみる。

WordPress管理画面に無事ログイン!

これでWordPressインストール完了です!

(参考)OpenLiteSpeedとphpMyAdminへのログイン

OpenLiteSpeed

OpenLiteSpeedのWEB管理画面には「 https://test01.home:7080/ 」とURLのドメイン部分に「 :7080 」を追加するとアクセスできます。

アクセスするとテスト用ドメインのため警告画面が表示されますが、下の画面のように続行すればアクセスできます。画面はFirefoxの場合の画面です。

ユーザー名とパスワードを求められるので、

  • ユーザ名は「admin」で固定
  • パワードはインストール時に「bash bin/webadmin.sh XXXXX」で設定したパスワードを入力。今回は「litespeed-pass」

ログインが成功すると以下のような画面が表示されます。

phpMyAdmin

phpMyAdminのWEB管理画面には「 http://test01.home:8080/ 」とURLのドメイン部分に「 :8080 」を追加するとアクセスできます。

ユーザ名とパワードはインストール時に「bash bin/database.sh –domain test01.home –user db01user –password db01pass –database dbtest01」で設定したパスワードを入力。

今回はユーザ名「db01user」パスワード「db01pass 」でログインできます。

ログインが成功すると以下のような画面が表示されます。

(参考)つまづいた部分メモ

インストールの時にハマった部分を備忘として記載おきます。

データベース名に . (ドット)を付けるとエラーになる

「bash bin/database.sh –domain XXX –user XXX –password XXX –database XXX」コマンドでdbnameの名前に . (ドット)を入れるとエラーになり設定できませんでした。

bash bin/webadmin.sh –upgrade を行うとエラーになる

以下のサイトにWEBサーバの更新方法として「bash bin/webadmin.sh –upgrade」があるがこれを実行するとWEBサイトにアクセスできなくなる(2020年5月6日時点)

LiteSpeed Documentation
Documentation for all things LiteSpeed

ーーーー

最後までお読みいただきありがとうございました。

今日はここまで、

 

コメント

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