Digitalocean禁用了我的Droplet的互联网访问。修复错误(回滚到较旧的备份)后,他们恢复了Internet访问。但是在部署之后我经常遇到错误,我似乎无法启动并运行我的Postgres数据库。
每次尝试部署我的应用程序时都会收到错误。
PG::ConnectionBad: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
所以我使用SSH登录我的服务器并检查我的Postgres是否实际运行:
pg_lsclusters
结果:
Ver Cluster Port Status Owner Data directory Log file
9.5 main 5432 down postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
Postgres服务器状态
所以我的Postgres服务器似乎失败了。我试过把它放到'再次:
pg_ctlcluster 9.5 main start
这样做后我收到错误:Insecure directory in $ENV{PATH} while running with -T switch at /usr/bin/pg_ctlcluster line 403.
第403行的/usr/bin/pg_ctlcluster
说:
system 'systemctl', 'is-active', '-q', "postgresql\@$version-$cluster";
但是我不确定这里可能出现的问题以及如何解决这个问题。
我还尝试将/bin
上的权限更新为755 here。可悲的是,这并没有解决我的问题。
我将/ usr / bin更改为755.现在,当我尝试pg_ctlcluster 9.5 main start
时,我得到了这个:
postgresql@9.5-main.service的作业失败,因为控制进程退出并显示错误代码。参见" systemctl status postgresql@9.5-main.service"和" journalctl -xe"详情。
在systemctl status postgresql@9.5-main.service
:
postgresql@9.5-main.service - PostgreSQL Cluster 9.5-main
Loaded: loaded (/lib/systemd/system/postgresql@.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2018-01-28 17:32:38 EST; 45s ago
Process: 22473 ExecStart=postgresql@%i --skip-systemctl-redirect %i start (code=exited, status=1/FAILURE)
Jan 28 17:32:08 *url* systemd[1]: Starting PostgreSQL Cluster 9.5-main...
Jan 28 17:32:38 *url* postgresql@9.5-main[22473]: The PostgreSQL server failed to start.
Jan 28 17:32:38 *url* systemd[1]: postgresql@9.5-main.service: Control process exited, code=exited status=1
Jan 28 17:32:38 *url* systemd[1]: Failed to start PostgreSQL Cluster 9.5-main.
Jan 28 17:32:38 *url* systemd[1]: postgresql@9.5-main.service: Unit entered failed state.
Jan 28 17:32:38 *url* systemd[1]: postgresql@9.5-main.service: Failed with result 'exit-code'.
谢谢!
答案 0 :(得分:1)
最好不要混用systemctl
和pg_ctlcluster
。让systemctl
使用正确的用户和权限调用pg_ctlcluster
。你应该用
sudo systemctl start postgresql@9.5-main.service
另外,检查启动日志中的错误。您也可以发布它们,以帮助您了解正在发生的事情。
您的systemctl status
也会输出该服务被禁用,因此,当服务器重新启动时,您必须手动启动该服务。要启用它,请运行:
sudo systemctl enable postgresql@9.5-main.service
我希望它有所帮助
答案 1 :(得分:0)
主要是因为/ etc / hosts文件有所更改。我已经删除了/ etc / hosts文件中的多余空间。使用cat / etc / hosts 将这些行添加到文件中
我已经授予/ etc / hosts文件644的权限。即使重新启动系统,它也对我有用。