【5日目】Linuxを学ぼう【作曲の補助ツールを作るまでの日記】

プログラミング

2023年7月12日~13日

昨日、VirtualBoxの導入とAlmaLinux9.2をインストールするところまではできたので、今日はこいつを使ってサーバーを建ててみる。→無理だったのでLinux勉強に変更。恐らく、AlmaLinuxはローカル環境で行えるテストの役割で、本番はAWSとかになるのではと考えている。

ローカル環境でサーバーを建ててみたい!

いや~、まじでこっからどうすればええんや。

色々見たけど、難しいね。

今の私は

  • とりあえずVirtualBoxをインストールして、その中にAlmaLinux9を入れてみたけど、こっからわからん
  • というか、linuxコマンドがわからん
  • というか、サーバー知識が無い

って感じ。

とりあえず、Linuxを少し弄れるようになって、少しずつサーバーの知識を手に入れるのがいいのかなぁ。

Linuxを学ぶ

どう学ぼうかと思ったんだけど、大学がPaizaと契約してくれているので、こちらを使う。
最初から今に至るまで本当にいつもありがとうpaiza。

以下はシェルコマンド講座メモ

  • シェルとは
    シェルはOS(カーネル)などと会話するためのユーザーインターフェース。色々種類があるけど、LinuxディストリビューションであればだいたいBash
    windowsとmacでコマンドプロンプトの操作が若干違うと思ってたけど、使ってるシェルがそもそも違うのね。macは最近Zshという万能系のシェルを使ってるらしい。
  • Linuxコマンド、サーバーコマンド、シェルコマンド
    ちょっと言葉が曖昧なので整理。
    LinuxOSを操作するのがLinuxコマンド、サーバーを操作するのがサーバーコマンド。また、これ等操作を実行する”手段”がシェルコマンドという感じ? そんで、Linuxの中にサーバーが入ってるなら、サーバーコマンド∈Linuxコマンドとなる?
  • シェルコマンドをどう学習するか
    これ、慣れだな完全に。一応、lsとかcdとかはギリギリ知ってたんだけど、シェルに種類があることさえ知らなかったくらいなので、かなりてんやわんや。
  • 隠しファイルの仕組み
    ファイル名の先頭に.(ドット)がついてるのが隠しファイルってマジ!? そんな仕組みだったのか。
  • 面白い
    まさかの感想。面白いぞこれ。GUIの方が便利だとは思うけど、CUIは面白い。
  • 面白くない
    まさかの感想。いや、冷静に面白くはない。
  • 絶対パスと相対パス
    絶対パスは最初に「/」がついて、相対パスはつかない。なるほどね。

