話題は唐突に『秩父夜祭』

何か湧いたように唐突ですが、秩父夜祭についてです。
秩父夜祭と言っても、私の住む関東周辺を外れた人が目にしたとしてもピンとこない話題だと思います。なぜこの話題かと申しますと、妻の山友達が群馬に来る予定があって日程が 12月3日との話を聞きました。そこでカレンダーを確認すると土曜日でした。
私の公開している写真に訪れてくれている方はわかっておられるかと思いますが、12月2日〜3日は毎年のように秩父に通っています。行かなかった年は友人の新築がたまたま重なった年くらいかと記憶しています。
ここで取り上げる説明でもありませんが、『全国的に有名な「秩父夜祭」は京都祇園祭、飛騨高山祭と共に日本三大曳山祭りの一つに数えられています。』 とのことで、京都のように垢抜けた雰囲気でもなく、まさに田舎のお祭りといった雰囲気です。それが私には素朴な雰囲気が感じられて好きなのです。
先にも述べていますが、今年は12月3日の大祭が土曜日なのです。なんで祭りを土日にやらないのかと横柄な事を申す人もいたとの話もありますが、神事なので毎年12月2日が宵宮で、翌3日が大祭と決まっています。そのようなことで土日に祭りが重なるのは稀であり、今年は貴重な年になっています。
とても貴重な年なので、妻の山友達を、山は崩壊や噴火があっても逃げることはないので秩父夜祭に誘ってみたら…と提案したのですが、中には好きじゃない人もいるからと却下されてしまいました。今年は色々なことがあって祭りどころではないといったところでしょうか。
これを見て、秩父に足を運ぼうと考えた人がいれば嬉しいので、毎年通っている私から見に行くためのアドバイスができればと考えます。
秩父夜祭と呼ばれるお祭りなので、夜のお祭りのように感じてしまいますが、昼間も秩父神社では神事が続きます。沿道を屋台は曳かれますし、曳き踊りもあります。2日の宵宮は開放的で、観光客や保育園児も一緒に綱を曳いたり屋台に乗せてもらっている園児がいたりします。また屋台の装飾をじっくり見ることもできますし、屋台に積まれた太鼓を覗き見ることができるかもしれません。
普段鉄道を利用しないので詳細はわかりませんが、電車なら高崎線熊谷駅から秩父鉄道で秩父駅か御花畑駅でしょうか、秩父鉄道では昼間の時間にSLも走っています。それと、首都圏から西武鉄道で西武秩父駅に着けます。
車なら祭りの会場になる市街地は昼間から夜にかけて通行止めになりますので、注意が必要です。駐車場は開催近くになると公表されますが、2日と3日で異なりますが、小中学校が臨時駐車場になります。今までは2日の宵宮は無料で3日の大祭は普通車500円でした。今年も同じだろうと思います。
どこの駐車場を利用するにも市街地は通行止めになりますので、早めの帰宅には市街地の外側を回るように迂回する必要があります。西武秩父駅に近いのは南小学校です。下郷笠鉾の収納庫の通りにも臨時駐車場になる学校があります。
大祭の3日昼間は、4台ある屋台が毎年持ち回りで歌舞伎の舞台に仕立てられ固定された備え付けになります。本町屋台と宮地屋台が担当の年は秩父神社境内が歌舞伎舞台となり、中町屋台ならベスト電器駐車場が舞台で、上町屋台の年は上町屋台庫近くの沿道を舞台にします。
大祭は、15:00頃になると屋台は休息になり、各屋台の周りに飾りの提灯を取り付けます。秩父神社からの出発の準備で神社周辺に移動します。秩父神社境内から18:00を過ぎた頃から順次、馬や神輿が出発して、中近笠鉾が先頭で曳かれると境内の外に置かれた大きな下郷笠鉾が続きます。そして屋台では1番目の小さな宮地屋台が境内から続きます。この頃で時間は19:00を過ぎていると思います。
以下順番に屋台が曳かれていきます。

ラズパイ3のセットアップ(11) (i) WordPress: 複製

