[インフラ] Serverspecでできること

昨日ざっくり試してみたServerspecだけど、具体的にどんなテストが出来るのだろうか。

Serverspecのテストファイルは以下の形式で記述する。

リソースタイプとテスト条件については、以下の公式ページにまとめられている。

Serverspec – Resource Types
https://serverspec.org/resource_types.html#php_config

自分が使いそうなリソースタイプを抜粋してみると以下。

  • command
  • cron
  • file
  • host
  • mail_alias
  • package
  • php_config
  • process
  • port
  • selinux
  • selinux_module
  • service
  • user

コマンドの実行結果をチェックしたり、ファイルやディレクトリの存在や属性もチェックできるので、システム設定に限らず、アプリケーションの動作確認をするのにも役立ちそう。

[インフラ] Serverspecをざっくり試す

サーバーテストの自動化ツールとして評判の高い、Serverspecをざっくり試してみた。

テスト環境

  • VPSプロバイダ: DigitalOcean (リージョン: SFO3)
  • マシンタイプ: Shared CPU (1 CPU, 1 GB RAM)
  • OS: CentOS 7 x64

セットアップ

Serverspecではローカルとリモートの両方のマシンのテストを行えるが、今回はローカルマシンのテストのみ行ってみた。マシンを作成したら、テスト対象としてApacheをインストールして実行しておく。

Serverspecの実行にはRubyが必要なので、Rubyをインストールしてから、serverspecのgemをインストールする。

Serverspecのインストールが完了したら、テストの雛形を作成する。

作成されたテストの雛形は以下の通り。予備知識無しでも内容が想像できるシンプルなコードだ。

テストを実行すると全て成功。

Apacheを停止して再度テストを実行したら、今度はきちんと失敗した。

なかなか良さげなツールだ。ただ、自分にとってはアプリでRubyを使っていない環境に、テスト用途だけでRubyをインストールするのがちょっと重荷かもしれない。

参考サイト

Serverspec – Home
https://serverspec.org/

「Serverspec」を使ってサーバー環境を自動テストしよう | さくらのナレッジ
https://knowledge.sakura.ad.jp/2596/
2022-03-10

Serverspec のインストールと基本的な使い方 – Qiita
https://qiita.com/Tocyuki/items/5ce5250407da48886e45
2017-06-02

[インフラ] IPv4からIPv6への移行は必要なのか?

2023年7月下旬のAWSブログに以下の記事がポストされた。

New – AWS Public IPv4 Address Charge + Public IP Insights | AWS News Blog
https://aws.amazon.com/blogs/aws/new-aws-public-ipv4-address-charge-public-ip-insights/

Amazon、AWSでのパブリックIPv4アドレス利用に課金。2024年2月から – PC Watch
https://pc.watch.impress.co.jp/docs/news/1520212.html

2024年2月1日よりパブリックIPv4アドレスに課金を行うとのこと。理由は、IPv4アドレスが希少資源となり取得コストが増大していること、それを踏まえてIPv6の採用をユーザに勧めるためということらしい。しかし、周囲で聞きまわってみると、IPv6化の必要性を主張する人は見つからない。非技術職に尋ねると「ほんとに必要なの?」と言われる始末。

本当にIPv4アドレスは希少資源になっているのか

以下にIPv4アドレス利用に関する統計がある。

IPv4 Address Report
https://www.potaroo.net/tools/ipv4/

これによると、IANA(インターネット番号割当期間)及びRIR(地域インターネットディレクトリ)が管轄するIPアドレスは全て枯渇している。枯渇の意味は、これらの組織が管轄するIPアドレスは全てネット事業者に割り当て済みという意味だと理解する。なので、自分が利用するネット事業者が未使用のIPv4アドレスを持っていれば、サービスを立てる際に割り当ててもらえる。ユーザが増えれば未使用分が減るので、IPv4アドレスはユーザ数の増加に従って希少性が高くなるということか。

IPv6はどれぐらい普及しているのか

IPv6を使ってGoogleにアクセスしているユーザーの割合が公表されている。

IPv6 – Google
https://www.google.com/intl/ja/ipv6/statistics.html

世界的に見て、その割合は40%ぐらいだが、これはIPv6対応しているクライアントの割合がその程度ということなのだろうか。IPv6対応が必要なのはデバイスかもしれないし、回線を提供するキャリヤやプロバイダのインフラかもしれない。

IPv6化を加速するにはどうしたらいいのか

今回のAWSのIPv6への課金発表もその1つの方法だろう。何年も前からこの方法を提案する人もいる。

IPv6がなぜいまだに普及していないのか|Rui Ueyama
https://note.com/ruiu/n/n1676c1053a27
2019年11月4日

