由于手上有一台闲置vps,于是想把mastodon实例的数据库分离出去,这样还能减轻服务器性能不足问题。
系 统 :Ubuntu20.04
数据库服务器IP :192.168.1.1
mastodon实例IP :192.168.1.111
1.给Postgres中mastodon帐户设置密码:
(我这台vps本身就装过mastodon,所以postgreSQL数据库都安装好直接给数据库账户设置密码就能用了。)
su - mastodon
psql -p 5432 -U mastodon mastodon_production -w
然后设置成password不同的密码:
ALTER USER mastodon WITH PASSWORD 'password';
如果是全新安装postgreSQL:
apt-get install postgresql //安装数据库
sudo su - postgres //切换到postgres用户
psql //登录控制台
CREATE USER mastodon WITH PASSWORD 'password'; //创建带密码的数据库用户
CREATE DATABASE mastodon_production OWNER mastodon; //创建数据库
GRANT ALL PRIVILEGES ON DATABASE mastodon_production TO mastodon; //给mastodon用户对数据库操作权限
\q //退出
2.备份数据库并备份文件传送到数据库服务器:
su - mastodon
pg_dump mastodon_production > dump.sql
到数据库服务器创建空数据库并导入备份文件
createdb -T template0 mastodon_production
psql mastodon_production < dump.sql
如果是全新安装的数据库:
sudo su - postgres
psql mastodon_production < dump.sql
3.更改postgresql配置允许从指定IP访问:
在/etc/postgresql/12/main/ 目录的 postgresql.conf 文件中
listen_addresses = '*' //先去掉注释,这里填写数据库服务器监听IP,而不是实例IP;默认
是'localhost'; '*' 可监听所有IP。
port = 5432 //默认端口不用改
在/etc/postgresql/12/main/ 目录的 pg_hba.conf 文件中添加:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host mastodon_production mastodon 192.168.1.111/32 md5
这里填写的IP地址是mastodon实例IP,仅允许一个IP地址访问增加安全性。填写0.0.0.0/0则允许所有IP地址访问。
service postgresql restart
重启postgreSQL让更改的配置生效。
如果PostgreSQL没有用tls加密的话,两台服务器之间所有指令操作会明文传输,所有建议使用WireGuard两台vps组建内网加密传输。
4.在mastodon实例环境变量文件.env.production中更改数据库配置:
DB_HOST=192.168.1.1
DB_PORT=5432
DB_NAME=mastodon_production
DB_USER=mastodon
DB_PASS=password
5.重启mastodon服务
systemctl restart 'mastodon-*.service'
就能生效。
如果未生效要检查防火墙是否开放5432端口。
感谢岛站站长holgerhuo提供帮助。
感谢老兄提供帮助
参考文章:PostgreSQL新手入门 配置postgresql并远程登录
由于本人0经验操作折腾难免有错误,恳请各位大佬帮忙指正。