Ubuntu 16.04 LTSにインストールしたWebサーバーLiteSpeed にインストールしたWordPressをマルチサイト化

 仮想マシンWordPressを入れたので、せっかくなので、WordPressのテーマを変更してマルチサイト化もしてみたいと思います。

これが、地獄の始まりでしたよ...迷走しまくりですので、まとまりがない記事になってしまっていますが、お時間のある方はご照覧ください。

 

ts0818.hatenablog.com

 ⇧  仮想マシン(WebサーバーとしてLiteSpeedのオープンソース版のOpenLiteSpeed を使ってます。)にWordPressを導入するところはこちらを参考ください。

仮想マシンのOS(ディストリビューション)としてUbuntu 16.04 LTSを利用しています。Ubuntu以外の場合は、他サイト様を参考ください。

eng-entrance.com

 ⇧  OS(ディストリビューション)の種類などについては上記サイト様が参考になりそうです。

 

Webサーバーとしては、他にも

などがあります。

また、Webのアプリケーションを構築する場合、

の構成になるのが一般的ではなかろうかと思われます。 (Webサーバーがアプリケーションサーバーの役割を兼任することもあります。)

thinkit.co.jp

⇧ 上記サイト様が参考になると思われます。

ただし、PHPに関しては、明確にアプリケーションサーバーというものは無さそうで、OpenLiteSpeedでも内部に組み込まれたモジュールがアプリケーションサーバーっぽいことを担当してそうです。

『 OpenLiteSpeedは、2つのPHP SAPIインタフェースのどちらを使用しても、

  • LiteSpeed SAPI(LSAPI)
  • FastCGI SAPI(FCGI SAPI)

外部アプリケーションと通信できます。』

とOpenLiteSpeedの公式で説明されているので、PHP SAPIインタフェースが、PHPを動作させてる感じがするので、アプリケーションサーバーみたいな感じですかね。

推奨は、「LiteSpeed SAPI(LSAPI)」のほうみたいですね。

qiita.com

⇧  PHPアプリケーションサーバーの考え方については上記サイト様が参考になると思われます。

 

WordPress仮想マシンでなくても、WindowsMacMySQLPHPなどをインストールしてWordPressの動作する環境を作っていれば動きます。(データベースはMySQL以外でもいけるようです。)

XAMPP(MacだとMAMP)とかをインストールしてWordPressを構築する方法がメジャーではないかと思われます。

teratail.com

⇧  XAMPPとMAMPの違いについては上記サイト様を参考。

 

WordPressについて書籍で学ぶ場合は、HTML、CSSPHPをある程度は知っているよって人には、


WordPressユーザーのためのPHP入門 はじめから、ていねいに。[第2版]

WordPressのルールとかを知るには良いかもしれません。

 

Web上でもWordPressの情報はかなり豊富にあります。

WordPress Codex 日本語版

WordPressの日本語版公式サイトです。まったくの初心者には理解しづらい内容にはなっていますが、WordPressについて詳しいです。

 

「ドットインストール」というサイトなら、動画で学習することもできます。 

WordPress入門 (全23回) - プログラミングならドットインストール

 

 

だいぶ脱線してしまいましたが、WordPressについてトライしていきたいと思います。 

 

無料Themeの新鋭Luxeritasを試してみる

WordPressのテーマ(Theme)なんですが、

www.nsthink.com

⇧  上記サイト様が、WordPressの全体のディレクトリ構造についてなどまとめてくださっているので参考になるかと思われます。(WordPressの全体のディレクトリ構成の中でのThemeの立ち位置など。)

で、このテーマ(Theme)を変更することで、サイトの見た目がガラッと変わります。(見た目以外にも機能なども様々に変わります。)

テーマ(Theme)には、無料のもの、有料のもの、とありますが、無料でもすごい完成度の高いものもあります。

 

今回、無料のTheme(テーマ)で、高速かつSEOにも優れているという、「Luxeritas」(「ルクセリタス」と読むそうです。) を試してみたいと思います。(日本の方が作ってくれたThemeみたいですね。)

thk.kanzae.net

⇧  上記サイト様でダウンロードできます。

