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
相关产品推荐
相关产品推荐

