mastodon安装elasticsearch后,重启服务器,elasticsearch不会自动启动
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
Active: failed (Result: timeout) since Sat 2022-06-18 07:13:40 BST; 9min ago
Docs: https://www.elastic.co
Process: 513 ExecStart=/usr/share/elasticsearch/bin/systemd-entrypoint -p ${PID_DIR}/elasticsearch.pid --quiet (code=exited, status=143)
Main PID: 513 (code=exited, status=143)
Jun 18 07:12:26 systemd[1]: Starting Elasticsearch...
Jun 18 07:13:39 systemd[1]: elasticsearch.service: start operation timed out. Terminating.
Jun 18 07:13:40 systemd[1]: elasticsearch.service: Failed with result 'timeout'.
Jun 18 07:13:40 systemd[1]: Failed to start Elasticsearch.
经过排查
sudo systemctl show elasticsearch | grep ^TimeoutStartUSec
发现默认只有75秒时间。
TimeoutStartUSec=1min 15s
从上面的错误日志也可以看到,从启动到报错也是75秒,不够用的,所以要延长启动时间
新建一个配置文件
sudo mkdir /etc/systemd/system/elasticsearch.service.d
修改为180秒
echo -e "[Service]\nTimeoutStartUSec=180" | sudo tee /etc/systemd/system/elasticsearch.service.d/startup-timeout.conf
重新载入
sudo systemctl daemon-reload
检查一下
sudo systemctl show elasticsearch | grep ^TimeoutStartUSec
时间修改过来了
TimeoutStartUSec=3min
重启服务器,会发现elasticsearch可以正常启动了。
原因估计是服务器配置低的原因,处理器是E5,且只有1核,硬盘还是普通HDD的。
调整下elasticsearch使用的内存
cd /etc/elasticsearch/jvm.options.d
nano mem.options
加入
-Xms1g
-Xmx1g
1g代表分配1g内存,根据你服务器内存使用情况分配,我的是4G,给了1g。
然后重启elasticsearch,可以看到内存占用少了
systemctl restart elasticsearch
清理mastodon空间
su - mastodon
RAILS_ENV=production /home/mastodon/live/bin/tootctl media remove --days=5 --dry-run
--dryrun
是演示,实际删除要删除
定期清理:
su - mastodon
cd /home/mastodon/live
#计算被mastodon占用的空间
RAILS_ENV=production bin/tootctl media usage
#移除本地缓存的其它实例媒体附件
RAILS_ENV=production bin/tootctl media remove --days=7
#清除缓存存储
RAILS_ENV=production bin/tootctl cache clear
#从数据库中删除未被引用的嘟文
RAILS_ENV=production bin/tootctl statuses remove
#移除本地预览卡片缩略图
RAILS_ENV=production bin/tootctl preview_cards remove
#扫描出不属于任何媒体附件的文件并移除他们
RAILS_ENV=production bin/tootctl media remove-orphans
定期备份:
准备工作: apt install lrzsz
1. PostgreSQL 数据库
su - mastodon pg_dump mastodon_production > dump.sql sz dump.sql rm dump.sql
2. .env.production 文件或等效文件中的应用密钥
cd /home/mastodon/live ls -a sz .env.production
(应用密钥是最容易备份的,因为它们是不变的。你只需要将 .env.production 存储在安全的地方就可以了。)
3. 用户上传的文件
su - mastodon cd live/public tar -zcvf system.tar.gz system sz system.tar.gz rm system.tar.gz
如果你使用本地文件存储,复制体积巨大的 public/system 目录(默认存储上传文件的地方)
4. Redis 数据库
root cd /var/lib/redis sz dump.rdb
备份Redis是很容易的。Redis会定期将数据写入/var/lib/redis/dump.rdb文件,你只需要复制这个文件就可以了。
PS: 发送文件rz
1.在新的服务器上重新安装mastodon, 到“生成配置文件”之前结束。(也就是在执行RAILS_ENV=production bundle exec rake mastodon:setup之前)
2.停止旧服务器上的Mastodon(systemctl stop ‘mastodon-*.service’)
3. 导出并导入Postgres数据库
<旧的VPS>
su - mastodon
pg_dump -Fc mastodon_production -f backup.dump
sz backup.dump
<新的VPS>
apt install lrzsz
su - mastodon
rz
createdb -T template0 mastodon_production
pg_restore -U mastodon -n public --no-owner --role=mastodon -d mastodon_production backup.dump
4. 复制 system/ 目录下文件
<旧的VPS>
使用 root 权限进入到 system 这个文件夹的上一个目录
cd /home/mastodon/live/public
然后,使用 tar 命令将 system 目录传输到新服务器上:
tar czf - system | ssh [email protected] -p 端口 tar xzf - -C /home/mastodon/live/public
上面的命令执行后,会提示你输入新服务器的 SSH 连接密码,输入完毕之后,整个 SSH 窗口可能不会返回有效信息,等待一段时间,让服务器之间传输完成,直至你再次看到 SSH 窗口可以输入新执行命令时,就可以去新服务器上看看是不是传输完成了。
5. 复制 .env.production 文件
<旧的VPS>
cd /home/mastodon/live sz .env.production
<新的VPS>
cd /home/mastodon/live rz
6. 编译mastodon
su - mastodon cd /home/mastodon/live RAILS_ENV=production bundle exec rails assets:precompile RAILS_ENV=production ./bin/tootctl feeds build
exit
7. 从官网“配置 nginx”处继续安装