f:id:ts0818:20180114164505j:plain

⇧  必ず、「本体」「子テーマ」の両方をダウンロードします。 

f:id:ts0818:20180114171330j:plain

 

VirtualBox仮想マシンを起動して、仮想マシンに構築したWordPressにログイン

VirtualBoxを起動し、WordPressを構築していた仮想マシンを選択した状態で、「表示(H)」をクリック。

f:id:ts0818:20180114165218j:plain

⇧  「実行中」となっているのを確認したら、ホストOS側のブラウザで、「http://仮想マシンIPアドレス/wp-admin/」にアクセスし、WordPressの管理画面にログイン。

f:id:ts0818:20180108234251j:plain

 

Themeをインストール

管理画面にログインできたらば、左サイドバーから「外観」を選択。

f:id:ts0818:20180108234326j:plain

右側の画面の「新規追加」をクリック。

f:id:ts0818:20180114170222j:plain

「テーマのアップロード」を選択。

f:id:ts0818:20180114171007j:plain

「ファイルを選択」をクリック。

f:id:ts0818:20180114171139j:plain

ダウンロードしておいたZipファイルを選択。

f:id:ts0818:20180114171209j:plain

「今すぐインストール」をクリック。

f:id:ts0818:20180114171424j:plain

続いて、子テーマのほうのzipファイルも選択。

f:id:ts0818:20180114171459j:plain

「今すぐインストール」をクリック。

f:id:ts0818:20180114171553j:plain

Theme(テーマ)が追加されているので、子テーマである「Luxeritas Child Theme」の「有効化」をクリック。

f:id:ts0818:20180114172015j:plain

「有効Luxeritas Child Theme」となっていればOK。

f:id:ts0818:20180114172150j:plain

「サイトを表示」の上で右クリックし、「新しいタブで開く(T)」でサイトを表示してみます。

f:id:ts0818:20180114172330j:plain

外観が変わったことが確認できました。

f:id:ts0818:20180114172544j:plain

 

WordPressのマルチサイト化とは

マルチサイトって何じゃらほい?

www.templateking.jp

⇧  上記サイト様が詳しいですが、

マルチサイトでない場合

一般的に、サイトを公開するには独自ドメインが必要で、お金を出して買わなければいけないです。では、仮に、運営するサイトが100個とかある場合に、サイトの数だけドメインを買っていると予算的に厳しいです。

また、WordPressをサイトの数だけインストールするとなると、Webサーバーの容量も圧迫されそうです。

 

マルチサイトの場合

マルチサイト化すると、独自ドメイン自体は1つで複数のサイト運営が可能のようです。(WordPressのインストールも1つでOK。)

マルチサイト化には、

の3つの方法があるようですが、今回は「サブディレクトリ型」でいきたいと思います。 

※  マルチサイト化にはデメリットもあるので、気をつけたいところです。

www.vektor-inc.co.jp

⇧  上記サイト様が、マルチサイトのメリット・デメリットについて説明してくれています。

 

thk.kanzae.net

⇧  運営してるサイトを途中からマルチサイトに移行する方法は、上記サイト様を参考ください。

 

ゲストOS(Ubuntu 16.04 LTS)側にSSHサーバーをインストール

実際に、サイトを本番のWebサーバー(レンタルサーバーやクラウドなどに構築された)に公開した場合、サイトのデザインとかで修正したいときとかがあると思います。そんなときに、ファイルの転送(アップロードやダウンロード)ができれば便利ですね。

 

今回は、ローカル環境(自分のPC内)で試していきますが、

ホストOS(Windows 10 Home)側とゲストOS(Ubuntu 16.04 LTS)側でファイルの転送(アップロードやダウンロード)ができるように、仮想マシン(ゲストOS)にSSHサーバーをインストールしておきます。

ホストOS側には、後ほどFTPクライアントソフトであるWinSCPFTP/SFTP/SCPに対応)をインストールしていきます。

