中二病でも全うに生きたい!

だーくふれいむまちゅたー

http を https にリダイレクト

http から https へのリダイレクト、LBなどを挟むとリダイレクトループになったりするため、いままでは80ポート以外をわざわざ空けて、そこにアクセスきたらリダイレクトするようにしてた。
そしたら X-Forwarded-Proto を見て、よしなにしてくれる方法があった。完全に便利。

apache

<VirtualHost *:80>

  RewriteEngine On
  RewriteCond %{HTTP:X-Forwarded-Proto} =http
  RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

</VirtualHost>

nginx

server {
    listen       80;

    if ($http_x_forwarded_proto = 'http') {
        return 301 https://$host$request_uri;
    }
  
}

Philips Hue 買った

Google Home を買ってからというもの、声で操作できるものを増やしたいと思ってて、ようやく Philips Hue を買った。
照明の色をいろいろ変えれるのは楽しいけど、一番買ってよかったというところが目覚まし照明だった。

部屋が明るくなると自然と目が覚めるようになったので、目覚まし時計を廃止したけど特に問題は発生せず、快適な起床が行えている。

スマートロックのオートロックや、Philips Hue の目覚まし照明大変便利だと思ったけど、よくよく考えてみたら実家にいたときに母親がすべてを担っていたことに気づいた。

母親は偉大だった。

Amazon Linux 2 で ansible をインストールする。

たまにこういうことありそうだけど、忘れそうなのでメモっておく。

amazon-linux-extras はわりと使いそう

$ sudo amazon-linux-extras enable ansible2
$ amazon-linux-extras
$ yum install ansible

EPELの有効化

たまに RHEL7 でやると忘れるのでメモ。 extras と optional は基本 enable でもいい気がする。

RHEL7

yum-config-manager --enable rhui-REGION-rhel-server-extras
yum-config-manager --enable rhui-REGION-rhel-server-optional
rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

CentOS7

yum install epel-release

ping の疎通確認を戻り値でやるかと思ったけど、どこまでが 0 になるのか微妙に気になったので雑に確認した。 とりあえず、1発でも成功すると 0 になるっぽい。

$ ping -c 5 8.8.8.8 ; echo $?
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=57 time=4.167 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=3.119 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=4.568 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=57 time=2.870 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=57 time=7.951 ms

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 2.870/4.535/7.951/1.821 ms
0

$ ping -c 5 8.8.8.8 ; echo $?
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=57 time=7.794 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=4.385 ms
Request timeout for icmp_seq 2
64 bytes from 8.8.8.8: icmp_seq=3 ttl=57 time=9.956 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=57 time=4.709 ms

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 4 packets received, 20.0% packet loss
round-trip min/avg/max/stddev = 4.385/6.711/9.956/2.298 ms
0

$ ping -c 5 8.8.8.8 ; echo $?
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=57 time=95.211 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=17.201 ms
ping: sendto: Network is down
ping: sendto: No route to host
Request timeout for icmp_seq 2
ping: sendto: No route to host
Request timeout for icmp_seq 3

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 2 packets received, 60.0% packet loss
round-trip min/avg/max/stddev = 17.201/56.206/95.211/39.005 ms
0

$ ping -c 5 8.8.8.8 ; echo $?
PING 8.8.8.8 (8.8.8.8): 56 data bytes
ping: sendto: No route to host
ping: sendto: No route to host
Request timeout for icmp_seq 0
ping: sendto: No route to host
Request timeout for icmp_seq 1
ping: sendto: No route to host
Request timeout for icmp_seq 2
ping: sendto: No route to host
Request timeout for icmp_seq 3

--- 8.8.8.8 ping statistics ---
5 packets transmitted, 0 packets received, 100.0% packet loss
2

太古の latin1 , MyISAM のDBを、現代の utf8mb4 , InnoDB に変換した。 悲しい気持ちになった。

ありがとう先人

mysqldump -u hoge -p fuga --default-character-set=latin1 > dump_file.sql

perl -i -pe 's/ENGINE=MyISAM/ENGINE=InnoDB/' dump_file.sql
perl -i -pe 's/DEFAULT CHARACTER SET latin1/DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci/' dump_file.sql
perl -i -pe 's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC/' dump_file.sql

サーバに作ったスクリプトどこに置くか問題、とりあえず最近の bash とかだと以下のように $HOME/bin にパスが通ってるし、そこに置くようにしてる。

PATH=$PATH:$HOME/.local/bin:$HOME/bin