追加読書

追加読書

私のラップトップではテスト用にMySQLとPostgreSQLのみを使用しています。プログラミングを開始するまでは必要ありません。プログラミングを開始して数時間経過したようです。しかし、サービスを手動で開始し、sudoパスワードを入力するのは(マイナーな)面倒でした。

systemdは、サービスポートにアクセスした場合にのみサービスの起動をサポートすることを読んでいます。しかし、クイックGoogle検索によると、PGとMySQLはまだソケットベースのアクティブ化をサポートしていないようです。

シェルスクリプトを使用してこれをハッキングしたり、管理者がサービスを変更するのを待つことができることを知っていますが、今は(教育目的で)より良い方法を探しています。

質問:システム機能を活用したり、Linuxの「ベストプラクティス」として推奨される方法でこれらのサービスを要求したときにどのように起動できますか?

いくつかの考え:

  • 条件(たとえば、実行中の特定のプロセス)に応じて、自動開始サービスと自動停止サービスを処理するサービスをインストールできますか?
  • ソケットによってアクティブになり、ターゲットサービスを順番に開始するプロキシサービスはありますか?

システム229、Kubuntu 16.04、MySQL 5.7、PostgreSQL 9.5

アップデート:回答:

Siosmが提案したようにsystemd-socket-proxydを使用するには:

/etc/mysql/mysql.conf.d/mysqld.cnf

port        = 13306

/etc/systemd/system/proxy-to-mysql.socket

[Socket]
ListenStream=0.0.0.0:3306

[Install]
WantedBy=sockets.target

/etc/systemd/system/proxy-to-mysql.service

[Unit]
Requires=mysql.service
After=mysql.service

[Service]
# note: this path may vary
ExecStart=/lib/systemd/systemd-socket-proxyd 127.0.0.1:13306
PrivateTmp=no
PrivateNetwork=no

必要に応じてリロード/停止/開始:

sudo systemctl daemon-reload
sudo systemctl enable proxy-to-mysql.socket
sudo systemctl start proxy-to-mysql.socket
sudo systemctl stop mysql.service  # for testing

テスト:

sudo systemctl status proxy-to-mysql.socket # should be ACTIVE
sudo systemctl status proxy-to-mysql # should be INACTIVE
sudo systemctl status mysql # should be INACTIVE
telnet 127.0.0.1 3306
sudo systemctl status proxy-to-mysql # should be ACTIVE
sudo systemctl status mysql # should be ACTIVE

ベストアンサー1

このsystemd-socket-proxydツールを使用すると、ソケットを有効にしてローカルソケットからMySQLまたはPostgreSQLにトラフィックを転送できます。バラよりsystemd-ソケット-プロキシ(8)たとえば、この回答を読んでください。--usersystemdの具体例

おすすめ記事