6月だ
Merged e1fdac3e9a173c05c7fd9f5e8bcc255ef4a1e804 from master.
\master/ \なおりますたー!!/
ラップトップにGoogle Drive入れてないっしょ、ファイルのバックアップできないよ、って言われて入れてみたけれど、Google Driveフォルダに入ってるやつらしかバックアップされないのかw OS関連のファイルをバックアップしてくれるものだと勘違いしてましたw
Region and service on AWS for IP addresses · GitHub https://gist.github.com/zunda/06445a6d14e9fc53bc08354a5c8311e0
GitHubのもジストっぽい https://english.stackexchange.com/a/60489
なおりますたーのe1fdac3の直後にUpdate Rails to version 5.1.1とか入っててこれはいろいろありそうだ (なかみはみてない) https://mastodon.zunda.ninja/media/TdbFCtRGiixjV2OSk_M
Merged 10768aa20418a5c3d547da33d80b9ebe3f34efb0 from master.
\マスター/ \こわれてませんですたー/
お?
method=GET path=/api/v1/timelines/public format=*/* controller=Api::V1::Timelines::PublicController action=show status=500 error='NameError: uninitialized constant ActiveModel::Type::Text'
Rollbackしますたー
Running release command...
▸ Response code 416 (Range Not Satisfiable)
ええっ
Backtrace:
NameError (uninitialized constant ActiveModel::Type::Text):
app/controllers/application_controller.rb:76:in `cache_collection'
app/controllers/api/v1/timelines/public_controller.rb:22:in `cached_public_statuses'
app/controllers/api/v1/timelines/public_controller.rb:16:in `load_statuses'
app/controllers/api/v1/timelines/public_controller.rb:9:in `show'
キャッシュの問題かな
method=GET path=/api/v1/timelines/public format=html controller=Api::V1::Timelines::PublicController action=show status=200
うまくいってる例
method=GET path=/api/v1/timelines/public format=*/* controller=Api::V1::Timelines::PublicController action=show status=200
うまくいっている例 (10768aa20418a5c3d547da33d80b9ebe3f34efb0)
5月分のこのインスタンスのHerkou分の費用は、やはり$16でした。$0.32はHeroku CIで遊んだぶん。 https://mastodon.zunda.ninja/media/dAzvzMVPUnmOxvJEZso
AWS分の5月の費用は$0.05。us-east-1からカナダへのデータ転送0.000181GBが$0.01、S3へのリクエストが無料分2000に加えて超過分8832で$0.04とのこと。無料枠がなくなったらどうなるか知りたいよねgkbr https://mastodon.zunda.ninja/media/JrAXx-6oqmQvlyY7nMo
@hatabowyou pkgconfigが無いのが問題ではなかったのかもですね…。
エラーはyumとかsydtemdが必要としているパッケージをアンインストールしようとして出ているように思います。
パッケージの再インストールではあまり状況は改善しなさそうな気がします。アプリをビルドしようとしたときのエラーをもう一度見直してみるといいかも。
@hatabowyou gemのビルド中かな?以前のようにどこかにログファイルが残されていると思うのでその中身を見てみると具体的な原因がわかるかもしれません。
このインスタンスの運用費用のまとめを更新しました。AWSの無料枠がおわるまでは$16.05/月前後になりそうです
https://github.com/zunda/mastodon/wiki/CostConsiderationsOnHeroku
$ rake secret
で起動されるrakeコマンドはOSにインストールされているもので、Mastodonのためにbundle installされたものとは別のバージョンのものです。which rakeすると/usr/bin/rakeなどと表示されると思います。bundle installされたコマンドを使うには、bundle execを実行するコマンドの前に足すとよいです。
$ bundle exec rake secret
すると、Mastodonのために./vendor/bundle以下にインストールされたrakeコマンドを使ってもらえます。
Good luck!
@hatabowyou 脊髄反射で確認せずにお知らせしちゃってすみませんが、export RAILS_ENV=production を実行してからそのままbundle installとかbundle exec rakeとかを実行したらどうなるでしょか?
Rails関連のコマンドがプロダクション用に実行されたり開発用(RAILS_ENV=development)に実行されたりちぐはぐになっている気がします。
@ykzts go言語を発表したてのGoogle I/O (たぶん2011年、もしかしたら2013年)でRob Pikeさんに、go言語のマスコットはどうしてプロトコルの名前なの?って訊ねたことがあります。残念ながらどんな回答をもらったか忘れちゃったのだけど、gopher (プロトコル)はもちろん知ってるよ、とのことでした。何か理由があってわざわざ同じ名前にしたんだよな…
Heroku脳で
$ docker-compose run --rm web bash
してなかなか起動しないのにどきどきしている
[FATAL tini (121)] Executing child process 'bash' failed: 'No such file or directory'
がっはっは
$ docker-compose run --rm web ruby -v
Starting mastodon_redis_1 ... done
Starting mastodon_db_1 ... done
Creating mastodon user (UID : 991 and GID : 991)...
Updating permissions...
Executing process...
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux-musl]
$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
Dockerの内外で使ってるruby違うんだね
@hatabowyou うひゃー。むっちゃ関係あります。指定のバージョンのRubyを使う必要があります。手元ではrbenvというソフトにruby-buildというプラグインを入れて2.4.1にしてました。
このDockerの外でいちどrakeが走るようにする手順はrake secretを実行するために必要だと思うのですが、もしかしたらrake secretを実行しないで`ナントカ_SECRE`を適当な文字列にしておいて、いきなりdocker-compose buildをしてもいいんじゃないかと思い始めてます (dockerよくわからないし未確認ですが…
@hatabowyou https://github.com/bundler/bundler/issues/5655#issuecomment-301455330 でruby -vが2.4.1になると思うのですが…。うーむむ
Dockerでビルドする最小の手順を探してみようかな
Ubuntu 17.04に追加で入れてあるパッケージ:
- build-essential
- ccache
- golang-1.8-go
- heroku
- libpq-dev
- libreadline-dev
- libssl-dev
- mailutils
- nodejs
- pkg-config
- postfix
- vim.nox
- w3m
- zlib1g-dev
- https://get.docker.com からdocker-engine
- https://github.com/docker/compose/releases/download/1.13.0 からdocker-composeバイナリ
v1.4.xのMastodonをbundle installするのに必要なprotobuf-compiler libprotobuf-devと依存パッケージは消しておいてみる。
Ubuntu 17.04でpython-pip入れようとするとpython2.7がいもづってくるのどゆこよ
git cloneしたレポジトリは
$ git clean -dxf
で掃除しておいてhttps://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Docker-Guide.md を見ながら最初のrake secretを省けるか試そう。
念のため .ruby-version で指定されているrbenvのrubyも消しておく
$ rbenv uninstall 2.4.1
rbenv用のPATHも消して、
$ which ruby
/usr/bin/ruby
$ ruby -v
ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu]
$ git checkout v1.4.1
$ cp .env.production.sample .env.production
このファイルは編集しないで、えいやっと:
$ docker-compose build
:
Successfully tagged gargron/mastodon:latest
できるじゃん。
$ vi .env.production
して、
PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=
のそれぞれの行の最後に、
docker-compose run --rm web rake secret
をそれぞれ実行して表示された長い16進数をコピペする。
んで、
$ docker-compose run --rm web rake db:migrate
$ docker-compose run --rm web rake assets:precompile
$ docker-compose up
これで http://<作業マシン>:3000/ にアクセスできるようになりました(httpsにリダイレクトされて終了する)。
.env.productionでLOCAL_HTTPS=falseにして docker-compose upすればリダイレクトは起きない。
@hatabowyou bundle exec rake specの実行をしないでDockerのイメージを作る段階まで行けそうです:
$ cp .env.production.sample .env.production
(編集はしない)
$ docker-compose build
.env.productionを編集して
PAPERCLIP_SECRET=
SECRET_KEY_BASE=
OTP_SECRET=
の各行に、
$ docker-compose run --rm web rake secret
をそれぞれ実行して表示された長い16進数をコピペする。
$ docker-compose run --rm web rake db:migrate
$ docker-compose run --rm web rake assets:precompile
んで、.env.productionのLOCAL_HTTPS=で始まる行をLOCAL_HTTPS=falseにして
$ docker-compose up
すれば http://<作業マシン>:3000 が文字
というわけでDocker大変そうだなあ、と思っていた印象の一部はビルド手順をよく読まないとコンテナ外でbundle installを済ませないといけないように見えるのが原因な気がしてきました。これでちょっと良くなるといいな https://github.com/tootsuite/documentation/pull/287
@zundan mergeしてもらえました!というわけでコンテナの外でrakeが動くようにする必要は ありません よ!みなさん!
Rails 5.1.1にするとキャッシュが不整合になることとクリア方法の確認、失敗編
5.1.1になる前のMastodonをデプロイする
$ git push -f heroku-experiment e1fdac3e9a173c05c7fd9f5e8bcc255ef4a1e804:master
アプリを閲覧してtootする。
5.1.1になったMastodonをデプロイする
$ git push -f heroku-experiment 2212dc4aaa6de729d2fe3e39b134b566935b11b7:master
アプリを閲覧してtootする。
これでエラーになると思ったのにならない。
Special offerあり版のKindleを日本のアカウントで使ってるとロック画面があんまりひどいので$20払ってspecial offerなしにすることにした。Deregisterしてアメリカのアカウントに紐付けてunsubscribeして、deregisterして日本に戻した。
アメリカのKindle unlimitedの広告が出るようになったw
そのうち消えますように。
v1.4.1タグから出発してもエラーにならないなあ。もっと古いキャッシュが残ってるのかな?
Merged 10768aa2 and seeing the error again under app/controllers/:
method=GET path=/api/v1/timelines/public format=*/* controller=Api::V1::Timelines::PublicController action=show status=500 error='NameError: uninitialized constant ActiveModel::Type::Text'
application_controller.rb:76:in `cache_collection'
api/v1/timelines/public_controller.rb:22:in `cached_public_statuses'
api/v1/timelines/public_controller.rb:16:in `load_statuses'
api/v1/timelines/public_controller.rb:9:in `show'
Clearing the cache seems to have fixed the problem.
$ heroku run rails c -a zundan-mastodon
irb(main):001:0> Rails.cache.clear
=> nil
ブラウザからは期待どおりアクセスしてるけどSubway tooterからは404のURLにstreamを取りに来てるんだ
@Clworld Subway tooterを起動してると method=GET path=/api/v1/streaming format=html controller=ApplicationController action=raise_not_found status=404 といった感じのレスポンスが記録されるようです。Herokuで運用しててstreaming APIは別のアプリで受けてるのですが、Subway tooterからのリクエストは本体のアプリに来てしまっている感じです。
インスタンスの応答が遅いのとスワップに突っ込んでるのと関連がないんだよなあ。RedisとかPostgresとかマルチテナントだからしょうがないのかなあ(NewRelicを入れたくなる)