複製先のラズパイ3 に MySQL PHP を導入して、 WordPress を新規導入し動作することが確認できたので、やっと本題の Web に公開中の WordPress で構成しているブログを複製します。
最新の状態で複製したいので、おさらいを込めてアドオンの Duplicator を再び利用して最新の複製データを生成することから始めます。
screenshot-from-2016-09-18-07-25-40
Packages を選択します。
表示された画面には過去に生成したまま残されているパッケージがリストされています。新たに最新のパッケージを生成するので右上の [Create New] を選択します。
screenshot-from-2016-09-18-07-28-39
表示された画面では、オプションを選択できるようですが、そのまま右下の [Next→] の選択で問題なさそうです。
screenshot-from-2016-09-18-07-33-05
screenshot-from-2016-09-18-07-34-31
生成に必要な項目がチェックされるようです。問題がなければ右下の [Build→] で生成を開始します。
screenshot-from-2016-09-18-07-35-58
生成されるのは Installer と Archive の2つのパッケージのようです。ここで必要なパッケージを選択するようですが、下に表示された [All Packages] の選択で問題なさそうです。
screenshot-from-2016-09-18-07-38-13
新しく生成されたパッケージが上にリストされているようです。ここには稼働中の WordPress に保存されている全てのパッケージがリストされているようです。もし必要なら、この画面で不要なパッケージの削除ができるようです。右の [Installer] または [Archive] ボタンをクリックすると作業しているクライアントPC にパッケージがダウンロードされます。
なお、この画面で不要なパッケージを削除するには、不要なパッケージ群の左にあるチェックボタンを選択して、左上のリストボタンから delete を選択して、隣の [Apply] ボタンのクリックで削除が始まります。
screenshot-from-2016-09-18-07-39-15
ダウンロードはブラウザの機能や指定、設定により操作しているクライアントPC の該当ディレクトリ内に取り込まれます。必要なら対になるパッケージも同様に続けてダウンロードします。
screenshot-from-2016-09-18-07-40-05
screenshot-from-2016-09-18-07-42-58
これでパッケージがダウンロードされています。これを複製先となるラズパイ3 の WordPress のセットアップディレクトリ /var/www/wordpress/ に何らかの方法で転送して、必要ならユーザーやグループの変更を行っておきます。


2016-09-18 に書き始めていて、今までの作業を再現しようと思ったのですが、何故なのか再現してみるとリンク切れになってしまい実利用できるようになりませんでした。
その後時間が取れなくなってしまい、思い起こすと書き掛けのまま 2か月弱放置してしまいました。この辺りが正常に検証できないとサーバーを乗り換えて、システムのバージョンアップに支障が出るわけで、何としても解決しなければならないです。
遅くなりましたが、現状のまま公開しておきます。
 

ラズパイ3のセットアップ(10) (h) WordPress: 環境構築

まずは、WordPress複製先となるラズパイ3の環境を WordPress が動作する構成に構築します。

何が必須なのかはよくわかりませんが、最低限でデータベース MySQL と PHP が必要なのだろうと思われるので、とりあえずそのインストールから実行しておきます。

$ sudo su -
# apt update
# apt install mysql-server php5 php5-mysqlnd

マニュアルの説明を頼りにして、まずは最新の日本語版 WordPress をダウンロードして展開して、利用するデータベースを生成するところから始めようと思います。

$ wget http://ja.wordpress.org/latest-ja.tar.gz
--2016-09-13 22:04:58-- http://ja.wordpress.org/latest-ja.tar.gz
ja.wordpress.org (ja.wordpress.org) をDNSに問いあわせています... 66.155.40.250, 66.155.40.249
  --- 途中省略 ---
`latest-ja.tar.gz' に保存中
latest-ja.tar.gz 100%[==============================================>] 8.01M 785KB/s 時間 14s
2016-09-13 22:05:13 (588 KB/s) - `latest-ja.tar.gz' へ保存完了 [8402893/8402893]

$ tar -xzvf latest-ja.tar.gz

日本語版 WordPress が、wordpress ディレクトリ以下に展開されていますので、ブラウザからアクセスした時に URL の /blog に対応するディレクトリ /share2/WordPress にコピーします。

# rsync -av /home/pi/wordpress/ /share2/WordPress/
# chown -R www-data:www-data /share2/WordPress

WordPress を格納するディレクトリツリーは、他と多少なりとも統一性を考えて /var/www/html がホームページ作成のデフォルトのようなのと、 webalizer が /var/www/webalizer なので、WordPress としては同様に /var/www/wordpress をディレクトリと決めました。
実際には独立したディスクパーティションを割り当ててルート直下の /share2 にマウントしています。その中に WordPress ディレクトリを作成して、そこを格納エリアとしました。そして /var/www/wordpress としてアクセスできるようにソフトリンクを行っています。

# ln -s /share2/WordPress /var/www/wordpress

先に一部の例として示したサイト定義 ‘001-三田-public.conf’ の中に、URL で /blog に対応する WordPress の定義を次に示しておきます。なお余談ですが、<RequireNone> の定義はアクセス拒否を行うつもりの接続先を列挙しています。

 ... 該当部分のみ ...

Alias /blog /var/www/wordpress
 <Directory /var/www/wordpress>
   DirectoryIndex index.html index.html.var index.php index.cgi
   AddHandler cgi-script .cgi .pl .php
   Options ExecCGI FollowSymLinks MultiViews
   <RequireAll>
    Require all granted
     <RequireNone>
      Require host huangxxxx08.com
      Require ip 91.200.12.xx
     </RequireNone>
   </RequireAll>
 </Directory>

続いて使用するデータベースの作成と、その情報を wp-config.php に記述して WordPress が稼働できる環境を作ります。データベース MySQL をインストールした時に設定した root とそのパスワードを使用して利用するデータベースを作成します。
余談ですが、インストールの時にパスワードを求められると適当に入力してしまいますが、後になって実際に使用する段階で、何を設定したのかわからなくなることが時々あります。我ながらいい加減な性格なのだろうと思います。データベースへのアクセスには、wpadm ユーザーを作成して利用することにします。

