プロジェクト

全般

プロフィール

操作

丼鯖の建てかた » 履歴 » リビジョン 2

« 前 | リビジョン 2/9 (差分) | 次 »
白林檎 美和, 2020/07/07 19:59


丼鯖の建てかた

材料

  • 最新のFreeBSD, nginx, PostgreSQL等が走るホスト
  • データ置き場のストレージ: ユーザーを増やしたり,廃人のやうにつぶやいたりする気満々の方のみ
  • 80/tcp, 443/tcpへ外からアクセス可能な,イソターネット接続環境

準備

OSのインスコ

  1. 最新のFreeBSDのディスクイメージを取ってきて,そいつからホストを起動。2020/7/7現在の最新リリースは, 12.1
  2. テキストベースのウィザードを,淡々と進める。データ置き場のストレージを,ルートファイルシステムと別に設ける方は,そいつを /usr/home へマウント。
  3. 作業しやすいやう, sshdを有効化。sshdを常駐させるもよし, inetdで必要なときだけ起こすもよし。

ホストがNATの内側にいる場合

  1. イソターネットからの80/tcp, 443/tcpへのアクセスを,ホストへ通すよう設定。
  2. NATの内外どちらからも,同じFQDNでホストへアクセスできるよう, DNS鯖を設定。さうしないと, SSLの証明書を取れなかったり, WWWブラウザで開いたときにSSLが有効にならなかったりする。

丼建て

ここからは基本的に,公式サイトのInstalling from sourceの順番で進める。Ubuntu (Debian系Linux) 固有のコマンド等がばしばし出てきて, FreeBSDでは使えないので,読み替えていく。

Pre-requisites

  1. /etc/make.conf へ, 次を追加。

    DEFAULT_VERSIONS+=perl5=5.32 python=3.8 python3=3.8 ruby=2.7 ssl=openssl
    
  2. パッケージのオプションを選択。nginxのオプションは, PASSENGERをON。丼では使わないが, Redmineを建てるときに要る。

    # portsnap fetch update
    # don_pkgs='databases/gdbm databases/postgresql12-server databases/postgresql12-contrib databases/redis devel/autoconf devel/bison devel/git devel/protobuf devel/protobuf-c devel/bison devel/icu devel/libffi devel/readline dns/libidn graphics/ImageMagick7 lang/ruby27 multimedia/ffmpeg textproc/libxml2 textproc/libxslt security/openssl security/py-certbot-nginx security/sudo sysutils/rubygem-bundler textproc/libyaml www/nginx www/yarn-node12'
    # for pack in don_packs; do make -C /usr/ports/$pack config-recursive; done
    
  3. Portsの一括インスコや更新に便利な, portupgradeをインスコ。

    # make -C /usr/ports/ports-mgmt/portupgrade config-recursive install clean
    
  4. 丼が使うパッケージを, portsからごりごりインスコ。

    # portinstall $don_pkgs
    
  5. 丼インスタンスの各種プロセスを実行するためのユーザー “mastodon” を作成。bsdconfigの [6 Login/Group Management]→[1 Add Login] なり, adduserなり,お好きな方法で。

Setup

  1. /etc/rc.conf へ次を追加。

    nginx_enable="YES"
    postgresql_enable="YES"
    redis_enable="YES"
    
  2. データ置き場を分けた方は, postgresql_data="/usr/home/postgres/data12" も追加。既に /var/db/postgres が作られていたら, /usr/home へ移動。

  3. ぽすぐれを初期化,起動。

    # service postgresql initdb
    # service postgresql start
    
  4. 丼DB用のユーザーを作成。ついでに,スーパーユーザーへパスワードを付与。

    # sudo -u postgres psql
    postgres=# CREATE USER mastodon WITH PASSWORD '<ぱすわぁど>' CREATEDB;
    postgres=# ALTER ROLE postgres WITH PASSWORD '<ぱすわぁど>';
    postgres=# \q  ← ^D
    
  5. ユーザーmastodonへ切り替え。

    # su - mastodon
    
  6. 丼鯖の最新リリースを取得。

    $ git clone https://github.com/tootsuite/mastodon.git live
    $ cd live
    $ git checkout <最新リリースのタグ>
    
  7. 丼鯖が使う, rubyや農奴のパッケージを, live以下へ配置。getconf _NPROCESSORS_ONLN は,ホストのCPUのスレッド数を返す。

    $ bundle config deployment 'true'
    $ bundle config without 'development test'
    $ bundle install -j$(getconf _NPROCESSORS_ONLN)
    $ yarn install --pure-lockfile
    
  8. 初回設定。

    • DBはUNIX domain socketではなく, localhostを指定。前者では, socketのパス名がUbuntu標準と合わず失敗。
    • adminのパスワードがランダムに生成されるので,控えておく。
    $ export RAILS_ENV=production
    $ bundle exec rake mastodon:setup
    

白林檎 美和 さんが4年以上前に更新 · 9件の履歴