私のラップトップではテスト用に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)たとえば、この回答を読んでください。--user
systemdの具体例。
答え2
PostgreSQLとMySQLはまだソケットベースのアクティベーションをサポートしていません。
質問は答えです。より良い方法を見つけて質問に言及し、それが実装されていないと述べました。 Oracleは、ソケットの有効化(実際にはサーバープログラムに関する限り、独自のファイルを開くのではなく開いたリスニングファイル記述子を使用します)が実装されましたが、実際にはまだ実装されていないと言い、問題を終了しました。 MariaDBにはまだ解決されていない問題があります。 PostgreSQLの場合、Christoph Bergと同様に実装を待っています。
追加読書
- ジョナサンデボインポラード(2016)。noshを使用するMariaDBとMySQL。ソフトウェア。
- デビッド・ストラウス(2014-01-17)。システムソケットの起動をサポート。 MDEV-5536マリアデータベース。
- ハラルドレドル(2011-07-21)。mysql/systemd ソケットの有効化。 61948.MySQLのバグトラッカー。
- クリストフのバグ(2016-01-28)。[パッチ]より良いシステム統合。 PostgreSQLハッカー。