$ mysql -u root -p
Enter password: xxxxxx
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 60
Server version: 5.5.50-0+deb8u1 (Raspbian)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.06 sec)
mysql> CREATE USER 'wpadm'@'localhost' IDENTIFIED BY '..password..';
Query OK, 0 rows affected (0.59 sec)
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'wpadm'@'localhost';
Query OK, 0 rows affected (0.57 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql> EXIT
Bye

作成したデータベースにアクセスする方法を wp-config.php に記述しますが、このファイルは初期状態では存在しません。wp-config-sample.php ファイルをコピーするか名前を変更して作成します。

  ... データベースにアクセスするために必要な定義のみ ...

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'wordpress');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'wpadm');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', '..password..');
/** MySQL のホスト名 */
define('DB_HOST', 'localhost');
/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');
/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');
/**#@+
  ... 途中省略 ...
.. 次の部分はパスワード生成用のオンラインジェネレータをクリックするたびに生成されるパスワードで、該当行数の総入れ替えで更新してください。

 *
 * @since 2.6.0
 */
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
/**#@-*/

これで WordPress を新規にインストールできる環境が整いましたので、ブラウザから /blog/wp-admin/install.php を指定して新規のインストールを行います。管理で使用するユーザーを適当にユーザー登録して、ログインすると管理画面に入れます。
screenshot-from-2016-09-15-23-24-51
次に一般的なブラウザからアクセスした場合のデフォルトの初期画面を表示します。
screenshot-from-2016-09-15-23-25-30
いよいよ次回は、すでに運用済みの WordPress ホームページ複製を実行します。

ラズパイ3のセットアップ(9) (g) WordPress: プラグイン導入

私がインターネット上に一般公開している写真のWebサーバー機能をそのまま複製して、新たにセットアップ中のラズパイ3上に構築することができました。そして動作検証をして、完全に複製されたことが確認できています。
写真公開の機能だけなら稼働中の公開Web サーバー機が障害を起こした場合に代替機として稼働させることも可能な状態です。しかし、併設した機能として 2015年夏から追加したブログ部分 (今見ているこの画面のブログ機能) については、共存させている別の Web サイトとして構成されていて独立した機能で、まだ複製できていません。
本来はこのブログ機能も、障害時のバックアップとして、あるいはテスト機として色々な操作を試したりできる独立環境としての複製が必須なのですが、現状は用意出来ていません。このブログに利用しているソフトは、世界的に普及しているらしい WordPress と呼ばれるオープンソースソフトウェアで構成していますが、私が機能をよく理解していない状況で組み込んで利用を開始してしまったため、どこから手を付けてよいのやら、どのようにアレンジしてよいのやらがわからないまま四苦八苦しているのが現状なのです。
ネット上から情報を探すと、サイトを複製するためのプラグインとして Duplicator なるものがあるらしく、初心者でも簡単に利用できると書かれています。まずはこれを導入して試してみることにしました。
WordPress の日本語マニュアル WordPress Codex 日本語版 をここにリンクしておきます。
ログインした管理画面のダッシュボードのプラグのマークscreenshot-from-2016-09-08-21-32-55 をクリックするとサブメニューに [新規追加] があるのでクリックすると検索機能が利用できますので、ここで検索して Duplicator 選択します。
そして組み込んで有効にすると Duplicator のアイコンscreenshot-from-2016-09-08-21-33-51 が追加されます。
screenshot-from-2016-09-08-22-12-55
ここのサブメニューから Packages を選択して、管理画面から [NewCreate] で生成する対象を指定します。2種類の生成ができるらしく両方を選択すると installer.php と データを抽出して圧縮したと思われる .zip の 2つのモジュールが生成されます。
そのモジュールを組み込み先のラズパイ3 に移動して、ブラウザから installer.php を起動してみましたがエラーとなります。
そりゃそうだろうと思ってしまいました。システムを復旧させるためのシステムバックアップというのがあって、ディスクのパーティションにメディアからリストアすると壊れたシステムの復旧が行われる …のイメージがありますが、冷静に考えれば勝手に必要なデータベースや PHP をインストールして設定までしてくれる。 …なわけが無いですよね。
WordPress が新規に動作できる最低限の環境が整備されていなくてはデータをリストアしたくてもリストアの機能が稼働できないですよね。よくよく考えればデータベースソフトもまだインストールしてないし、当然データをリストアしたくてもリストア機能自体が動作しません。
次回からは、WordPress の新規インストールから始めてみます。

sudo にハマってしまいました

