【4日目】サーバーとLarabelを学び、簡単なWebサイトを作ろう【作曲の補助ツールを作るまでの日記】

プログラミング

2023年7月11日

本当にありがたいご縁で、LarabelというPHPのフレームワークを学び、エンジニアの方に評価していただけることになった。

そして学ぶ上で、色んな課題が出てきた。今まで個人開発をメイン……もなにもほぼ趣味みたいな感じだったので、実践向けの実力が皆無。オブジェクト指向? Dcoker? AWS? PSR? フレームワーク? API? linuxコマンド? 聞いたことはあるけど、よく説明はできない。最近辛うじてGitとGithubが分かってきたのに、まだまだ分からん事が多すぎる。(普通の個人開発するだけならGithubとかDockerとか弄る機会無いと思うんだけど、皆どこで使ってんの?)

しかし、今がプログラミングの第二成長チャンスな感じがするので、やれることをやろうかなと。第一成長チャンスはプログラミングゼミに入ることが決まった時。

アウトプット

色んな技術をインプットするのは当然なんだけど、そろそろアウトプットをしっかりしようかなと考えている。
いま、こうやって日記を書いているのは一応アウトプットも兼ねてるんだけど、

  1. 不特定多数に見られることによる自身のモチベーション維持
  2. 自分の記録を残したら面白そう

というところもある。

だから、技術情報としての価値とか、見やすさ的なところはあんま考えられてない。なので、技術的な記事と日記的な記事で分けようかなと考えたり。
Qiitaに挙げるのも良いかな? 批判コメントが怖すぎて勇気が出せないのよね。意外と殺伐としたコメント欄見るからなぁ。

とりあえず、小さな目標を作る

その、評価していただける先方からの条件、要件を自分なりに嚙み砕くと

  • SaaS(AWS)やローカル環境などで、AlmaLinux9でWebサーバー構築
  • PHP8とLaravel9を利用したCRUDの実装
  • オブジェクト指向の理解
  • laravel-adminの利用
  • バリデート、セキュリティの意識
  • DBはMySQL

とのこと。

以上を全て満たさなくてもいいけど、これ等の知識は身に着けてくれるといいねみたいな。

うん。用語の時点で怪しいね。

  • SaaSはITパスポートで若干知ってる。易しく理解するならこのサイトがいい。
  • AlmaLinux9はLinuxディストリビューションのことらしい。Linuxディストリビューションについてこのサイトで。
  • PHP8とLaravel9はバージョンの話……だよね? CRUDはDBの基本操作ってやつ。
  • オブジェクト指向は……理解してない。Pythonを学び始めた頃に図書館で「なぜオブジェクト指向なのか」みたいな本買って読んだことあるけど、まじで学びたてだったから1ミリも理解できずに返却した。
    ホントに、何となく理解するならこのサイトだろうか。後々本でも買って学習しよう。
  • laravel-adminは管理画面のライブラリらしい。これを入れると簡単に管理画面を作れるんだとか。まだ早いね。
  • バリデートは、入力フォームなどに入力された文字列が規定の通りかをチェックするというものらしい。DBの破壊とかSQLインジェクションとかが起きないように的なこと? セキュリティはそのままの意味だろう。
  • DBはMySQL。まあ、聞いたことはあるよね。RealmとAccess使ったことあるからある程度楽だと信じたい。

とりあえず、サーバー構築→簡単なサイトの作成→簡単なサイトの公開を目指してやっていこうか。

簡単なサイトは色々考えたんだけど、javascriptのスキルが無いから結構できることが狭い。先ずは背伸びせずに、単純な掲示板のような文章投稿サイトを作ろう。

とりあえず、サーバー構築さえできればそんなに難しくないのでは、と甘く考えている。

サーバーを構築しよう!

といっても、何も分からないので色々調べる。

AWSはお金がかかってしまうので、とりあえずローカル環境でAlmaLinux9のOSを使用し作成したい。
そこで、おすすめされたのがVirtualBoxというもの。

VirtualBoxとは

現在のOS上に別の仮想OSを稼働させるハイパーバイザソフトウェアである!
いや~、もうわけわからん。カタカナで濁音なのでカッコよくはある。
一応、ここらへんのソースはとほほさん


