LiteSpeedでWordPress構築 in ConoHaVPS

# はじめに
この記事は「[ConoHa Advent Calendar 2024](https://qiita.com/advent-calendar/2024/conoha)」の5日目の記事です。

2017年のカレンダーから毎年参加している、この時期にだけ記事を書く私です。
気づけば学生から新卒社会人になりました。年月って経つのが早いですね。。。

さて、この記事ではConoHaVPSでWordPress(以下、「wp」)を入れるだけの記事です。

正直、WingとかかんたんKUSANAGIとかLAMP(PHP)とかあるので、素のVPSから構築するメリットは薄いっていうかほぼないんですが、ただのロマンとして御覧ください。

## 環境について
今回は、Ver3.0でDebian12.05を使用します。
筆者のPCはWindows11です。Macでもやることはやることは変わらないはずです。

# サーバーの準備
チャージが54円しか入ってないので、チャージしておきます。
クレジットカードが登録されていたり、十分なチャージがある場合は、この手順は不要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/b185b304-5b43-af23-9d6d-ecee6d309691.png)

とりあえず2,000円あれば十分でしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/2a4e7fd1-34a9-3341-515a-e6eb223d21d2.png)

ということで、サーバーを追加していきます。

上で書いた通り、Debian12.05をOSにします。
スペックは 2Core、1GBメモリです。
Rootパスワードを設定し、SSHKeyを忘れずに設定しておきます。

構築中...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/6db0f156-5cb2-bbfe-6e39-0bf06fa19674.png)


構築が完了したら、表示されてるIPアドレスと先ほど設定したSSHKeyを使って、サーバーに接続します。
接続したら、日本語化しておきます。

```
# apt -y install task-japanese locales-all
# localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
# source /etc/default/locale

# echo $LANG
ja_JP.UTF-8

# a
-bash: a: コマンドが見つかりません
```

次にパッケージなどを最新に更新します。

```
# apt update 
# apt upgrade
>なんのため再起動
# reboot -i
```

再起動が完了したら、vimをインストールします。
普段使いがnanoとかの方は不要だと思います。

```
apt install vim
```

vimがインストールできたら、sshの設定を変更します。
22ポートから別のポートに変更することで、ブルートフォース攻撃(総当たり攻撃)を受ける確率(?)を大幅に減らすことができます。
※筆者は過去に、サーバ構築1時間しないうちに海外IPをfail2banが10数件BANしてました

```
# vim /etc/ssh/sshd_config


# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/usr/bin:/bin:/usr/games

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

Include /etc/ssh/sshd_config.d/*.conf

#Port 22 > #を外して22を
Port 10022 > 適当なポートにする(ここでは10022にする)
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

```

編集ができたら、sshdを再起動します。

```
# systemctl restart sshd
>必要ないと思いますが
# systemctl restart ssh
```

これで、ポート変更完了です。
あとはクライアントのssh接続のポートを22から先ほどのポート(10022)に変更して接続するだけです。

# LiteSpeedを入れる
今までApacheとかNginxしか使ってこなかったので、超高速らしいLiteSpeedを使います。

```
# wget -O - https://rpms.litespeedtech.com/debian/enable_lst_debian_repo.sh | bash
# apt update
# apt install openlitespeed
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
E: パッケージ openlitespeed が見つかりません
```
おっと...

自分でリポジトリを追加します。
```
# vim etc/apt/sources.list.d/lst_debian_repo.list
> 行追加
deb http://rpms.litespeedtech.com/debian/ bookworm main

# apt update
> PGP署名はさっきのスクリプトで入ってると信じて
# apt install openlitespeed
22.6 MB のアーカイブを取得する必要があります。
この操作後に追加で 105 MB のディスク容量が消費されます。
続行しますか? [Y/n] 
> 成功!!
```

ちゃんと起動しています。

```
# systemctl status lsws
● lsws.service - LSB: lshttpd
     Loaded: loaded (/etc/init.d/lsws; generated)
     Active: active (running) since Sun 2024-12-01 20:48:49 JST; 2min 37s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 9769 ExecStart=/etc/init.d/lsws start (code=exited, status=0/SUCCESS)
      Tasks: 4 (limit: 1095)
     Memory: 9.4M
        CPU: 3.480s
     CGroup: /system.slice/lsws.service
             ├─9798 "openlitespeed (lshttpd - main)"
             ├─9808 "openlitespeed (lscgid)"
             ├─9837 "openlitespeed (lshttpd - #01)"
             └─9838 "openlitespeed (lshttpd - #02)"

12月 01 20:48:46 vm-9d493636-1b systemd[1]: Starting lsws.service - LSB: lshttpd...
12月 01 20:48:49 vm-9d493636-1b systemd[1]: Started lsws.service - LSB: lshttpd.
```

管理画面に行きたいですが、ポートを開けたい。

```
# ufw status
-bash: ufw: コマンドが見つかりません
```

なんとufwは入っていないっぽい。
というわけでインストール。

```
# apt install ufw
# ufw status
Status: inactive
```

ufwを有効にするとSSHのポートが塞がってしまう可能性があるので、先にポートを開けておきます。

```
# ufw allow 10022/tcp
Rules updated
Rules updated (v6)
```

筆者環境にはIPv6がないですが、両方開けてます。

ufwを有効にします。

```
# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
> コマンドにより既存の SSH 接続が中断される可能性があります。操作を続行してください。
Firewall is active and enabled on system startup
> ファイアウォールはアクティブで、システム起動時に有効になります
```

有効になりました。

```
# ufw status
Status: active

To                         Action      From
--                         ------      ----
10022/tcp                  ALLOW       Anywhere                  
10022/tcp (v6)             ALLOW       Anywhere (v6)
```