最近の Linux で定番となったディストリビューションの Ubuntu ですが、一般ユーザーで作業している時に root 権限で作業する場面は時々発生しますよね。その時に 1コマンドだけを実行するには sudo コマンドを使用するわけです。使う場面としては、例えば一時的にパーティションをマウントしたり、マウントを解除したり、新しいディレクトリを生成したりと、一般的な作業で日常的に発生する頻度の高い作業です。
sudo コマンドを実行するときに、一般的にはログインしている一般ユーザーのパスワードで認証するのですが、パスワードを省略して作業したい場合もあります。問題としてはデスクトップを放置している場合に他人が操作するセキュリティですが、それよりも深刻なのはシェルの連続動作中に root 権限を必要とするコマンドを利用しなければならないケースです。この場合はパスワードの入力を求められて、対応できなくて異常終了してしまう等の結果になることが多く救いようがなくなります。
sudo コマンドの動作の振る舞いを定義するのは、/etc/sudoers ファイルですが、これを直接編集して問題を起こすと取り返しのつかない問題になるらしく、冒頭のコメントに ‘# This file MUST be edited with the ‘visudo’ command as root.’ と書かれています。
実は昔から私は一般ユーザー(自分のユーザー権限)の作業中に決まったルーチンで、ネットワークで接続しているサーバーに、データを転送したりバックアップするようなことを行っていました。この場合に mount コマンドで一時的に接続したり、umount コマンドで開放したりを動的に実行していました。場合によっては rsync コマンドでデータ転送も行っていましたが、ここで出てくるのが sudo コマンドです。ところが Ubuntu 14.04LTS から Ubuntu 16.04LTS にバージョンアップしてからパスワードを要求されるようになりました。
原因がわからずにしばらく悩む結果となりました。 sudo のセキュリティがアップされて、認証の仕様が変わったのだと思い込んでいました。今までは、NOPASSWD: のキーワードを付けて、パスワード無しで実行できていました。今でも同様の構文が記述されているにもかかわらず何故かパスワードを求められます。/etc/sudoers ファイルに記述された構文や構成要素の意味がわからず手探りでマニュアルを探していました。
ついに日本語のマニュアルを見付けました。もっともそのマニュアルを見ても表現が今ひとつ理解しづらいのですが、でも構文の使用例が多めに載せてあって何となく言おうとすることが理解できるような気になってしまいます。その内容の中に 『複数のエントリがマ ッチする場合は、順番に適用される。矛盾する値がある場合は、マッチする行の最後の値が効果を持つ。』 と書かれていました。これって同じ構文でも順序が大きく影響すると書いてますよね。 …そうでした。構成要素の最後に NOPASSWD: の定義がある構文を移動したらパスワードを求められなくなりました。
知らない、理解していない…って何をするかわからないですよね。改めて自分の知識の無さに情けなさを感じるというか、ある意味怖いですよね。何となく /etc/sudoers ファイルの構文の意味やファイルの構成順に関して少し理解できるようになりました。
最近になって解決したばっかりの問題で、無駄な時間を潰してしまった失敗談です。

USB無線LANアダプタ GW-450S

私は普段常用しているノートPCが、Linux系なのですが、最近は簡単そうなネットワーク接続で苦労しています。さすがにケーブル接続のイーサネットで問題が起こることはありません。しかしそれ以外では、接続できなくなることも時々発生しています。(もっとも世の中に利用者が多くて一般的な有償のWindows系で問題発生はありませんが。)
本題に入る前に、少し話が長くなりますが、そこに至る流れから始めます。
数年前に中古品で、かなり疲れの出ている Windows XP を搭載したノートPCを安価な価格で手に入れて常用していました。手元に来た時から発色性が悪く黄ばんだ色合いの画面でしたが、最近はさらに老朽化に磨きがかかったようになってきました。(今でも現役で活躍していますが…)
私が常用していた OS は、Linux の Ubuntu 12.04LTS でした。今年の春に 16.04LTS がリリースしたので、ざっと四年前のシステムです。さすがに新しいアダプタやソフトも対象外となっていて、手順通りにドライバ等のモジュールをメークしても機能しないことがしばしばです。
ハード的にも内蔵バッテリーは完全にイカれていて、ACアダプターが必需品の状態です。発熱もひどくて冷却ファンは常時唸りを上げているような状態です。でも、北海道などに長期に出掛けているような状況では、いつもお伴してくれるとても頼もしいやつです。もっとも内臓ディスクは購入後に1.5TBに入れ替えているので、ドライブレコーダの動画等の比較的容量のかさばる物も一時的に取り込んで保存しておくこともできます。
古い機種なので搭載部品は枯れていて、内蔵Wi-Fiのドライバは問題なく認識して動作するので、メインのメールを見たり返信したりには欠かせません。そして、公開している写真の縮小などの整理やWebデータの作成、最終的なアップロードには必需品となっています。とは言っても、購入時のOSが保守対象外となったWindows XP をベースにしているので、移動経路を収集するGPSロガーのデータ取り込みにも支障が出る状況でした。
そこで後継として、安価な新品として入手したのが、Windows 8.1 with … と、マイクロソフトが異例の代金無償で配布したWindowsを搭載したエプソンダイレクトの Endeavor NY40S です。当然現在は Windows 10 になっているわけですが…
購入してから日が立っているのですが、ほとんど活用できないまま置かれていました。何故かというと理由は、その時点の最新の Ubuntu をセットアップしても内蔵のWi-Fiが全く機能しないからです。
dmesg や立ち上げのログを確認すると、内蔵しているチップセット自体を認識しているようで、Web検索すると海外の情報にヒットするのですが、カーネルのバージョンアップに伴い扱いが変化して取り残されたバグだとか書かれているようで、時間が解決するだろうとしばらく様子見で待っていました。
今年春には待望の Ubuntu 16.04LTSがリリースしました。さすがにこれ以上放置したまま待つこともできずに重い腰を上げたわけです。残念ながら最新のUbuntuでも内蔵のWi-Fiは機能しないままのリリースでした。しかし、最近の日経Linuxには高速でWi-Fiを利用するルータやUSBアダプタの記事も多く載せられているので、これに挑戦してみようとネットワーク機器を購入した次第です。
選考基準は価格が安価な機器です。