ちなみに、ファイル転送のプロトコルには、 

  • SFTP(Secure File Transfer Protocol)
  • FTPS(File Transfer Protocol over SSL/TLS
  • SCP(Secure Copy Protocol)
  • FTP(File Transfer Protocol)

のように様々な種類があり、それぞれ必要なサーバーが異なります。

ftp、tftp,sftp、ftps、scpの違い

⇧  上記サイト様がまとめてくださっています。

 

それでは、パスワードを入力し、仮想マシンにログインします。

f:id:ts0818:20180115221253j:plain

端末を起動します。

f:id:ts0818:20180115221239j:plain

SSH Serverのインストール

sudo apt-get install openssh-server

f:id:ts0818:20180115221658j:plain

f:id:ts0818:20180115221723j:plain

f:id:ts0818:20180115221812j:plain

⇧  バージョンが表示されればインストールされてます。 

sudo ssh -V

 

Ubuntu16.04でsshを有効にする方法 – My CMS

 ⇧  上記サイト様を参考にrootでのログインを無効化するのがセキュリティ的に望ましいようです。

www.server-world.info

⇧  また、特定のユーザーのみにSFTP接続を許可する設定なども行うと良いようです。

 

まずは、SSHサーバーの状態を確認します。

systemctl status ssh

f:id:ts0818:20180115222532j:plain

起動してるみたいですね。 

とりあえず、サーバー側はOK。

 

WinSCPでファイル転送できるようにする

一旦、ホストOS(Windows 10 Home)側の話に移ります。

wp-config.phpファイルを編集する必要があるので、ゲストOS(仮想マシン)とホストOS(Windows 10 Home)間でファイルの転送(アップロードやダウンロード) ができるようにしていきたいと思います。

FTPクライアントソフトをインストールしておく感じです。

Windowsの場合は、WinSCPとかを使っていけば良いかと。(MacでもWineというアプリでWinSCPが利用可能になるようですが。)

⇩  Macで利用できるFTPクライアントソフトはこちらのサイト様が参考になるかと。

t-shimohara.com

 

今回、FTPクライアントとしてWinSCPを利用していきますが、インストール手順は割愛させていただきます。

techacademy.jp

⇧  まだWinSCPをインストールしてない方は、上記サイト様を参考にインストールしてみてください。

 

WinSCPを起動します。

左側の「新しいサイト」をクリックすると、新しい接続先のセッションを作成できるようになるので、「ホスト名(H)」に仮想マシンIPアドレスを、「ユーザー名(U)」、「パスワード(P)」には、仮想マシンログイン時のものを指定します。「ログイン」をクリック。

f:id:ts0818:20180115223019j:plain

初回のみ、警告が出ますが、「はい」を選択。

f:id:ts0818:20180115223528j:plain

ログインのユーザーのホームディレクトリに接続されます。

f:id:ts0818:20180115223556j:plain

ちなみに、今回利用しているファイル転送のプロトコルSFTPは、Wikipediaでは、

SSH File Transfer Protocol(略称:SFTP)とは、SSHの仕組みを使用しコンピューター間でファイルを安全に転送するプロトコルである。sftpは、このプロトコルを利用するコマンドの名前である。

SFTPはSSH通信上でFTPを動かしているのではなく、SSH通信上にFTPとはまったく別のファイル転送の為のプロトコルを実装した物である。

OpenSSHには、sftpコマンドがサブシステムとして含まれる。

SSH File Transfer Protocol - Wikipedia

と説明されていて、FTPとはまったく別物であるらしいですね、ややこしいネーミングですね。 

 

設定ファイル(wp-config.php)の編集

WebサーバーにOpenLiteSpeed を利用してWordPressをインストールした場合、『/usr/local/lsws/自分で作成したWordPressのドキュメントルート用のディレクトリ/wordpress』っていう構成になってるかと。

f:id:ts0818:20180115224651j:plain

⇧  「wp-config.php」のファイルを編集していく感じです。 

「wp-config.php」を選択した状態で右クリックし、「ダウンロード(L)」>「ダウンロード(L)」を選択。

f:id:ts0818:20180115230949j:plain

「参照(R)...」でダウンロードする場所を決めます。今回はダウンロードフォルダ。

f:id:ts0818:20180115231231j:plain

f:id:ts0818:20180115231434j:plain

ダウンロードした「wp-config.php」ファイルを適当なエディタで開きます。

f:id:ts0818:20180115231914j:plain

「/* 編集が必要なのはここまでです!」より上の部分に、下記を追記します。

define('WP_ALLOW_MULTISITE', true);

f:id:ts0818:20180115231935j:plain

そしたら、保存してファイルは閉じます。

で、Ubuntu側にアップロードしたいんですが、権限の問題で『/usr/local/lsws/自分で作成したWordPressのドキュメントルート用のディレクトリ/wordpress』に直接アップロードできないという...。

f:id:ts0818:20180120153355p:plain

f:id:ts0818:20180115232209j:plain

⇧  アップロードしようとすると怒られる。

 

www.nedia.ne.jp

⇧  上記サイト様によると、「wp-config.php」のパーミッション(権限)は、「600」が望ましいと。

インストーラレンタルサーバーなどで用意されているWordPressの自動インストールなど)でwp-config.phpを作成した場合、パーミッションは「646」か「666」になっています。

ただし、共有サーバーの場合「400」で設定できないケースも多いようですので、WordPress.org では「600」を推奨しています。

WordPressで推奨されるパーミッション設定について - 株式会社ネディア 

 

ファイルパーミッションの変更 - WordPress Codex 日本語版

⇧  WordPressの日本語公式サイトが分かりやすいです。

で、自分の場合、どんな権限になってるかというと、WinSCPで、「wp-config.php」を右クリックし「プロパティ(P)」を選択。

f:id:ts0818:20180120154901p:plain

f:id:ts0818:20180120160049j:plain

⇧  「644」ってなってますね。

 

WordPressの権限の問題は、確実にこれっ!という情報が分からないところが悩ましいですね。誰か教えて、偉い人!

ということで、調査を続けていましたら、

blog.apar.jp

⇧  上記サイト様によると、WEBサーバーの実行ユーザーのプライマリグループに、Ubuntuにログインできるユーザーを追加してあげる必要があるようです。

www.atmarkit.co.jp

⇧  プライマリグループについては、上記サイト様を参考ください。

 

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の実行ユーザーって?

vivibit.net

⇧  上記サイト様によると、OpenLiteSpeedをデフォルトでインストールしたときの『実行ユーザー : グループ』は、『nouser : nogroup』になるそうです。

自分は、 chownコマンドで

chown -R nobody:nogroup /usr/local/lsws/litewptest/wordpress/

ファイルやディレクトリの所有者やグループを変更してます。

『実行ユーザー : グループ』=『nobody : nogroup』 になるということですかね。

仮想マシンにログインしてユーザー確認

ゲストOS(Ubuntu 16.04 LTS)側の話に移ります。

eng-entrance.com

⇧  上記サイト様を参考に、ユーザーを確認してみたいと思います。

仮想マシン(OSとしてUbuntu 16.04 LTS)にログインして、端末を起動した直後に、

pwd

とコマンドを打つと、今現在いるディレクトリとして、ログインしたユーザーのホームディレクトリが表示されます。

f:id:ts0818:20180120163040j:plain

では、ユーザーを確認。

cat /etc/passwd

f:id:ts0818:20180120164615j:plain

f:id:ts0818:20180120164631j:plain

⇧  上記の場合、アプリケーションを起動しているユーザーなども表示されています。(例えば、MySQLを起動してるユーザーであるmysqlなど) 

 

linuxサーバーにログインしているユーザーを確認する

⇧  上記サイト様によると、今現在ログインしているユーザーを確認できるコマンドがあるようです。

w

f:id:ts0818:20180120170101j:plain

⇧  エラー...。

blog.ybbo.net

⇧  上記サイト様によると、VirtualBoxのWindowサイズの横幅が足りないときに発生するエラーらしい。横幅を延ばしてあげたら解決。

f:id:ts0818:20180120193711p:plain

再度、コマンドを実行。今度は、無事に実行されました。

f:id:ts0818:20180120170240j:plain

⇧  ログインしてるユーザーが複数いる場合、ユーザーの数だけ表示されるみたいです。

 

SFTP 接続用のユーザー作成

SFTP接続用のユーザーを作成します。スーパーユーザーに切り替えてない場合は、「sudo」をコマンドの先頭に付ける必要があるようです。 

sudo useradd [新規ユーザー]

作成したSFTP接続用のユーザーにパスワードを設定。パスワードの入力を求められるので入力。

sudo passwd [新規ユーザー]

f:id:ts0818:20180120225355j:plain

作成したユーザーをWEBサーバーの実行ユーザーのプライマリグループ「nogroup」に追加しておきます

sudo gpasswd --add sftpusr [グループ(Webサーバー実行ユーザー)]

f:id:ts0818:20180120230413j:plain

 

⇩  グループの確認などのコマンドは下記サイト様が詳しいです。

www-creators.com

⇧  上記サイト様によると、「グループ」に所属するユーザーを確認できるようです。

promamo.com

⇧  上記サイト様は、権限の関連について詳しいです。

 

 

WordPress ファイルの権限設定

setgid というものを付けることで、WordPressディレクトリで新規にファイルなどを作成するユーザーが誰であっても、設定されるグループ はWebサーバーの実行ユーザーのグループにすることができるようです。

オーナーとグループに読み書き可能な権限をつけます。ディレクトリの権限は 2775 を指定して setgid を付けるのがポイントです。setgid を付けることによりどのユーザーがファイルやディレクトリを作成しても、設定されるグループは apache グループになります。 

WordPressファイルを管理画面とSFTP両方で編集するための権限設定 | あぱーブログ

toyao.net

⇧  setgid などについては上記サイト様を参考ください。

 

WordPressディレクトリやファイルの権限を設定します。

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 {} \;

f:id:ts0818:20180120232722j:plain

※今回は、WinSCPを試すためにファイルの権限を664に統一してしまっていますが、「wp-config.php」や「.htaccess」などのファイルは、本来であれば適切な権限を設定するべきです。 

ファイルパーミッションの変更 - WordPress Codex 日本語版

 

SFTP アップロード時の umask 設定

umaskって何ぞや?

umaskは新規ファイルや新規ディレクトリの作成時のアクセス権(パーミッション)を設定するコマンドだ。

umaskコマンドについて詳しくまとめました 【Linuxコマンド集】

eng-entrance.com

⇧  詳細は上記サイト様で。

 

SFTP でアップロードしたときに設定される権限が、オーナー、グループともに読み書き可能になるように SFTPサーバーの umask を設定します。

sudo vi /etc/ssh/sshd_config

f:id:ts0818:20180121113334j:plain

SSHの設定ファイルが開けたら、以下の部分を

Subsystem sftp /usr/lib/openssh/sftp-server

以下のように

Subsystem sftp /usr/lib/openssh/sftp-server -u 0002

変更します。(自分の環境では、sshd_configファイルの中でlibexecの記述が見つからずlibしか見当たらなかったので、このようなパスになってます。)

f:id:ts0818:20180121113714j:plain

sshd を再起動します。

sudo systemctl restart sshd

f:id:ts0818:20180121115435j:plain

ファイル転送のプロトコルとして、scpやrsyncといったものを利用してファイルのアップロードを行ってしまうと、権限が上手く設定されないようです。 

scp や rsync は umask が設定できない?

CentOS 7.3 (1611) で色々試してみましたが、ローカルファイルの権限が優先されるためか scp や rsync でファイルをアップロードした場合の umask は設定できないようです。そのため scp もしくは rsync でファイルをアップロードしてしまうと、意図しない権限が設定されますので注意が必要です。

WordPressファイルを管理画面とSFTP両方で編集するための権限設定 | あぱーブログ

 

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 Codex 日本語版

ってなってるんで、一応、wp-config.phpの『/* 編集が必要なのはここまでです ! WordPress でブログをお楽>しみください。 */』って行より上に追加しときましょう。

カーソルで該当行まで移動し、『i』で入力挿入モードにしたら、下記を張り付け。

define('FS_CHMOD_FILE', (0664 & ~ umask()));
define('FS_CHMOD_DIR', (02775 & ~ umask()));

f:id:ts0818:20180121123448j:plain

編集できたら、『Esc』キーを押し『:wq』で保存してviエディタを終了します。

 

作成したSFTP用のユーザーでWinSCPから接続

WinSCPで「新しいセッション」を選択して、「ユーザー名(U)」「パスワード」で

f:id:ts0818:20180120235124j:plain

『/usr/local/lsws/[WordPress用のドキュメントルート]/wordpress』を選択し右クリックした状態で、「プロパティ(P)」を選択。

f:id:ts0818:20180120235715j:plain

権限が変更されてます。

f:id:ts0818:20180120235909j:plain

wp-config.phpのほうも

f:id:ts0818:20180120235937j:plain

権限が変更されました。

f:id:ts0818:20180121000046j:plain

改めて、アップロードしてみると、

f:id:ts0818:20180121000506p:plain

「新しいほうのみ(W)」を選択。

f:id:ts0818:20180121000540j:plain

 無事、アップロードできました。

 

WordPressの管理画面でマルチサイトの設定

「wp-config.php」の設定ファイルが反映されると、WordPressの管理画面のサイドバーの「ツール」に「サイトネットワークの設置」が追加されているので、選択。

f:id:ts0818:20180121001014j:plain

※ WordPressをサーバーのドキュメントルート以外の場所にインストールされている場合は、「サブディレクトリ」しか選択できません。 

複数サイト運用方法(サブディレクトリ型)|WordPress活用ガイド|テンプレートキング by ファーストサーバ

⇧  上記サイト様によると、Webサーバーのドキュメントルート以外にWordPressを設置している場合、「サブディレクトリ」型のマルチサイト化しか選択できないようです。

今回は、VirtualHost(バーチャルホスト)などで、仮想的なドキュメントルートを設定していたからかもしれません。

プラグインを追加してる場合は全て停止しといたほうが良いようです。

「インストール」をクリック。 

f:id:ts0818:20180121001611j:plain

「/usr/local/lsws/litewptest/wordpress/wp-config.php」と「/usr/local/lsws/litewptest/wordpress/.htaccess」のファイルをそれぞれ編集すれば良いようです。

f:id:ts0818:20180121002236j:plain

 

せっかくなので、WinSCPでダウンロードして編集しアップロードしていきたいと思います。 「.htaccess」ファイルは隠しファイルなので、WinSCPで表示させる設定が必要です。

「表示(V)」>「環境設定(P)...」を選択。

f:id:ts0818:20180121003622j:plain

「パネル」を選択し、

f:id:ts0818:20180121003758j:plain

「一般」の「隠しファイルを表示する(S)(Ctrl + Alt + H)」にチェックを入れ、「OK」。

f:id:ts0818:20180121003835j:plain

表示されました。

f:id:ts0818:20180121004008j:plain

.htaccess」、「wp-config.php」の2ファイルをダウンロードします。

f:id:ts0818:20180121004424j:plain

ダウンロードできました。

f:id:ts0818:20180121004608j:plain

バックアップとして、ファイルをコピーしときます。

f:id:ts0818:20180121004636j:plain

.htaccess」、「wp-config.php」の2ファイルを編集します。

WordPressの管理画面で表示されていた内容をコピペしてください。各々の環境で内容が異なるはずですので。

.htaccess

f:id:ts0818:20180121005358j:plain

⇧  本番サーバーなどの設定が記述されている場合は、既存の設定を残しつつ、上書きしていくのが良いようです。

wp-config.php

f:id:ts0818:20180121005417j:plain

そしたら、ファイルをアップロードします。

f:id:ts0818:20180121010045p:plain

管理画面に再ログインすると、

f:id:ts0818:20180121010416j:plain

管理画面のヘッダー部分に、「参加サイト」と追加されていればOK。

f:id:ts0818:20180121010435j:plain

 

「サイトネットワーク管理」>「設定」で設定

一応、言語の設定を確認します。

「サイトネットワーク管理」>「設定」を選択。

f:id:ts0818:20180121125208j:plain

「初期設定言語」で「日本語」が選択されているのを確認。変更した場合は、「変更を保存」をクリックで反映させます。 

f:id:ts0818:20180121125338j:plain

 

 

サイトの追加

webdesignerwork.jp

⇧  上記サイト様を参考にさせていただいてます。

 

サイトを追加してみたいと思います。

「サイトネットワーク管理」>「サイト」を選択。

f:id:ts0818:20180121130257j:plain

サイドバーでないほうの画面の『サイト』の横の「新規追加」を選択。

f:id:ts0818:20180121130437j:plain

作成したいサイトの情報を入力し、「サイトを追加」をクリック。

※サイトのアドレスには、「page, comments, blog, files, feed」などの英単語は使えません。また、投稿ページ、個別ページ、カテゴリ、タグなどのスラッグと同じ英単語を使うとページが開かなくなる時があるので重複は気をつけましょう。

WordPressのマルチサイトの設定方法|1つのWPで複数のブログを管理しよう(〜ver.4.0)

⇧  WordPressでは、「スラッグ」というものを『投稿』や『固定ページ』につけることができるので、そこの名前と重複させない「サイトアドレス(URL)」を指定する必要があります。

f:id:ts0818:20180121131118j:plain

で、「ダッシュボードを表示」を選択すると、

f:id:ts0818:20180121132229j:plain

はい、エラー。「リダイレクトループ」発生。

f:id:ts0818:20180121132347j:plain

原因はというと、

blog.citymarathon.jp

⇧  上記サイト様によると、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]
"/wordpress" is the location WordPress was installed relative to the vhost docroot.

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」に反映されてないっぽい...。

