Ubuntu 15.10 Server 版を 16.04LTSにアップグレード
スポンサーリンク
desktopに引き続き、server環境の方もアップグレード。
ConoHaのVPSで運用中のサーバーを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
有効にする方法は、例えばこの辺。
以上でおしまい。