この独り言を書き始めて(7月2日)から途中まで書いて、非公開のまま放置されていたことを最近思い出しました。すでに Wi-Fi 対応機器は利用していて、カーネルが更新されると通信できなくなってしまいますが、手動で make して probeコマンドで組み込めば接続できるようになるので特に問題はありません。本来はカーネルのアップデートに伴い自動で更新できればと思い、DKMS を調べたのですが、結局2か月の期間があったのに解決できませんでした。

PLANEX 無線LAN子機 (USBアダプター型) 極小モデル 11ac/n/a 433Mbps 5GHz専用 MacOS X10.10対応 GW-450S 手裏剣 ¥ 2,070
BUFFALO 【iPhone6対応】 11ac/n/a/g/b 無線LAN親機(Wi-Fiルーター) エアステーション QRsetup ハイパワー ビームフォーミン ¥ 5,590

未だ内蔵の Wi-Fi は機能していませんが、購入した USB ドングルで接続できるので不便は特にありません。処理が遅くて非力ですが、ブラウザでネット検索したりブログの書き込み程度の利用ならこの程度のノートPCで十分な気がします。
Ubuntu 16.04LTS に変えてから Konqueror の操作性や機能が変わってしまい日本語も表示できないようになって不便を感じていましたが、ネットで対処法を見つけて解決できました。なんと、母体となる KDE の日本語化パッケージがキーになっているなんて想像もしていませんでした。

ラズパイ3のセットアップ(8) (f) Webサーバーの複製

継続している転送は、215GBになりましたが、まだ継続しています。いい加減な管理と言われてしまいますが、元のデータ量を把握していません。転送が完了したら samba で共有サーバーに昇格させないといけません。
Web 公開に利用している PogoPlug E02 のサーバーですが、原因不明で時々ハングアップしてしまうので、セットアップ中のラズパイ3 の役割を代替機あるいは現役交代用に利用できればと考えています。しかし、解決が必要なちょっと高いハードルがあります。昔から公開している写真の機能だけなら問題がないのですが、新たに追加したこのブログ機能を WordPress で構成しています。
問題は、WordPress ではデータ内に自分自身のサーバー名を保持しているところが多数あり、単純にファイルをコピーして生成するとサーバー名に違いが出てリンク切れが随所に発生してしまうようです。完全に現役交代するならサーバー名も同一にできるので、その問題はなさそうですが動作検証等の公開前に最低限確認しなければならない操作の余裕が取れません。多分大丈夫だろうと考えての公開は怖すぎます。
何れにしても、元になる apache2 の設定を行い写真の公開機能をフルコピーして複製を作ることから始めます。

まずは apache2 と ruby のインストールを行います。ruby は写真を公開するサーバーサイド側で動的に HTMLを生成させるのに使用しています。

$ sudo apt install apache2 apache2-doc webalizer ruby

インストールするとブラウザからのアクセスには簡単な初期説明が表示されます。
Screenshot from 2016-08-31 22-26-34
すでに公開している写真データは、全てコピーが完了していますので、apache2 の初期説明に configuration layout の図が書かれていますが、必要な設定を確認しながらコピーしてサーバーの複製を行います。
一般に公開していないプライベートのパスワード付き暗号化通信の https: で使用するベーシック認証用のパスワードを格納しているファイルが /etc/apache2/conf/.htpasswd に置かれていますが、そのままコピーします。なお、ここからは作業性の問題で root ユーザーとして作業します。

$ sudo su -
# rsync -av /etc/apache2/conf  192.168.10.24:/etc/apache2/
sending incremental file list
conf/
conf/.htpasswd
sent 530 bytes received 39 bytes 379.33 bytes/sec
total size is 399 speedup is 0.70

できるだけ構成ファイルはデフォルトのままで進めたいと思いますが、デフォルトのキャラクタセットは UTF-8 として定義するため /etc/apache2/conf-available/charset.conf 内のコメント ‘#’ を除いて有効になるように変更します。
それと apache2 の起動時ログにエラー的な記録が残る対策とのことで、次の手順を追加しておきます。

# echo ServerName $HOSTNAME > /etc/apache2/conf-available/fqdn.conf
# a2enconf fqdn
# systemctl reload apache2.service

モジュールを有効にします。

# a2enmod cgid ssl

すでに定義されていて稼働実績のある sites の定義を転送して、実情に照らして問題がないか見直します。

 
横道にそれますが、転送していた大量のデータは確保したファイル 300GB の80%を超えても先が見えません。一旦中止して、分散先を振り分けることにして 300GB ×3 として合計 900GB のエリアを確保して続きを転送させました。丸3日以上掛かって転送は終わりましたが、310GB を超えていました。分割して正解だったようです。52% 28% 25% の使用率になりました。理想的な分割になったと喜んでいます。
話を戻して apache2 の設定について続けます。

