技术小白建站日志(三)——Cloudflare、修改媒体上限、Nginx、SWAP、SSH

1. Cloudflare

DigitalOcean提供的服务器在大陆访问速度相对较慢。在看到隔壁活吧上了Cloudflare速度骤然流畅的成果后,本着“生命就是折腾”以及“反正也是免费”的原则,上Cloudflare。

参考教程:https://wzfou.com/cloudflare/ (第一步)

这步总体而言非常简单,就是注册-填域名-按照它的指示去域名商那里修改域名商服务器-等待生效即可。然后按照这个教程设置,去Speed-Optimization那里把下图的三个勾都勾选上,然后去Caching那边设置Caching Level为Standard,Browser Cache TTL为4小时。

完成后测试,无论是体感还是ping都快了很多。这里要注意,教程里说要把Rocket Loader™激活,但是我一激活,我的实例就变成了白屏,所以还是别激活好……

不过,由于cloudflare节点本身有不少也被墙了,所以据说也有可能出现上了Cloudflare反而在墙内访问速度变慢的情况,大家可以自行测验。

2. 修改媒体上传大小上限

自从上了云,妈妈再也不用担心我的硬盘,腰不酸了,腿不疼了,中继都敢开了!【你等等】

既然如此,由于我平时喜欢传一些超大gif,反正也是个人站,于是大手一挥,修改媒体上传上限。

参考bgme站长的修改Commit:https://github.com/yingziwu/mastodon/commit/43341d82dba12dd8b38589a340d3ab8ad6216304

对相应文件进行修改(因为是自用,我将图片大小限制改成了24M)。修改之后我发现已经可以直接上传超过8m的动图,不过为了保险我还是compile了一下:

RAILS_ENV=production bundle exec rails assets:precompile

重启:

systemctl restart mastodon-sidekiq
systemctl reload mastodon-web

测试19M动图,成功!

然后我发现了一个好玩的事情,当我重新下载这个媒体文件的时候,发现它变成了无声MP4,大小变成了……1.5M。我一直知道长毛象为了节省大家的硬盘空间会压缩媒体文件,但是我也确实没想到压缩率居然会这么高……确实很节省空间。

3. Nginx建立媒体反代

前文( https://pullopenbluebox.wordpress.com/2020/06/13/mastodon-scaleway/ )已经讲述了如何将Mastodon的媒体文件上传至Scaleway云端网盘(来白嫖75G免费空间)。试用了一段时间后发现,s3.fr-par.scw.cloud地址虽然没有被墙,但大陆访问速度还是非常慢。再加上我前面已经开了cloudflare加速,依旧本着“生命就是折腾”的原则,再次挑战Nginx。

首先,在域名服务器的DNS里填上你想用的媒体域名(我的是media.pullopen.xyz),指向你的服务器地址——因为这一步过于小白,所以正常的教程里都懒得教。

我是在Cloudflare里操作的,把那朵云点亮之后就代表启动了Cloudflare加速。

然后就按照这两篇参考文献:https://stanislas.blog/2018/05/moving-mastodon-media-files-to-wasabi-object-storage/https://qiita.com/mecaota/items/365fa9330366e74f756a 中Nginx一步进行修改。

找到自己的nginx.conf文件,如果你和我一样都是在Digital Ocean上直接用的一键安装包,那么该文件应该位于root用户的/etc/nginx文件夹里。

root用户下:

nano /etc/nginx/nginx.conf

修改nginx.conf文件,将以下部分添加入http { }的括号内的最后一行(因为proxy_cache_path仅对http生效,而添加在前面会对站点本身的nginx产生影响)。注意修改其中所有的media.pullopen.xyz为自己的实例媒体域名,pullopen-media修改为自己的bucket名,https://s3.fr-par.scw.cloud/pullopen-media/ 按照自己的bucket地址和bucket名进行修改。如果你修改正确,一共应该有五个地方需要修改。

proxy_cache_path /tmp/nginx_mstdn_media levels=1:2 keys_zone=mastodon_media:100m max_size=1g inactive=24h;

server {
        listen 80;
        listen [::]:80;
        server_name media.pullopen.xyz;
        return 301 https://media.pullopen.xyz$request_uri;

        access_log /dev/null;
        error_log /dev/null;
}

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name media.pullopen.xyz;

        access_log /var/log/nginx/mstdn-media-access.log;
        error_log /var/log/nginx/mstdn-media-error.log;

        # Add your certificate and HTTPS stuff here

        location /pullopen-media/ {
                proxy_cache mastodon_media;
                proxy_cache_revalidate on;
                proxy_buffering on;
                proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
                proxy_cache_background_update on;
                proxy_cache_lock on;
                proxy_cache_valid 1d;
                proxy_cache_valid 404 1h;
                proxy_ignore_headers Cache-Control;
                add_header X-Cached $upstream_cache_status;
                proxy_pass https://s3.fr-par.scw.cloud/pullopen-media/;
        }

}

重启nginx:

sudo nginx -s reload

之后再进入mastodon用户的live文件夹,对.env.production文件进行修改,将你之前上云时设置的【S3_HOSTNAME=s3.fr-par.scw.cloud】改成【S3_HOSTNAME=你自己的媒体域名】。

重启Mastodon。现在你所有的媒体文件都会指向你的媒体域名。

改完之后测试了一下同一个文件的速度:https://s3.fr-par.scw.cloud/pullopen-media/media_attachments/files/000/003/360/original/cc89777d6051c6f7.jpeghttps://media.pullopen.xyz/pullopen-media/media_attachments/files/000/003/360/original/cc89777d6051c6f7.jpeg ,ping值如图:

反代前
反代后

目前而言,反代之后海内外媒体文件访问速度确实有了大幅度提升。此外对于较大的实例而言,在用nginx反代之后,也不用再担心S3储存的流量费用,还是很值得尝试一下的。

4. SWAP

其实设好了服务器之后第一步就应该打开SWAP,否则内存不够连魔改字数都会失败。教程参见:https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04

这里主要存一个修改SWAP大小的教程:https://linuxhint.com/change_swap_size_ubuntu/

两个结合一下应该可以。看各种参考文献,SWAP太小会爆内存,SWAP太大,本身因为SSD运转速度相对RAM更慢,也会影响运行速度。这里有一篇SWAP大小建议可供参考:https://itsfoss.com/swap-size/

5. SSH

这一步也没什么好说的,Mastodon官方文档中甚至要求把密码登录关掉只保留SSH登录。我主要是怕某天服务器被墙,从本地登不上去只能回到Digital Ocean Console,所以还是保留了密码登录的方式。这里只是存一个教程:

https://www.digitalocean.com/docs/droplets/how-to/add-ssh-keys/

一步步照着来就可以了。

发布者:Pullopen

当我伸出手来,总希望能抓住些什么,不至于落入对空虚无尽的恐慌之中。

One thought on “技术小白建站日志(三)——Cloudflare、修改媒体上限、Nginx、SWAP、SSH

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s

在 WordPress.com 上创建您自己的网站
开始
%d 博主赞过: