開発環境見直し for WORDPRESS on WSL

2017/11/09 追記:
LAN内の他のPCからアクセスするには、コントロールパネル ≫ Windows Defender ファイヤーウォール の新規受信規則で、ポート80番を開けないといけません。


ちょっと前に今の仕事の開発環境を新しくしたのですが、Windows 10 Fall Creators Update(以下、FCU)で、Windows Subsystem for Linux(WSL)がベータ版から正式版に変わったんで、また見直し。見直しというか、Wordpress用。

HyperVを使った前のやつは、こっち、でCIFSマウントしているディレクトリへのアクセスがたまにエラー?で読み取れなくなるぐらいで、特に不自由もなかったんですが、WSLの記事をググると、思いの他進化しているので、WORDPRESSでのお手軽サイト構築用の環境として整備することにした。

Windows10 FCU からは、限定的ですが、ネットワークフォルダをマウントすることができて、WSLはかなり実用的な開発ツールセットになってきています。しぶしぶMac使っている人(そんな奴いるのか?)は、やっと大好きな(笑) 使い慣れたWindowsでウェブ系のお仕事ができます!( ̄▽ ̄)

BoWそのものは、マイクロソフトストアからインストールできるので、もう説明要らないでしょう。Windows10 FCUから開発者モードにする必要もなくなったし。

手順を記録しとこう、という備忘録です。特にこれといって新しいことが書かれているわけではなく、グーグル先生に聞いた内容を自分用にまとめたものなので、あまり参考にはなりません。あしからず。

>>以下の手順を全自動で行うシェルスクリプト

■ パッケージのインストール
apt コマンドで、必要なパッケージをインストールしていきます。sudo するのがかったるいので、全部 root で作業します。
の、前に・・・、まず、/etc/apt/source.list の中のリポジトリを日本のものに差し替えるのが定石だそうですので、変更してからにします。
また、mysql-serverをインストールする最中に、root パスワードを入力するように促されるので適当に。

sudo su -

sed -i.orig -e 's%http://archive.ubuntu.com/ubuntu/%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g' /etc/apt/sources.list
apt update
apt -y upgrade

apt -y install apache2 apache2-doc mysql-server mysql-client
apt -y install php php-mbstring php-mysql php-sqlite3 php-gd php-mcrypt libapache2-mod-php 

php の方は、必要なモジュールを別途 apt でインストールする必要があります。・・・その辺はまぁ適当に。

■ Apache2 設定
まず、そのまま “service apache2 start” とかやると、ワーニングがでます。まぁ、無視すりゃいいんですが、気になるので・・・。
/etc/apache2/apache2.conf を開いて下記2行を追記します。

AcceptFilter http none
AcceptFilter https none

あと、開発するファイル等が入った、ドライブなり、フォルダなりを apacheから見えるようにしないといけません。
windows.confは、僕の環境では、下記のような感じ

#
# /etc/apache2/sites-available/windows.conf
#
<Directory "/mnt/d/devel">
AllowOverride All
Options All
Require all granted
</Directory>
Alias /devel /mnt/d/devel

で、有効化します。

a2ensite windows

php.iniの修正も若干必要ですかね。デフォルトで2MBしかアップロードできませんし、開発環境なんで、memory_limitは無制限にしたい。
ってなわけで、/etc/php/7.0/apache2/php.ini で、以下の項目を修正

  • date.timezone
  • memory_limit
  • post_max_size
  • upload_max_filesize

それと、まぁ、ほとんど使わないと思いますが・・・DocumentRootが /var/www/html で設定されているのですが、これのオーナーとグループを自分のユーザーにしときましょう。いちいち sudo してコピーするのメンドクサイでしょう。ついでにホームディレクトリにリンクを作っときましょう。

#一度 root を exit して・・・
exit
#myuserは自分のアカウントで置き換える
sudo chown -R myuser:myuser /var/www/html
ln -s /var/www/html ~/wwwroot
# root に戻る
sudo su -

■ MySQL 設定
次、mysql。apacheと同じく、”service mysql start” とかやると、僕の環境ではワーニングが出ます。これも無視すればいいんでしょうけど・・・。
mysqlユーザーのホームディレクトリを作ってやります。すでにあればやる必要なし。

mkdir /home/mysql
chown mysql:mysql /home/mysql
usermod -d /home/mysql mysql

mysql の 文字コードを UTF8にしときます。
/etc/mysql/my.cnf を開いて、下記を追記

[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

[mysqld]
character-set-server = utf8

ここで、一旦 mysql を起動して、mysqlクライアントからユーザー、データベースを作っちゃいましょう。

service mysql start
mysql -u root -p

ここから mysql シェル

まずユーザー(wpuser)を作成。パスワードは適当に 0000 とか。
> CREATE USER wpuser IDENTIFIED BY '0000';

WORDPRESS用のデータベースを作っときます。
> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8;

作ったユーザーに、データベースの権限を全許可します。
> GRANT all privileges ON wordpress.* TO wpuser

> quit

あと、phpMyAdmin は必須っすね。aptコマンドでインストールしてもいいんですが、最新のものをマニュアルで入れときます。

#一旦rootを抜けて、一気に片付けましょう。
exit
cd /var/www/html
wget -O - https://files.phpmyadmin.net/phpMyAdmin/4.7.5/phpMyAdmin-4.7.5-all-languages.tar.gz | tar xvzf -
mv phpMyAdmin-4.7.5-all-languages phpMyAdmin
cd phpMyAdmin
cat config.inc.sample.php | sed -r 's/^(\$cfg\['\''blowfish_secret'\''\]) *= *'\''.*'\''/\1 = '\''32_moji_no_randamu_na_ei_suuji_x'\''/g' > config.inc.php