しかし、この機会に自分のチームでIPv6化の必要性を議論してみたら、否定はしないけど実施する明確な理由が見つからない、という意見が多く出た。AWSはIPv4アドレスを課金するといっても、課金されて懐が痛むもど大量のIPv4アドレスは使っていない。IPv6化する明確なメリットが見えないと、マネージメントを説き伏せるのは難しい。

参考サイト

IPアドレス枯渇問題 – Wikipedia
https://ja.wikipedia.org/wiki/IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E6%9E%AF%E6%B8%87%E5%95%8F%E9%A1%8C

インターネット10分講座:IPv6アドレス~技術解説~ – JPNIC
https://www.nic.ad.jp/ja/newsletter/No32/090.html
2006年3月発行

IPv6アドレスについて知っておくべき10のこと – ZDNET Japan
https://japan.zdnet.com/article/20423460/
2010-12-01

[Windows] 特定のウィンドウを常に最前面に表示するには

自分は作業しながらメモを書くし、メモを見ながら作業するので、メモ書きアプリの使用頻度が非常に高い。Atl+Tabのキーボード操作で起動中のアプリを切り替えながら操作しているが、メモ書きアプリが他のウィンドウに隠されないように常に最前面に表示できればいいかも。方法を探したらPowerToysを使えばできるみたい。

  1. PowerToysをインストールする
    Microsoft PowerToys – Microsoft Store Apps
    https://apps.microsoft.com/store/detail/microsoft-powertoys/XP89DCGQ3K6VLD
  2. PowerToysを起動
  3. サイドバーから[常に手前に表示]を選択して使い方を読む。
  4. 常に手前に表示したいウィンドウがフォーカスされている状態でWindows+Ctrl+Tを押下。
    ウィンドウの枠線が太線で強調されて常に手前に表示中である旨が示される。

参考サイト

PowerToys – ウインドウを最前面に固定する方法 – Windows 11 / 10 – PC設定のカルマ
https://pc-karuma.net/microsoft-powertoys-always-on-top/

[Webサイト運営] GoAccessでアクセス国を表示するためにGeoLite2をインストールする

昨日の記事に書いたGoAccessでは、アクセス元の国名を併せて表示することができる。そのためにはGeoIPデータベースをインストールしなければならないのだが、幸いなことに無料で提供されているGeoIPデータベースがある。今回はそのインストール手順を覚え書き。

GoAccessの設定ファイル

GoAccessの設定ファイルを見ると以下のように書かれている。

geoip-databaseにGeoIP LegacyまたはGeoIP2のデータベースを指定しろということらしい。ただし、GeoIP Legacyは既に配布終了となっている模様。ということは、選択肢はGepIP2だけ、ということか。

GeoIP2の無料データベースを取得する

設定ファイルに記載されているリンクにアクセス。

GeoLite2 Free Geolocation Data
https://dev.maxmind.com/geoip/geoip2/geolite2/

無料版はGeoLite2という名称らしい。ダウンロードには無料のGeoLite2アカウントが必要とのこと。

GeoLite2 Sign Up | MaxMind
https://www.maxmind.com/en/geolite2/signup

必要事項を記入するとメールが来るので、メール本文のリンクをクリックしてログインし、パスワードを設定したらアカウント作成は完了。

サイドメニューからGeoIP2/GeoLite2 -Download Filesページに移動すると、データベースがダウンロードできる。今回はアクセス元IPの国情報が欲しいので、GeoLite2 Country (tar.gz形式) をダウンロードする。

GoAccess用のセットアップ

ダウンロードしたアーカイブを解凍して、.mmdbファイルを適当なディレクトリに配置する。

あとはGoAccessの設定ファイルでGeoIPデータベースのパスを指定するだけ。

GoAccessを実行して解析ページを生成してみる。[VISITOR HOSTNAME AND IPS]セクションに[COUNTRY]カラムが表示されるようになった。

参考サイト

Industry leading IP Geolocation and Online Fraud Prevention | MaxMind
https://www.maxmind.com/en/home

GoAccess – Visual Web Log Analyzer
https://goaccess.io/

[Webサイト運営] GoAccess – Webログ解析ツール

GoAccessはWebアクセスログを解析して可視化する便利なツールである。

GoAccess – Visual Web Log Analyzer
https://goaccess.io/

インストール

EPELリポジトリからインストールできる。

設定

マニュアルページを参照しながら、Webアクセスログの形式を設定ファイルで指定する。

GoAccess – Manual Page
https://goaccess.io/man#custom-log

自サーバーのApacheだと設定は以下の通り。

実行

解析したいApacheログを切り出してgoaccessに渡すだけ。

ターミナル画面に表示したければ、以下のように指定する。

リダイレクトすればHTMLファイルを作成することもできる。併せて-dオプションを付けると、IPアドレスの名前解決も行ってくれる。

