AWS Lightsailのプラン変更その後【#np2020】

amazon_lightsail.pngのサムネイル画像 先日、サーバのパフォーマンスが落ちてきたのをカバーするためにLightsailのプランを変更しました

変更前(月$3.5)

  • メモリ:512MB
  • vCPU:1
  • ストレージ:20GB SSD
  • 転送量:1TB

変更後(月$5)

  • メモリ:1GB
  • vCPU:1
  • ストレージ:40GB SSD
  • 転送量:2TB
スペックとしてはメモリが倍になったぐらいでそれほど大きな違いはなかったのですけど効果は絶大で、変更から4日経ってそれまであったようなもっさり感は全くなくなりました。Lightsailは切り詰められたプランであるだけに、その辺シビアなのかも知れませんね。ちょっとでも余裕なくなると途端に重くなる的な。今後、メインブログの移行が控えているので、もしかするともう一段階スケールアップするかも知れません。 その場合はこんな感じ。

月$10のプラン

  • メモリ:2GB
  • vCPU:1
  • ストレージ:60GB SSD
  • 転送量:3TB
メモリがさらに倍になって2GBに。$3.5のプランからすると4倍です。 CPUが変わらないのにこれだけ楽になったと言うことは、CPUに比べてメモリが貧弱すぎるっていう面もあるのかも知れません。EC2ならt3.micro(インスタンス月$7.5)でさえメモリ1GBあるもんなー。月$5で満足出来ないようであれば、t3.small当たりをリザーブドインスタンスで使う(月$8.6)っていう方法もあるのかも知れないですね。たぶんしなくても大丈夫だとは思うけど。 もし問題がデータベースのスペックだった場合には、そのスケールアップも考えなくてはいけないのですけど、LightsailのDBは選択肢が少なくて月$15の次は月$30でちょっと費用上昇度合いが大きい(それでもRDSに比べるとかなり安いけれど)ので、そちらは「これはデータベースのスペックが足りないせいだ」と確信が持てるまではスケールアップしないかなあと思います。 なるべくなるべく小さく低コストで。 個人向けには比較的高コストになりがちなAWSにおいて、その需要を満たすためのサービスがLightsailだと思うので。

それはそれとしてLightsailのメトリクスをCloudWatchと連携させたいなあ

今のところ出来なくて、今はLightsailはLightsail専用のコンソールに入らないといけないんですけど、それがちょっと邪魔くさいというか。ある程度隔離された格安サービスなんで仕方ないと思いつつ、そのうち出来るようになるんじゃないかなと思って期待してます。もしそれが出来るようになれば、もうちょっと効率的にLightsailのパフォーマンス監視が出来ると思うので……

続きを読む

AWS Lightsailのプランを変更 【#np2020】

amazon_lightsail.pngのサムネイル画像 先週ぐらいからサーバがもっさりすることがあって、放って置いても直らずインスタンスを再起動すると戻るんだけど2日したらまたもっさりの繰り返し。良く言われるCPUクレジットの話かなと思ったけれど、Lightsailのメトリックス見るとCPU使用量はかなり低い(3%前後)ので多分その可能性はない、DBかなあと思ったけれどそっちも同じ。おかしいなと思いつつメモリの使用量を見てみると、メモリの使用量が大きくなってて、うわヤバい何かやっちゃってる……?と思ったけどそうじゃありませんでした。一番安いプランのままだったよ……

「1ヶ月無料だし、最初は一番安い月$3.5のプランで様子見てみよう」
と思って始めて、そのまま変えるの忘れてたんでした。今までメモリ2GBと1GBのサーバ2台でやっていたところ、メモリ512MBのサーバ1台に移動したんだからそりゃ無理ってもんだ。アクセス数は極少数とは言え、WordPressも動いてるし。メモリが問題と特定出来たわけではないけれど、少なくともこのスペックで運用し続ける予定ではなかったのでプラン変更することにしました。

続きを読む

【AWS】 サブドメインなしのドメインをCloudFrontでSSL対応させる 【#np2020】

aws_logo_smile_1200x630.pngのサムネイル画像 AWSの「CloudFront」を使って格安(SSL証明書は無料)でSSL対応するという記事を以前書きました。 Amazon LightsailとAmazon CloudFrontを使ってSSL対応【#np2020】 | mutter 実際運用してみると、CloudFrontに掛かる費用は12ヶ月間の無料枠内に収まっていてしばらくは無料、無料枠がなくなったあとの料金を試算してみても月$1いくかどうかぐらいなので、Route53に掛かる料金を考えてもかなりお得です。これで全ドメインの全サブドメインをSSL化出来ているので。

続きを読む

