秘站小记

记录,思考

记录mastodon数据库放到其他服务器上的过程

默认分类 0 评

由于手上有一台闲置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经验操作折腾难免有错误,恳请各位大佬帮忙指正。

Typecho 所有文章404无法访问的解决办法