MinEMemO

【インフラ】サーバー系の個人用のメモ

📝 更新日:2023-07-15 / 📄 作成日:2023-07-15
Hero Image
目次

はじめに

インフラはローカル環境を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」

業務で実際に触っていたファイルについて

/etc/httpd/conf.d/ssl.conf

ドキュメントルート、SSL化のファイルのパスとかログの書き出し場所を記載するファイル。

ssl.conf

#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ページビューとカウントすることになります。

profile_icon
taka
プログラマー
いつでも転職希望の業務経験7年目(2023時点)のエンジニアです。 仕事の合間にすこしずつ転職活動はしていますが、条件が合う場合ぜひTwitterなどでご連絡頂けると嬉しいです。 希望条件は基本的に残業は1日x1h程度。収入は一旦現状維持。 ある程度で構わないので、保守運用が管理されていて、精神的に安心して働ける環境が良いです。 経験言語はHTML、CSS、javascript、PHP、MySQL、Docker、Vuejs、Laravel このブログは完全に自作で静的ジェネレータで作りました。 この範囲で言えば React.js Gatsby.js GraphQLも経験があります。 最近はAIがどう社会に受け入れられ、日常になっていくのかの行く末が気になっています。 今までの人生で一番変化を感じて不思議な感覚です。