web-dev-qa-db-ja.com

Ubuntu Server 16でネットワークをセットアップした後、PostgreSQLを強制的に起動するにはどうすればよいですか?

PostgreSQLは、ネットワークがセットアップされる前に起動するため、ソケットのバインドに失敗します。

Ubuntu Server 16.04.1LTSとPostgreSQL9.5を使用しています。私はインターネットで多くのドキュメントを読みましたが、何も私の問題を解決しませんでした。

問題は次のとおりです:PostgreSQLサービスは、ネットワークインターフェイスが正しくセットアップされる前にソケットを作成しようとします。

Sudo systemctl status [email protected][email protected] - PostgreSQL Cluster 9.5-main
   Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2016-07-27 09:42:36 UTC; 1min 43s ago
  Process: 5274 ExecStart=postgresql@%i --skip-systemctl-redirect %i start (code=exited, status=1/FAILURE)

Jul 27 09:42:34 airpy-server systemd[1]: Starting PostgreSQL Cluster 9.5-main...
Jul 27 09:42:36 airpy-server [email protected][5274]: The PostgreSQL server failed to start. Please check the log outp
Jul 27 09:42:36 airpy-server [email protected][5274]: 2016-07-27 09:42:36 UTC [5332-1] LOG:  could not bind IPv4 socke
Jul 27 09:42:36 airpy-server [email protected][5274]: 2016-07-27 09:42:36 UTC [5332-2] HINT:  Is another postmaster al
Jul 27 09:42:36 airpy-server [email protected][5274]: 2016-07-27 09:42:36 UTC [5332-3] WARNING:  could not create list
Jul 27 09:42:36 airpy-server [email protected][5274]: 2016-07-27 09:42:36 UTC [5332-4] FATAL:  could not create any TC
Jul 27 09:42:36 airpy-server systemd[1]: [email protected]: Control process exited, code=exited status=1
Jul 27 09:42:36 airpy-server systemd[1]: Failed to start PostgreSQL Cluster 9.5-main.
Jul 27 09:42:36 airpy-server systemd[1]: [email protected]: Unit entered failed state.
Jul 27 09:42:36 airpy-server systemd[1]: [email protected]: Failed with result 'exit-code'.

固定リースでDHCPを使用する必要があります(変更できません)。 listen_address='fixed_ip'postgresql.confに設定したので、クラスターは起動時に起動しません。これがすべての始まりです...

そして、postgreSQLにネットワーク構成を待たせようとして2日を無駄にしましたが成功しませんでした。 Ubuntu Server 14.04ではチャームのように機能していましたが(構成するものは何もありませんでした)、新しいLTSリリースでは機能しなくなりました。

私は少なくとも、それらのリードを試しました:

  • buntu-Forum 、別のエラーを削除しました(ネットワークインターフェイスの上げのために開始ジョブが実行されています...)
  • NetworkTarget 、他のエラーが追加されましたが、問題は残ります。

Ubuntu Server 16でネットワークをセットアップした後にPostgreSQLを強制的に起動するにはどうすればよいですか?

ご協力ありがとうございました

3
jlandercy

新しいsystemctlサービスマネージャーを使用すると、サービスが開始するまでネットワークがアクティブになるのをサービスに強制的に待機させることができます。これは、サービスユニットファイルを編集し(/etc/systemd/system/を参照)、unitセクションに次の行を追加することで実現されます。

[Unit]

Wants=network-online.target
After=network-online.target

次に、新しい構成でサービスをリロードします。

systemctl reload name.service

システムを再起動して、サービスを開始する前にネットワークを待機していることを確認します。

3
jlandercy

サービスファイル内(/etc/init.d/<service>)PostGreを開始する必要があるサービスを指定できます。それはこのようになります:

#! /bin/sh
### BEGIN INIT INFO
# Provides:             sshd
# Required-Start:       $remote_fs $syslog
# Required-Stop:        $remote_fs $syslog
# Default-Start:        2 3 4 5
# Default-Stop:
# Short-Description:    OpenBSD Secure Shell server
### END INIT INFO

Required-startで、networkingを指定できます

0
Sorcha