Comments (18)
yamaken-sapporoさんありがとうございます。
解決致しました!
"pm2 startup --wait-ip"後のpm2-root.serviceは下記のようになっていました。
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target network-online.target
Wants=network-online.target
Restart=on-failure
[Service]
Type=forking
User=root
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/$
Environment=PM2_HOME=/root/.pm2
PIDFile=/root/.pm2/pm2.pid
ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/lib/node_modules/pm2/bin/pm2 kill
[Install]
WantedBy=multi-user.target network-online.target
これを、ご指摘の通り
After=network-online.target
WantedBy=network-online.target
とすることによりうまくいきました。
ありがとうございます。
from mirakurun.
オリジナルだとうまくいかないのがことの発端なので
pm2 startup --wait-ip
を実行した結果、下記のテンプレートを使うようになっているようです。
https://github.com/Unitech/pm2/blob/master/lib/templates/init-scripts/systemd-online.tpl
やはりおかしいと思うので、pull request書きました。
Unitech/pm2#4285
from mirakurun.
@2.12.0
で挙動を改善してみました。皆様フィードバックありがとうございました。
from mirakurun.
横からですが、
Platform: Linux Debian Stretch
とのことなので、systemdから pm2が動いてるかと思います。
/etc/systemd/system/pm2-root.service
について
After=network.target
WantedBy=multi-user.target
になってますかね。
普通networkが立ち上がってからpm2が起動するはずですが、これでダメの場合、
systemd-networkd-wait-online
http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
を有効にすれば解決できそうです。
sudo systemctl enable systemd-networkd (おそらくすでに有効のはず)
sudo systemctl enable systemd-networkd-wait-online
を実行し
/etc/systemd/system/pm2-root.service
を
After=network-online.target
WantedBy=network-online.target
に書き換えればnetwork起動後にpm2を起動できるかと。
from mirakurun.
大変お手数ですが下記の対応をしていただけると助かります。
- https://gist.github.com/ に http://mirakurun-server-ip:40772/api/status の内容をコピペしてアップロード
- 再現させた状態で 起動直後のログも ↑ にアップロード
# 再現させた状態で
sudo -i
pm2 -v
pm2 status
netstat -ap | grep Mirakurun
netstat -ap | grep 40772
from mirakurun.
ご返答ありがとうございます。アップしました。
https://gist.github.com/epgdatacapbon/03fb296741c2bc00dd6bdfc6bca926cd
なお、この状態ではBonDriver_Mirakurunで初期化ができないエラーで視聴できませんが、
#pm2 restart mirakurun-server
で正常に動作するようになります。
ただ、古いバージョンを入れなしたところ、最初は再起動してもうまく行きましたが、
何回か繰り返しているうちに古いバージョンでもエラーが出るようになったため
こちらの環境の問題がありそうです。
from mirakurun.
ログを見る限り NIC に割り当てられている IP アドレスで LISTEN されていないようです。
2.11.0 で起動時間が短縮したことによる影響かもしれません。
NIC が有効になる前に起動してしまっている気がします。
一旦 PM2 のサービスを再登録してみてください
sudo -i
pm2 unstartup
sudo reboot # ここで一旦再起動して pm2 がスタートアップしないことを確認する
#
sudo -i
pm2 startup
適当に pm2 の起動を遅らせるか、NIC の初期化が遅延しないようにすると解決すると思います
from mirakurun.
早速のご返答ありがとうございます。
一旦 PM2 のサービスを再登録しても解決しなかったため、
/etc/systemd/system/pm2-root.service
について
[Service]
ExecStartPre=/bin/sleep 5
を追加してpm2の起動を遅らせることにより対応できました。
ありがとうございました。
from mirakurun.
横から失礼します。
下記のコマンドを実行するといかがでしょうか?
sudo pm2 startup --wait-ip
PM2 2.9.0以降ではネットワークが起動するのを待ってから開始するオプションがあるみたいです
from mirakurun.
すばら C
from mirakurun.
pm2 Ver. 3.5.0で
sudo pm2 startup --wait-ip
と
sudo pm2 startup systemd --wait-ip
を試しましたが、うまくいきませんでした。
from mirakurun.
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target network-online.target
Wants=network-online.target
Restart=on-failure
うーん、AfterとWantsで network-online.target
が謎というか意味がないですね。
Wantsの方が不要かと思います。
ちなみにAfterとWantsの違いですがWantsは指定されているものが起動失敗しても
この場合においてだとpm2は起動してしまうので、切り分けができない気が。
ちなみにデフォルトテンプレートは下記のはずなのですが、色々変更しましたか?
https://github.com/Unitech/pm2/blob/master/lib/templates/init-scripts/systemd.tpl
from mirakurun.
sudo pm2 startup --wait-ip
を実行してもらっているので、下のテンプレートが使われていると思います。
https://github.com/Unitech/pm2/blob/master/lib/templates/init-scripts/systemd-online.tpl
AfterとWantsでnetwork-online.target
が指定されています。
PM2側の修正が必要でしょうかね?
from mirakurun.
sudo pm2 startup --wait-ip
を実行してもらっているので、下のテンプレートが使われていると思います。
あ、そいえばこの前提を忘れてました。
とりあえず、動いてよかった!
pm2にmargeされればみんな幸せ!
from mirakurun.
pm2の修正なしで何とかする方法があるのではないかと思い、試していましたが、勘違いかもしれないので何でもないです。
すみません。
from mirakurun.
Debian Stretchを入れてみて気が付いたのですが、Debianはsystemd-networkdを使っていないみたいです。
なのでsystemd-networkd-wait-onlineの意味がなかったです…
After=network-online.target
WantedBy=network-online.target
Debian Stretchでpm2-root.serviceに上記の修正を加えてみましたが、LANが接続されていない状態で起動してしばらく経ってからLANに接続すると、MirakurunがLANのIPアドレスでLISTENしませんでした。
systemd-networkdを採用しているArch Linuxでは上記の修正なしでsudo pm2 startup --wait-ip
を実行して、シャットダウン。LANが接続されていない状態で起動してしばらく経ってからLANに接続すると、LANに接続されるのを待ってからpm2が起動して、LANでLISTENしていました。
したがって、 Unitech/pm2#4285 の修正を行っても、うまくいかない場合がある気がします。修正なしでも環境によってはIPアドレス取得の遅延が起きても問題ない場合もあります。
Debian Stretchのネットワーク周りが怪しい気がします。ググったら、Debianでnetwork-online.targetがうまく動いていないとの質問がありました。自分が確認した限りではArchもRaspbianもIPアドレスが取得されるまでnetwork-online.targetに達することは無かったですが、DebianだけはIPアドレスが取得されていない状態ですぐにnetwork-online.targetに達してしまうようです。
Debianにsystemd-networkdが来れば簡単に解決できそうですが、それ以外に何かうまい方法はありませんかね?
from mirakurun.
クリーンインストールして再度試してみました。
akimasaさんのおっしゃる通りパッチだけではダメで、下記のコマンドを実行する必要がありました。
sudo systemctl enable systemd-networkd
sudo systemctl enable systemd-networkd-wait-online
from mirakurun.
返事が遅くなってすみません。
先ほど、こちらの環境でも試してみました。
クリーンインストールをした上で、epgdatacapbonさんの挙げてくれたコマンドを実行したところ、正常にアクセスすることができました!
PM2のパッチは無しで大丈夫でした。
Mirakurunのインストール後、下記のコマンドだけを実行すれば大丈夫そうです。
pm2 startup systemd --wait-ip
systemctl enable systemd-networkd
systemctl enable systemd-networkd-wait-online
from mirakurun.
Related Issues (20)
- IPTV機能について HOT 1
- websocketのSSL対応 HOT 2
- 同じ番組が複数録画される [BUG] HOT 3
- several vulnerabilities CVE-2020-15168,CVE-2020-7598 are introduced in mirakurun HOT 2
- Web UIで外部(インターネット)からフォントを読み込んでしまっている HOT 2
- Web UIで外部(インターネット)から画像を読み込んでしまっている HOT 2
- 放送局が直前に停波していると録画のスクランブルが解除されない HOT 2
- unixドメインソケットからはRPCがつかえない [BUG] HOT 1
- 地上波の番組をChinachuで録画中に、同じ物理チャンネルの別サービスが /api/channels/GR/{channel}/stream で取得できない [BUG] HOT 3
- PX-MLT8PEで6ch全録を実施するとメモリ使用量が4.7GBになる。 HOT 2
- "docker-compose run --rm -e SETUP=true mirakurun"で「/usr/local/mirakurun/run/が存在しない」とのエラー [BUG] HOT 2
- 提案: コミュニティをDiscordから移行する
- TSDecoder unexpected dead [BUG] HOT 1
- Windows + Node.js 16 環境でローカルインストールに失敗する [BUG] HOT 3
- Open University Radio not found in channel scan [BUG] HOT 1
- rivarunからMirakurunにソケット接続できない
- 【要望】nodejs v18.xエンジンをサポート HOT 1
- Windows 環境で Mirakurun 3.9.0-rc.0 以降のバージョンをインストールすると起動に失敗する [BUG] HOT 3
- PT2からBSアンテナに給電されない
- Muninプラグインの機能不全 HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mirakurun.