WordPressをサブドメインで複数設置する方法【テーブルプレフィックス変更による複数インストール】~スターサーバー無料サーバー編~

WordPress

はじめに

ネットオウルのスタードメインを取得するとスターサーバーを使える無料サービスがあります。現時点のプランでは、MySQLデータベースの利用数が5つですが、旧プランでは、ひとつという制限があるため、複数のWordPressサイトを運営したい場合に悩むことがあります。

実は、1つのデータベースでも、共有しながらテーブルプレフィックス(テーブル接頭辞)を変更することで、複数のWordPressサイトを運営することが可能です。

この記事では、スターサーバー無料旧プランでサブドメインごとにWordPressを複数設置する方法を解説します。

ご注意

この記事の内容は、現時点での情報や手順になります。もし参考にしていただけるのであれば、とても嬉しいですが、個人的な備忘録が目的になり、情報、状況は変わりますので、十分に確認をしてからの作業をおすすめ致します。

テーブルプレフィックス(テーブル接頭辞)とは?

WordPressでは、データベース内に以下のようなテーブルが作成されます。

  • wp_posts
  • wp_options
  • wp_users
  • wp_comments

この「wp_」の部分がテーブルプレフィックスです。

通常は「wp_」ですが、WordPressインストール時に変更できます。

例えば、

  • wp_
  • blog_
  • sub1_
  • site2_

など任意の文字列を設定できます。

なぜテーブルプレフィックスを変更すると複数インストールできるのか?

WordPressは、wp-config.phpに記載されたテーブルプレフィックスを参照してデータベースへアクセスします。

例えば、

サイトA

$table_prefix = 'wp_';

サイトB

$table_prefix = 'sub1_';

と設定した場合、

サイトAは

  • wp_posts
  • wp_options

を使用し、

サイトBは

  • sub1_posts
  • sub1_options

を使用します。

同じデータベース内でも別々のWordPressとして動作するため、複数サイトの運営が可能になります。

WordPressマルチサイトとの違い

WordPressには「マルチサイト機能」もあります。

しかし無料サーバー環境では設定が複雑になることがあります。

WordPressを追加インストールせずに使えるとのことで実際にチャレンジしましたが、設定後1日経っても「404エラー」で管理画面が開かず、待ちきれずに断念しました。index.htmlの方は公開されて、URLがいきていました。

あと、ログインは共通ですが、管理画面で「参加サイト」を選択する手間には慣れが必要な感じがしました。

そして、テーブルプレフィックス変更による複数インストールしてみた感じは、

  • 設定が簡単
  • サイトごとに独立運営可能
  • トラブル時の切り分けがしやすい

というメリットがあるそうです。実際のところ以前テーブルプレフィックスでのインストールをしたことがあることもあり、マルチサイトよりは、かなりラクでした。ログインは別々になりますが、独立感はあって管理画面でも「どっちのサイトだっけ?」とならなくてよいかと思います。

3つめの「切り分け」、例えばサイトの引っ越し時はまだ経験がないのですが、「All-in-One WP Migration」などのプラグインを使用すれば、初心者でも分離は十分に可能という情報もあります。
※サイトの接頭辞(例: wp_)がついたテーブルだけをエクスポートするのがポイントだそうです。

手順1 現状メインサイトのバックアップ

ひとつのデータベースを共有することもありますが、今回の作業のような場合は必ず作業前にバックアップを取得します。
今回はWordPressのプラグイン「WPvivid Backup Plugin」を使用しました。

手順2 サブドメインを作成とSSL設定

サブドメインを作成

ドメイン名の前に追加するサブドメインは、SEO対策としては、メインサイトとは別のサイトとして認識、評価されるので、サイトの内容が大きく異なる場合に向いています。

  • example.com
  • blog.example.com
  • shop.example.com

ちなみにドメイン名の後に追加する「サブディレクトリ」の場合はメインサイトの評価と影響し合うので、ジャンルが似ているサイトの場合に適しています。

まずはスターサーバーの管理画面からサブドメインを追加します。