ハイパーバイザっていうのは、仮想マシンを作って動かすためのソフトのこと。(教義な意味では、ホストOSを必要としないタイプの、仮想マシンを作って動かすためのソフト→ソース
仮想マシンを作り、その上に好きなOS(今回はAlmaLinux9)を乗っけるというイメージ?
恐らく、この仮想マシンとして作るっていうところが肝で、Dockerとは違うところだと思うんだよね。

要するに、
VirtualBox→ハードウェアレベルの仮想化
Docker→OSレベルの仮想化

そもそも何故仮想化するのか?

そもそも論。仮想化っている? → やんなくてもいいけど、やってると便利って感じ?
仮想化の有用性はこのサイトがソース。

簡単に言えば仮想化するとこんな良いことがある。

  1. リソースの有効活用
    コントロールパネルを開いてCPUの使用率を見てもらうとわかるけど、ゲームとかしない限り、そんな使わない。要するにリソースに余裕があるということ。今回は1個しかサーバーは建てないけど、仮想化を使えば1台のPCからリソースがあるだけ複数のサーバーが建てれるよね的な。
  2. 可搬性の向上
    普通のデスクトップPCのホストOSにサーバーを建てたとして、それを他に移したいとき物理的なストレージを使ってるから、移動するのが面倒だよね。それに代わって仮想化は、あくまで仮想化だから、フォルダを移すだけで問題ないらしい。便利やね。

とりあえず、VirtualBoxをインストールしてAlmaLinux9を使えるところまで今日は行こうか。LinuxOSって今まで使ったことないから、結構wktk。

VirtualBoxのインストールとAlmaLinux9のインストール

正直、出来る気がしないけどやっていこう。

今回の環境は

  • Windows10
  • AMD Ryzen 7 4700U
  • メモリ16GB
  • ノートPC

インストールはこちらのサイトを参考に行う。本当に情報ありがたい。

AlmaLinux9はCentOSというLinuxディストリビューションがサポート終了するので、その変わりとして使われているみたいね。なんか色々調べたんだけど、Linuxの歴史って結構複雑。

とりあえず、AlmaLinux9.2をダウンロード。8GBのフル版。

サーバーはJPのmirrors.xtom.jpというのが10分くらいでダウンロードできて速かった。

次に、VirtualBoxのダウンロード。今回はwindows版の7.0.8。

インストールや使い方は公式ドキュメントで良いと思われる。Google翻訳の精度が上がってるのか、普通に違和感なく読めた。

VrtualBoxキターー

とりあえず、「新規」ボタンから新しく作る。

isoイメージはさっきダウンロードした8GBのやつ。
バージョンはRed Hatを選ぶらしいけど、このisoを指定したら今は勝手にやってくれるっぽい?

フォルダー位置とかはよくわかんないので、初期設定で。

また、ハードウェアの設定は私のCPUが8コアで、メモリが16GBなので以下の感じにしてみた。

後からでも変えられるっぽいので、適当に。

ハードディスクの量はホストOSが残り222GBだったので、22GBで。

よし、これで出来たか!?

キターーーーーー! なんか昔のゲームみたいで興奮するねぇ。

初めてのLinuxっておおおおおおおいいいい! 危ない! Linuxの世界に閉じ込められるところだった。どうやら、VirtualBoxとメインOSの操作切り替えが右Ctrlらしい。右Ctrlが無いときはCtrl+Alt+deleteで抜けれる。

私のノートPCに右Ctrlはないので、マジで閉じ込められかけた。ちょっと設定を右シフトに変えておく。

日本語設定等をしたら下にスクロールし、rootパスワード設定へ。

今回は練習目的でネットに接続しないので簡単なパスワードでも恐らく問題ないんだけど、rootは最上位権限らしく、それを握られたらと考えると怖いのでパスワードジェネレーターで生成したものを使う。

ここまでやると、インストールが可能に。

インストールが完了したら……

AlmaLinuxキターーーーーー!

初Linux! ここからどうやってサーバー構築するのかはマジでわかんないけど、とりあえずもう夜も更けたので今日はこんなもんで。

ノートPCでも案外いける。

おやすみなさい。