# Mastodon 笔记

**URL:** https://eijil.com/t/mastodon/369
**Category:** 其它
**Created:** [June 18, 2022, 6:46am UTC](https://eijil.com/t/mastodon/369 "2022-06-18T06:46:26Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Tristan](https://eijil.com/user_avatar/eijil.com/tristan/32/986_2.png) [@Tristan](https://eijil.com/u/Tristan)
#### Post date: [June 18, 2022, 6:46am UTC](https://eijil.com/t/mastodon/369/1 "2022-06-18T06:46:26Z")

</div>

mastodon安装elasticsearch后，重启服务器，elasticsearch不会自动启动

```auto
● 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.

```

经过排查

```auto
sudo systemctl show elasticsearch | grep ^TimeoutStartUSec

```

发现默认只有75秒时间。

```auto
TimeoutStartUSec=1min 15s

```

从上面的错误日志也可以看到，从启动到报错也是75秒，不够用的，所以要延长启动时间

新建一个配置文件

```auto
sudo mkdir /etc/systemd/system/elasticsearch.service.d

```

修改为180秒

```auto
echo -e "[Service]\nTimeoutStartUSec=180" | sudo tee /etc/systemd/system/elasticsearch.service.d/startup-timeout.conf

```

重新载入

```auto
sudo systemctl daemon-reload

```

检查一下

```auto
sudo systemctl show elasticsearch | grep ^TimeoutStartUSec

```

时间修改过来了

```ini
TimeoutStartUSec=3min

```

重启服务器，会发现elasticsearch可以正常启动了。

原因估计是服务器配置低的原因，处理器是E5，且只有1核，硬盘还是普通HDD的。

---

<div class="post-metadata">

### Author: ![Tristan](https://eijil.com/user_avatar/eijil.com/tristan/32/986_2.png) [@Tristan](https://eijil.com/u/Tristan)
#### Post date: [June 18, 2022, 7:32am UTC](https://eijil.com/t/mastodon/369/2 "2022-06-18T07:32:37Z")

</div>

调整下elasticsearch使用的内存

```auto
cd /etc/elasticsearch/jvm.options.d
nano mem.options

```

加入

```ini
-Xms1g
-Xmx1g

```

1g代表分配1g内存，根据你服务器内存使用情况分配，我的是4G，给了1g。  
然后重启elasticsearch，可以看到内存占用少了

```auto
systemctl restart elasticsearch

```

---

<div class="post-metadata">

### Author: ![Tristan](https://eijil.com/user_avatar/eijil.com/tristan/32/986_2.png) [@Tristan](https://eijil.com/u/Tristan)
#### Post date: [June 18, 2022, 8:53am UTC](https://eijil.com/t/mastodon/369/3 "2022-06-18T08:53:10Z")

</div>

清理mastodon空间

```auto
su - mastodon
RAILS_ENV=production /home/mastodon/live/bin/tootctl media remove --days=5 --dry-run

```

`--dryrun` 是演示，实际删除要删除

---

<div class="post-metadata">

### Author: ![Tristan](https://eijil.com/user_avatar/eijil.com/tristan/32/986_2.png) [@Tristan](https://eijil.com/u/Tristan)
#### Post date: [June 18, 2022, 9:50am UTC](https://eijil.com/t/mastodon/369/4 "2022-06-18T09:50:06Z")

</div>

[https://blog.yantouer.com/archives/15683.html](https://blog.yantouer.com/archives/15683.html)

**定期清理：**  
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`

---

<div class="post-metadata">

### Author: ![Tristan](https://eijil.com/user_avatar/eijil.com/tristan/32/986_2.png) [@Tristan](https://eijil.com/u/Tristan)
#### Post date: [June 18, 2022, 9:51am UTC](https://eijil.com/t/mastodon/369/5 "2022-06-18T09:51:14Z")

</div>

[https://blog.yantouer.com/archives/15743.html](https://blog.yantouer.com/archives/15743.html)

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 root@IP -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** ”处继续安装