以下はLinux講座メモ

  • Linuxの特徴
    Unix互換OSで、オープンソース。
    狭義には、Linux=Linuxカーネルのみを指す? だから、Linuxディストリビューションとかじゃないとシェルなどのソフトウェアはついてこないという認識でいい?
  • Unixとは
    1969年に開発されたOS。
    データの格納にプレーンテキストを利用する→文字列として扱えるので、テキストエディタや文字列を扱えるプログラミング言語で扱える。
  • サーバーの意味
    サービスを提供する→サーバーらしい。知らんかった。コーヒーサーバーやウォーターサーバーのサーバーもそういうこと。
  • パッケージという概念
    ソフトウェア+関連ライブラリ+設定ファイルを纏めたもの。パッケージ同士の依存関係も記録。

    サポートしているものはパッケージ管理ツールでインストールできる。
    ここで、ダウンロードという表現をしていなかったので、恐らくLinuxディストリビューションに既にある程度は入ってると思われる。

    Linuxディストリビューションでは、CentOS系とUbuntuが有名。AlmaLinux9はCentOS系。CentOS系はYumというパッケージ管理ツール。UbuntuはAPTというのを使う。恐らく、Pythonのpipみたいなもん。
  • sudoとは何か
    sudo=superuser doの略。要するに、管理者権限実行みたいな。
    UNIX系のコマンドで使えるらしい。だからMacで使えたのか。
  • SLコマンドが滅茶苦茶いい

    lsと打ち間違えてslと入れたとき起動して、5秒くらいでSLが画面を横断するというジョークパッケージ。
    ネギを振るmikuコマンドか、おちゃめ機能のtetoコマンドはないんか?
    nyanyanyaコマンドとかはありそう。
  • 標準入出力について
    ここにきてまさかの競プロと繋がってくるとは。
    私たちがbashにコマンドを打つ→シェルが処理する→ディスプレイに表示される……のこの「ディスプレイに表示される」ところではシェルがディスプレイに標準出力をしているということらしい。
    標準入出力は基本的に文字列しか操作できない。

    例えば、「ls -l」とコマンドを打つとディスプレイにその階層のファイルが表示されるけど、「ls -l > hoge.txt」とするとhoge.txtに文字列が入っている。これは、hoge.txtに標準出力させたという事らしい。
    これをリダイレクトというらしい。

    標準入力はCtrl+cでキャンセルできる
  • シェルコマンドのルールとパイプ
    各コマンドは基本的に1つの処理のみを行う
    それを私たちが上手く組み合わせて複雑な処理にする
    上手く組み合わせるのに必要なのがパイプ。

    パイプっていうのは コレ → |
    コマンドの標準出力と標準入力を繋げるみたいなイメージっぽい。
    例えば、ls -lで出力されるのが

    -rw-r–r– 1 ubuntu ubuntu   20 Jul 13 13:02 39miku.txt
    drwxr-xr-x 2 ubuntu ubuntu 4096 Jul 13 13:02 teto
    -rw-r–r– 1 ubuntu ubuntu   17 Jul 13 13:02 Teto.txt
    drwxr-xr-x 2 ubuntu ubuntu 4096 Jul 13 13:02 VOCALOID_miku

    だとして、1回のコマンドで”miku”の付くファイルだけを取り出したかったら
    ls -l | grep “miku”
    とやれば、ls -lの標準出力をgrepが標準入力として受け取り、ディスプレイに標準出力してくれる。みたいな。

    $ ls -l | grep “miku”
    -rw-r–r– 1 ubuntu ubuntu   20 Jul 13 13:02 39miku.txt
    drwxr-xr-x 2 ubuntu ubuntu 4096 Jul 13 13:02 VOCALOID_miku
  • プロセスとは
    Linuxは一度に複数のプログラムを実行できます! と言われても今となっては当たり前ではある。恐らく昔は複数実行出来なかったんだろうなぁ。みんなもスマホで音楽か動画を流しながらゲームするよね? そんな感じでLinuxは複数のプログラムを同時に実行できる。

    実行中のプログラムをプロセスと呼ぶ。bashで現在自分が実行しているプロセスを見るコマンドは「ps」。Linux上に起動するプロセスを全て見るコマンドは「ps aux」
    aで自分以外のプロセスを表示させる。
    uでユーザー名と開始時刻の表示。
    xでシステムが起動したプロセスの表示。
    らしい。

    これの何が大事かっていうと、サーバーを建てる時に恐らく結構使う。
    「 ps aux | grep “apache”」とやればapache関連のプロセスが見れて、現在のサーバー状況とかが恐らく見れる。
  • aliasとは
    aliasは長いコマンドを短いコマンドで打てるようにするもの。
    さっきの「ps aux | grep “apache”」ってまあまあ長いよね。だから、例えばこれをaliasに登録する→「alias psApache=’ps aux | grep “apache”’」
    こうすると、「psApache」とコマンドを打つだけで「ps aux | grep “apache”」を実行してくれる。
    python3というコマンドをpyで実行できたりしたのもこれだよね?

以下はLinuxのシステム管理講座メモ

  • ユーザーアカウントの種類
    1.一般ユーザー
    少しでも変更を加えると危険なディレクトリなどにはアクセスできないユーザー。
    2.スーパーユーザー
    全ての権限を持つユーザー。何にでもアクセスできる分、危険度もMAX。
    3.システムアカウント
    アプリケーションとかをバックグラウンドで処理するためのアカウント。よくわからん。
  • グループ
    一応グループという概念があって、グループに権限を与えたり制限を与えてそこにユーザーを入れることで一括管理ができるっぽいんだけど、一人だとあんま意味ない?
  • アクセス権限
    読み取り権限、書き込み権限、実行権限がある。
    これ等を上手く使わないと危ないってことだよね。

    サーバー構築の何かを見たときに、基本スーパーユーザーではサーバー実行しないって言ってたけど、恐らくサーバーの実行は一般ユーザーでもできるようにしておいて、実行は一般ユーザーでやるのが常識なのだと思われる。

AlmaLinuxでサーバー構築と調べたらSSHっていうのが出てきた。

SSHってなんやねん。

SSH=Secure Shellの略。

コンピュータを遠隔操作するためのツールらしい。同じく遠隔操作できるものにtelnetというのもあるんだけど、こいつとの違いは遠隔操作時の送受信データが暗号化されるか否か。SSHなら暗号化されるので、安心というわけっぽい。

基本的にサーバーをいじるときはSSHを使っていじるっぽい

おわり

ちょっとここまでで2日に渡っちゃった。
あんまり進捗が出せてなくて少し焦っている。

明日は期末2個あるし、課題もあるのでちょっとさすがに今日はここまでで。
今までの人生でこんなに時間が欲しいことは無いよ本当に。

サーバー構築全くわからん→ちょっとだけ、なんとなくわかる
くらいにはなった気がする。


一応パソコンの前にいれない時でも、「Web技術の仕組み」という本を読んだりして学んではいる。Apacheの仕組みとか、HTTPの仕組みとかは若干わかった。まじで若干。ここら辺もまとめてブログにしたい。
あと、自分で自分のブログを読み返すと復習になるので良いことが分かった。なんだこれ。

とりあえず寝る。おやすみなさい。