独自ドメインからRoute53でCloudFrontにAレコードを設定したときに、SSL関係のエラーが出た時の対処方法

現象 独自ドメインから、Route53でCloudFrontにAレコードを設定した その後に独自ドメインから、upした画像にアクセスするとSSL関係のエラーが発生する curl -vv https://example.com/E4Tvj0mUUAEWnW8.jpeg * Trying ***.***.***.***... * TCP_NODELAY set *…

サーバメンテナンスのときには、503(Service Unavailable)を返して、さらに Retry-After ヘッダー をつけておくと安心かも

SEO

まとめ メンテナンスページを出す時には、503(Service Unavailable) を返す Retry-After ヘッダーに復旧日時を入れておくと、復旧後に見に来てくれるようになる Retry-After ヘッダーが無いまま、長期間 503 を返すと、クローラーはサーバが復旧しないと思っ…

EC2インスタンスの再起動と停止/起動のちがい

先に結論 ここに書いてあるとおり docs.aws.amazon.com 再起動: インスタンスは、同じホストコンピュータで保持される 停止/開始: インスタンスは新しいホストコンピュータに移動されます メンテナンスでEC2のハードウェア退役や再起動する場合は、停止/起動…

複数バージョンのbundlerがインストールされている時の挙動おぼえがき

概要 複数バージョンのbundlerがインストールされているとき、どれが選択されるのか曖昧だったので実験 注意 公式ドキュメントの記述がみあたらなかったので、バージョンが変わると挙動が変わるかもしれないです 環境 ruby:3.0.1-alpine を使用。defaultで入…

elasticbeanstalkのプラットフォーム(ruby puma)のバージョンを上げると、nio4r の依存関係でエラーが発生する件

