You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 24.04下执行ant fresh_install安装DSpace8失败求助

Ubuntu 24.04 安装 DSpace 8 时 ant fresh_install 数据库连接失败解决办法

问题描述

在Ubuntu 24.04系统上安装DSpace 8,执行 ant fresh_install 命令时失败,核心错误为无法连接本地PostgreSQL数据库(localhost:5432),连接被拒绝。

错误日志(中文翻译)

root@siltlibrary2-Veriton-Series:/build/DSpace-dspace-8.0/dspace/target/dspace-installer# ant fresh_install
构建文件: /build/DSpace-dspace-8.0/dspace/target/dspace-installer/build.xml

init_installation:

prepare_configs:
[mkdir] 创建目录: /build/DSpace-dspace-8.0/dspace/target/dspace-installer/config-temp
[copy] 正在复制255个文件到 /build/DSpace-dspace-8.0/dspace/target/dspace-installer/config-temp
[copy] 正在复制1个文件到 /build/DSpace-dspace-8.0/dspace/target/dspace-installer/config-temp
[copy] 正在复制15个文件到 /build/DSpace-dspace-8.0/dspace/target/dspace-installer/config-temp

init_configs:
[copy] 正在复制1个文件到 /dspace/config
[delete] 正在删除目录 /build/DSpace-dspace-8.0/dspace/target/dspace-installer/config-temp

test_database:
[java] 2024-11-19 11:01:02,198 ERROR org.dspace.storage.rdbms.DatabaseUtils @ 无法针对DSpace数据库设置Flyway
[java] java.sql.SQLException: 无法创建PoolableConnectionFactory (连接到localhost:5432被拒绝。请检查主机名和端口是否正确,以及postmaster是否接受TCP/IP连接。)
[java]    at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:633) ~[commons-dbcp2-2.11.0.jar:2.11.0]
[java]    at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:535) ~[commons-dbcp2-2.11.0.jar:2.11.0]
[java]    at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:711) ~[commons-dbcp2-2.11.0.jar:2.11.0]
[java]    at org.dspace.storage.rdbms.DatabaseUtils.setupFlyway(DatabaseUtils.java:594) [dspace-api-8.0.jar:8.0]
[java]    at org.dspace.storage.rdbms.DatabaseUtils.main(DatabaseUtils.java:108) [dspace-api-8.0.jar:8.0]
[java]    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
[java]    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
[java]    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
[java]    at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[?:?]
[java]    at org.dspace.app.launcher.ScriptLauncher.runOneCommand(ScriptLauncher.java:283) [dspace-api-8.0.jar:8.0]
[java]    at org.dspace.app.launcher.ScriptLauncher.handleScript(ScriptLauncher.java:134) [dspace-api-8.0.jar:8.0]
[java]    at org.dspace.app.launcher.ScriptLauncher.main(ScriptLauncher.java:99) [dspace-api-8.0.jar:8.0]
[java] 引起原因: org.postgresql.util.PSQLException: 连接到localhost:5432被拒绝。请检查主机名和端口是否正确,以及postmaster是否接受TCP/IP连接。
[java]    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:346) ~[postgresql-42.7.3.jar:42.7.3]
[java]    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:54) ~[postgresql-42.7.3.jar:42.7.3]
[java]    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:273) ~[postgresql-42.7.3.jar:42.7.3]
[java]    at org.postgresql.Driver.makeConnection(Driver.java:446) ~[postgresql-42.7.3.jar:42.7.3]
[java]    at org.postgresql.Driver.connect(Driver.java:298) ~[postgresql-42.7.3.jar:42.7.3]
[java]    at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:52) ~[commons-dbcp2-2.11.0.jar:2.11.0]
[java]    at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:414) ~[commons-dbcp2-2.11.0.jar:2.11.0]
[java]    at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:113) ~[commons-dbcp2-2.11.0.jar:2.11.0]
[java]    at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:629) ~[commons-dbcp2-2.11.0.jar:2.11.0]
[java]    ... 11个更多异常
[java] 引起原因: java.net.ConnectException: 连接被拒绝
[java]    at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[?:?]
[java]    at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[?:?]
[java]    at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:547) ~[?:?]
[java]    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602) ~[?:?]
[java]    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[?:?]
[java]    at java.base/java.net.Socket.connect(Socket.java:633) ~[?:?]
[java]    at org.postgresql.core.PGStream.createSocket(PGStream.java:243) ~[postgresql-42.7.3.jar:42.7.3]
[java]    at org.postgresql.core.PGStream.<init>(PGStream.java:98) ~[postgresql-42.7.3.jar:42.7.3]
[java]    at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:136) ~[postgresql-42.7.3.jar:42.7.3]
[java]    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:262) ~[postgresql-42.7.3.jar:42.7.3]
[java]    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:54) ~[postgresql-42.7.3.jar:42.7.3]
[java]    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:273) ~[postgresql-42.7.3.jar:42.7.3]
[java]    at org.postgresql.Driver.makeConnection(Driver.java:446) ~[postgresql-42.7.3.jar:42.7.3]
[java]    at org.postgresql.Driver.connect(Driver.java:298) ~[postgresql-42.7.3.jar:42.7.3]
[java]    at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:52) ~[commons-dbcp2-2.11.0.jar:2.11.0]
[java]    at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:414) ~[commons-dbcp2-2.11.0.jar:2.11.0]
[java]    at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:113) ~[commons-dbcp2-2.11.0.jar:2.11.0]
[java]    at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:629) ~[commons-dbcp2-2.11.0.jar:2.11.0]
[java]    ... 11个更多异常
[java] 捕获到异常:
[java] java.sql.SQLException: 无法创建PoolableConnectionFactory (连接到localhost:5432被拒绝。请检查主机名和端口是否正确,以及postmaster是否接受TCP/IP连接。)
[java]    at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:633)
[java]    at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:535)
[java]    at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:711)
[java]    at org.dspace.storage.rdbms.DatabaseUtils.main(DatabaseUtils.java:113)
[java]    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java]    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[java]    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[java]    at java.base/java.lang.reflect.Method.invoke(Method.java:569)
[java]    at org.dspace.app.launcher.ScriptLauncher.runOneCommand(ScriptLauncher.java:283)
[java]    at org.dspace.app.launcher.ScriptLauncher.handleScript(ScriptLauncher.java:134)
[java]    at org.dspace.app.launcher.ScriptLauncher.main(ScriptLauncher.java:99)
[java] 引起原因: org.postgresql.util.PSQLException: 连接到localhost:5432被拒绝。请检查主机名和端口是否正确,以及postmaster是否接受TCP/IP连接。
[java]    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:346)
[java]    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:54)
[java]    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:273)
[java]    at org.postgresql.Driver.makeConnection(Driver.java:446)
[java]    at org.postgresql.Driver.connect(Driver.java:298)
[java]    at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:52)
[java]    at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:414)
[java]    at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:113)
[java]    at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:629)
[java]    ... 10个更多异常
[java] 引起原因: java.net.ConnectException: 连接被拒绝
[java]    at java.base/sun.nio.ch.Net.pollConnect(Native Method)
[java]    at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672)
[java]    at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:547)
[java]    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602)
[java]    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
[java]    at java.base/java.net.Socket.connect(Socket.java:633)
[java]    at org.postgresql.core.PGStream.createSocket(PGStream.java:243)
[java]    at org.postgresql.core.PGStream.<init>(PGStream.java:98)
[java]    at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:136)
[java]    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:262)
[java]    ... 18个更多异常

