[Apache] FastCGIの予備知識

以下の記事が分かりやすかったので覚書リンク。

nginx と PHP-FPM の仕組みをちゃんと理解しながら PHP の実行環境を構築する – Qiita
https://qiita.com/kotarella1110/items/634f6fafeb33ae0f51dc

CGI

  • Webサーバー上でPHP (動的コンテンツを生成する言語) を動作せるための仕組み。

FastCGI

  • CGIはユーザーから要求がある度にプロセスの生成と破棄を行う。
  • FastCGIは初回リクエスト時に起動したプロセスをメモリ上へ保持を行い、次回リクエストに対してはそのメモリに保持したプロセスの実行を行う。

Apacheの場合

  • PHPにはモジュール版とCGI版の二種類ある。
  • ApacheではモジュールとしてPHPスクリプトを起動することができる。
  • PHPをインストールすると自動的にPHPモジュールもインストールされ、 Apacheはデフォルトでそのモジュールを読み込む。
  • モジュール版はCGI版の逆で、WebサーバーのプロセスのなかでPHPが実行される。
  • CGI版は実行ファイル形式とも呼ばれ、Webサーバーとは別のプロセスで実行される。

[Apache] MPM (Multi-Processing Modules) の予備知識

MPM (Multi-Processing Modules) は、マシンのネットワークポートをバインドしたり、 リクエストを受け付けたり、リクエストを扱うよう子プロセスに割り当てたり、 といった役割を持つ。

Prefork

  • 複数の子プロセスをローンチする
  • 子プロセスは1度に1個のコネクションを処理する
  • Apache2のデフォルトMPM
  • Workerに比べてメモリ使用量が多い
  • 常に最小限のプロセスが実行されているので、リクエストは待たずに処理される

Worker

  • Preforkのように子プロセスを複数生成する
  • 子プロセスは多くのスレッドを実行する
  • スレッドは1度に1個のコネクションを処理する
  • マルチプロセス・マルチスレッドサーバーを実現
  • Preforkに比べてメモリ使用量が少ない

Event

  • Apache 2.4から採用
  • Workerと酷似しているが高ロードの管理用に設計されている
  • より多くのリクエストを同時に処理することができる
  • 他のMPMが直面する‘keep alive problem’を解決しようとするもの
  • クライアントは最初のリクエスト終了後もコネクションをオープンしたまま維持し、続くリクエストを同じソケットを使って送出することができる
  • 結果としてコネクションのオーバーロードが軽減される

コンパイルされているモジュールを調べる

ロードされているモジュールを調べる

現在有効なMPMを調べる

MPMを変更する

参考サイト

What is Apache MPM ( Prefork, Worker and Event )
https://tecadmin.net/apache-mpm-prefork-and-worker-and-event/

マルチプロセッシングモジュール (MPM) – Apache HTTP サーバ バージョン 2.4
https://httpd.apache.org/docs/2.4/ja/mpm.html

prefork – Apache HTTP サーバ バージョン 2.4
https://httpd.apache.org/docs/2.4/ja/mod/prefork.html

worker – Apache HTTP サーバ バージョン 2.4
https://httpd.apache.org/docs/2.4/ja/mod/worker.html

event – Apache HTTP Server Version 2.4
https://httpd.apache.org/docs/2.4/ja/mod/event.html

[Unix] vimにカラースキームを適用する

GitHubから好みのカラースキームを落としてきて適用する。

参考サイト

Vim の割と新しいおすすめ colorscheme たちを紹介する – Qiita
https://qiita.com/lesguillemets/items/f4cdf359a89585ad1324

vimのカラースキーム (colorscheme) を “molokai” に設定する – Qiita
https://qiita.com/godgarden/items/9bded65665834438cc3e

[AWS] EC2/論理ボリュームを拡大するには

以下のような場合に論理ボリュームの拡大操作が必要になる。

  • 30GiBのボリュームからスナップショットを作成
  • スナップショットから100GiBのボリュームを作成
  • 100GiBのボリュームをEC2インスタンスにアタッチ
  • EC2インスタンス起動
  • 100GiBのボリュームをマウント
  • dfコマンドで見るとボリュームは30GiBのまま
  • resize2fsコマンドを実行。サイズを指定しないと、自動的に論理ボリュームに合わせてファイルシステムを拡大してくれる。

  • 再びdfコマンドで見るとボリュームは100GiBとなっている。

参考サイト

