今回は、WebUIのfediversesearch-feの構築手順です。サービス本体の構築方法については、以下の記事を参照してください。
今回対象とするOS
今回対象とするOSは、Ubuntu 20.04.2 LTSとします。
構築手順
前準備(fediversesearch-serverとサーバーを分ける場合)
fediversesearch-feはrubyとbundler gem、パッケージマネージャーのyarnを必要とします。また、fediversesearchユーザーでの作業を前提とします。これらは、fediversesearch-serverを構築した場合はすでにありますがサーバーを分ける場合は改めて準備しなくてはなりません。
OSの最新化
まずは、OSを最新の状態にしておきます。
sudo apt update
sudo apt upgrade -y
tmux上で作業するのがお勧めです。
再起動が必要な場合は念のため再起動してください。
yarnをインストールする
node.jsのパッケージマネージャーであるyarnをインストールします。
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt update && sudo apt install yarn
ユーザーの作成
「fediversesearch」というユーザーを作成します。
sudo -i adduser fediversesearch --disabled-login -q --gecos ""
rubyのインストール
fediversesearchユーザーになって、rubyをインストールします。
apt install -y build-essential libssl-dev zlib1g-dev su - fediversesearch git clone https://github.com/rbenv/rbenv.git ~/.rbenv echo 'export PATH="~/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc source ~/.bashrc git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build rbenv install 2.7.3 rbenv global 2.7.3
bundlerのインストール
bundlerをインストールします。
gem install bundler
fediversesearch-feをインストールする
ruby2.7.3とbundler、yarnがfediversesearchユーザーで使える状態になったら、fediversesearch-feをインストールします。
前準備
sqlite3のライブラリが必要ですので、それをインストールします。
sudo apt install libsqlite3-dev
以下の作業はfediversesearchユーザーにて、そのホームディレクトリ直下から始めます。
fediversesearch-feのソースコードのダウンロード
githubのリポジトリからfediversesearch-feのソースコードをダウンロードします。展開先はwebuiディレクトリとしています。
git clone https://github.com/kaias1jp/fediversesearch-fe.git webui
必要なgemのインストール
webuiディレクトリに移動して、必要なgemをインストールします。
cd webui
bundle update
mimemagic gemのバージョン関連の問題を避けるため、「bundle install」ではなく「bundle update」を実行しています。
master.keyを作成する
config/master.keyがないとrailsの各コマンドが実行できません。そのため、再作成します。
EDITOR=vim bin/rails credentials:edit
yarn installの実行
yarn installを実行します。
yarn install
.env.productionファイルを作成する
設定ファイルである「.env.production」ファイルを作成します。ファイルの中身はこんな感じです。
.env.production
FS_SERVER_URL = "http://fediversesearch-serverのIPアドレス:18000" GITHUB_URL = "https://github.com/kaias1jp/fediversesearch"
FS_SERVER_URLでfediversesearch-serverのサービスを指定します。前の記事ではポートは18000としていますので、ここでも同じにします。fediversesearch-serverのサービスが動いているサーバーのIPアドレスなどを記述します。なお、WebUIをインターネット上に公開するときは、インターネットからfediversesearch-serverのサービスにアクセスできるようにします。ただし、直接アクセスする必要はなく、nginxなどを挟んでfediversesearch-serverはインターネットに直接は出ない方法もあります。
GITHUB_URLは、forkした場合にそのリポジトリを指定すると、WebUIの画面のフッターにリンクが載ります。
アセットをプリコンパイルする
アセットをプリコンパイルします。
RAILS_ENV=production bundle exec rails assets:precompile
これを実行すると、publicフォルダの下にassetsとpacksフォルダが作られて、WebUIを構築するために必要なファイルが置かれます。
試しにfediversesearch-feを立ち上げてみる
確認のため、fediversesearch-feを立ち上げてみましょう。
RAILS_ENV=production rails s -b 0.0.0.0
webブラウザから「http://fediversesearch-feのIPアドレス:3000」にアクセスすると、以下のような画面が表示されるはずです。
前回の記事でテストデータを投入した場合、総インデックス数は「5」と表示されます。キーワードに「個人的」を指定して検索した結果がこうなれば問題ありません。
fediversesearch-feをサービスとして登録する
動作確認が終わったら、fediversesearch-feをサービスとして登録しましょう。rootユーザーに戻ってserviceファイルを作成します。作成するファイルは「fediversesearch-fe.service」とします。「/etc/systemd/system/」の下に作成してください。
fediversesearch-fe.service
[Unit] Description=fediversesearch-fe After=network.target [Service] Type=simple User=fediversesearch WorkingDirectory=/home/fediversesearch/webui Environment="RAILS_ENV=production" Environment="PORT=13000" ExecStart=/home/fediversesearch/.rbenv/shims/bundle exec puma -C config/puma.rb ExecReload=/bin/kill -SIGUSR1 $MAINPID TimeoutSec=15 Restart=always [Install] WantedBy=multi-user.target
環境変数に「PORT=13000」を指定していますが、ポート番号に決まりはありませんので変更してかまいません。ファイルの作成が終わったら、サービスとして登録してから起動します。
systemctl daemon-reload systemctl enable fediversesearch-fe systemctl start fediversesearch-fe
これで、fediversesearch-feの構築は終わりです。ここまでで、基本となるサーバーとフロントのWebUIが立ち上がりました。次は、実際にサイトのデータを集めてくるクローラーの構築になります。