Linux基礎①

『ゼロからはじめるLINUXサーバ構築・運用ガイド 動かしながら学ぶWEBサーバーの作り方』を参考に、Linuxについての学びを記録します。

## UNIXとLinux
UNIXはLinuxに先立ち20年以上も前に開発がスタートしたOSで、大学や研究機関などを中心に使われてきた。

現在はUNIXは様々なものに枝分かれしていて、UNIXという単一のOSはなく、Appleが開発してMacのOSとして使われている`OS X`やOracleのUNIXである`Sokaris`がある。

Linuxはフィンランドの大学生だったリーナス・トーバルズ氏が開発した**UNIXっぽいOS**として作り上げたもの。

公開当初はごくシンプルなOSだったが、多くの開発者の協力で高機能なOSへと発展した。

UNIXとLinuxは異なるOSであるものの、LinuxはUNIXの標準仕様に準拠して開発されているため`UNIX系OS`などと呼ばれている。

そのためUNIX系OSで多くのコマンドが共通して利用できるほか、多くのUNIX向けソフトウェアもLinuxで利用できる。

## Linuxカーネル
カーネルとはOSの中核となるプログラムのこと。

カーネルとシェル(利用者とカーネルの仲介役)、様々なプログラムを組み合わせることでOSとなる。

## ディストリビューション
開発コミュニティ等がLinuxカーネルとシェルや多数のソフトウェアを組み合わせてインストーラと一緒に配布するようになり、これがディストリビューションと呼ばれる。

「Linux OS」はこのディストリビューションを指す。

Linuxのディストリビューションは数多くあるが、RedHat系とDebian系の2つに大別される。

### Red Hat系ディストリビューション
Red Hat社はクラウド技術を中心にサービス展開する企業で、オープンソースソフトウェアを利用したビジネスを展開する米国企業です。

Linuxのカスタム・ディストリビューションで成功を収め、現在も様々なオープンソースコミュニティを利用したサービスを展開するほか、コミュニティへの貢献も積極的に行う世界的企業です。

#### Fedora: 先進的なディストリビューション
最新の技術を積極的に取り入れるディストリビューション。

Red Hat社が強力にサポートしていて、半年に１度のペースで新しいバージョンがリリースされる。

安定よりも最新技術を取り入れる志向が強く、企業の導入はあまりなく、個人ユーザに人気が高い。

#### Red Hat Enterprise Linux: 企業向けディストリビューション
Red Hat社が開発している企業向けのディストリビューション。

安定よりも最新技術を取り入れる指向が強いFedoraに対して、Fedoraの成果を取り込み安定してソフトウェアを取り入れる。

Red Hat社とサブスクリプション契約することで常に最新バージョンを利用できる。

#### CentOS: Red Hat Enterprise Linuxをもとに再ビルドしたディストリビューション
Red Hat Enterprise Linuxを構成するソフトウェアのほとんどはオープンソースで、ライセンスに基づいてソースコードが公開されている。

Red Hat Enterprise Linuxも同様にソースコードは公開されており、このコードを再ビルドしたディストリビューションがCentOSになる。

Red Hat社のサポートは受けられないが、Red Hat Enterprise Linuxとほぼ同じものを無償で使えるため、Red Hat社のサポートを必要としない企業や個人から人気になっている。

ちなみにこのCentOSの開発コミュニティもRed Hat社がサポートしている。

### Debian系ディストリビューション

