LoginSignup
118
117

More than 3 years have passed since last update.

【ペチオブ】仮想環境ハンズオン 第1回 Linuxの基礎編

Last updated at Posted at 2021-03-04

ペチオブとは

隔週の木曜日に開催されているPHPエンジニア向けのコミュニティです。
(現在はオンラインのみで、YouTube撮影等の活動を行ってます)
PHPでお困りの方はお気軽にSlackにてご質問ください。(connpass内に招待リンクがあります)

今回の仮想環境ハンズオンは去年の2020年4月にオフラインのハンズオンイベントとして公開する予定でした。
しかし某コロナの影響で延期が続き、当イベントは没になる予定でしたが、主催の @hirodragon さんからせっかくだからYouTubeでオンラインで公開しよう!という話になり2020年12月から翌年2月にかけて動画撮影しました。

対象者、目的

プログラミング初心者、ウェブエンジニアに向けてVirtualBox, Vagrant, Docker, Docker Composeを使って同様の仮想環境を構築して、どういった違いがあるのかを体験してもらうためのハンズオン記事です。

環境構築を始めるにはLinuxの知識が必要不可欠です。
ということで今回はLinuxの基本を解説します。

YouTube版 【ペチオブ】仮想環境ハンズオン 第1回 Linuxの基礎編

【ペチオブ】エンジニアのための仮想環境ハンズオン 第1回 Linuxの基礎編

※初めてのYouTubeで恥ずかしいので見なくても大丈夫です..。

シリーズ記事

  1. Linux基礎編
  2. VirtualBoxハンズオン
  3. Vagrantハンズオン
  4. Dockerハンズオン
  5. Docker Composeハンズオン

OS とは

Operating System (オペレーティングシステム) の略。
システム全体を管理するソフトウェアのこと。

  • 1960年代に誕生
  • OSが通訳となりアプリケーションを実行
  • メモリやCPUの違い等をOSが吸収してくれている
  • Windows, macOS, UNIX, Linux ...

Linux とは

Tux

  • 1991年にリーナス・トーバルズが開発したOS
  • UNIX互換OSの一つ
  • 主にサーバー用途に使用される
  • オープンソースのため無料で利用できる
    • 無料なのでサーバーとして用いられることが多い
  • LinuxにはLinuxカーネルとLinuxディストリビューションの意味がある

リーナス・トーバルズ

Linux カーネル

OSの中核部分としてハードウェアとソフトウェアの仲立ちをしてくれます。
ハードウェアといえばCPU、メモリ、ハードディスク等がありますが、アプリケーションが直接操作するのではなく、カーネルを経由して操作します。

Linux カーネル

シェルとは

シェルはユーザーから入力されたコマンドを解釈し、それをカーネルに伝えます。
カーネルはシェルから伝達された要求に応えてプログラムの操作を行い、その結果をシェルに返します。

ユーザーがターミナルにコマンドを入力 => シェル => カーネル => シェル => ターミナルに実行結果を出力

Linux ディストリビューション

配布している企業や団体がたくさんあり、
それぞれがLinuxカーネルにソフトウェアを追加したり、独自の設定や構成で配布しています。
その配布形式のことをディストリビューションといいます。

Red Hat Enterprise Linux (RHEL), Debian, CentOS, Ubuntu...たくさん種類があります。

Linux ディストリビューション
Linux 派生図

すべては紹介しきれないので、特に使われるOSをピックアップして紹介します。

RedHat

RedHat

商用として一番しっかりしていて、有名なLinuxOS
しかし、料金が高い。
しかもサーバーは普通のサービスでも最低で3台は必要なので結構な金額になる。

Debian

Debian

Linux界隈ではもっとも規模の大きいコミュニティがある。
商用ならRedHat。コミュニティなら 「Debian」 と言われている。
安定しており、堅実な作りをしている。

Ubuntu

Ubuntu

「Debian」ベースに作られたOS。無料。
Debian と比べて、先進的でリリースも早い。
Ubuntuは「誰にでも使いやすい最新かつ安定したOS」と掲げている
Linuxはもっと普通の人にも使えるものにできる、という思想が見えるのがUbuntu。実際とても使いやすくて、Windowsの代わりとして使えるようなOSになっている。

CentOS

CentOS

RedHat をベースに作成されたOS。無料。
2019年にCentOS8が出て、徐々にCentOS7からCentOS8に移行され始めている。

CentOS7までパッケージ管理ツールが yum でしたが、
メンテナンス性が低かったり、Python2に依存していてPython3移行の妨げになっていたため dnf に変更となりました。
環境構築する際は古い記事を参照しないように注意が必要です。

CentOSは 「コミュニティによるエンタープライス級のOS」と掲げている
商用で使える圧倒的高品質のOSを目指すという意味。

2021.03.04 追記

CentOS Project shifts focus to CentOS Stream

この記事を執筆した当初(2020.04)はCentOSが終了するとは夢にも思わず...
今後はUbuntuやDebianが主流になってくるのかなと思います。

また、CentOS終了に伴いRedHatの一部が無償化するらしいです。

Alpine Linux

Alpine Linux

組み込み系でよく使われているBusyBoxとmuslをベースにしたLinuxディストリビューション。
コンテナに必要なサイズは8MB以下であり、ディスクへの最小インストールは約130MBと非常に軽量なため、Dockerでも人気のOSです。

bashシェルも用意されていないため、Linuxに慣れていないと構築の難易度が上がります。

補足: Linux プロンプト

ターミナルにコマンドを入力する際、左側に表示されている文字を「プロンプト」と呼ばれます。

  • prompt(促す)
