はじめに
インフラはローカル環境をDockerなどで構築はできますが、詳しくないので、完全個人用のメモです。
間違った情報もあるとおもうので、参考にする際はご注意ください。
用語
OS
Linux、windows、iOS、Android、Unixなど。
ちなみにカーネルとは、ハードウェアの管理、プログラムの実行管理、ファイルシステムなど、OSのコアとなる基本サービスをセットで提供するプログラム。
※カーネル=Linux=OSみたいな感じになってる
Linuxディストリビューション
OSとカーネルだけでは動かないのでパック(Linuxディストリビューション)として配布されているもの。
なので、結局Linuxを使うときはLinux環境に好きなディストリビューションをいれる。という形になるみたい。
※カーネル+アプリケーションという感じ
Red Hat系 |
Fedora(フェドーラ) CentOS(セントオーエス) Red Hat Enterprise Linux(RHEL) |
---|---|
Debian系 |
Ubuntu ※今の主流 |
Alpine系 | 軽量でシンプルなディストリビューションらしい |
※windowsサーバーにディストリビューションみたいなのはない
※ApaceheやngnixはWEBソフトウェア。WEBページ使うときにディストリビューションに入ってるものという感じのようです。
※ちなみにApacheのバージョン確認は httpd -v で出来る
Linuxフォルダ構造
/bin | OSやコマンドが正常に動作するための実行ファイル。基本触らない |
---|---|
/boot | システム起動時のファイル。そんなに触らない |
/dev | ハードウェア機器(キーボードとか)を表すファイル |
/etc | 設定ファイル |
/home | ユーザのホームディレクトリ。ユーザごとのログインの始まりの場所 |
/lib | OSに必要なライブラリ |
/media | USBなどの外部記憶媒体をシステムで「自動」マウントする。マウントしないと使えない。 |
/mnt | USBなどの外部記憶媒体をシステムで「手動」マウントする。マウントしないと使えない。 |
/opt | chromeなど追加アプリケーションがインストールされる |
/proc | OSのシステムコントロール |
/root | 管理系rootアカウントのホームディレクトリ |
/sbin |
管理系rootアカウントのみ実行できるプログラム (binの管理権限用) |
/sys | OSの現在の状況に関する情報 |
/usr |
全ユーザが共通して利用するプログラムのデータ。 TOPのbinとはべつにここにもbinがはいっていたりする。 ※PCでいうCドライブにツールインストールする。みたいな感じっぽい ※/varとの違い:/varはホストごとの共有できない可変データを入れる場所 |
/var |
システム運用中に自動で生成されて、あとから削除されるデータ。ログなどが入る。 プログラムなどのコードもvar/www/source/などに入れたりする。 |
サーバーの見分け方
Windows
ver とか systeminfo とかで情報が返ってくる。
Linuxはコマンド自体使えずエラーになる。
Linux
/etc/ に Linuxディストリビューションに応じて設定ファイルがあるのでそれで判断する。
/etc/ で何の設定ファイルがあるか見る
- CentOS:/etc/redhat-release
- Fedora:/etc/fedora-release
- Debian(ubuntu):/etc/debian_version
- その他:/etc/issue
など
なおバージョンの確認は cat /etc/各ファイル名で中身を見てバージョンをみるとOK。
※例)Debianなら「cat /etc/debian_version」
シェア率はUbuntuが強い
業務で実際に触っていたファイルについて
/etc/httpd/conf.d/ssl.conf
ドキュメントルート、SSL化のファイルのパスとかログの書き出し場所を記載するファイル。
#80はポート番号でhttpのこと
<VirtualHost *:80>
DocumentRoot 表示するフォルダのパス
ServerName ドメイン名
RewriteEngine On
RewriteCond %{HTTPS} off
ErrorLog /var/log/httpd/エラーログのフォルダ名
CustomLog /var/log/httpd/アクセスログのフォルダ名 combined env=!nolog
EnableMMAP Off
EnableSendfile Off
</VirtualHost>
#443はhttps
<VirtualHost *:443>
DocumentRoot 表示するフォルダのパス
ServerName ドメイン名
SSLEngine on
SSLCertificateFile /etc/httpd/conf/SSL証明書ファイル名.crt
SSLCertificateKeyFile /etc/httpd/conf/鍵ファイル名.key
SSLCertificateChainFile /etc/httpd/conf/中間証明書ファイル名.cer
ErrorLog /var/log/httpd/エラーログのフォルダ名
CustomLog /var/log/httpd/アクセスログのフォルダ名 combined env=!nolog
EnableMMAP Off
EnableSendfile Off
</VirtualHost>
※vhost.confとssl.confで設定されてるものや、どちらかだけで設定されてるものもある
アクセスログの取り方の例
レンタルサーバーのツールもあるが、生でとる場合は参考先を参照
参考元より抜粋
一般的には、サーバーの管理画面でアクセスログの保存設定を有効にしたのち、保存期間なども指定することでデータが蓄積されていきます。 レンタルサーバーに「log」などのフォルダが作成されている場合、その場所にログが保存されていることが多いです。
以下の内容が1固まりで書いてあるとのこと。
- IPアドレス
- 時間
- 取得したファイル
- リクエストしたサーバードメイン
- ステータス
次のページに行った場合にも同じようにアクセスログが追加されていくため、 その時間差からそのページでの滞在時間を調べることができます。
また、最後にアクセスしたページから、どのページで離脱したのかも判断することができます。
実際使うには?
ただし、以下のように情報が多すぎるため、ログとして利用するために、必要な情報だけに絞る仕組みが、結局必要になりそうです。
画像素材などのファイル(.pngや.jpg、.gifなど)、グーグルなどのクローラーによるアクセスもその都度ログに記載されることになります。
そのため、このアクセスログを調べる際は、膨大なデータのなかから画像やクローラーなどのアクセスを取り除いて調べる必要があります。
例えば、1ページ内で画像やCSSなどのファイルを10個使用していた場合、その1ページを閲覧する際にも各ファイルへのアクセスが10個発生してしまうため 実際のアクセスよりも10倍のヒット数が計測されてしまいます。
そのため、アクセスログで実際の訪問者のアクセス数を計測する場合、一般的には「.html」などのファイルのみをカウントして1ページビューとカウントすることになります。