crowi を入れようとしたけど微妙に失敗した。
5月あたりにウェブを更新しようとして、HTML5 になって header, main, footer というタグがあることにきがついた。WordPress が世の中で流行っているようだが、結局、JavaScript と CSS と新設タグで対応している。別に WordPress でなくてもよい。HTML5 への移行と WordPress の成長がたまたま重なっただけだ。
大体の人がやりたいことは、ビジュアルな効果であるヘッダーのロゴの拡大縮小であったり、下スクロールによる画像の追加や変化であったりする。これは JavaScript でできる。
そして、画面サイズへの対応、PC 大画面やスマホによって見せ方を変える、これには CSS で対応すればよい。
ウェブのトップは出来たので wiki 的な何かを入れようとして pukiwiki を入れてみた。最近では docker ですぐに入る。nginx を前面にして proxy でとばす。
location /abdc/ { rewrite ^/abdc/(.*) $1 break; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host/abdc/; proxy_pass http://localhost:10080/; }
proxy の設定や header への設定はいろいろあるみたいなので、個々に試した方がいい(やってない)。
で pukiwiki もいいけど、最近ならもっと高機能?なものがあるのではないかと思って crowi にチャレンジした。結論から言うと proxy がうまくいかなかった。
いままで気が付かなかったのだが、rewrite はブラウザから来た文字列を修正するもの。それを例えば pukiwiki や crowi などへ転送する。
/ を飛ばす分には転送元の URL と転送先の URL がほぼおなじなので、齟齬は生じない。上のように abdc にアクセスしようとしたら wiki に飛ばすという時に齟齬が生じる。コンテンツ内の URL にすべて abdc という下駄がないといけないのだ。
コンテンツの管理は wiki 側がやっているので、何らかの方法で abdc という下駄を教えてあげないといけない。static に wiki 側で設定してもよいが、abcd に変更したら、また wiki 側も変更しなくてはならなくなるので、dynamic にやりたい。
その、情報伝達がヘッダー内にあって proxy_set_header で設定する Host らしいのだ。”らしい”の意味はちゃんと調べていないから。あと、どんな header が必要でどうすべきかも精査していない。試行錯誤でこれが影響しているという事だけがわかった。すくなくとも pukiwiki はそうだった。
crowi はどうかというと、どうも現時点でサポートされていなさそうだった。もし、こういった基本的な事に注力していないウェブの見た目を重視した wiki であるなら、まぁ採用は見送ることになる。
参考までに書くと、試してないが、さらに docker 内で nginx で一旦受けるように設定するというウェブページもあったのでそうすればうまくいくのかもしれない。
crowi つかってみればわかるが、login 画面が出てきて見た目は qiita 風。リアルタイムにプレビューできる。が、結局、上の問題もあるが wiki の気軽さが失われている感じがするのでこの方針の wiki は今後も採用しないだろう。好みの問題だ。
好きな人は入れてください。login とかはよくできているとは思った。
本職じゃないけどウェブページ作る
いつのまにか HTML も 5 になって、いまや 5.2 らしい。3.X の時代は自分と同じ ID は世界に2人しかいなかったが、いまや何人いるかわからない。
本職じゃないので深入りしない程度に HTML 5 に対応してみる。
まずはヘッダー。
いつのまにか header とか main とか footer とかが新設されている。スクロールするとヘッダーのロゴが変化する(小さくなる)というビジュアル効果にトライしてみる。
基本は CSS で maxheight を設定すること。2つの css の記述をつくればよい。
#header.small img{ max-height:50px; display:block; } #header img{ max-height:40px; display:block; }
こんな感じであとは header.small と header をタイミングよく入れ替えればよい。それは JavaScript で行う。JQuery も必要。jquery.min.js を読み込んでおくこと。
(function($) { $(function() { var $header = $('#header'); $(window).scroll(function() { if ($(window).scrollTop() > 100) { $header.addClass('small'); } else { $header.removeClass('small'); } }); }); })(jQuery);
これだけだとアニメーションしない。
#header img, #header.small img { transition: all 0.3s ease; -webkit-transition: all 0.3s ease; -moz-transition: all 0.3s ease; -o-transition: all 0.3s ease; }
こんな感じでいろんなブラウザに対応しておく(らしいぞ)。これでびーよんと伸びたり縮んだりする Logo ができる。font に対応したいなら、
#header.small .font_logo { font-size: 24px; }
みたいな感じ?
FreeBSD 11.1
$ pkg install netqmail $ pkg install ucspi-tcp $ pkg install checkpassword
で qmail をインストール。ついでに内向きの local_unbound も有効にする。bind911 とは共存しない。ので外と内で2台 VM を立てることにした。いままで view で区別してきたんだけどね。
local_unbound の設定は一苦労だ。プロバイダから貰う DNS のアドレスは中継してくれないようで、google の 8.8.8.8 とか 8.8.4.4 を使うとうまくいくが、いくらなんでもみんなこれだとこまるであろう。なのでプロバイダのウェブを探して中継してくれる IP アドレスを探し出した。
ucspi-tcp はメンテナーがいないそうだ。この環境からは脱出した方がいいのかもしれない。
そして Hyper-V
なんかしらんがサーバが全滅したみたいなので Hyper-V の上に再構築。Windows Server 2018 R2 っていうやつかな?
何故かデフォルトで Hyper-V はオンになっていないので有効化する。
そして、ubutntu 18.04 をインストール。Hyper-V の新しい VM というやつ(BIOS が使えなくて UEFI で 64bit のみのバージョン)をつかってみる。どっかのサイトを見ると、secure boot をオフにしないといけないとかいてあった。とおもったら、うそだった。Windows の template がだめなだけで、Microsoft UEFI Certificate Authority にすればよかった。(Windows Server の場合。Windows 10 では違う可能性もある)
さっそく ubuntu の install で secure boot で引っかかる。オフにするとちゃんと grub が立ち上がる。そしてインストール。DHCP が立ち上がる。
ubuntu 18.04 はいつのまにか /etc/network/interfaces じゃなくなった。/etc/netplan の下の 50-cloud-init.yaml になった。なんだよ。悩んでしまったじゃないか。
これはほっていおいて postfix と dovecon の imap と pop3 をインストール。設定して再起動。
service dovecon stop(あるいは start)
postfix はなぜか /etc/init.d で stop/start 。(たぶん違うけどわからなかった)。Maildir は mkdir でつくって、chmod -R 700 にすればいいみたい。sendmail でメール送信して、new に入ることを確認。そして、windows の thunderbird で imap が動くところまで確認した。dovecon は fetchmail の設定をしなかったけど大丈夫なのだろうか?
FreeBSD 11.1 久々にインストール
まず dig も nslookup もない。bind もない sudo もない。内部用の DNS は unbound(だっけ?
)に変わったのか?
とりあえず、sudo インストール
http://www.gadgets-today.net/?p=4314
pkg が効かない。resolv.conf 書いてなかった。IP アドレス追加。resolv.conf に nameserver のキーワード書いてなかった。IP アドレスの追加だけじゃダメだった。
pkg install sudo
インストールできたようだ。ついでに vim-console もインストール。tiny とどう違うのかはなぞ。
dig は知らない間に drill になっていた。ずーと、nslookup つかってたけどね。
dns/bind99 をインストール。その過程で python2.7 が入る。最近は bind じゃないのかも。とおもったら、案の定 deprecated で dns/bind911 をすすめられた。ので bind911 をインストール。911 というところが、わざわざね。という感じ。どうやら dns/bind99 はインストールされずに bind911 をお勧めするメッセージだけが出た模様。(pkg info でみても bind99 がなかったから)
インストールすると、今度はそしたら、attention だって。
/usr/local/sbin/rndc-confgen は既にインストールされていたので(いつ?)、attention の指示通りに rndc-confge を実行する。
rndc-confgen -a
正しいのかどうかは不明だが、/usr/local/etc/namedb/rndc.key ができたらしい。MD5 だよ。ちがう。hmac-md5 だった。
どうやら jail でセキュアーな仮ホストを使ってそこで bind を動かして rndc でコントロールする仕組みらしい。だから rndc が必須。そしてランダムキーを rndc-confgen で作る模様。いままでつかってなかった。
master の書き方は今まで通りのようなのでコピペすればよろしい。いままで内向きの DNS もここに書いていて、反応が妙にのろかったが、これで unbound で別々に管理できる(はず)。
PYNQ を久しぶりに
PYNQ を久しぶりに使ったら login 出来なくなってしまった。
https://groups.google.com/forum/#!topic/pynq_project/l3bKT9VSAmc
によると、ブラウザー(私の場合は firefox)によっては時刻があまりに違い過ぎると表示しなくなるみたい。なので、サーバ側、つまりPYNQ の時刻をちゃんと今に合わせればよい。
も~。
これで数時間無駄にした。
ついでに cygwin と noACL
もう一つ書くと、noacl とするということは MS-DOS のように細かい ACL 制御をしないという選択になることに注意。Windows の複雑な(覚えたくない)ACL の世界を制御しようと思ったら、なんでもかんでも noacl にしてはいけない。特にサーバー関連では。
本来なら cygwin から Windows の世界にコピーしたら、ACL ありだと、自分以外はみれなくなっている。
例えばこんな感じなっているわけだ。
image1280x400_rgba.raw NULL SID:(DENY)(Rc,S,X,DC) <マシン名>\<ユーザ名>:(R,W,D,WDAC,WO) BUILTIN\Administrators:(DENY)(S,X) NT AUTHORITY\SYSTEM:(DENY)(S,X) <マシン名>\なし:(R) BUILTIN\Administrators:(RX,W) NT AUTHORITY\SYSTEM:(RX,W) Everyone:(R)
NULL SID と自分と"なし"(これは cygwin の group にある"なし"だった)が、くっつくわけだ。
見方が今一つ分からないが、挙動を見ると、NULL SID(Windows の標準で設定されているグループ員なしのグループ)で実行などを DENY(拒否?) しているように見える。(でも cmd から実行できてしまった、、、)
順序が有効だと思ったのだが、、、これは Rc,S,X,DC だけが有効という意味なのか?
その後自分自身は R W D など(他は何だかわからない)が許されている。
この状態で、アプリケーションからファイルを読もうとすると、読めなかったりするわけだ。
だから、サーバ関連ではちゃんと ACL つきでコピーして、ひとつひとつ丁寧に設定して必要がある。手抜きしちゃだめよ。