1台のレンタルサーバーに複数のアプリを同居させつつ、不動産のデータだけは分ける
1つのレンタルサーバー(Xserver)の契約の中で、複数のアプリを動かしています。ドメイン、PHP、SSL、公開フォルダ、データベースとそのユーザーをアプリごとに分け、ほかのアプリのミスが不動産のデータに及ばないようにした設計です。

1台のレンタルサーバーに複数のアプリを同居させる時は、同じ契約の中で、ドメイン、PHP、SSL、公開フォルダ、データベースとそのユーザーを、アプリごとにすべて分けました。データベースのユーザーまで分ければ、ほかのアプリの設定が漏れても、大事なデータのデータベースには入れません。
私たちは、1つのレンタルサーバー(Xserver)の契約の中で、いくつかの自社のアプリのサーバーを動かしています。そこに不動産の業務アプリ(Kaitori Base)を加える時、「同じサーバーに置くか、別のサーバーを契約するか」を決める必要がありました。
不動産のアプリは、物件や取引先など、重要な情報を扱います。ほかのアプリの更新やミスの影響は受けたくありません。一方で、サーバーを2つに分けると、管理の手間と費用がほぼ倍になります。私たちが選んだのは、同じサーバーの契約の中で、分けられるものはすべて分ける形でした。完全に別のサーバーにするのは、ほかの会社に売る段階で考えます。
1つのレンタルサーバーの契約の中で、分けたもの

| 分けたもの | どう分けたか |
|---|---|
| ドメイン | アプリごとに、専用のサブドメインを使う |
| PHP のバージョン | ドメインごとに設定する |
| SSL(https の証明書) | ドメインごとに設定する |
| 公開フォルダ | アプリごとに別のフォルダ。公開フォルダには入口のファイルだけを置く |
| アプリの本体 | 公開フォルダの外の、アプリごとのフォルダに置く |
| データベース | アプリごとに別のデータベースと、別のユーザー |
データベースのユーザーまで分けたので、たとえ接客のアプリの設定が漏れても、そのユーザーでは不動産のデータベースに入れません。

データベースを共有しなかった理由
最初は、ログインを共通にするために、データベースを1つにまとめる案もありました。設計書では、この案を3つの理由で採りませんでした。

ログインを共通にする利点は、ほとんどありませんでした。2つのアプリを毎日両方使うのは、オーナー1人だけだからです。その1人の便利さのために、あとで分けられる道を捨てるのは割に合わない、と判断しました。
完全に別のサーバーにしなかった理由
逆に、最初から別のサーバーを契約する案も採りませんでした。ログインや権限の判定、Google ドライブとのやり取りなど、2つのアプリに共通の部品があります。サーバーを分けると、それらを2か所で管理することになり、いつか必ずずれます。サーバー、証明書、見張り、送り方もすべて2つになり、年間の費用もほぼ倍です。


同じサーバーだからこそ起きたこと
同じサーバーに置いたことで、気づきにくい落とし穴にも当たりました。
php -v
(サーバーの既定の、古いバージョンが表示される)
php8.4 -v
(Web と同じバージョンが表示される)
完全に分けるのは、外に売る段階で
ほかの会社に売り、その会社のデータを預かる段階になったら、不動産のアプリを専用のサーバーに移すことを考えます。データベースを最初から分けてあるので、その時はアプリとデータベースを持って引っ越すだけで済みます。

まとめ

- 同じサーバーの契約の中で、ドメイン、PHP、SSL、公開フォルダ、データベースとユーザーをアプリごとに分けた
- データベースを共有すると、巻き込み、データの削除、引っ越しのすべてで困る
- 別のサーバーにすると、共通の部品の管理と費用が倍になる。共通の部品は写しで持つ
- テスト用と本番用の本体の置き場所を分ける。コマンドの PHP のバージョンに気をつける
この記事は、AI(Claude)の支援を受けて作成し、筆者が内容を確認しています。