>Debian はコミュニティによって作られる
「自由なオペレーティングシステム（OS）」です。
引用: [Debian JP Project](https://www.debian.or.jp/)

#### Debian GNU/Linux
GNU ツール・Linux カーネル・その他の重要なフリーソフトウェアとを組み合わせることで作られるディストリビューション。

コミュニティベースで開発され、無償で利用できる。

#### Ubuntu(ウブントゥ)
Debian GNU/Linuxをベースにしたディストリビューションで、[コミュニティ](https://www.ubuntulinux.jp/ubuntu)によって開発されている。

Canonical社も開発をサポートしている。

Fedora同様に新しいバージョンのリリースが早く、また2年に一度LTS(Long Term Support)版という長期サポートがあるバージョンがリリースされる。

Ubuntuの場合、バージョン表記は「年.月」で表示されるため、2019年4月リリースのバージョンは「Ubuntu 19.04」となる。

#### Lubuntu(ルブントゥ)
Debian GNU/Linuxから派生したUbuntuから、さら派生したディストリビューションの1つ。

低スペックでも軽快に動作するよう作られており、Ubuntuを動かすのが厳しいパソコンでも快適に利用できる。

#### Linux Mint
DebianおよびUbuntuをベースとしたディストリビューションで、Ubuntuに次いで人気が高い。

３００００を超える全てのソフトウェアが無料で利用でき、セキュリティ性も高いディストリビューションです。

## Linuxディストリビューションの構成
LinuxディストリビューションはLinuxカーネル/シェル/コマンド/各種ライブラリに加えて、サーバーソフトウェア、クライアントソフトウェア、GUIから構成されている。

### カーネル
OSの中核となるプログラムで、ハードウェアやシステム上で動作するプログラムを管理する。

2019年5月現在のLinuxカーネルの最新バージョンは「４.２０」で、新機能追加で2つ目の数字が上がり、不具合修正で3つ目の数字が上がる。

Linuxカーネルは通常、リーナス・トーバルズ氏が公開しているものを指すが、Linuxディストリビューションで使用されているカーネルはさらに改修をを加えたものが利用されることが多い。

### シェル
カーネルと利用者を仲介するプログラム。
OSユーザのためにインタフェースを提供するソフトウェアで、コマンド入力を受け付けて実行したりする。

### コマンド
Linuxで利用できる実行形式のプログラムで、シェルにコマンド名を入力することで対応するプログラムが実行される。

### ライブラリ
プログラムの共通部品となるもので、よく使用されるプログラムの共通部分を抜き出し、他のプログラムから利用できるようにしたもの。

### GUI(Graphical User Interface)
WindowsやOS Xのようなウィンドウを表示してマウスで操作するようなインターフェースをGUIと呼び、コマンドを入力してその結果を文字で受け取るのがCUI(Character User Interface)と呼ぶ。

Linuxディストリビューションでは、この部分はLinuxカーネルとは別のプログラム群で構成されていて、X Window Systemおよびウィンドウマネージャというプログラム群で作られている。

### クライアントソフトウェア
Webブラウザやゲームソフトなどのクライアントソフトウェアを指す。

ChromeやFirefoxなどのブラウザのLinux版も提供されている。

### サーバーソフトウェア
#### Apache HTTP Server
世界中で使用されているWebサーバーソフトウェアで、世界一のシェアを持つ。

2017年4月時点では全世界で約50％のシェアを占めていて、大規模な商用サイトや公的サイト、自宅サーバまで幅広く利用されている。

#### nginx(エンジンエックス)
大量の接続があるWebサイトではApacheよりもパフォーマンスが良く、大量の処理をするのに向いている。

#### その他サーバーソフトウェア
・Postfix: Linux標準のメールサーバー
・Dovecot: メールサーバーに届いたメールをダウンロードするためメールクライアントが接続するIMAPとPOPのサーバ
・BIND: ホスト名・ドメイン名とIPアドレスの対応付けを行うDNSサービスを提供するDNSサーバー
・Samba: Windowsのファイルサーバー機能やActive Directoryのドメインコントローラーを実現するサーバー
・Squid: 社内から社外へWebアクセスするときに社内のクライアントに変わってWebサーバーへ代理でアクセスするプロキシサーバー

*プロキシサーバー：内部のネットワークとインターネットの境界で動作し、両者間のアクセスを代理して行うもの(引用:https://www.idcf.jp/words/proxy-server.html)