WSLではサービスとして動かすことができないので、bash を終わらせるとapache,mysqlのデーモンが全部落ちます。まぁバックグラウンドで走らせてしまうと、Windows Serverの顔が立たない(^^;ので致し方ありません。
bashを立ち上げるたびに、

sudo sh -c 'service mysql start; service apache2 start' 

とかやる必要があります。まぁこれは、alias 一個作っとけばいいだけなんすけどね。

WORDPRESSでのサイト構築ではもう十分な感じ。でも WSLのubuntuで docker が動いたらこんなメンドクサイことしないで済むのになぁ・・・。いずれ対応してくれることを祈る。

実際にはシェルスクリプトにすることで、インストールしてコマンド一発で、LAMP環境をセットアップできるようしています。
そのスクリプトは、こっち。

Windows10でデフラグを無効にしてはいけない・・・

だ、そうです。
まぁ、今更感がマックスなんですが・・・Windows7 で、SSDをデフラグで最適化する、というのは御法度でした・・・よね???なんか自信なくなってきた。。。

Windows7からWindows10にアップグレードしたPCは、Windows7での設定を忠実に反映するので、ドライブのデフラグの設定は全ドライブ「無効」になっていました・・・orz 勝手にアップグレードするクセに、そういう所は気を利かせないんでつね。。。マイクロソフトさん・・・・そういうとこなんだよ・・・嫌われるのは・・・・(笑) あ、嘘です(m_m)

Windows10ではドライブのメディアの種類を検出して最適化を行ってるそうです。SSDをデフラグ(最適化)すると、Trimを発行してくれるそうで・・・↓参照。

ssd-defrag

Windows8のときって、自動メンテナンスが有効だった時、SSDもデフラグしてしまう、という問題を前に見たことあったんだけど、Windows10ではその対策ってされているのかな~・・・

ちなみに、SSD-RAID0構成の VAIO Z21 では、「最適化は使用できません」という表示で、デフラグ自体ができません。どうやらドライブのメディアの種類が SSD で、Trimコマンド非対応の場合は、デフラグ自体できないようになっているみたいです。
その辺は気を利かせてくれるのね・・・。。。

原因判明

Microsoft Edge がまともに設定できない件 の原因がやっと分かった。

僕はてっきり、コントロールパネルの「インターネット オプション」は、旧デフォルトブラウザ 『Internet Explorer 11 』の専用の設定だと思い込んでいた・・・。Windows10デフォルトのブラウザ Microsoft Edge もこの「インターネットオプション」を参照してるのね・・・OMG!!!

んで、Edgeの設定やら動作不良の原因が、どうやら、「インターネット一時ファイル」が破損しているのが原因やった・・・というのがオチ。
Windows7 のとき、この「インターネット一時ファイル」を置くフォルダを、Lightroomのキャッシュや各種一時ファイル(要するにドライブが壊れてしまっても構わないファイル)専用に購入したSSDドライブ(ジャンクに近い状態の格安商品)に設定していました。
たぶんこのドライブのACL(セキュリティー設定)をいいかげんに設定してたせいか、Windows10にアップグレードする過程で、おそらく このドライブのフォルダに Microsoft Edge がちゃんと書き込めるように適切な設定が為されていない状態だったようだ・・・推測ですけどね・・・。

インターネットのプロパティー ⇒ 閲覧の履歴 設定 ⇒ フォルダーの移動 をクリックして、デフォルトの状態に戻したら、あっけなく解決した。。。
あああ、結局のところ、僕が悪かった。こういうトラブルは往々にして自分が変なカスタマイズしてトラブルを起こすことが多い。

Microsoft Edge 様、「できない奴」呼ばわりして責任転嫁して、ごめんなさいっッッッッッ!

Microsoft Edge がまともに設定できない件

2016年5月12日
解決できました。。。


Windows7からWindows10にアップグレードしたパソコン。アカウントのタイプはローカルアカウント。
プライバシー設定をデフォルトからガシガシ変えたせいなのかどうか分かりませんが、Edgeが思うようにならない。

1つ目。
Edgeで既定の検索エンジンをGoogleに変えようと、ちゃんと手順に従って変えようとしたんですが、下記のようなメッセージが出て設定できない!!!
edge-settings
ちゃんと後でやり直したけど、同じだった。。。

2つ目
Windows7 + IE11で正常に動作していたスクリプトがエラーになってしまった。window.localStorageにアクセスすると、問答無用でエラーになってしまう。。。分からないのは、inPrivateタブで開くとちゃんと動くところ・・・。なんで??? ちなみにWindows10に残っている Internet Explorer 11では正常に動く。
edge-debug
※注記) window[storage] っていうところは、window[‘localStorage’]と読みかえてね・・・

たぶんなんかの設定が引っかかっているせいだと思うんですが・・・ググっても解決方法どころか、同じような現象が検索にほとんど引っかからない。

不思議なことですが、おなじWindows10でも Surface3で稼働しているWindows10は、上記2つの現象は出ていない。設定もほとんど同じにしているはずなんですが・・・。違うところは、Surface3はマイクロソフトアカウントで運用している事ぐらい。

もしかして、ローカルアカウントで運用しているのがダメなのかな~? う~む・・・(ーー;;;

まぁ、Microsoft Edge は常用しないのでさしあたって実害は無いのですが・・・何の設定が抜けているんだろうか・・・???