mirror of
https://github.com/mastodon/documentation
synced 2025-04-11 22:56:17 +02:00

* add rules * join date on profiles * deprecate follow scope * deprecate identity proofs * familiar followers * use definition lists instead of tables for defining activitypub properties * reformat notifications page into markdown * fix broken links to publicKey header * Application website is now nullable * update environment variables added and removed * fix typo * fix heading level * min_id and max_id can be used at the same time (3.3) * fix typo * new tootctl options * reformat tootctl page to use definition lists for params * add rules and configuration to Instance * fix typo * refactor instance api page * 3.3.0 duration on mutes * 3.3.0 mute_expires_at * improve section headings * 3.4.0 resend email confirmation api * 3.4.0 policy on push subscriptions * 3.4.0 add details to account registration error * refactor accounts api page and start adding relrefs to entity pages * 3.4.0 accounts/lookup api * add see also to accounts methods * add more see-also links * 3.5.0 appeal mod decisions * 3.5.0 reformat reports and add category/rule_ids params * document report entity and missing responses * fix typos * fix relrefs and url schema, add aliases to old urls * add archetypes for new methods/entities * update archetypes with see-also stubs * clearer presentation of rate limits * announcements api methods * refactor apps methods * refactor bookmarks methods + some anchors * refactor conversations methods * custom_emojis methods refactor * anchors * refactor directory methods * refactor domain_blocks methods * add see also to emails methods * fix page relref shortcodes to specific methods + refactor endorsements methods * min_id max_id * refactor favourites methods * refactor featured_tags methods * refactor filters methods, make path params consistent, i18n required shortcode * follow_requests methods * lists methods * markers methods * forgot to add entity links * media methods, also fix formatting of some json errors * mutes methods, add more see-also links * oembed methods * preferences methods * proofs methods * push methods * suggestions methods * 3.5.0 add new trend types, fix formatting * refactor streaming methods * refactor oauth methods * note that streaming api casts payload to string * refactor search methods * refactor polls methods * remove unnecessary link * reformat scheduled_statuses methods * reformat timelines methods * reformat statuses methods * 3.5.0 editing statuses * consistent use of array brackets in form data parameters * update dev setup guide, add vagrant and clean up text * add admin/accounts methods * 3.6 role entity * admin/accounts methods v2 * minor fix * stub admin/reports methods * document admin reports * add 403 example to methods archetype * cleanup entities for admin reports and add new attrs * 3.6.0 domain allows methods + normalize admin entity namespace * fix search-and-replace error * add aliases for admin entities * 3.6.0 canonical email blocks entity * 3.5.0 admin/retention api * 3.5.0 add admin::ip doc * 3.5.0 admin/reports * 3.6.0 admin/domain_allows * 3.5.0 admin/dimensions * 3.6.0 permissions and roles * minor formatting fix * add anchor link to headings * checkpoint * add update commands to dev env setup guide * change mentions of v3.6 to v4.0 * tootctl now uses custom roles * fix formatting * v2 instance api * update frontmatter, add better titles to pages * minor wording change * consistency * add more aliases * add placeholders and WIP notices * explain link pagination and stub out todos * switch baseURL to https * 422 on reports with rules but category!=violation * document bug fixes * fix typo * remove duplicate API method definition * s/tootsuite/mastodon for github links * remove unnecessary escaping * s/tootsuite/mastodon in Entity archetype * add missing nullable shortcode * clarify oauth scope when requesting a user token * api/v2/media now synchronous for images * DISALLOW_UNAUTHENTICATED_API_ACCESS * add undocumented env variables * add instance domain blocks and extended description api * add SMTP_ENABLE_STARTTLS * add description to SMTP_ENABLE_STARTTLS * take suggestions from open PRs * normalize links and flavour language * Fully document streaming API based on source code * Add mention of MIME types * bump to ruby 3.0.4 * clarify how to check on async media processing * validation of replies_policy * remove TODOs on admin account action * EmailDomainBlocks * IpBlocks * Admin::DomainBlock * remove TODOs * following hashtags * followed_tags * remove reference to unused parameter * add new oauth scopes for admin blocks and allows * fix command signature for i18n-tasks normalize * reformat code structure page * document fixes for following tags (assume 4.0.3) * Add warning about pre-4.0 hardcoded roles * add note about case sensitivity * remove use of 'simply' from docs * remove reference to silencing * add reference to IDN normalization for verified links * add lang parameter
227 lines
6.2 KiB
Markdown
227 lines
6.2 KiB
Markdown
---
|
||
title: 从源中安装
|
||
description: 创建你自己的Mastodon站点的教学指献。
|
||
menu:
|
||
docs:
|
||
weight: 20
|
||
parent: admin
|
||
---
|
||
|
||
## 前提条件 {#pre-requisites}
|
||
|
||
* 一台你有root访问权限的运行 **Ubuntu 18.04** 的机器
|
||
* 一个用于Mastodon站点的**域名**(或一个子域名),例如:`example.com`
|
||
* 一个电子邮件发送服务提供商,或其他**SMTP服务器**
|
||
|
||
你需要使用root用户运行命令。如果你现在不是root用户,请切换至root用户:
|
||
|
||
### 软件仓库 {#system-repositories}
|
||
|
||
首先确保已经安装curl:
|
||
|
||
#### Node.js {#node-js}
|
||
|
||
```bash
|
||
curl -sL https://deb.nodesource.com/setup_12.x | bash -
|
||
```
|
||
|
||
#### Yarn {#yarn}
|
||
|
||
```bash
|
||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
|
||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
|
||
```
|
||
|
||
### 软件包 {#system-packages}
|
||
|
||
```bash
|
||
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 libgdbm5 libgdbm-dev \
|
||
nginx redis-server redis-tools postgresql postgresql-contrib \
|
||
certbot python-certbot-nginx yarn libidn11-dev libicu-dev libjemalloc-dev
|
||
```
|
||
|
||
### 安装 Ruby {#installing-ruby}
|
||
|
||
因为使用 rbenv 可以更容易的获得正确的版本并在新版本发布后进行更新,我们将使用 rbenv 来管理Ruby版本。rbenv 必须安装在单个Linux用户中,因此,我们首先需要使用以下命令创建一个Mastodon用户:
|
||
|
||
```bash
|
||
adduser --disabled-login mastodon
|
||
```
|
||
|
||
切换到mastodon用户:
|
||
|
||
```bash
|
||
su - mastodon
|
||
```
|
||
|
||
执行以下步骤安装 rbenv 和 rbenv-build:
|
||
|
||
```bash
|
||
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
|
||
cd ~/.rbenv && src/configure && make -C src
|
||
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 版本:
|
||
|
||
```bash
|
||
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 2.6.6
|
||
rbenv global 2.6.6
|
||
```
|
||
|
||
我们同样需要安装 bundler:
|
||
|
||
```bash
|
||
gem install bundler --no-document
|
||
```
|
||
|
||
返回root用户:
|
||
|
||
```bash
|
||
exit
|
||
```
|
||
|
||
## 配置 {#setup}
|
||
|
||
### 配置 PostgreSQL {#setting-up-postgresql}
|
||
|
||
#### 性能调优(可选) {#performance-configuration-optional}
|
||
|
||
为了优化性能,你可以使用 [pgTune](https://pgtune.leopard.in.ua/#/) 生成一个合适的配置文件。编辑 `/etc/postgresql/9.6/main/postgresql.conf` 中的相应数值并使用 `systemctl restart postgresql` 命令重启 PostgreSQL。
|
||
|
||
#### 创建帐户 {#creating-a-user}
|
||
|
||
你需创建一个供Mastodon使用的PostgreSQL帐户。创建一个使用“ident”认证方式的帐户是最容易的配置方法,即PostgreSQL帐户不需要独立的密码并由同名Linux用户使用。
|
||
|
||
打开控制台:
|
||
|
||
```bash
|
||
sudo -u postgres psql
|
||
```
|
||
|
||
在控制台中执行:
|
||
|
||
```sql
|
||
CREATE USER mastodon CREATEDB;
|
||
\q
|
||
```
|
||
|
||
完成!
|
||
|
||
### 配置 Mastodon {#setting-up-mastodon}
|
||
|
||
现在该下载Mastodon代码了。切换至mastodon用户:
|
||
|
||
```bash
|
||
su - mastodon
|
||
```
|
||
|
||
#### 检出代码 {#checking-out-the-code}
|
||
|
||
使用git下载最新稳定版Mastodon:
|
||
|
||
```bash
|
||
git clone https://github.com/mastodon/mastodon.git live && cd live
|
||
git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)
|
||
```
|
||
|
||
#### 安装依赖 {#installing-the-last-dependencies}
|
||
|
||
现在,安装Ruby和JavaScript依赖:
|
||
|
||
```bash
|
||
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 >}}
|
||
|
||
#### 生成配置文件 {#generating-a-configuration}
|
||
|
||
运行交互式安装向导:
|
||
|
||
```bash
|
||
RAILS_ENV=production bundle exec rake mastodon:setup
|
||
```
|
||
|
||
它将:
|
||
|
||
* 创建一个配置文件
|
||
* 预编译静态文件
|
||
* 创建数据库schema
|
||
|
||
配置文件被保存在`.env.production`。如果你愿意的话,你可以查看并编辑这个文件。请参阅[配置文件的文档]({{< relref "config" >}})。
|
||
|
||
你已经完成需使用mastodon用户进行的操作,请切换回root用户:
|
||
|
||
```bash
|
||
exit
|
||
```
|
||
|
||
### 配置 nginx {#setting-up-nginx}
|
||
|
||
从Mastodon目录复制配置文件模版到nginx:
|
||
|
||
```bash
|
||
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` 为你自己的域名,你可以根据自己的需求做出其它的一些调整。
|
||
|
||
重载 nginx 以使变更生效:
|
||
|
||
### 获取SSL证书 {#acquiring-a-ssl-certificate}
|
||
|
||
我们将使用 Let’s Encrypt 获取一个免费的SSL证书:
|
||
|
||
```bash
|
||
certbot --nginx -d example.com
|
||
```
|
||
|
||
这个命令将获取一个证书,自动更新 `/etc/nginx/sites-available/mastodon` 以使用新证书并重载nginx以使变更生效。
|
||
|
||
现在你应该能够通过浏览器访问你的域名,然后看到一只大象锤击电脑屏幕的错误页面。这是因为我们还没有启动Mastodon进程。
|
||
|
||
### 配置 systemd 服务 {#setting-up-systemd-services}
|
||
|
||
从Mastodon目录复制systemd服务模版:
|
||
|
||
```bash
|
||
cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/
|
||
```
|
||
|
||
然后修改以下文件,以保证用户名与路径是正确的:
|
||
|
||
* `/etc/systemd/system/mastodon-web.service`
|
||
* `/etc/systemd/system/mastodon-sidekiq.service`
|
||
* `/etc/systemd/system/mastodon-streaming.service`
|
||
|
||
最后,启动新systemd服务并将该服务设为开机自动激活:
|
||
|
||
```bash
|
||
systemctl daemon-reload
|
||
systemctl start mastodon-web mastodon-sidekiq mastodon-streaming
|
||
systemctl enable mastodon-*
|
||
```
|
||
|
||
他们将在开机启动时自动开始运行。
|
||
|
||
{{< 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">}}
|