conf-enabled と sites-enabled のすみ分けが良くわかりませんが、純粋なコンフィグレーションと公開するサイトに関わるコンフィグレーションとで分けているのだろうと思っています。
conf-enabled については、先に修正した conf-available/fqdn.conf 以外は初期設定の内容を信じて特に手を加えません。サイトのコンフィグレーション /etc/apache2/sites-available/ については、稼働している公開サーバーから scpコマンドでコピーしました。
ポート :80 の http:// 初期設定 000-default.conf はそのままで問題なさそうです。ポート :443 の https:// 初期設定 default-ssl.conf についてもそのままで問題なさそうです。コピーしたサイトのディレクトリは次のようになっています。

# ls -l /etc/apache2/sites-available/
合計 36
-rw-r--r-- 1 root root 1332 7月 6 06:22 000-default.conf
-rw-r--r-- 1 root root 1646 9月 1 21:29 001-三田-public.conf
-rw-r--r-- 1 root root 6437 9月 4 21:17 default-ssl.conf
-rw-r--r-- 1 root root 218 9月 1 21:02 webalizer.conf
-rw-r--r-- 1 root root 372 9月 1 21:12 webcmd.conf
-rw-r--r-- 1 root root 2949 9月 4 17:22 三田-private.conf

webalizer.conf は、web のアクセスをグラフで表示する設定です。webcmd.conf は、ブラウザを利用してコマンドを実行させる家屋内でのみ利用できるツールです。webalizer の定義とブラウザからアクセスした場合の表示をサンプルとして次に示します。
Screenshot from 2016-09-04 22-00-21
webalizer を利用できるユーザーは定義を見ればわかるように、sunaomita と webadm だけとしています。
次のアクセス結果を見ると作成されたグラフで文字化けしています。今のネット世界では文字化けの起こらない UTF-8 が主流の文字コードとして認知されていますが、過去に主流だった UNIX や Linux では EUCコードが主流のコードとして使われていた時代が長く続きました。それを引き継いだままのソフトなので、手間を掛けないと修復できませんので目をつぶります。
Screenshot from 2016-09-04 22-01-19
続いて、一般公開するサイトの設定 001-三田-public.conf とプライベートサイトになる設定 三田-private.conf の一部を表示します。
Screenshot from 2016-09-04 22-38-50
Screenshot from 2016-09-04 22-39-27
定義ができたら定義を有効にする a2ensite コマンドで、各コンフィグを組み込みます。そして apache2 を再起動します。

# a2ensite 001-三田-public default-ssl webalizer webcmd 三田-private
# service apache2 restart

アクセスすると公開している web サーバーと全く同じ内容のコピーされた webサイトが表示できることを確認しました。
Screenshot from 2016-09-04 23-04-04

 
この続きは、いよいよブログとして公開している WordPress の複製ですが自信が無いです。ネットの情報を頼りにぼちぼちと進めますが、その前に共有サーバーとしての samba の設定が先になるのかと思っています。

ラズパイ3のセットアップ(7) (e) メールの設定とログの監視

監視に定番の logwatch を導入するにもメールの発信ができなければ意味がないので、メール機能を設定しようと思います。単独で機能するメールサーバーではなくて私が普段利用している @Nifty のメールサーバーへのリレーで外部のメール先に送信するような設定にしたいと思います。
話がそれますが、昨日までの設定で、サーバー間で接続認証してデータ転送できる環境になっています。過去には公開Webサーバーとして使用していた家屋内の共有サーバーですが、今でもバリバリの共有サーバーとして稼働しています。何が問題かと言うとカーネルバージョンが古くてセキュリティアップデートや動作ソフトの新たな変更もできません。最新の Linux を導入するには共有データを全て別に移して作業する必要があります。
お互いのサーバー間(現役共有サーバーとセットアップ中のラズパイ3)で接続できるように公開鍵を設定して、rsync コマンドで全データを転送させています。現時点ですでに100GB超が転送されて継続中になっています。
話を戻しますが、サラリと簡単に言ってますがメールの設定は良くわからなくて得意ではありません。今公開しているこのWebサーバー自体の設定がまともに機能しているようなので、ほとんど丸写しで設定しようと思います。昔は適当な設定でも @Nifty 経由でメール転送できたのですが、悪い人達のツールにされて、今では送信時に認証が導入されてしまった【Outbound port 25 Blocking (OP25B) 対策】ので、そのプロセスの定義が必要になってしまっています。
後で自分で見直した時にも参考になるようにリンクしておきます。
OP25B問題と対策を図で説明してくれてるサイト
それと、変更箇所の適切な説明をしているサイト

それではメール設定の作業を始めましょう。 postfix だけを指定してインストールしようとしたら多くの提案があったので、その中から思い付きで関連しそうな予想のものを追加しておきます。

$ sudo apt install postfix sasl2-bin postfix-doc openssl-blacklist