[Laravel] Laravel SailでVSCodeを使う

これまで長らくPhpStormを使用してきたが、次回のライセンス更新を行わずにVSCodeに乗り換えることを検討している。

PhpStormは完成度の高い開発環境だけど、自分はPHP開発を専門に行っているわけではないため、その機能を十分に活用できているとは言えない。また、何年も前からのユーザーなのでPhpStormのライセンス料金は新規ユーザより安いとは言え、無料のVSCodeにはかなわない。

このような理由で、自分の気持ちではVSCodeへの乗り換えを決断していると言っても良いレベルであるが、念のため、移行前にVSCodeの使い心地を確かめておきたいと思う。

WSL2内のファイルを編集するには

試してみると、VSCodeで\wsl2以下のフォルダを直接開くことができた。何か問題が発生することを心配して、念のためにLaravelの公式サイトを調べてみたところ、以下の情報を発見。

Installation – Laravel 9.x – The PHP Framework For Web Artisans
https://laravel.com/docs/9.x#getting-started-on-windows

Developing Within WSL2

Of course, you will need to be able to modify the Laravel application files that were created within your WSL2 installation. To accomplish this, we recommend using Microsoft’s Visual Studio Code editor and their first-party extension for ==Remote Development==.

Once these tools are installed, you may open any Laravel project by executing the code . command from your application’s root directory using Windows Terminal.

WSL2内に作成されたLaravelアプリケーションのファイルを編集する際には、VSCodeとRemote Development拡張を使用することが推奨されているようだ。これに従って、フォルダを開くための手順を改めて確認。

  1. Remote Developmentをインストール。
  2. VSCodeの左下隅の[Open a Remote Window]をクリック。
  3. メニューから[Connect to WSL]を選択。
    するとWSLに接続される。VSCodeの左下隅には[WSL:Ubuntu-20.04]と表示されている。
  4. [File]-[Open Folder…]メニューを選択。
  5. [Open Folder]プルダウンでパスを選んで[OK]をクリック。
    EXPLORERにフォルダが追加される。

WSL2内のフォルダが問題なく開けた。

参考サイト

Laravel SailでVisual Studio Codeを使ってプロジェクトを編集する方法 | 40代からプログラミング!
https://biz.addisteria.com/04laravel-sail-2/
2023.03.02

[ソフト] Google Chromeのキャッシュクリアの方法

Google Chromeのキャッシュをクリアする方法を覚え書き。

方法1 ハード再読み込み:

  • [Shift]+[Ctrl]+[R] または [Shift]+[F5]

方法2 キャッシュを消去しつつ「ハード再読み込み」を実行

  1. デベロッパーツールを起動: [Shift]+[Ctrl]+[J]、または[F12]
  2. アドレスバー左側の再読み込みボタンを右クリック
  3. 表示されたメニューから[キャッシュの消去とハード再読み込み]を選択

方法3 キャッシュを使わない (一時的にキャッシュを無効化する)

  1. デベロッパーツールを起動: [Shift]+[Ctrl]+[J]、または[F12]
  2. [ネットワーク]タブの[キャッシュを無効化]をチェック
  3. ページを再ロード [Ctrl]+[R]

この設定はデベロッパーツールを閉じると無効になる。

参考サイト

【Google Chrome】素早くキャッシュをクリアしてページを正しく表示させる:Google Chrome完全ガイド – @IT
https://atmarkit.itmedia.co.jp/ait/articles/1811/14/news038.html
2022年02月09日

[Windows] netstatコマンド覚え書き

netstatはWindowsとLinuxの両方に存在するネットワーク関連のユーティリティだが、その使用方法とオプションはプラットフォームによって異なる。以下Windows版のnetstatの使い方の覚え書き。

オプション

  • -a: 現在の全ての接続を表示
  • -e: インターフェースレベルの統計情報を表示
  • -n: 数値で表示(DNS逆引きを行わない)
  • -s: プロトコルレベル(IP/TCP/UDP/ICMP)の統計情報を表示
  • -p <プロトコル>: プロトコルごとの接続をリスト
  • -r: ルーティングテーブルを表示
  • -o: コネクションを所有しているプロセスIDも表示
  • -b: コネクションを所有しているプロセス名も表示(管理者権限必要)
  • インターバル 連続実行する感覚(秒)

良く使いそうなオプション

参考サイト

TCP/IP通信の状態を調べる「netstat」コマンドを使いこなす【Windows OS】:Tech TIPS(1/2 ページ) – @IT
https://atmarkit.itmedia.co.jp/ait/articles/0207/20/news003.html
2023年02月01日

netstat – ホストのネットワーク統計や状態を確認する
https://atmarkit.itmedia.co.jp/fnetwork/netcom/netstat/netstat.html
2002/1/30