読者です 読者をやめる 読者になる 読者になる

Ubuntu 15.10 Server 版を 16.04LTSにアップグレード

ghost ubuntu Linux

desktopに引き続き、server環境の方もアップグレード。

ConoHaVPSで運用中のサーバーを15.10から16.04 LTSへ更新したので作業メモ。

公式のリリースノートは以下を参照。

※ 14.04 LTS の場合はは3ヶ月後にリリースされるという16.04.1を待つ必要があるとのこと。

16.04 LTSにアップグレードする

データと設定ファイルはバックアップ済みという前提。クラウドなりVPSならディスクまるごとバックアップでいいと思う。

環境としてはnginxとRailsアプリ、ブログエンジンのghostが稼働しているだけのシンプルな構成*1

結論から言うと、公式の手順にあるとおり、do-release-upgradeを実行するだけでいい*2。 一応、システムを最新の状態に更新してから実行する。

$ sudo apt-get update
$ sudo apt-get upgrade
$ do-release-upgrade

あとはメッセージの内容に従っていくだけ。最後に再起動を促されるのでリブートする。 ときどき-dオプションを指定しているケースがあるが、開発版をインストールするためのオプションなのでこれは不要。

そもそも"do-release-upgrade"というコマンドが存在しない場合は、sudo apt install update-manager-core packageを実行して"update-manager-core package"をインストールする。

念のため確認。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04 LTS
Release:        16.04
Codename:       xenial


$ uname -a
Linux conoha 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Railsの方はrbenvでインストールしたRubyで動作しているので問題なし。

問題はghost(node.js)の方で、こっちはすんなりとはいかなかった。

ghost のトラブルシューティング

ghostをインストールしている場合限定です。普通は無関係です。

アップグレードしたらghost が動作しない...。

下記のようにsqlite3のモジュールを見つけられず、起動しなかった。

$ npm start --production
Error: Cannot find module '/var/www/en/ghost/node_modules/sqlite3/lib/binding/node-v46-linux-x64/node_sqlite3.node'
    at Function.Module._resolveFilename (module.js:326:15)
    at Function.Module._load (module.js:277:25)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/var/www/en/ghost/node_modules/sqlite3/lib/sqlite3.js
:4:15)
<skip>

一度、sqlite3のモジュールを削除して、再度インストールしたところ、無事起動。

$ npm uninstall sqlite3
$ npm install sqlite3

この状態で、一度、npm startで問題が起きないことを確認。 あとはsystemd経由で起動するようにする。

なお、ghost自体のインストールは、公式ドキュメントか、下記を参考に。

How To Create a Blog with Ghost and Nginx on Ubuntu 14.04 | DigitalOcean

systemdのサービスとしての設定

ニーズがあるとは思えませんが、以下ご参考。Nginxは公式パッケージ付属のものそのままなので省略。

ghost用のsystemdのserviceファイルの例。/var/www/en/ghostは環境に応じて変更。

[Unit]
Description=ghost
After=network.target

[Service]
Type=simple
# Edit WorkingDirectory, User and Group as needed
WorkingDirectory=/var/www/en/ghost
User=ghost
Group=ghost
ExecStart=/usr/bin/npm start --production
ExecStop=/usr/bin/npm stop --production
Restart=always
SyslogIdentifier=Ghost

[Install]
WantedBy=multi-user.target

有効にする方法は、例えばこの辺


以上でおしまい。

*1:ConoHaのVPSですらオーバースペック…

*2:そしていつも通りの手順