インストール途中で、postfix をどのようにインストールするのか質問されるが、結果の違いが良くわかっていないのでインターネットを選択しました。動作実績のある設定をコピーしてカスタマイズするので特に問題はありません。
設定が必要なファイルは、master.cf と main.cf 、それと @Nifty にリレイするのでパスワードが必要になります。
パスワードのファイル名は任意ですが、後でわかる名前にしておきましょう。ここでは nifty.auth としておきます。

$ sudo vi /etc/postfix/nifty.auth
[smtp.nifty.com]:587 userid:password

その後で、hash化されたDBに変換します。

$ sudo postmap /etc/postfix/nifty.auth

Screenshot from 2016-08-31 00-03-12
適切な設定なのかはわかりませんが、次に示すのが main.cf と master.cf の一応動作している設定です。
main.cfmaster.cf
続いて mail のコマンド操作ができるようにして、テストメールを送信してみます。作業を root ユーザーになってから進めようと思います。

$ sudo su -
# apt install mailutils
# vi /etc/aliasesScreenshot from 2016-08-31 01-20-54

/etc/aliases の設定を有効にします。

# newaliases
# systemctl reload postfix.service

コマンドを利用して、 root ユーザーから pi ユーザーに簡単なメールを送ってみます。

# echo test | mail -s 'postfix test' pi

pi ユーザーへのメールは、@Nifty の私のメールアドレスへ転送するように設定しているので、正常に機能すれば転送されてきます。転送された内容を確認すると送ったメールの内容に間違いないことがわかります。
Screenshot from 2016-08-30 23-34-31
メールの転送機能が確認できたので、logwatch をインストールします。

# apt install logwatch

問題がなければ 1日1回のログのレポートが送られてきますので、待つことにします。
それと今まで利用してこなかった監視ソフトとして logcheck と言うのがあるようで、すでに1度インストールしていて、メールで頻繁に通知されてきたのを経験しています。せっかくなのでインストールしようと思います。

# apt install logcheck

使い方がよくわからないのでネット検索してみるとドキュメントの日本語化したものらしいのが見つかりましたが、その説明と実際にインストールされたものの構成が大きく異なっているようです。Webサーバーの apache2 でもRedhat系と Debian / Raspbian 系では構成や操作の作法に大きな違いがあるようなので、 logcheck も同様に構成や作法に違いがあるのでしょうね。ディレクトリの構成を次に示しますが、そのディレクトリ内に定義のファイルが多数置かれているようです。今は余裕がないのでそのままスルーしておきます。
Screenshot from 2016-08-31 23-06-34
送られてくるメールを次に示します。監視結果は logcheck 宛にメールされるのですが、/etc/aliases に定義はしていないのですが、問題なく私宛にメールが届きます。カラクリはわかりませんが未定義はroot に送られるのでしょうか。
Screenshot from 2016-08-31 23-07-58

 
話が変わりますが、共有データのサーバー間転送は継続したままです。 現在転送量が、180GBを超えたところです。 ほぼ 4秒のインターバルで 4MBずつ増加しているので、約1MB/秒 なので、開始から丸2日程度なのかな、もう少しで送り終わるだろうと思います。

ラズパイ3のセットアップ(6) (d) 仮想端末の整備

ラズパイ3もルートファイルシステムのハードディスクを変更したら安定しているように見えます。やはり問題はハードディスクのようです。
リモートからのパスワード無し接続ができるようになったので、次はターミナルソフトの整備だろうと思われます。仮想端末と呼ばれるジャンルに、 byobu / tmux / screen と言ったソフトがあって、byobu は tmux や screen のラッパープログラムとして機能するようです。
何が便利かと言うと、 ssh 等で直接リモートログインした状態で、そのままサーバー側のコマンドを利用して処理を行っていると何かの要因で通信路に障害が起きて、セッションが切れると実行中の処理も異常終了してしまうと思いますが、これらの仮想端末を利用して処理していると仮に通信路で障害が発生しても、再接続するだけで元の処理は継続して実行したままなので途中の経過表示も含めて元の続きを継続できます。
メリットを言い換えると、時間のかかる処理をリモートサーバー上で起動しておいて、操作するクライアント側では電源を落とす等の方法で接続を切ってしまい、時々接続して途中経過を確認したり、時間を置いてから最終結果の確認だけを行うことも可能になります。それと、複数の ssh 接続が必要なことも時としてありますが、例えば速度が遅く不安定なインターネットを経由した先のサーバー接続等を考えた場合には、直接の接続セッションは単一なのに複数の仮想端末内で色々な処理を並行して実行できるのは安心感があります。
そんな訳で byobu を導入します。一般的に byobu は通常 tmux を伴って仕事をするのですが、私の場合は昔から screen を利用していた経緯があって、他に設置のサーバーでも byobu と screen の組合せで稼働しています。混乱を防ぐためにも今回のラズパイ3も、この組合せで設定することにします。
これらの仮想端末ソフトには、その先にある操作目的のソフト、例えば bashにコマンドとして、そのまま文字を送る等以外に、手前にある仮想端末自体を制御するためのコマンド文字が存在します。例えば、新しく仮想端末を開いたり、実行中の仮想端末の画面を別のものに移動したりするのですが、エスケープ文字と呼ばれています。これが統一されているわけではなくて色々なので変更して統一しておかないと支障が出ます。

