LoginSignup
1
1

More than 3 years have passed since last update.

本番環境でローカルで指定していたフォントが使用できない時の対処法

Posted at

アプリをRails で開発して1ヶ月経ち、デプロイして本番環境でどんなふうに動くのかを確かめている時に、フォントが適用されず半日くらい潰れてしまったので備忘録として書きます。

使用している技術はRuby,Rails, EC2, Nginx,Puma
WebサーバーにNginx  アプリケーションサーバーにPuma

Capistranoを使ってデプロイしている。(まだ使い始めてから1日なので、理解が浅いが簡単にデプロイできて感動している)

$ rails -v
Rails 5.2.3
$ ruby -v
ruby 2.5.7

クロームのブラウザで検証を見ると、/assets/soft.ttfがnot foundと言っていた。

フォントファイルが見つからないと

ターミナルでログを確認

$ sudo tail -f /var/log/nginx/access.log

すると

"GET /assets/soft.ttf HTTP/1.1" 404 555

こちらも見つからないというログがあった。

ローカル環境ではapp/assets/fontsの中にsoft.ttfを入れていたのだが

本番環境だとassetsの下のjavascripts,images,stylesheetsしか読みに行ってくれないみたい(現時点ではこの認識)

なのでEC2上でcpコマンドでローカルのfontsディレクトリの中のfontファイルをEC2にコピーしてくれば良いと考え

ターミナルでEC2にログインして

$ ssh -i ~/.ssh/〜〜〜〜ここにはAWSの鍵とユーザー名とIPアドレス〜〜〜

自分のアプリにいき

$ cp app/assets/fonts/* public/assets

本番環境ではpublicの下にassetsになる

assets下にコピーして持ってきた。

それを確認

$ ls public/assets
soft-190a1a8da7a6e1b55869608ae297bbfa9f25f921ef63f86646eef087e47530eb.ttf
soft-190a1a8da7a6e1b55869608ae297bbfa9f25f921ef63f86646eef087e47530eb.ttf.gz
soft.ttf

コピーされている。

これでブラウザをリロードするとまだ見つからないとエラー

その原因はCapistranoを使ってデプロイしているので自分のアプリの直下にあるcurrrentにコピーしてこないといけなかった

ターミナルで自分のアプリ内で

$ sudo vi /etc/nginx/conf.d/アプリ名.conf

と入力すると

下の方に

 location ^~ /assets/ {
          省略
         /、、、/.../.../アプリ名/current/public;
    }

assetsの下はアプリ名/current/publicになっている

Capistranoを使うとgithubに上がっているアプリを日付のついたフォルダにしまって、それにcurrentと名前をつけて常に最新版をデプロイするようにしてくれている?らしい。この辺りはまだ理解できていない

ターミナルで

$ ls -al

入力すると

06:24 current -> /〇〇/〇〇/〇〇/releases/20200513062433

こんな感じのが見れる

$ ls -alt

すると

06:24 20200513062433
05:09 20200513050925
01:44 20200513014420
12:48 20200512124820
12:42 20200512124154

デプロイした回数だけ出てきた

結局のところ
EC2で自分のアプリから

$ cd current
$ cp app/assets/fonts/* public/assets

このようにすることで問題が解決した。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1