Closed9

AWS Cloud9 + fly.ioでRailsチュートリアル

すふーすふー

困ったときのヒント集>デプロイ先を変更する
https://railstutorial.jp/help#deploy-service

手順1を実行するとbash: flyctl: command not found

よく読むとflyctlのインストール時に

flyctl was installed successfully to /home/ec2-user/.fly/bin/flyctl
Manually add the directory to your $HOME/.bash_profile (or similar)
export FLYCTL_INSTALL="/home/ec2-user/.fly"
export PATH="$FLYCTL_INSTALL/bin:$PATH"
Run '/home/ec2-user/.fly/bin/flyctl --help' to get started

と表示されていたので、このようにしておけば大丈夫だったはず。
("/home/ec2-user/.fly"の部分だけコマンドを差し替え)

curl -L https://fly.io/install.sh | sh
echo 'FLYCTL_INSTALL="/home/ec2-user/.fly"' >> $HOME/.bash_profile
echo 'PATH="$FLYCTL_INSTALL/bin:$PATH"' >> $HOME/.bash_profile
source $HOME/.bash_profile > /dev/null
すふーすふー

手順2 flyctl auth loginを実行してターミナルに表示されたURLをクリック、GitHubのアカウントでサインイン

すふーすふー

手順3 Railsアプリケーションを置いているディレクトリでfly launchを実行すると、ターミナル上に下記のような表示が出てきた。

Detected a Rails app
Creating app in /home/ec2-user/environment/[アプリ名]
We're about to launch your Rails app on Fly.io. Here's what you're getting:

Organization: example@gmail.com (fly launch defaults to the personal org)
Name:         [アプリ名]                  (derived from your directory name)
Region:       Tokyo, Japan              (this is the fastest region for you)
App Machines: shared-cpu-1x, 1GB RAM    (most apps need about 1GB of RAM)
Postgres:     <none>                    (determined from app source)
Redis:        <none>                    (not requested)

? Do you want to tweak these settings before proceeding? (y/N)

yを押すとURLが表示されるのでクリックするとこのような設定画面に。

App nameはグローバルでユニークな名称である必要があるらしい。
また、無料で使用できるリソースは下記の範囲になるので、Memory & CPUとDatabaseはそれぞれshared-cpu-1x@256MBを使用することにした。

  • Up to 3 shared-cpu-1x 256mb VMs
  • 3GB persistent volume storage (total)
  • 160GB outbound data transfer

https://fly.io/docs/about/pricing/

すふーすふー

手順4 fly deployを実行して数分待つとURLが表示され、クリックするとデプロイしたアプリにアクセスできた。

Visit your newly deployed app at https://[アプリ名].fly.dev/

デフォルトだとauto_stop_machinesの設定がtrueなので、数分アクセスがないとアプリが自動で停止するらしい。常に動かしておきたい場合は、作成されたfly.tomlを編集すれば良いとのこと。
https://fly.io/docs/apps/autostart-stop/

すふーすふー

13章でImageMagickを導入する必要があった。

sudo apt-get install imagemagick

ところが、冒頭の「困ったときのヒント集>AWS Cloud9 で開発する」の推奨手順を誤っていたようで、
UbuntuではなくAmazon Linux 2を導入していたことに気づく(今更…)
Amazon Linux 2はRedHatベースのようなのでapt-getは使えない。代わりにyumを使う。

sudo yum install -y ImageMagick

Fly.ioにデプロイする時にImageMagickを導入するには、
初回デプロイの際に自動で作成されたdockerfileに追加する。

# Install packages needed for deployment
RUN apt-get update -qq && \
    apt-get install --no-install-recommends -y curl libsqlite3-0 postgresql-client imagemagick && \
    rm -rf /var/lib/apt/lists /var/cache/apt/archives
このスクラップは2024/01/16にクローズされました