管理画面のポートを開けます。

```
# ufw allow 7080/tcp
Rule added
Rule added (v6)
# ufw status
Status: active

To                         Action      From
--                         ------      ----
10022/tcp                  ALLOW       Anywhere                  
7080/tcp                   ALLOW       Anywhere                  
10022/tcp (v6)             ALLOW       Anywhere (v6)             
7080/tcp (v6)              ALLOW       Anywhere (v6) 
```

ブラウザで`http://<conohaのIP>:7080`にアクセスします。

おそらく警告画面が出るはずです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/a3429438-9f39-4c07-8ddc-be598b712727.png)

詳細設定をクリックして「<conohaのIP> にアクセスする（安全ではありません）」をクリックします。

ログイン画面が出ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/67c9a190-0395-0518-29da-ac66d3294c90.png)

ユーザー名もパスワードもわかりません...
どうやら管理者カウントを作る必要があるみたいです。

`/usr/local/lsws/admin/misc/admpass.sh`を実行すると作れるらしい...

```
# /usr/local/lsws/admin/misc/admpass.sh

Please specify the user name of administrator.
This is the user name required to login the administration Web interface.

User name [admin]: <ユーザー名>

Please specify the administrator's password.
This is the password required to login the administration Web interface.

Password: <パスワード。入力は見えない>
Retype password: <パスワード再入力。入力は見えない>
Administrator's username/password is updated successfully!
```

管理者アカウントが作られたので、先程の管理画面にログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/5697f544-6715-9f2a-7653-655c6872ebe9.png)
できた!!

右上に言語設定があるので日本語にします。

そういえば、80と443ポートを開けてないので開けておきます。

```
# ufw allow http
Rule added
Rule added (v6)
# ufw allow https
Rule added
Rule added (v6)
# ufw status

Status: active

To                         Action      From
--                         ------      ----
10022/tcp                  ALLOW       Anywhere                  
7080/tcp                   ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
10022/tcp (v6)             ALLOW       Anywhere (v6)             
7080/tcp (v6)              ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6) 
```

とりあえず、これでOKでしょう。

# mariadbインストール
MySQLとMariaDB、悩みましたが、正直使えればどちらでもいいので、今回はMariaDBをインストールします。

```
# apt -y install mariadb-server mariadb-client
# mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.11.6-MariaDB-0+deb12u1 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
```

wp用にデータベースを作成します。
```
MariaDB [(none)]> CREATE DATABASE wpDB DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.020 sec)
```

wp用にユーザーも作成します。
```
MariaDB [(none)]> GRANT ALL ON wpDB.* TO wp@localhost IDENTIFIED BY '!!PassWord!!';
Query OK, 0 rows affected (0.035 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.025 sec)
```


# litespeed設定
ここから本番です。

## バーチャルホスト

左側のメニューにあるバーチャルホストをクリックします。
「バーチャルホストリスト」の右側にある＋をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/2137c2d4-6e4d-4dea-d25d-be3a7d28b34e.png)

バーチャルホスト名などは以下の画像のようにしました。
必要に応じて変更してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/f8b9f349-ac65-f63f-b236-14de91a52c27.png)

右上の保存マークをクリックして保存します。

設定ファイルの部分が赤くなるので「CLICK CTO CREATE」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/93496115-8fc1-b272-e803-1780fb5f29b1.png)

作成成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/31c7417e-9e99-5813-2a9b-0384e1f08479.png)

再度保存ボタンをクリックすると、バーチャルホストの一覧ページに戻るので、先程作ったホスト(wp)をクリックします。

上の「一般」タブに開いて設定していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/aff1d4c8-e28e-32d9-2102-06683cbc35cf.png)
※上ではドメインを設定していますが、このあと削除しました※
「Rewrite」タブに移動して、「Auto Load from .htaccess」を有効にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/0994f5f9-a288-91c4-953a-8e5e3fc938b6.png)

## リスナー
左側のメニューのリスナーをクリックします。
デフォルトのリスナーがあるので、クリックします。

ポートを80にして、バーチャルホストマップにwpを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/d74d7a9d-e71b-bd0c-01aa-85914515ca88.png)

設定したら、右上の![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/ca80ba93-c7ef-ed85-df50-76abd3ea0899.png)をクリックして再起動しましょう。

# wp構築
wpをインストールしていきます。

```
> 設定したバーチャルホストRootへ移動します。
# cd /var/www/litespeed/wp
> 最新版wpダウンロード
# curl -o - https://ja.wordpress.org/latest-ja.tar.gz | sudo tar xzvf -
> htmlにリネーム
# mv wordpress html
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/573abe77-da25-5aaa-b769-e2f738f63f4d.png)

DBの設定とか色々しました(割愛します)

`wp-config.php`に書き込めないので、PCに一度保存してアップロードします。

FTPをインストールしていないので、SFTPでアップロードしましょう。

アップロードしてから、次に進み、サイト名などを設定してインストールします。


これで完了です!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/791ef5e6-1754-9c24-8fab-44a88fca5f7f.png)

# 最後に
PHPのインストールを省ける、LiteSpeedは魅力かもしれません。
超高速らしいので、気になった方はぜひ。

# スペシャルサンクス
[超高速Webサーバー「LiteSpeed」をDebianにインストールする @ tomoakinagahara(zenn.dev)](https://zenn.dev/tomoakinagahara/articles/81f132967e0795)
[OpenLiteSpeedの初期設定 @ kthksgy(kthksgy.com)](https://www.kthksgy.com/web/openlitespeed-initialization/)

このはちゃんかわいいやったー！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201995/64bbd213-b6e9-3220-43a8-9c63f63ea07e.png)