我有一个 VPS,安装了 Ubuntu 14.04.5 LTS (GNU/Linux 2.6.32-042stab127.2 x86_64),还安装了 Postgresql。我在 ruby on rails 应用程序中使用 Postgresql。突然我的应用程序停止工作并抛出错误
无法连接到服务器:没有此文件或目录服务器是否在本地运行并接受 Unix 域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?
$psql -V
psql (PostgreSQL) 11.0 (Ubuntu 11.0-1.pgdg14.04+2)
$pg_config --version
PostgreSQL 11.0 (Ubuntu 11.0-1.pgdg14.04+2)
$postgres -V
The program 'postgres' is currently not installed. You can install it by typing:
apt-get install postgres-xc
$locate bin/postgres
/usr/lib/postgresql/11/bin/postgres
/usr/lib/postgresql/9.3/bin/postgres
/usr/lib/postgresql/9.4/bin/postgres
/usr/lib/postgresql/9.5/bin/postgres
$/usr/lib/postgresql/11/bin/postgres -V
postgres (PostgreSQL) 11.0 (Ubuntu 11.0-1.pgdg14.04+2)
$pg_lsclusters
9.3 main 5432 down postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log
11 main 5433 down postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
postgres 状态为 down
$service postgresql status
9.3/main (port 5432): down
11/main (port 5433): down
$systemctl status postgresql.service
postgresql.service
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)
$systemctl status [email protected]
[email protected]
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)
$grep -H'^port'/etc/postgresql/*/main/postgresql.conf/etc/postgresql/11/main/postgresql.conf:port = 5433/etc
/postgresql/9.3/main/postgresql.conf:port = 5432
我正在尝试使用以下方式启动 Postgresql 9.3
$service postgresql start 9.3
* Starting PostgreSQL 9.3 database server
* Failed to issue method call: Unit [email protected] failed
to load: No such file or directory. See system logs and 'systemctl
status [email protected]' for details.
$sudo systemctl start postgresql
Failed to issue method call: Unit postgresql.service failed to load: No
such file or directory. See system logs and 'systemctl status
postgresql.service' for details.
$/etc/init.d# /etc/init.d/postgresql start
* Starting PostgreSQL 11 database server
* Failed to issue method call: Unit [email protected] failed to
load: No such file or directory. See system logs and 'systemctl status
[email protected]' for details.
[fail]
* Starting PostgreSQL 9.3 database server
* Failed to issue method call: Unit [email protected] failed to
load: No such file or directory. See system logs and 'systemctl status
[email protected]' for details.
[fail]
我无法启动 PostgreSQL。我不明白它为什么突然崩溃了,直到昨天它还运行良好。
答案1
根据pg_lsclusters
,您的 PostgreSQL 实例9.3/main
和11/main
尚未启动。这解释了“无法连接到服务器”错误。
postgresql.service
和[email protected]
是systemd
单元文件,您的问题似乎是在systemctl
需要它们时缺少它们。
请注意,systemctl
默认情况下不会在 Ubuntu 14.04 上安装,因为它是最后一个不使用 systemd 的版本(请参阅Ubuntu 14.04 是否使用 systemd?但不知为何systemd
却安装在了你的系统上。
使用 systemd,通常 postgres 服务文件应该由包/lib/systemd/system-generators/postgresql-generator
提供的自动创建postgresql-common
,并最终作为*.service
中的单元文件/lib/systemd/system/
。
我无法猜测为什么该部件在您的系统上不工作或停止工作。
如何手动启动 PostgreSQL
该pg_ctlcluster
命令独立于 systemd 或 upstart 运行。您应该能够使用以下命令启动 PostgreSQL 实例:
$ sudo pg_ctlcluster 9.3 main start
$ sudo pg_ctlcluster 11 main start
答案2
我的情况systemd
是在 Ubuntu 14.04 上运行,但从 16.04 开始最早支持它。所以我运行了 sudo apt-get remove systemd 我的情况是systemd
在 Ubuntu 14.04 上运行,但从 16.04 开始最早支持它。所以我运行了
sudo apt-get remove systemd
至此,postgresql服务已经运行成功。