elasticbeanstalkのプラットフォーム(ruby puma)のバージョンを上げると、こんなエラーが出るようになる /opt/rubies/ruby-2.7.3/lib/ruby/site_ruby/2.7.0/bundler/runtime.rb:302:in `check_for_activated_spec!': You have already activated nio4r 2.5.7…

Nginxのデバッグログを取る方法

Nginxの内部転送の設定がうまく行かない時とかにデバッグログは便利なのですが、その設定方法をよく忘れるのでメモ エラーログのログレベルを debug にする error_log /dev/stdout debug; 内部転送を出力するように設定 rewrite_log on; Nginxをデバッグモー…

CORSの理解が不足していたのでメモ

CORSって何? CORS: Cross-Origin Resource Sharing オリジン間リソース共有 オリジンって何? 同じところからのリクエストであるかを判別するための方法 URIの、scheme、host、portが一致していると、それは「同一オリジン」である scheme、host、portとか、U…

Amazon Linux2 に MySQL5.7のクライアントを入れる方法

踏み台サーバに手動で入れる必要が出たので個人的なメモ 参考 dev.mysql.com dev.classmethod.jp だいたいここの通りにやればOK 前提1 Amazon Linuxでは、いくつかのパッケージを Extras Library として提供しているが、MySQLは提供していない(mariadbはある…

logrotateおぼえがき

RHEL系のお話です 全体設定ファイル /etc/logrotate.conf ローテーションごとの設定ファイルが置かれるディレクトリ /etc/logrotate.d/ dryrun /usr/sbin/logrotate -dv /etc/logrotate.conf 手動実行(root権限で実行すること) /usr/sbin/logrotate -f /etc/…

NATインスタンスとNATゲートウェイの料金比較メモ

AWS

料金の内訳 NATインスタンス インスタンス料金 データ転送料金(インターネットへのデータ転送 詳しくはこちら → https://aws.amazon.com/jp/ec2/pricing/on-demand/#Data_Transfer NATゲートウェイ NAT ゲートウェイの時間単位料金 東京リージョンで 0.062US…

Railsのメンテナンスポリシーおぼえがき

2021/01/12 現在 基本的にはここ見ればOKです guides.rubyonrails.org ポイント Railsはセマンティックバージョニング バグ修正は最新バージョンのみ (2021/01/12 現在、 6.1.Z ) セキュリティFIXは、メジャーシリーズ全てと、1つ前のメジャーの一番最後のマ…

Linuxの時計まわりのおぼえがき

対象OS 設定ファイル周りについては、Amazon Linux AMI や CentOS6系以前のお話 ただし、クロックそのもの話は各Linuxでもだいたいおんなじなはず クロック周りのはなし 時計。Linuxは2種類のクロックをもつ ハードウェアクロック システムクロック ハードウ…

Amazon Linux AMI でのタイムゾーンの変更方法

Amazon Linux AMI でのタイムゾーンの変更方法 先に結論 /etc/localtime だけを変更しても、マシンの再起動やglibcの更新でタイムゾーンがUTCに戻る そうならないために、 /etc/sysconfig/clock の設定も必要 手順 公式ドキュメントを参照 docs.aws.amazon.c…

Red Hat系Linuxディストリビューションの歴史とCentOS Streamについて調べた

2020年LCLアドベントカレンダーの10日目です! qiita.com 経緯 2020/12/08 に CentOS から「今後は CentOS Stream に開発リソースを集中し、CentOS 8 のEOLを2021年末とする」という発表がありました news.mynavi.jp twitterなどではいろいろな意見が出ていた…

OpenSSLのリリースストラテジを調べた

OpenSSLの最新バージョンはいくつ? 今サポートされているバージョンはどれ? いつまで? とかわからなかったのでまとめる 先に結論 2020/12/10 現在 最新版: OpenSSL 1.1.1 (LTS) サポートされているバージョン 1.1.1 〜 2023/09/11 1.0.2 サポート切れだが、…

root権限を持たないユーザで 80番ポートを開放しようとすると怒られる理由

Dockerfileをベストプラクティスに沿って作るとそうなりがち docs.docker.com 理由 0〜1023 までのポートは well known port と呼ばれ、開放にroot権限が必要なため そういう場合に8080を選ぶ理由 8080は、非rootユーザがwebサーバを立てる時の使うポートと…

ローカルでAWS Lambda ランタイムと(ほぼ)同様の環境でserverlessを動作確認する方法

先に結論 --docker オプションを使う serverless invoke local --docker --function hoge 解説 --docker オプションを使うと、AWS lambda が公式に配信しているDocker でシミュレートされた Lambda 環境 ( lambci/lambda ) をつかって、serverlessをローカル…

cookieのSameSite属性 おぼえがき

same 経緯 cookieにはSameSiteという属性があって、これがChrome80からデフォルトの扱いが変わった 正確には変わる予定だったが、コロナの影響で変更は先延ばしにされて、2020/07/14 のChrome84から変更されるようになった。なお、83, 81, 80 にも適時適用さ…

TLSおぼえがき

TLSってなに? Transport Layer Security(トランスポート・レイヤー・セキュリティ、TLS)は、インターネットなどのコンピュータネットワークにおいてセキュリティを要求される通信を行うためのプロトコルである。主な機能として、通信相手の認証、通信内容…

Terraform でランダムなパスワードを設定する方法

方法 モジュール random_password を使う https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/password ほぼ同じ random_string もある。 random_password は生成結果を標準出力に出さないため、 random_string よりセキュア …

Terraform と Terraform Cloud について理解し直す

久しぶりに使うことになったのでアンラーニングを兼ねてメモ Terraformって何? クラウドインフラに対するinfrastructure as code。クラウドインフラの設定をコード化して、保存/実行できる www.terraform.io infrastructure as codeできると何が良いの? コー…

dockle の警告 `CIS-DI-0008` をどのように処理すべきか考えた

dockle って? コンテナイメージのセキュリティチェックツールです。ビルドしたImageを通すと、セキュリティ的に問題がある部分を指摘してくれます github.com 警告 CIS-DI-0008 って? これですね CIS-DI-0008: Remove setuid and setgid permissions in the …

パイプを使うと最後の処理が成功すると戻り値は0になるので、`pipefail` を使ったほうが事故が少なくなるよというお話

コード例 #!/bin/bash -e exit 1 | echo "a" echo "b" 実行結果 a b -e オプションで、行単位で失敗したら終了するはずなのに、 echo "b" が実行されてしまっている...! 解説 pipeを使う場合、一番右側の処理の戻り値で行の成功/失敗が判定される exit 1 | e…

UnicornとNginxの接続方法は、UNIXドメインソケットとリバースプロキシの2つの方法がある

UNIXドメインソケット 単一マシン上の高効率なプロセス間通信に用いられる機能・インターフェースの一種である UNIXドメインソケット - Wikipedia ファイルシステムを介してプロセス同士の通信を行う仕組み 普通にリバースプロキシするより高速だが、ファイ…

docker-slim で 任意のバージョンの ImageMagickを入れる方法

レガシーなシステムをDocker化するときにたまによくやるのでメモ 多分、Aplineでもおんなじだと思う 方法 コードからmakeする ARG IMAGE_MAGICK_VERSION=${好きなパージョン} RUN wget --quiet https://imagemagick.org/download/releases/ImageMagick-$IMAG…

Rails on Docker での PostgreSQL & unicorn が動く開発環境のメモ

自己学習のためにざっくり作ってみた 個人的には、本番はUnicornでも開発環境ではPumaでいいんじゃないかな...って思っている SQLは合わせたほうが良いと思うけど 前準備 experimentalな機能を使うので環境変数を予め設定しておく .envrc export DOCKER_BUIL…

PumaとUnicornの違い

前提 どちらもアプリケーションサーバ(アプリケーションを動作させるためのサーバ) アプリケーションサーバーは送られてきたリクエストに対して、rubyやphpなどを実行して、動的な処理をした結果を静的な要素に変換してwebサーバーに返すためのもの。つまり…

Alpine Linux で欲しいファイルを持っているパッケージを探す方法

Alpine Linux で gem install をした時のエラーメッセージから不足しているファイルを見つけて、それを持っているパッケージを探す方法を記します native extension を持っている gem install を失敗する時、こんなエラーメッセージが出ます 例: gem pg イン…

Alpine Linuxのパッケージ管理システムapkについて理解を深める

APK is 何? apk = Alpine Linux package management Alpine Linuxのパッケージ管理システム パッケージって何? Linuxが採用しているアプリケーションの配布形態。アプリケーションによっては、正常に動作させるためには「ライブラリ」と呼ぶ別のプログラムを…

Dockerfileで apt-get upgrade するのは止めたほうが良いとベストプラクティスに書かれていた

Dockerfile best practices によると... Avoid RUN apt-get upgrade and dist-upgrade, as many of the “essential” packages from the parent images cannot upgrade inside an unprivileged container. If a package contained in the parent image is out…