このGWにやっておこうと思っていたことのひとつに、Ubuntu 14.04で動かしていたサーバを16.04へ移行するってやつがあったので実施。LTS => LTSのアップデート。
$ sudo do-release-upgrade -d
順調にパッケージの更新が進んですんなり終わるかなと思っていたら、MySQLが5.5系列から5.7系列になった影響で、mysql-server-5.7のセットアップでこけた。これは、mysqlの設定ファイルのディレクティブの名前が変わったり非推奨になったりしたせい。Ubuntu16.04のリリースノートにもちゃんと書いてある。 このリリースノートからリンクしてあるbug 1571865に書いてある"Workaround Option 1/3"に書いてある方法で解決した。
$ sudo update-alternatives --remove my.cnf /etc/mysql/my.cnf.migrated
$ sudo service mysql start
$ sudo apt-get -f install
の流れ。
うちのtDiaryは、どこからか拝借してきたUpstart Jobのテンプレートを使って、
description "bebediary-server"
start on runlevel [2345]
stop on runlevel [!2345]
respawn # respawn the service if it dies
respawn limit 5 10 # stop respawning if it fails 5 times in 10 seconds
env PATH=/usr/local/bin:/usr/bin:/bin
chdir /path/to/bebediary # Change direcotory
exec su -s /bin/sh -c "bundle exec tdiary server" bebe # Change user
みたいにtdiary serverコマンドを実行し、ここにnginxでproxy_pass設定をして公開していた。今回、Ubuntuのinit周りがUpstartからSystemdに変わったので、16.04にアップデートしてそのままだとtDiaryが見られなくなってしまった。
素直にsystemdのUnit(っていうの?)を書こうかなと思ったんだけど、nginxに仕込んだまま使っていないPassengerがあったので、使ってみることにした。設定はConfiguration reference for Passenger + Nginxを見て、こんな感じに。
server {
server_name bbn.hepo.jp;
listen 80;
root /path/to/documantroot;
passenger_enabled on;
# for passenger
location ~ ^/diary(/.*|$) {
alias /path/to/bebediary/public$1;
passenger_base_uri /diary;
passenger_app_root /path/to/bebediary;
passenger_document_root /path/to/bebediary/public;
passenger_enabled on;
}
...
}
コンテストになっているやつを初めて見にいった。みんな真剣。そこいらのお祭りでの発表と比べて平均レベル高し。ムスメさんの先生のところのお姉さん達が優勝してた。おめでとうございます、