プロジェクト

全般

プロフィール

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

リビジョン 1 (白林檎 美和, 2020/07/07 19:22) → リビジョン 2/9 (白林檎 美和, 2020/07/07 19:59)

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

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

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

 ## 丼建て 
 ここからは基本的に,公式サイトの[Installing from source](https://docs.joinmastodon.org/admin/install/)の順番で進める。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 
 ``` 
 1. パッケージのオプションを選択。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 
 ``` 
 1. Portsの一括インスコや更新に便利な, portupgradeをインスコ。 
     ``` 
 # make -C /usr/ports/ports-mgmt/portupgrade config-recursive install clean 
 ``` 
 1. 丼が使うパッケージを, portsからごりごりインスコ。 
     ``` 
 # portinstall $don_pkgs 
 ``` 
 1. 丼インスタンスの各種プロセスを実行するためのユーザー “mastodon” を作成。bsdconfigの [6    Login/Group Management]→[1    Add Login] なり, adduserなり,お好きな方法で。 

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

     ``` 
 nginx_enable="YES" 
 postgresql_enable="YES" 
 redis_enable="YES" 
 ``` 
 1. データ置き場を分けた方は, `postgresql_data="/usr/home/postgres/data12"` も追加。既に /var/db/postgres が作られていたら, /usr/home へ移動。 
 1. ぽすぐれを初期化,起動。 
     ``` 
 # service postgresql initdb 
 # service postgresql start 
 ``` 
 1. 丼DB用のユーザーを作成。ついでに,スーパーユーザーへパスワードを付与。 
     ``` 
 # sudo -u postgres psql 
 postgres=# CREATE USER mastodon WITH PASSWORD '<ぱすわぁど>' CREATEDB; 
 postgres=# ALTER ROLE postgres WITH PASSWORD '<ぱすわぁど>'; 
 postgres=# \q    ← ^D 
 ``` 
 1. ユーザーmastodonへ切り替え。 
     ``` 
 # su - mastodon 
 ``` 
 1. 丼鯖の最新リリースを取得。 
     ``` 
 $ git clone https://github.com/tootsuite/mastodon.git live 
 $ cd live 
 $ git checkout <最新リリースのタグ> 
 ``` 
 1. 丼鯖が使う, 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 
 ``` 
 1. 初回設定。 
   * DBはUNIX domain socketではなく, localhostを指定。前者では, socketのパス名がUbuntu標準と合わず失敗。 
   * adminのパスワードがランダムに生成されるので,控えておく。 

     ``` 
 $ export RAILS_ENV=production 
 $ bundle exec rake mastodon:setup 
 ```