【CentOS】ターミナルに「You have new mail in /var/spool/mail/vagrant」と表示されて鬱陶しい【Vagrant】

centos.png ローカルのVagrant上で作業しているとき、ターミナルで何か処理をするごとに「You have new mail in /var/spool/mail/vagrant」と表示されるようになった。多分ローカルのcrontabがエラーでも吐いているんだろうと思うんだけど、確認出来ないし削除出来ないし鬱陶しい。どうしたもんか。

とにかくメールを見てみる

メールを開くためにはmailコマンドが使えないとダメらしい。あいにく
$ mail
-bash: mail: command not found
とのことだったので、mailコマンドを使うためにmailxというアプリケーションをインストールする。
$ sudo yum install mailx
するとmailコマンドでメールの一覧が見れるようになる。
$ mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/vagrant": 2452 messages 2452 new
>N  1 (Cron Daemon)         Wed Feb 13 05:00  25/1065  "Cron <vagrant@nobodyp"
N  2 (Cron Daemon)         Tue Feb 19 09:00  25/1065  "Cron <vagrant@nobodyp"
N  3 (Cron Daemon)         Wed Feb 20 01:30  34/1435  "Cron <vagrant@nobodyp"
N  4 (Cron Daemon)         Thu Feb 21 04:18  30/1445  "Cron <vagrant@nobodyp"
N  5 (Cron Daemon)         Tue Feb 26 04:05  30/1445  "Cron <vagrant@nobodyp"
N  6 (Cron Daemon)         Thu Feb 28 04:00  25/1065  "Cron <vagrant@nobodyp"
N  7 (Cron Daemon)         Tue Mar 12 07:30  25/1065  "Cron <vagrant@nobodyp"
N  8 (Cron Daemon)         Tue Mar 19 00:00  25/1056  "Cron <vagrant@nobodyp"
N  9 (Cron Daemon)         Tue Mar 19 03:49  30/1445  "Cron <vagrant@nobodyp"
N 10 (Cron Daemon)         Tue Apr 16 03:03  30/1445  "Cron <vagrant@nobodyp
どうやら全部で2,452通も溜まっているらしい。マジか。一応チェックしたけど、ローカルでテストしてたRSSリーダーの更新エラーだった。今はもう新しい環境の方で構築していてローカルのRSSリーダーは止めているので必要ない。というかそれ以前に、crontabの結果がここに送られてきているのがおかしい。

crontabに宛先を設定

ローカルとは言え一応エラーは受け取りたいので、設定をしておく。
$ crontab -e
最上部に以下を書く。
MAILTO="hoge@gmail.com"
これで結果はここに送られるはず。

メールを一括削除

何通か見てみたけど全部同じっぽかったので、一括削除。 mailコマンドに一括削除ってあるのかなと思ったけど、メールの削除はあっても一括削除はないので、これで削除。
cat /dev/null > /var/spool/mail/vagrant
$ mail
No mail for vagrant
綺麗になった。

参考

Linux や mac で You have new mail in … と表示される | uuutee.log

続きを読む

【メモ】Chefがバージョンアップしてライセンスエラーが出るようになった【#np2020】

「Chef」が100%オープンソースに | OSDN Magazine

設定管理ツール「Chef」を開発する米Chefは4月2日、Chefソフトウェアを完全にオープンソースとして公開することを発表した。ライセンスはApache License 2.0で、商標ポリシーが守られている限りソースコードの使用、配布、収益化に制限を設けないという。  Chefはこれまでコア部分のみがオープンソースとして提供されていたが、今回プロダクトコードのすべてをオープンソースとする。これによりコミュニティの目標とChefの目標を連携させることができ、より良いソフトウェアの構築につながると期待を寄せている。  ライセンスは、Chef Infra、Chef InSpec、Chef Habitatと一貫性のあるApache License 2を採用、商標ポリシーが守られている限り、ソースコードの使用、配布、収益化に制限を設けないとしている。今後、Chefチームが生成するソフトウェアはすべてオープンなリポジトリに入り、ロードマップなどの製品開発プロセスについてもオープンにしていくという。

Chefがオープンソースになった影響なのか、ver.15からライセンスへの同意を設定ファイルに含めないといけなくなったらしく、そのままではエラーが出て動かない。
==> default: Chef Infra Client cannot execute without accepting the license Chef never successfully completed! Any errors should be visible in the output above. Please fix your recipes so that they properly complete.
ドキュメントを読むとvagrantではこう追加せよとあったのでやってみたんだけど……

Accepting the Chef License — Chef Docs

Vagrant This license acceptance can be done via the arguments API:

config.vm.provision "chef_zero" do |chef|
chef.arguments = "--chef-license accept"
end
怒られた。
==> default: /opt/chef/embedded/lib/ruby/gems/2.6.0/gems/mixlib-cli-2.0.3/lib/mixlib/cli.rb:230:in `parse_options’: invalid option: –chef-license (OptionParser::InvalidOption)
「–chef-license」っていうオプションなんか知らねーって言われてるみたい。多分、何かをアップデートしたら動くようになるんだろうなと思いつつ、面倒くさかったのでドキュメントにあったもうひとつの方法「Chefのバージョンを固定する」を試す。
config.vm.provision "chef_zero" do |chef|
chef.version = "14.12.3"
end
無事、vagrant起動。初めからこうしておけばよかったんや…… とはいえ、バージョンアップしないというのもアレなので、そのうち何かしたいと思います。どうしたらいいかわかんないけど。誰か教えてください。

続きを読む

【メモ】LaravelでBASIC認証

LaravelLogo.pngのサムネイル画像 認証が必要なページを作るんだったらきちんと認証システムを使って設計しましょう……とは思うんですけど、それほどセキュリティが必要ではないけれど閲覧は制限しておきたいみたいなページってたまにあって(管理用のショートカット集とか実験用スペースとか)、いちいちDBにユーザー設定してってスルの面倒くさい。相変わらず今でもApache使ってるんだし、出来ればBASIC認証でやってしまいたい。 でもフレームワークとBASIC認証ってどうやって共存させたら良いんだろうか。publicディレクトリに.htaccess置いて、ルーティングと同じ設定を書くのはちょっとスマートじゃないし面倒だし…… ……なんて思いながらググったら、Laravel用にまさにそのためのライブラリがあってビビった。すごいな。

Laravelで簡単にBasic認証を設定する |

LaravelでBasic認証を設定する方法をご紹介。本来Basic認証を設定する場合は、.htaccessに記述してhtpasswdを設置して…等が必要なのですが、こちらで紹介する`l5-very-basic-auth`を使えばLavavel側の設定だけでBasic認証をつけることができます。ちなみに使ったことがないですが、Laravelにはauth.basicというものが標準で提供されているようですが、こちらはDBが必要になるみたいでこれはこれで手間っぽいです。

詳しい話は上記記事を参考にしてみてください。僕は何も考えずに最新版の「Laravel 5.8」を入れてしまっているんですけど、書かれている内容そのままできちんと動きました。Vagrant上の仮想サーバだけでなく実サーバでも確認済み。 気になる点としては、configファイルにパスワードを平文で書くってことですかね…… BASIC認証はそもそもが簡易的なシステムなんだしまあいっか。 大事な情報は置かないようにしましょうね。はい。

続きを読む

【メモ】npm「package-lock.json」がコンフリクトしたら

npm ローカル環境で環境に変更を加えてpushしようと思ったら「package-lock.json」がコンフリクト。どうやら別のローカル環境で行った変更をマージするのを忘れていたみたい。これは面倒なことになった……と思ったのだけど、どうやら普通に

$ npm install
とするだけで勝手に直してくれるらしい。マジか。

やってみた

npm WARN conflict A git conflict was detected in package-lock.json. Attempting to auto-resolve.
npm WARN conflict To make this happen automatically on git rebase/merge, consider using the npm-merge-driver:
npm WARN conflict $ npx npm-merge-driver install -g
などなどと表示され、
updated 1 package and audited 16936 packages in 22.821s
found 0 vulnerabilities
問題なく終了! そのままマージコミットして事なきを得ましたとさ。 慌てて手作業で直し始めなくて良かった。素晴らしすぎ。 これに限らず今さらながら様々な自動化の恩恵を受けている気がします。モダンな開発環境、ステキ。 あと、
Attempting to auto-resolve.
っていう言い回しが控えめでとても好き。

参考

npm installでコンフリクトしたpackage-lock.jsonを自動でresolveしてくた – nwtgck / Ryo Ota package-lock.jsonについて知りたくても聞けなかったこと – Qiita

続きを読む

【メモ】Vagrant上のAdminerで「不正なCSRFトークン。再送信してください」エラー

adminer.png Vagrant上に入れたAdminerでデータベース操作をしようと思ったら以下のエラーが。

不正なCSRFトークン。再送信してください
まあセッションの権限に問題あるよねということで調べると、セッションディレクトリ「/var/lib/php/session」の権限は以下のようになってました。
Access: (0770/drwxrwx---)  Uid: (    0/    root)   Gid: ( 1000/ apache)
WordPressなど共有ディレクトリの権限問題を解決するために、このローカルサーバのApacheは、
User: vagrant
Group: vagrant
で動いています。 途中で変えたので、このセッションディレクトリのように権限が上手く行っていない場所があるんですね。なるほど。

続きを読む