左側メニューの「サブドメイン設定」→「ドメイン名」右の「選択」→「サブドメイン一覧」タブ、右の「サブドメイン追加」タブ→「サブドメイン名」空欄にサブドメインを入力します。

入力欄すぐ下の「メモ」は自由です、空欄でも大丈夫です。「確認画面」ボタンを押すと、メインのWordPressのディレクトリの中にサブドメインの公開フォルダが作成されます。中にはindex.htmlとpngファイルが入っています。反映されるまで時間がかかります。

SSL設定をする

サイトのURLが「http://」になっているので、「https://」に設定します。

スターサーバー画面左側メニューから「SSL設定」→「ドメイン名」右の「選択」→「SSL一覧」タブ、右の「無料独自SSL追加」からSSLを設定します。反映されるまで時間がかかります。


手順3 WordPressファイルをアップロード

FTPソフトを使用して、作成されたサブドメイン用フォルダへWordPressをアップロードします。

例えば、ディレクトリは下記の場合、public_html にメインWordPressがすでにインストール済みで、サブドメインのそれぞれ「blog」と「shop」フォルダへ新たにWordPressをインストールします。

/public_html/
/blog/
/shop/

それぞれ独立したWordPressファイルを配置します。
WordPressは、日本の公式サイト
https://ja.wordpress.org/download/
から圧縮ファイルをダウンロード、PC上で解凍したものをFTPソフトを使ってアップロードします。


手順4 インストール時にテーブル接頭辞を変更する

アップロードが済んだら、WordPressのインストール画面でデータベース情報を入力します。

データーベース名、MySQLユーザ名、MySQLホスト名、パスワードなどのデータベース情報は既存サイトと同じで構わないです。

重要なのはテーブルプレフィックス(テーブル接頭辞)です。

サイトA

wp_

サイトB

blog_

サイトC

shop_

のように必ず異なる値を設定します。


wp-config.phpで設定する場合

手動設定の場合は以下を編集します。

$table_prefix = 'blog_';

別サイトでは

$table_prefix = 'shop_';

のように変更します。


インストール後の確認

phpMyAdminを確認すると、

wp_posts
wp_options
wp_users

blog_posts
blog_options
blog_users

shop_posts
shop_options
shop_users

のように複数のテーブル群が作成されます。

これで同一データベース内に複数のWordPressサイトが存在する状態になります。


注意点

テーブルプレフィックスの重複に注意

既存サイトと同じプレフィックスを使用するとデータが混在します。

必ず新しいプレフィックス(接頭辞)を設定してください。

バックアップは必須

同じデータベースを共有するため、作業前にバックアップを取得しましょう。

データベース容量に注意

無料プランでは容量制限があります(下記はAIによる情報ですので、要確認になります)。
データベースの総使用量が500MBまで
文字(テキスト)のデータ(記事の本文、サイトのタイトル、コメント、ユーザー名・パスワード、カテゴリー名、プラグインの設定値など)
ディスク容量(上限:20,000MB = 約20GB)
画像(JPEG, PNGなど)、デザインを決めるテーマファイル(CSS, PHP)、プラグインのプログラム本体など

※20,000MB(20GB)というのは、無料サーバーとしてはかなり大容量です。一般的なスマホ写真(1枚3MB前後)なら約6,000枚以上、Web用に軽量化した画像(1枚200KB前後)なら約10万枚も保存できる計算になります。

複数サイトを運営すると容量消費が増えるため、定期的に確認してください。



まとめ

スターサーバー旧無料プランでは、データベース数の制限があっても、テーブルプレフィックスを変更することで複数のWordPressサイトを運営できます。

手順は以下の通りです。

  1. サブドメインを作成する
  2. WordPressを設置する
  3. 同じデータベースを利用する
  4. テーブルプレフィックスを変更する
  5. インストールを完了する

無料サーバー環境で複数のサイトを運営したい方の参考になりましたら幸いです。
最後までお読みいただき、ありがとうございました。

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