构建失败
/build/DSpace-dspace-8.0/dspace/target/dspace-installer/build.xml:783: Java返回: 1

总时间: 29秒
root@siltlibrary2-Veriton-Series:/build/DSpace-dspace-8.0/dspace/target/dspace-installer#

解决步骤

1. 确认PostgreSQL服务状态

执行命令检查服务是否运行:

sudo systemctl status postgresql

如果服务未启动,执行以下命令启动并设置开机自启:

sudo systemctl start postgresql
sudo systemctl enable postgresql

2. 检查PostgreSQL监听配置

编辑PostgreSQL的主配置文件(路径根据你的PostgreSQL版本调整,Ubuntu24.04默认是16版本):

sudo nano /etc/postgresql/16/main/postgresql.conf

找到 listen_addresses 配置项,修改为允许本地连接:

listen_addresses = 'localhost'

或者允许所有地址连接:

listen_addresses = '*'

修改后重启服务:

sudo systemctl restart postgresql

3. 验证端口与数据库配置匹配

  • 检查PostgreSQL配置文件中的 port 项,确认是5432(默认端口)。如果修改过端口,需要同步修改DSpace配置文件 /dspace/config/dspace.cfg 中的 db.url 配置,确保端口一致。
  • 用psql测试本地连接:
psql -h localhost -U <你的DSpace数据库用户名> -d <你的DSpace数据库名>

如果提示密码错误,检查dspace.cfg中的db.username和db.password是否正确;如果连接失败,说明数据库用户没有本地连接权限,需要执行以下命令授权:

# 切换到postgres用户
sudo su - postgres
# 进入psql
psql
# 授予用户数据库权限
GRANT ALL PRIVILEGES ON DATABASE <数据库名> TO <用户名>;
ALTER USER <用户名> WITH PASSWORD '<密码>';
# 退出psql和postgres用户
\q
exit
# 修改pg_hba.conf添加本地连接规则
sudo nano /etc/postgresql/16/main/pg_hba.conf

在文件末尾添加一行:

host    <数据库名>    <用户名>    127.0.0.1/32    scram-sha-256

然后重启PostgreSQL服务。

4. 检查防火墙规则

Ubuntu24.04默认使用ufw防火墙,检查是否阻止了5432端口:

sudo ufw status

如果端口被阻止,添加允许规则:

sudo ufw allow 5432/tcp

内容的提问来源于stack exchange,提问作者SILT Library

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:25:54