f:id:ts0818:20180121163959j:plain

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.

Help:1-Click Install - OpenLiteSpeed Wiki

と思ったら、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.

Help:Rewrite Rule Differences - OpenLiteSpeed Wiki

で、書き方ですが、 

必ず先頭に「/」を付けることが必要らしいですね。

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:

Help:Rewrite Rule Differences - OpenLiteSpeed Wiki

.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]

f:id:ts0818:20180121181447j:plain

もし、ファイルから直接編集したい場合は、『/usr/local/lsws/conf/vhosts/[WordPress用のドキュメントルート]/vhconf.conf』を編集すれば良さそうです。

※その場合は、仮想マシンにログインし、端末で編集してください。

f:id:ts0818:20180121181851j:plain

あと、「/usr/local/lsws/conf/vhosts/litewptest」の権限が見本の「/usr/local/lsws/conf/vhosts/Example」と異なってたので変更していきたいと思います。

f:id:ts0818:20180121170852j:plain

sudo chmod 755 /usr/local/lsws/conf/vhosts/litewptest    

f:id:ts0818:20180121171141j:plain

f:id:ts0818:20180121171412j:plain

 

そしたら、OpenLiteSpeedの再起動。 

/usr/local/lsws/bin/lswsctrl stop
/usr/local/lsws/bin/lswsctrl start

f:id:ts0818:20180121143928j:plain

WordPressの管理画面で、「サイトネットワーク管理」>「サイト」を選択。

f:id:ts0818:20180121182322j:plain

ダッシュボード」>「サイトネットワークをアップグレード」を選択。

f:id:ts0818:20180121182651j:plain

f:id:ts0818:20180121182747j:plain

f:id:ts0818:20180121182805j:plain

そしたらば、「参加サイト」から、新しく追加したサイトの「ダッシュボード」を選択します。

f:id:ts0818:20180121182927j:plain

「404」ページだけど、リダイレクトループは無くなりました!あと、もう少し?

f:id:ts0818:20180121183050j:plain

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]

f:id:ts0818:20180121184506j:plain

再度、WordPressの管理画面で「サイトネットワークをアップグレード」を実行した後に、追加したサイトのダッシュボードを表示。無事、表示されました。

f:id:ts0818:20180121184745j:plain

ページ自体も表示されました。

f:id:ts0818:20180121184951j:plain

 

まるまる2日を潰してしまいましたが、無事、OpenLiteSpeedでWordPressのマルチサイト化を実装することができました。

ネットに情報を載せてくれてる諸先輩方に感謝しつつ、今回はこのへんで。