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リリースでは機能しなくなりました。
私は少なくとも、それらのリードを試しました:
Ubuntu Server 16でネットワークをセットアップした後にPostgreSQLを強制的に起動するにはどうすればよいですか?
ご協力ありがとうございました
新しいsystemctl
サービスマネージャーを使用すると、サービスが開始するまでネットワークがアクティブになるのをサービスに強制的に待機させることができます。これは、サービスユニットファイルを編集し(/etc/systemd/system/
を参照)、unit
セクションに次の行を追加することで実現されます。
[Unit]
Wants=network-online.target
After=network-online.target
次に、新しい構成でサービスをリロードします。
systemctl reload name.service
システムを再起動して、サービスを開始する前にネットワークを待機していることを確認します。
サービスファイル内(/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
を指定できます