2019年版【Mastodon】アップデート時のエラーを解消する

mastodonのインストール、アップデート時に発生するエラーの解消方法を記録します。

【使用環境】
Ubuntu 18.04.2 LTS (AWS)
docker使用
Mastodon 2.7.4

Address already in use

【現象】
nginxの再起動時に

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

といったエラーが発生する。

$ sudo service nginx restart
Job for nginx.service failed because the control process exited with error code.
See “systemctl status nginx.service” and “journalctl -xe” for details.

$ sudo systemctl status nginx.service
Process: 18203 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
Process: 18191 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SU
nginx[18203]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx[18203]: nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx[18203]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx[18203]: nginx: [emerg] still could not bind()
nginx.service: Control process exited, code=exited status=1
nginx.service: Failed with result ‘exit-code’.
Failed to start A high performance web server and a reverse proxy

【原因】
異常終了したhttpdプロセスが残っている。

$ sudo lsof -i | grep nginx
nginx18181 root 6u IPv4 2551118 0t0 TCP *:http (LISTEN)
nginx18181 root 7u IPv6 2551119 0t0 TCP *:http (LISTEN)
nginx18182 www-data 6u IPv4 2551118 0t0 TCP *:http (LISTEN)
nginx18182 www-data 7u IPv6 2551119 0t0 TCP *:http (LISTEN)
nginx18182 www-data 12u IPv4 2551135 0t0 TCP ip(ESTABLISHED)

【対策】
これを削除する。

$ sudo kill -9 18181
$ sudo kill -9 18182

react-overlaysのエラー

【現象】
react-overlaysでエラーが発生する。

ERROR in ./app/javascript/mastodon/components/dropdown_menu.js
Module not found: Error: Can’t resolve ‘react-overlays/lib/Overlay’ in ‘/mastodon/app/javascript/mastodon/components’
@ ./app/javascript/mastodon/components/dropdown_menu.js 9:0-49 345:13-20
@ ./app/javascript/mastodon/containers/dropdown_menu_container.js
@ ./app/javascript/mastodon/components/status_action_bar.js
@ ./app/javascript/mastodon/components/status.js
@ ./app/javascript/mastodon/features/ui/index.js
@ ./app/javascript/mastodon/containers/mastodon.js
@ ./app/javascript/mastodon/main.js
@ ./app/javascript/packs/application.js

【原因】
不明。

【対策】
最新版のreact-overlaysをインストールする。

$ sudo npm install –save react-overlays

駄目。

「react-overlays」フォルダを見てみる。

$ ll ./node_modules/react-overlays
total 176
drwxr-xr-x 5 root root 4096 Mar 27 17:15 ./
drwxrwxr-x 1023 ubuntu ubuntu 36864 Mar 27 15:31 ../
-rw-r–r– 1 ubuntu ubuntu 9170 Oct 26 1985 Affix.js
-rw-r–r– 1 ubuntu ubuntu 7341 Oct 26 1985 AutoAffix.js
-rw-r–r– 1 ubuntu ubuntu 551 Oct 26 1985 DropdownContext.js
-rw-r–r– 1 ubuntu ubuntu 10343 Oct 26 1985 Dropdown.js
-rw-r–r– 1 ubuntu ubuntu 7952 Oct 26 1985 DropdownMenu.js
-rw-r–r– 1 ubuntu ubuntu 1531 Oct 26 1985 DropdownToggle.js
drwxr-xr-x 3 ubuntu ubuntu 4096 Mar 27 15:30 es/
-rw-r–r– 1 ubuntu ubuntu 859 Oct 26 1985 index.js
-rw-r–r– 1 ubuntu ubuntu 1083 Oct 26 1985 LICENSE
-rw-r–r– 1 ubuntu ubuntu 16375 Oct 26 1985 Modal.js
-rw-r–r– 1 ubuntu ubuntu 5336 Oct 26 1985 ModalManager.js
drwxr-xr-x 5 root root 4096 Mar 27 15:31 node_modules/
-rw-r–r– 1 ubuntu ubuntu 10826 Oct 26 1985 Overlay.js
-rw-r–r– 1 ubuntu ubuntu 2228 Mar 27 15:31 package.json
-rw-r–r– 1 ubuntu ubuntu 2073 Oct 26 1985 Portal.js
-rw-r–r– 1 ubuntu ubuntu 1267 Oct 26 1985 README.md
-rw-r–r– 1 ubuntu ubuntu 1137 Oct 26 1985 RefHolder.js
-rw-r–r– 1 ubuntu ubuntu 5121 Oct 26 1985 RootCloseWrapper.js
drwxr-xr-x 2 ubuntu ubuntu 4096 Mar 27 15:30 utils/
-rw-r–r– 1 ubuntu ubuntu 3338 Oct 26 1985 WaitForContainer.js

「lib」が存在しない。

この場所を指すシンボリックリンク「lib」を作成して逃げる。

$ sudo ln -s ./node_modules/react-overlays ./node_modules/react-overlays/lib

$ ll node_modules/react-overlays
total 176
drwxr-xr-x 5 root root 4096 Mar 27 17:17 ./
drwxrwxr-x 1023 ubuntu ubuntu 36864 Mar 27 15:31 ../
-rw-r–r– 1 ubuntu ubuntu 9170 Oct 26 1985 Affix.js
-rw-r–r– 1 ubuntu ubuntu 7341 Oct 26 1985 AutoAffix.js
-rw-r–r– 1 ubuntu ubuntu 551 Oct 26 1985 DropdownContext.js
-rw-r–r– 1 ubuntu ubuntu 10343 Oct 26 1985 Dropdown.js
-rw-r–r– 1 ubuntu ubuntu 7952 Oct 26 1985 DropdownMenu.js
-rw-r–r– 1 ubuntu ubuntu 1531 Oct 26 1985 DropdownToggle.js
drwxr-xr-x 3 ubuntu ubuntu 4096 Mar 27 15:30 es/
-rw-r–r– 1 ubuntu ubuntu 859 Oct 26 1985 index.js
lrwxrwxrwx 1 root root 29 Mar 27 17:17 lib -> ./node_modules/react-overlays
-rw-r–r– 1 ubuntu ubuntu 1083 Oct 26 1985 LICENSE
-rw-r–r– 1 ubuntu ubuntu 16375 Oct 26 1985 Modal.js
-rw-r–r– 1 ubuntu ubuntu 5336 Oct 26 1985 ModalManager.js
drwxr-xr-x 5 root root 4096 Mar 27 15:31 node_modules/
-rw-r–r– 1 ubuntu ubuntu 10826 Oct 26 1985 Overlay.js
-rw-r–r– 1 ubuntu ubuntu 2228 Mar 27 15:31 package.json
-rw-r–r– 1 ubuntu ubuntu 2073 Oct 26 1985 Portal.js
-rw-r–r– 1 ubuntu ubuntu 1267 Oct 26 1985 README.md
-rw-r–r– 1 ubuntu ubuntu 1137 Oct 26 1985 RefHolder.js
-rw-r–r– 1 ubuntu ubuntu 5121 Oct 26 1985 RootCloseWrapper.js
drwxr-xr-x 2 ubuntu ubuntu 4096 Mar 27 15:30 utils/
-rw-r–r– 1 ubuntu ubuntu 3338 Oct 26 1985 WaitForContainer.js

OK。