ソフトの導入と設定を始めます。

$ sudo apt install screen byobu

一度 byobu を起動すると .byobu ディレクトリが作成されます。
byobu の終了は、[F6]キー押下です。

$ byobu
[F6]

仮想端末を制御するエスケープ文字は、色々な意見があるのですが、emacs を使用していない私ですが、’Ctrl + b’ に変更しようと思います。
byobu 関連のコマンドにどのようなものがあるのか確認するため、byobu[Tab][Tab] キー を打鍵してみます。

$ byobu[Tab][Tab]
byobu byobu-janitor byobu-quiet byobu-status
byobu-config byobu-keybindings byobu-reconnect-sockets byobu-status-detail
byobu-ctrl-a byobu-launch byobu-screen byobu-tmux
byobu-disable byobu-launcher byobu-select-backend byobu-ugraph
byobu-disable-prompt byobu-launcher-install byobu-select-profile byobu-ulevel
byobu-enable byobu-launcher-uninstall byobu-select-session byobu_prompt_status
byobu-enable-prompt byobu-layout byobu-shell byobu_prompt_symbol
byobu-export byobu-prompt byobu-silent

まず screen のエスケープ文字を変更することにします。多分設定ファイルは、.byobu/keybindings だろうと思います。

$ vi .byobu/keybindings
source $BYOBU_PREFIX/share/byobu/keybindings/common
bindkey "^A"
escape ^Bb

続いて byobu のエスケープ文字を変更しますが、どのファイルなのかわからないので、直接 byobu を立ち上げて [F9] で変更用のダイアログを表示させ、3番目の ‘Change escape sequence’を選択します。そして入力欄に ‘b’ を打鍵します。

$ byobu
[F9] 表示されたダイアログの3番目を選択 [↓][↓]
'Change escape sequence' を選択して [Enter]
'b' を打鍵して [Tab] で、<Apply> を選択して [Enter]
[Tab]<Exit> を選択して [Enter]
[F6]

そして byobu の裏で screen が動作するように変更します。

$ byobu-select-backend

Select the byobu backend:
  1. tmux
  2. screen
Choose 1-2 [1]: 2

これで screen と連携した byobu の設定が完了しました。
操作した感じでは問題なさそうです。
ただし、このままでは sshでリモートログインしても自動的に byobu は起動しないし、 byobu を終了しても sshのログインのままになります。
sshリモートログインで byobu が自動的に起動して、 byobu の終了で自動的に sshのセッションも切断するように変更します。

$ byobu-enable

自動的に起動しないように戻すには、 byobu-disable コマンドを実行します。

 
これで仮想端末の設定は完了です。

ラズパイ3のセットアップ(5) (c) エディタとリモート接続の整備

次に利用が多い vimエディタの整備を行います。

vimエディタのフルセットをインストールします。

$ sudo apt install vim

シンタックスカラーリングを有効にしておきます。
19行1桁目のコメント を取り除きます。

$ sudo vi /etc/vim/vimrc
......  ......
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
syntax on
" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
....  ....

 
次にリモートログイン関連の整備を行います。

常用しているノートPCからの ssh リモートログインのために公開鍵を設定します。
方法は、リモートで操作されるサーバーであるラズパイ側のpiユーザー.ssh/authorized_keyの中に、リモートで操作する側(常用しているノートPC)常用ユーザー公開鍵を追加します。

$ cat .ssh/id_rsa.pub   ....(常用しているノートPC側)

ssh-rsa AAAAB3NzaC1......AABAQDGfuahG9gbZlZk.........UfIO4hqf7uQJif/c1FPGwQYkGT7VAiksrtyBTOSEe/iWLfeVwjlS..........AkyAVJZKp0p/g+zO............9yF5+b6K9KP+mEXC.......w7HDsaif user@note-PC

追加する方法には色々な方法が考えられますが、文字列をコピーして viエディタで単純に追加編集する方法を示します。

$ vi .ssh/authorized_key   ....(操作される側のラズパイ)
......    ......
ssh-rsa AAAAB3NzaC1......AABAQDGfuahG9gbZlZk.........UfIO4hqf7uQJif/c1FPGwQYkGT7VAiksrtyBTOSEe/iWLfeVwjlS..........AkyAVJZKp0p/g+zO............9yF5+b6K9KP+mEXC.......w7HDsaif user@note-PC
....  ..   .....

 
そして次に動作検証を行います。

公開鍵が追加できたなら、公開鍵と秘密鍵で認証が行われることを確認します。

$ ssh pi@raspberrypi3
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug 28 20:21:10 2016 from note-PC
$

sshでの公開鍵認証ができたなら、ネット上からのアタックでパスワード認証での不正ログインを防ぐために、パスワード認証を禁止します。

$ sudo vi /etc/ssh/sshd_config
....  ..  .....
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
.......    .....

公開鍵と秘密鍵のペアでなければ接続できないことを確認します。 (publickey)

$ ssh root@raspberrypi3
Permission denied (publickey).