CakePHP5入門【補足④】WebSocketサーバの自動起動
A子
Linuxサーバ自体を再起動させたときって、わざわざ手動で起動しなきゃいけないのよね?
B美
A子
WebSocketサーバについても、自動起動するようにできないの?
(いちいち「MATE端末」を開いて、起動コマンドを打ち込むのが面倒くさくって…)
B美
まぁ、やってみましょうか
C菜
(だってシステムの根幹部分の変更ですから~)
B美
|
su -[Enter]
cd /etc/systemd/system[Enter] nano websocket-server.service[Enter] |
作成するファイル(websocket-server.service)の内容は以下の通りよ
(ファイル名については何でも構わないけど、末尾には必ず「.service」を付けてね)
|
[Unit]
Description=WebSocket Server(説明文) After=network.target(起動順…networkのあと) [Service] Type=simple(基本的にはこれでOK) ExecStart=/home/bimi/html/authapp/bin/cake web_socket_server(起動コマンド) Restart=always(プロセス終了時に常に再起動を試みる ← 明示的に「stop」した場合を除く) [Install] WantedBy=multi-user.target(ランレベル3) |
[Ctrl]+[o]→[Enter]→[Ctrl]+[x]で、上書き保存してから終了してね
A子
「bin/cake」コマンドをフルパスで記述しないといけないわけか…
んで、これで終わり?
B美
とりあえずは、うまく動くかどうかを検証しましょう
|
systemctl daemon-reload[Enter]
systemctl start websocket-server.service[Enter] systemctl is-active websocket-server.service[Enter] |
これで「active」って表示されればOKよ
ちなみに、「daemon-reload」することで、作成したユニットファイル(websocket-server.service)が有効になるからね
(言い換えれば、このコマンドは必須ってこと)
C菜
B美
もしも心配だったら、50080番ポートを使用しているプロセスが動いているか、コマンドを叩いて検証すれば一目瞭然よ
| lsof -i :50080[Enter] |
A子
(【CakePHP5実用編⑤】を参照)
B美
| systemctl stop websocket-server.service[Enter] |
…って打ち込むだけ
(このサービスって、現在systemdの管理下なので「systemctl」コマンドで制御するの)
C菜
50080番ポートを使用するプロセスが消えたということは、WebSocketサーバが停止したということですね~
これで設定作業は完了ですか~?
B美
| systemctl enable websocket-server.service[Enter] |
上記のコマンドを実行すれば完了よ
あ、もしも「自動起動」を無効にしたければ以下のコマンドを打ち込んでね
| systemctl disable websocket-server.service[Enter] |
A子
・・・
おっ、チャットサービスがちゃんと動いてる!
…ってことは、WebSocketサーバが起動してるってことだね
(完璧じゃん)
B美
| systemctl status websocket-server.service[Enter] |
この場合、プロンプト状態に復帰するには、キーボードの「q」キーを押してね
もしくは
| systemctl status websocket-server.service --no-pager[Enter] |
でも良いけど…
(こっちは勝手に復帰するわ)
A子
B美
多分「quit」の頭文字だと思うけどね
C菜
別に問題ないですけど~
A子
キーボードの上矢印(↑)キーを使えば、過去の入力履歴が出るけどさぁ
最初の一回だけはコマンド入力が大変だよ(長くって…)
B美
「start」「stop」「status」なんかを「systemctl」コマンドで実行する場合、末尾の「.service」は省略できるからね
(というか、普通は省略する…面倒くさいから(笑))
|
systemctl start websocket-server[Enter]
systemctl stop websocket-server[Enter] systemctl status websocket-server --no-pager[Enter] |
…って感じね
A子