論理ボリュームを拡大するには - @IT
https://www.atmarkit.co.jp/flinux/rensai/linuxtips/a069expandlvm.html

resize2fs – システム管理コマンドの説明 – Linux コマンド集 一覧表
https://kazmax.zpp.jp/cmd/r/resize2fs.8.html

[ホスティング] SSH接続をIPアドレスで制限する

サーバー立てると知らない人からのSSHアクセスがうざい。パスワード無効にしてるからログインできないんだけど知る由もなしか。

関係者のIPアドレスしかSSHアクセスを許さないように制限する。

/etc/hosts.deny

/etc/hosts.allow

参考サイト

SSHのIPアクセス制限 まとめ | システムガーディアン株式会社
https://sys-guard.com/post-2528/

[Unix] rsyncでパーミッションやタイムスタンプを保持するには

-a オプション必須。

コマンド実行例

「-a」で有効になるオプション
短いオプション 長いオプション 意味
-r –recursive ディレクトリを再帰的に処理する
-l –links シンボリックリンクをシンボリックリンクのままコピーする
-p –perms パーミッションを保持する
-t –times タイムスタンプを保持する
-g –group 所有グループをそのまま保持する
-o –owner 所有者をそのまま保持する(自分以外の所有者を保持するにはroot権限が必要)
-D デバイスファイルや特殊ファイルを保持する(「–devices –specials」相当)
–devices デバイスファイルを保持する(root権限が必要)
–specials 特殊ファイルを保持する

参考サイト

【 rsync 】コマンド(その1)――ファイルやディレクトリを同期する:Linux基本コマンドTips(82) – @IT
https://www.atmarkit.co.jp/ait/articles/1702/02/news031.html

【 rsync 】コマンド(その2)――同期元にないファイルを削除する/実行内容を事前に確認する:Linux基本コマンドTips(83) – @IT
https://www.atmarkit.co.jp/ait/articles/1702/03/news020.html

[AWS] EC2/rootボリュームを一般ボリュームとして別インスタンスにマウントするには

立ち上がらなくなったrootボリュームを修復したい。そのためには、そのボリュームを別インスタンスにマウントして設定ファイルなどを修正する必要がある。ボリュームのパーティションの扱いでちょっとつまづいた過程を覚え書き。

対象rootボリュームを/dev/sdfにアタッチしてインスタンス起動。

マウントするためのデバイスファイル名を取得。

/dev/mvme1n1のマウントを試みるが失敗。

ファイル形式を確認するとext4ではなかった。

ブロックデバイスの構成を確認したらパーティションが存在した。

パーティションのデバイスファイル名で試みたらマウント成功。

アンマウントももちろん問題なし。

参考サイト

Amazon EC2インスタンスにSSHできなくなった時の対処法 | Casual Developers Notes
https://casualdevelopers.com/tech-tips/how-to-fix-ssh-problem-to-ec2/

【 file 】コマンド――ファイル形式を確認する:Linux基本コマンドTips(12) – @IT
https://www.atmarkit.co.jp/ait/articles/1605/10/news018.html

【 lsblk 】コマンド――ブロックデバイスを一覧表示する:Linux基本コマンドTips(180) – @IT
https://www.atmarkit.co.jp/ait/articles/1802/02/news021.html

[Unix] OpenSSHで多段SSH接続する

SSH接続に以下の条件があったとする。

  • サーバーAには直接接続できる。
  • サーバーBには直接接続できない。サーバーA経由ならば接続できる。

後者の接続をOpenSSHでどうやって実現するか。参考サイトに事例があったので覚書。

参考サイト

外部から踏み台サーバ経由の多段SSH接続をWindowsクライアントから行う | DevelopersIO
https://dev.classmethod.jp/cloud/aws/bastion-ssh-on-windows/

[ホスティング] SSHでパスワード認証を許可する

鍵ファイルでログインするようにしていたサーバーを、パスワードでアクセスできるように変更する。

現在の設定をバックアップ。

設定変更。

再起動。

参考サイト

[ホスティング] SSHでパスワード認証を禁止する – 端くれプログラマの備忘録
https://www.84kure.com/blog/2015/12/19/%e3%83%9b%e3%82%b9%e3%83%86%e3%82%a3%e3%83%b3%e3%82%b0-ssh%e3%81%a7%e3%83%91%e3%82%b9%e3%83%af%e3%83%bc%e3%83%89%e8%aa%8d%e8%a8%bc%e3%82%92%e7%a6%81%e6%ad%a2%e3%81%99%e3%82%8b/