仮想マシンにWordPressを入れたので、せっかくなので、WordPressのテーマを変更してマルチサイト化もしてみたいと思います。
これが、地獄の始まりでしたよ...迷走しまくりですので、まとまりがない記事になってしまっていますが、お時間のある方はご照覧ください。
⇧ 仮想マシン(WebサーバーとしてLiteSpeedのオープンソース版のOpenLiteSpeed を使ってます。)にWordPressを導入するところはこちらを参考ください。
※ 仮想マシンのOS(ディストリビューション)としてUbuntu 16.04 LTSを利用しています。Ubuntu以外の場合は、他サイト様を参考ください。
⇧ OS(ディストリビューション)の種類などについては上記サイト様が参考になりそうです。
Webサーバーとしては、他にも
などがあります。
また、Webのアプリケーションを構築する場合、
- Webサーバー
- アプリケーションサーバー(APサーバー)
- データベース(DB)
の構成になるのが一般的ではなかろうかと思われます。 (Webサーバーがアプリケーションサーバーの役割を兼任することもあります。)
⇧ 上記サイト様が参考になると思われます。
ただし、PHPに関しては、明確にアプリケーションサーバーというものは無さそうで、OpenLiteSpeedでも内部に組み込まれたモジュールがアプリケーションサーバーっぽいことを担当してそうです。
『 OpenLiteSpeedは、2つのPHP SAPIインタフェースのどちらを使用しても、
外部アプリケーションと通信できます。』
とOpenLiteSpeedの公式で説明されているので、PHP SAPIインタフェースが、PHPを動作させてる感じがするので、アプリケーションサーバーみたいな感じですかね。
推奨は、「LiteSpeed SAPI(LSAPI)」のほうみたいですね。
⇧ PHPのアプリケーションサーバーの考え方については上記サイト様が参考になると思われます。
※ WordPressは仮想マシンでなくても、WindowsやMacにMySQLやPHPなどをインストールしてWordPressの動作する環境を作っていれば動きます。(データベースはMySQL以外でもいけるようです。)
XAMPP(MacだとMAMP)とかをインストールしてWordPressを構築する方法がメジャーではないかと思われます。
⇧ XAMPPとMAMPの違いについては上記サイト様を参考。
WordPressについて書籍で学ぶ場合は、HTML、CSS、PHPをある程度は知っているよって人には、
WordPressユーザーのためのPHP入門 はじめから、ていねいに。[第2版]
が WordPressのルールとかを知るには良いかもしれません。
Web上でもWordPressの情報はかなり豊富にあります。
⇧ WordPressの日本語版公式サイトです。まったくの初心者には理解しづらい内容にはなっていますが、WordPressについて詳しいです。
「ドットインストール」というサイトなら、動画で学習することもできます。
・WordPress入門 (全23回) - プログラミングならドットインストール
だいぶ脱線してしまいましたが、WordPressについてトライしていきたいと思います。
無料Themeの新鋭Luxeritasを試してみる
WordPressのテーマ(Theme)なんですが、
⇧ 上記サイト様が、WordPressの全体のディレクトリ構造についてなどまとめてくださっているので参考になるかと思われます。(WordPressの全体のディレクトリ構成の中でのThemeの立ち位置など。)
で、このテーマ(Theme)を変更することで、サイトの見た目がガラッと変わります。(見た目以外にも機能なども様々に変わります。)
テーマ(Theme)には、無料のもの、有料のもの、とありますが、無料でもすごい完成度の高いものもあります。
今回、無料のTheme(テーマ)で、高速かつSEOにも優れているという、「Luxeritas」(「ルクセリタス」と読むそうです。) を試してみたいと思います。(日本の方が作ってくれたThemeみたいですね。)
⇧ 上記サイト様でダウンロードできます。
⇧ 必ず、「本体」「子テーマ」の両方をダウンロードします。
VirtualBoxの仮想マシンを起動して、仮想マシンに構築したWordPressにログイン
VirtualBoxを起動し、WordPressを構築していた仮想マシンを選択した状態で、「表示(H)」をクリック。
⇧ 「実行中」となっているのを確認したら、ホストOS側のブラウザで、「http://仮想マシンのIPアドレス/wp-admin/」にアクセスし、WordPressの管理画面にログイン。
Themeをインストール
管理画面にログインできたらば、左サイドバーから「外観」を選択。
右側の画面の「新規追加」をクリック。
「テーマのアップロード」を選択。
「ファイルを選択」をクリック。
ダウンロードしておいたZipファイルを選択。
「今すぐインストール」をクリック。
続いて、子テーマのほうのzipファイルも選択。
「今すぐインストール」をクリック。
Theme(テーマ)が追加されているので、子テーマである「Luxeritas Child Theme」の「有効化」をクリック。
「有効: Luxeritas Child Theme」となっていればOK。
「サイトを表示」の上で右クリックし、「新しいタブで開く(T)」でサイトを表示してみます。
外観が変わったことが確認できました。
WordPressのマルチサイト化とは
マルチサイトって何じゃらほい?
⇧ 上記サイト様が詳しいですが、
マルチサイトでない場合
一般的に、サイトを公開するには独自ドメインが必要で、お金を出して買わなければいけないです。では、仮に、運営するサイトが100個とかある場合に、サイトの数だけドメインを買っていると予算的に厳しいです。
また、WordPressをサイトの数だけインストールするとなると、Webサーバーの容量も圧迫されそうです。
マルチサイトの場合
マルチサイト化すると、独自ドメイン自体は1つで複数のサイト運営が可能のようです。(WordPressのインストールも1つでOK。)
マルチサイト化には、
の3つの方法があるようですが、今回は「サブディレクトリ型」でいきたいと思います。
※ マルチサイト化にはデメリットもあるので、気をつけたいところです。
⇧ 上記サイト様が、マルチサイトのメリット・デメリットについて説明してくれています。
⇧ 運営してるサイトを途中からマルチサイトに移行する方法は、上記サイト様を参考ください。
ゲストOS(Ubuntu 16.04 LTS)側にSSHサーバーをインストール
実際に、サイトを本番のWebサーバー(レンタルサーバーやクラウドなどに構築された)に公開した場合、サイトのデザインとかで修正したいときとかがあると思います。そんなときに、ファイルの転送(アップロードやダウンロード)ができれば便利ですね。
今回は、ローカル環境(自分のPC内)で試していきますが、
ホストOS(Windows 10 Home)側とゲストOS(Ubuntu 16.04 LTS)側でファイルの転送(アップロードやダウンロード)ができるように、仮想マシン(ゲストOS)にSSHサーバーをインストールしておきます。
ホストOS側には、後ほどFTPクライアントソフトであるWinSCP(FTP/SFTP/SCPに対応)をインストールしていきます。
ちなみに、ファイル転送のプロトコルには、
- SFTP(Secure File Transfer Protocol)
- FTPS(File Transfer Protocol over SSL/TLS)
- SCP(Secure Copy Protocol)
- FTP(File Transfer Protocol)
のように様々な種類があり、それぞれ必要なサーバーが異なります。
⇧ 上記サイト様がまとめてくださっています。
それでは、パスワードを入力し、仮想マシンにログインします。
端末を起動します。
SSH Serverのインストール
sudo apt-get install openssh-server
⇧ バージョンが表示されればインストールされてます。
sudo ssh -V
・Ubuntu16.04でsshを有効にする方法 – My CMS
⇧ 上記サイト様を参考にrootでのログインを無効化するのがセキュリティ的に望ましいようです。
⇧ また、特定のユーザーのみにSFTP接続を許可する設定なども行うと良いようです。
まずは、SSHサーバーの状態を確認します。
systemctl status ssh
起動してるみたいですね。
とりあえず、サーバー側はOK。
WinSCPでファイル転送できるようにする
一旦、ホストOS(Windows 10 Home)側の話に移ります。
wp-config.phpファイルを編集する必要があるので、ゲストOS(仮想マシン)とホストOS(Windows 10 Home)間でファイルの転送(アップロードやダウンロード) ができるようにしていきたいと思います。
FTPクライアントソフトをインストールしておく感じです。
Windowsの場合は、WinSCPとかを使っていけば良いかと。(MacでもWineというアプリでWinSCPが利用可能になるようですが。)
⇩ Macで利用できるFTPクライアントソフトはこちらのサイト様が参考になるかと。
今回、FTPクライアントとしてWinSCPを利用していきますが、インストール手順は割愛させていただきます。
⇧ まだWinSCPをインストールしてない方は、上記サイト様を参考にインストールしてみてください。
WinSCPを起動します。
左側の「新しいサイト」をクリックすると、新しい接続先のセッションを作成できるようになるので、「ホスト名(H)」に仮想マシンのIPアドレスを、「ユーザー名(U)」、「パスワード(P)」には、仮想マシンログイン時のものを指定します。「ログイン」をクリック。
初回のみ、警告が出ますが、「はい」を選択。
ログインのユーザーのホームディレクトリに接続されます。
ちなみに、今回利用しているファイル転送のプロトコルSFTPは、Wikipediaでは、
SSH File Transfer Protocol(略称:SFTP)とは、SSHの仕組みを使用しコンピューター間でファイルを安全に転送するプロトコルである。sftpは、このプロトコルを利用するコマンドの名前である。
SFTPはSSH通信上でFTPを動かしているのではなく、SSH通信上にFTPとはまったく別のファイル転送の為のプロトコルを実装した物である。
OpenSSHには、sftpコマンドがサブシステムとして含まれる。
と説明されていて、FTPとはまったく別物であるらしいですね、ややこしいネーミングですね。
設定ファイル(wp-config.php)の編集
WebサーバーにOpenLiteSpeed を利用してWordPressをインストールした場合、『/usr/local/lsws/自分で作成したWordPressのドキュメントルート用のディレクトリ/wordpress』っていう構成になってるかと。
⇧ 「wp-config.php」のファイルを編集していく感じです。
「wp-config.php」を選択した状態で右クリックし、「ダウンロード(L)」>「ダウンロード(L)」を選択。
「参照(R)...」でダウンロードする場所を決めます。今回はダウンロードフォルダ。
ダウンロードした「wp-config.php」ファイルを適当なエディタで開きます。
「/* 編集が必要なのはここまでです!」より上の部分に、下記を追記します。
define('WP_ALLOW_MULTISITE', true);
そしたら、保存してファイルは閉じます。
で、Ubuntu側にアップロードしたいんですが、権限の問題で『/usr/local/lsws/自分で作成したWordPressのドキュメントルート用のディレクトリ/wordpress』に直接アップロードできないという...。
⇧ アップロードしようとすると怒られる。
⇧ 上記サイト様によると、「wp-config.php」のパーミッション(権限)は、「600」が望ましいと。
インストーラ(レンタルサーバーなどで用意されているWordPressの自動インストールなど)でwp-config.phpを作成した場合、パーミッションは「646」か「666」になっています。
ただし、共有サーバーの場合「400」で設定できないケースも多いようですので、WordPress.org では「600」を推奨しています。
・ファイルパーミッションの変更 - WordPress Codex 日本語版
⇧ WordPressの日本語公式サイトが分かりやすいです。
で、自分の場合、どんな権限になってるかというと、WinSCPで、「wp-config.php」を右クリックし「プロパティ(P)」を選択。
⇧ 「644」ってなってますね。
WordPressの権限の問題は、確実にこれっ!という情報が分からないところが悩ましいですね。誰か教えて、偉い人!
ということで、調査を続けていましたら、
⇧ 上記サイト様によると、WEBサーバーの実行ユーザーのプライマリグループに、Ubuntuにログインできるユーザーを追加してあげる必要があるようです。
⇧ プライマリグループについては、上記サイト様を参考ください。
WordPressの公式サイトの記述にも、
『
/* Any file that needs write access from WordPress should be owned or group-owned by the user account used by the WordPress (which may be different than the server account). For example, you may have a user account that lets you FTP files back and forth to your server, but your server itself may run using a separate user, in a separate usergroup, such as dhapache or nobody. If WordPress is running as the FTP account, that account needs to have write access, i.e., be the owner of the files, or belong to a group that has write access. In the latter case, that would mean permissions are set more permissively than default (for example, 775 rather than 755 for folders, and 664 instead of 644). */
』
という記述があり、FTPを実行するアカウントが、WordPressへの書き込みアクセス権を持つグループに属している必要があるようです。
じゃあ、WebサーバーであるOpenLiteSpeedの実行ユーザーって?
⇧ 上記サイト様によると、OpenLiteSpeedをデフォルトでインストールしたときの『実行ユーザー : グループ』は、『nouser : nogroup』になるそうです。
自分は、 chownコマンドで
chown -R nobody:nogroup /usr/local/lsws/litewptest/wordpress/
ファイルやディレクトリの所有者やグループを変更してます。
『実行ユーザー : グループ』=『nobody : nogroup』 になるということですかね。
仮想マシンにログインしてユーザー確認
ゲストOS(Ubuntu 16.04 LTS)側の話に移ります。
⇧ 上記サイト様を参考に、ユーザーを確認してみたいと思います。
仮想マシン(OSとしてUbuntu 16.04 LTS)にログインして、端末を起動した直後に、
pwd
とコマンドを打つと、今現在いるディレクトリとして、ログインしたユーザーのホームディレクトリが表示されます。
では、ユーザーを確認。
cat /etc/passwd
⇧ 上記の場合、アプリケーションを起動しているユーザーなども表示されています。(例えば、MySQLを起動してるユーザーであるmysqlなど)
⇧ 上記サイト様によると、今現在ログインしているユーザーを確認できるコマンドがあるようです。
w
⇧ エラー...。
⇧ 上記サイト様によると、VirtualBoxのWindowサイズの横幅が足りないときに発生するエラーらしい。横幅を延ばしてあげたら解決。
再度、コマンドを実行。今度は、無事に実行されました。
⇧ ログインしてるユーザーが複数いる場合、ユーザーの数だけ表示されるみたいです。
SFTP 接続用のユーザー作成
SFTP接続用のユーザーを作成します。スーパーユーザーに切り替えてない場合は、「sudo」をコマンドの先頭に付ける必要があるようです。
sudo useradd [新規ユーザー]
作成したSFTP接続用のユーザーにパスワードを設定。パスワードの入力を求められるので入力。
sudo passwd [新規ユーザー]
作成したユーザーをWEBサーバーの実行ユーザーのプライマリグループ「nogroup」に追加しておきます
sudo gpasswd --add sftpusr [グループ(Webサーバー実行ユーザー)]
⇩ グループの確認などのコマンドは下記サイト様が詳しいです。
⇧ 上記サイト様によると、「グループ」に所属するユーザーを確認できるようです。
⇧ 上記サイト様は、権限の関連について詳しいです。
WordPress ファイルの権限設定
setgid というものを付けることで、WordPressのディレクトリで新規にファイルなどを作成するユーザーが誰であっても、設定されるグループ はWebサーバーの実行ユーザーのグループにすることができるようです。
オーナーとグループに読み書き可能な権限をつけます。ディレクトリの権限は 2775 を指定して setgid を付けるのがポイントです。setgid を付けることによりどのユーザーがファイルやディレクトリを作成しても、設定されるグループは apache グループになります。
⇧ setgid などについては上記サイト様を参考ください。
WordPressのディレクトリやファイルの権限を設定します。
sudo find /usr/local/lsws/litewptest/wordpress -type f -exec chmod 664 {} \;
wordpressディレクトリ配下のディレクトリの権限を変更(setgidの2を付けてるので2775)。
sudo find /usr/local/lsws/litewptest/wordpress -type d -exec chmod 2775 {} \;
※今回は、WinSCPを試すためにファイルの権限を664に統一してしまっていますが、「wp-config.php」や「.htaccess」などのファイルは、本来であれば適切な権限を設定するべきです。
・ファイルパーミッションの変更 - WordPress Codex 日本語版
SFTP アップロード時の umask 設定
umaskって何ぞや?
⇧ 詳細は上記サイト様で。
SFTP でアップロードしたときに設定される権限が、オーナー、グループともに読み書き可能になるように SFTPサーバーの umask を設定します。
sudo vi /etc/ssh/sshd_config
SSHの設定ファイルが開けたら、以下の部分を
Subsystem sftp /usr/lib/openssh/sftp-server
以下のように
Subsystem sftp /usr/lib/openssh/sftp-server -u 0002
変更します。(自分の環境では、sshd_configファイルの中でlibexecの記述が見つからずlibしか見当たらなかったので、このようなパスになってます。)
sshd を再起動します。
sudo systemctl restart sshd
ファイル転送のプロトコルとして、scpやrsyncといったものを利用してファイルのアップロードを行ってしまうと、権限が上手く設定されないようです。
scp や rsync は umask が設定できない?
CentOS 7.3 (1611) で色々試してみましたが、ローカルファイルの権限が優先されるためか scp や rsync でファイルをアップロードした場合の umask は設定できないようです。そのため scp もしくは rsync でファイルをアップロードしてしまうと、意図しない権限が設定されますので注意が必要です。
WordPressのumask 設定
WordPress の管理画面から作成されるファイルやディレクトリの umask を設定します。こちらも、オーナー、グループともに読み書き可能な権限が設定されるようにします。
wp-config.phpを編集します。
sudo vi /usr/local/lsws/litewptest/wordpress/wp-config.php
ファイルの先頭は <?php
で始まり、最後の行は require_once(ABSPATH . 'wp-settings.php');
で終わり、その後ろに空行やスペースが入っていませんか? 末尾の ?>
も必要ありません。
ってなってるんで、一応、wp-config.phpの『/* 編集が必要なのはここまでです ! WordPress でブログをお楽>しみください。 */』って行より上に追加しときましょう。
カーソルで該当行まで移動し、『i』で入力挿入モードにしたら、下記を張り付け。
define('FS_CHMOD_FILE', (0664 & ~ umask())); define('FS_CHMOD_DIR', (02775 & ~ umask()));
編集できたら、『Esc』キーを押し『:wq』で保存してviエディタを終了します。
作成したSFTP用のユーザーでWinSCPから接続
WinSCPで「新しいセッション」を選択して、「ユーザー名(U)」「パスワード」で
『/usr/local/lsws/[WordPress用のドキュメントルート]/wordpress』を選択し右クリックした状態で、「プロパティ(P)」を選択。
権限が変更されてます。
wp-config.phpのほうも
権限が変更されました。
改めて、アップロードしてみると、
「新しいほうのみ(W)」を選択。
無事、アップロードできました。
WordPressの管理画面でマルチサイトの設定
「wp-config.php」の設定ファイルが反映されると、WordPressの管理画面のサイドバーの「ツール」に「サイトネットワークの設置」が追加されているので、選択。
⇧ 上記サイト様によると、Webサーバーのドキュメントルート以外にWordPressを設置している場合、「サブディレクトリ」型のマルチサイト化しか選択できないようです。
今回は、VirtualHost(バーチャルホスト)などで、仮想的なドキュメントルートを設定していたからかもしれません。
※プラグインを追加してる場合は全て停止しといたほうが良いようです。
「インストール」をクリック。
「/usr/local/lsws/litewptest/wordpress/wp-config.php」と「/usr/local/lsws/litewptest/wordpress/.htaccess」のファイルをそれぞれ編集すれば良いようです。
せっかくなので、WinSCPでダウンロードして編集しアップロードしていきたいと思います。 「.htaccess」ファイルは隠しファイルなので、WinSCPで表示させる設定が必要です。
「表示(V)」>「環境設定(P)...」を選択。
「パネル」を選択し、
「一般」の「隠しファイルを表示する(S)(Ctrl + Alt + H)」にチェックを入れ、「OK」。
表示されました。
「.htaccess」、「wp-config.php」の2ファイルをダウンロードします。
ダウンロードできました。
バックアップとして、ファイルをコピーしときます。
「.htaccess」、「wp-config.php」の2ファイルを編集します。
※WordPressの管理画面で表示されていた内容をコピペしてください。各々の環境で内容が異なるはずですので。
⇧ 本番サーバーなどの設定が記述されている場合は、既存の設定を残しつつ、上書きしていくのが良いようです。
wp-config.php
そしたら、ファイルをアップロードします。
管理画面に再ログインすると、
管理画面のヘッダー部分に、「参加サイト」と追加されていればOK。
「サイトネットワーク管理」>「設定」で設定
一応、言語の設定を確認します。
「サイトネットワーク管理」>「設定」を選択。
「初期設定言語」で「日本語」が選択されているのを確認。変更した場合は、「変更を保存」をクリックで反映させます。
サイトの追加
⇧ 上記サイト様を参考にさせていただいてます。
サイトを追加してみたいと思います。
「サイトネットワーク管理」>「サイト」を選択。
サイドバーでないほうの画面の『サイト』の横の「新規追加」を選択。
作成したいサイトの情報を入力し、「サイトを追加」をクリック。
※サイトのアドレスには、「page, comments, blog, files, feed」などの英単語は使えません。また、投稿ページ、個別ページ、カテゴリ、タグなどのスラッグと同じ英単語を使うとページが開かなくなる時があるので重複は気をつけましょう。
⇧ WordPressでは、「スラッグ」というものを『投稿』や『固定ページ』につけることができるので、そこの名前と重複させない「サイトアドレス(URL)」を指定する必要があります。
で、「ダッシュボードを表示」を選択すると、
はい、エラー。「リダイレクトループ」発生。
原因はというと、
⇧ 上記サイト様によると、WordPressの指示そのままに『.htaccess』 ファイルを編集したのがいけないらしい...何それ~どんだけ~!
ということで、『.htaccess』ファイルを再度編集、ところがちゃんと記述できてるっぽい?と思ったら、OpenLiteSpeedのVirtualHostの設定が影響してるのか?
Add a rewrite rule in the vhost to make permalinking work
- (Here we use the default virtual host "Example".)
- Go to the WebAdmin Console > Virtual Hosts > Example > General > Rewrite. Then change the following settings:
- Enable Rewrite > Yes.
- Rewrite Rules >
RewriteBase /wordpress/ RewriteRule ^/index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wordpress/index.php [L]
Graceful restart
- So the changes will take effect (Actions > Graceful Restart).
だが、しかし、見本のサイトは、
Virtual Host Root | $SERVER_ROOT/Example/ |
---|---|
Document Root | $VH_ROOT/html/ |
『/usr/local/lsws/Example/html/wordpress/.htaccess』
となっていて、かたや自分の方は、
Virtual Host Root | $SERVER_ROOT/litewptest/ |
---|---|
Document Root | $VH_ROOT/wordpress/ |
『/usr/local/lsws/litewptest/wordpress/.htaccess』
となっているので、Rewriteの設定は問題ないかな~と思っていたら衝撃の事実が!
『https://[仮想マシンのIPアドレス]:7080/』でOpenLiteSpeedのGUI上の管理画面にアクセスできますが、『.htaccess』のRewrite Rulesが「Virtual Hosts」で自分の作成した「litewptest」に反映されてないっぽい...。
OpenLiteSpeedは、「.htaccess」を読み込めないって...。
Open LiteSpeed cannot read .htaccess
files. However, this script will parse your .htaccess
file and try to extract the relevant rewrite rules. Depending on how complex the file is, there may be issues in the conversion.
と思ったら、Virtual HostのほうでRewrite Ruleを設定する感じ?
For rewrite rules, OpenLiteSpeed uses the same syntax as Apache's mod_rewrite. Apache rewrite rules can be copied and pasted into OpenLiteSpeed's Rewrite Rules field (WebAdmin > Configuration > Virtual Hosts > your virtual host > Rewrite > Rewrite Rules).
It should be noted, though, that Apache mod_rewrite syntax is slightly different when a rewrite rule is in an .htaccess file as opposed to virtual host configuration (in an httpd.conf file). OpenLiteSpeed rewrite rules should be written in this vhost config syntax. If you are copying a set of rewrite rules from an Apache .htaccess file to OpenLiteSpeed, use the following guidelines to edit the rules so they conform to vhost config syntax.
で、書き方ですが、
必ず先頭に「/」を付けることが必要らしいですね。
Add a forward slash at the beginning of the rule pattern
In a virtual host configuration, the rewrite rule pattern will initially be matched against the part of the URL after the hostname and port and before the query string (e.g. "/app1/index.html"). This part of the URL does not end in a forward slash, so the pattern needs to start with a forward slash. Rewrite rules in an .htaccess file are matched against the file system path, which does end in a forward slash. Thus .htaccess rewrites do not begin with a forward slash, but OpenLiteSpeed rewrites should begin their pattern with a forward slash. See the following example:
Help:Rewrite Rule Differences - OpenLiteSpeed Wiki.htaccessファイルの場合
RewriteRule ^([a-zA-Z0-9_-]+)$ http://m.domain.com/$1/ [R=301,L]
OpenLiteSpeedのVirtual Hostの設定ファイルの場合
RewriteRule ^/([a-zA-Z0-9_-]+)$ http://m.domain.com/$1/ [R=301,L]
RewriteBaseはそもそも利用できないらしい。
RewriteBase is not supported in virtual host configurations
The RewriteBase directive can only be used in .htaccess rewrite rules and thus is not supported in OpenLiteSpeed virtual host configurations. This may result in some very simple substitutions, as in the following example:
.htaccessファイルの場合
RewriteBase /joomla RewriteRule .* index.php [F]
OpenLiteSpeedのVirtual Hostの設定ファイルの場合
RewriteRule /.* /joomla/index.php [F]
なので、『.htaccsess』ファイルは使えないので、OpenLiteSpeedの管理画面からRewrite Rulesを編集します。
RewriteEngine On RewriteRule / ^/index\.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^/([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^/([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . /index.php [L]
もし、ファイルから直接編集したい場合は、『/usr/local/lsws/conf/vhosts/[WordPress用のドキュメントルート]/vhconf.conf』を編集すれば良さそうです。
※その場合は、仮想マシンにログインし、端末で編集してください。
あと、「/usr/local/lsws/conf/vhosts/litewptest」の権限が見本の「/usr/local/lsws/conf/vhosts/Example」と異なってたので変更していきたいと思います。
sudo chmod 755 /usr/local/lsws/conf/vhosts/litewptest
そしたら、OpenLiteSpeedの再起動。
/usr/local/lsws/bin/lswsctrl stop
/usr/local/lsws/bin/lswsctrl start
WordPressの管理画面で、「サイトネットワーク管理」>「サイト」を選択。
「ダッシュボード」>「サイトネットワークをアップグレード」を選択。
そしたらば、「参加サイト」から、新しく追加したサイトの「ダッシュボード」を選択します。
「404」ページだけど、リダイレクトループは無くなりました!あと、もう少し?
Rewrite Rulesのミスでした。最終稿はこれで。
RewriteEngine On RewriteRule ^/index\.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^/([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^/([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . /index.php [L]
再度、WordPressの管理画面で「サイトネットワークをアップグレード」を実行した後に、追加したサイトのダッシュボードを表示。無事、表示されました。
ページ自体も表示されました。
まるまる2日を潰してしまいましたが、無事、OpenLiteSpeedでWordPressのマルチサイト化を実装することができました。
ネットに情報を載せてくれてる諸先輩方に感謝しつつ、今回はこのへんで。