vagrant@ubuntu-focal:~$ 

ユーザー名@パソコン名:現在の作業ディレクトリ$ という情報を表示しています。
OSによって表示形式が異なることもありますが、プロンプトの表示形式は変更可能です。

また、root権限で実行されている場合、 $ の部分が # と表示されます。
この場合は特に注意してコマンドを実行してください。

Linux コマンド

POSIX(Portable Operating System Interface for UNIX)という「UNIX系OSが備えるべき」とされる仕様の標準規格が定められています。

基本的なLinuxコマンドを覚えてしまえばすべてのUNIX互換OSで使えます。

command 名称 説明
man manual マニュアル
echo 文字列や数値、変数を表示
cd change directory ディレクトリ移動
pwd print working directory 作業中ディレクトリ表示
mkdir make directory ディレクトリ作成
ls list リスト
cp copy コピー(複製)
rm remove 削除
mv move 移動
chown change owner 所有者情報を変更
chmod change mode ファイルパーミッション変更
cat catenate / concatenate ファイルの閲覧, 結合
tail ファイルの末尾を表示する
vim Linuxエディタ
find ファイルを検索
grep globally search a regular expression and print ファイル中の探したい文字を検索
sudo substitute user do, superuser do root権限で実行

Linux コマンド リダイレクト

主に標準出力をファイルへ出力したいときに使用されます。

$ echo Hello $USER
Hello ucan

echo コマンドを実行すると文字列や環境変数が展開されて端末に表示されます。
これを端末ではなくファイルなどに出力したいときにリダイレクトします。

$ echo Hello $USER > test.txt
$ cat test.txt

> はファイルを上書きする

$ echo Goodbye >> test.txt
$ cat test.txt

>> はファイルに追記する

$ ls -l > test.txt
$ cat test.txt

ls -l の実行結果が test.txt へ上書きされて出力されています。

Linux エディタ(vim)

$ vim ファイル名
  • vim sample.txt でファイルを開けます。
  • i で挿入モード(insert mode)になり、テキスト入力行えます。
  • Esc でコマンドモードになります、困ったら Esc 連打する。
    • :wq で保存してvimから抜けます。
    • :w 保存します。
    • :q! 保存せず、強制的にvimから抜けます。

vim操作は覚えておいて損はないので、ぜひマスターしてみましょう!
vim入門

コマンド 説明
i 挿入モード
escキー 挿入モード解除
dd 1行削除
u 直前の変更操作の取り消し
/ 検索
1G 文頭へ
G 文末へ
:q 終了キー(保存せずに終了)
:q! 終了キー(変更した行も保存せずに終了)
:w 保存するが終了しない
:wq 保存して終了

Linux ディレクトリ構造

ディレクトリ 説明
/ ルートディレクトリ。全ての始まり。
/bin cpやchmodなどのシステムを管理する上で基本コマンドが入っています。
/etc システム全体に関わる設定ファイルが配置されます。
/home 一般ユーザーのホームディレクトリ。通常ユーザーを追加するごとにユーザー名のディレクトリを追加します。
/root rootユーザーのホームディレクトリ。homeがセキュリティ上の脅威にさらされてもこちらは大丈夫。という保険のディレクトリです。
/sbin 再起動やファイルシステムの操作などシステム管理者用のコマンドが配置されています。/bin同様、新しいコマンドの追加や変更は推奨されません。shutdown、rebootなど
/tmp 一時ファイル置場
/usr 各ユーザーが共通して利用するプログラム・ライブラリのデータ。ソースからコンパイルしたソフトなどはこちらにインストールされます。通常パッケージの追加するこのディレクトリにインストールされることが多い。etcに保存されている設定ファイルのシンボルリンクもこちらに貼られることが多い。
/usr/bin usr版のコマンドが保存されている。一般ユーザーの利用するコマンド。別名ユーザーコマンドの保存場所。プログラムのインストールによって追加する場合はこのディレクトリが適している。openssl、php、perlなど
/usr/local システム管理者用のローカルファイル。管理者のみが利用するライブラリなどの追加に利用する。
/usr/sbin usr版管理者用コマンド。
/var 可変なファイル群。内容が常に変化するようなファイル群を格納する。例えば、ログ、スプール、一時的電子メールファイル
/var/log システム管理者御用達ログファイルの保存場所。システム、メール、インターネットのアクセスログなど、あらゆるログが保存される。
/var/www Apacheのデフォルトデータ保存場所。インターネット関連のディレクトリはここに収めるのが一般的

Linux パッケージ管理システム

パッケージとは、実行プログラム、設定ファイル、ドキュメントなどを1つのファイルにまとめたものです。
パッケージ管理システムは、パッケージのインストール、アンインストール、アップデート作業において、パッケージ間の依存関係や競合関係を管理する仕組みを提供しているツールです。

ディストリビューション コマンド
RedHat系 yum,dnf
Debian系 apt-get,apt
Mac brew

サービス起動と終了

# /etc/init.d/サービス名 start
# /etc/init.d/サービス名 stop

or

# service サービス名 start
# service サービス名 stop

or

# systemctl start サービス名
# systemctl stop サービス名

OSによってサービスの起動方法が異なる場合がありますが、
この3つのいずれかの方法になります。

ウェブシステムの構成

主なサーバー

  • ウェブサーバー
    • Apache, nginx
  • アプリケーションサーバー
    • php-fpm
    • Apache(mod_php)
  • データベースサーバー
    • MySQL
    • MariaDB
    • PostgreSQL

よく使われるウェブ、アプリケーション、データベースの三層構造のサーバ構成です。

参考

118
117
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
118
117