documentation/content/zh-cn/admin/install.md

6.5 KiB
Raw Blame History

title description menu
从源代码中安装 创建你自己的 Mastodon 站点的教学指献。
docs
weight parent
20 admin

前提条件

  • 一台你有root访问权限的运行 Ubuntu 20.04Debian 11 的机器
  • 一个用于Mastodon站点的域名(或一个子域名),例如:example.com
  • 一个电子邮件发送服务提供商,或其他SMTP服务器

你需要使用root用户运行命令。如果你现在不是root用户请切换至root用户sudo su -

软件仓库

首先确保已经安装curl, wget, gnupg, apt-transport-https, lsb-release 和 ca-certificates

apt install -y curl wget gnupg apt-transport-https lsb-release ca-certificates

Node.js

curl -sL https://deb.nodesource.com/setup_16.x | bash -

PostgreSQL

wget -O /usr/share/keyrings/postgresql.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc
echo "deb [signed-by=/usr/share/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/postgresql.list

软件包

apt update
apt install -y \
  imagemagick ffmpeg libpq-dev libxml2-dev libxslt1-dev file git-core \
  g++ libprotobuf-dev protobuf-compiler pkg-config nodejs gcc autoconf \
  bison build-essential libssl-dev libyaml-dev libreadline6-dev \
  zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev \
  nginx redis-server redis-tools postgresql postgresql-contrib \
  certbot python3-certbot-nginx libidn11-dev libicu-dev libjemalloc-dev

Yarn

corepack enable
yarn set version classic

安装 Ruby

因为使用 rbenv 可以更容易的获得正确的版本并在新版本发布后进行更新,我们将使用 rbenv 来管理Ruby版本。rbenv 必须安装在单个Linux用户中因此我们首先需要使用以下命令创建一个Mastodon用户

adduser --disabled-login mastodon

切换到 mastodon 用户:

su - mastodon

执行以下步骤安装 rbenv 和 rbenv-build

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec bash
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

上述操作完成,我们便可以安装正确的 Ruby 版本:

RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.2.2
rbenv global 3.2.2

我们同样需要安装 bundler

gem install bundler --no-document

返回root用户

exit

配置

配置 PostgreSQL

性能调优(可选)

为了优化性能,你可以使用 pgTune 生成一个合适的配置文件。编辑 /etc/postgresql/9.6/main/postgresql.conf 中的相应数值并使用 systemctl restart postgresql 命令重启 PostgreSQL。

创建帐户

你需创建一个供Mastodon使用的PostgreSQL帐户。创建一个使用“ident”认证方式的帐户是最容易的配置方法即PostgreSQL帐户不需要独立的密码并由同名Linux用户使用。

打开控制台:

sudo -u postgres psql

在控制台中执行:

CREATE USER mastodon CREATEDB;
\q

完成!

配置 Mastodon

现在该下载Mastodon代码了。切换至mastodon用户

su - mastodon

检出代码

使用git下载最新稳定版Mastodon

git clone https://github.com/mastodon/mastodon.git live && cd live
git checkout $(git tag -l | grep '^v[0-9.]*$' | sort -V | tail -n 1)

安装依赖

现在安装Ruby和JavaScript依赖

bundle config deployment 'true'
bundle config without 'development test'
bundle install -j$(getconf _NPROCESSORS_ONLN)
yarn install --pure-lockfile

{{< hint style="info" >}} 两个bundle config命令仅仅第一次安装依赖时需要。如果你之后进行升级或重安装依赖,只需要bundle install就够了。 {{< /hint >}}

生成配置文件

运行交互式安装向导:

RAILS_ENV=production bundle exec rake mastodon:setup

它将:

  • 创建一个配置文件
  • 预编译静态文件
  • 创建数据库schema

配置文件被保存在.env.production。如果你愿意的话,你可以查看并编辑这个文件。请参阅[配置文件的文档]({{< relref "config" >}})。

你已经完成需使用mastodon用户进行的操作请切换回root用户

exit

Acquiring a SSL certificate

使用 Lets Encrypt 获取免费的 SSL 证书:

certbot certonly --nginx -d example.com

这将获取证书,并保存到 /etc/letsencrypt/live/example.com/

配置 nginx

从Mastodon目录复制配置文件模版到nginx

cp /home/mastodon/live/dist/nginx.conf /etc/nginx/sites-available/mastodon
ln -s /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon

编辑 /etc/nginx/sites-available/mastodon,替换 example.com 为你自己的域名,你可以根据自己的需求做出其它的一些调整。

取消注释 ssl_certificatessl_certificate_key 开头的行 , 将路径改为对应的域名

重载 nginx 以使变更生效:

systemctl reload nginx

现在你应该能够通过浏览器访问你的域名然后看到一只大象锤击电脑屏幕的错误页面。这是因为我们还没有启动Mastodon进程。

配置 systemd 服务

从Mastodon目录复制systemd服务模版

cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/

如果在任何时候偏离了默认值,请检查用户名和路径是否正确:

$EDITOR /etc/systemd/system/mastodon-*.service

最后,启动新的 systemd 服务并将 mastodon 的服务设为开机自动激活:

systemctl daemon-reload
systemctl enable --now mastodon-web mastodon-sidekiq mastodon-streaming

他们将在开机启动时自动开始运行。

{{< hint style="success" >}} 欢呼吧!你现在可以从浏览器中访问你的域名了! {{< /hint >}}

{{< translation-status-zh-cn raw_title="Installing from source" raw_link="/admin/install/" last_tranlation_time="2020-05-04" raw_commit="ad1ef20f171c9f61439f32168987b0b4f9abd74b">}}