M1 MacにUTMを使ってウェブ開発(LAMP)環境を構築する 【1】(UTM + Rocky Linux9 + PHP8 + Apache2.4 + MariaDB)

開発環境

だいたいの方針

AppleシリコンMacではVagrantが使えない

メインマシンを中古のM1 Mac miniに乗り換えてみたところ、どうやらAppleシリコンMacではこれまで開発環境として使っていたVirtualBox + Vagrantによる仮想環境が使えないということが分かった。
その代わりUTMというAppleデバイス上で動作する仮想マシンソフトを使った方法があるということで、早速構築していくぅ〜!

サーバーOS

まず、Macの環境はこう。

  • M1 Mac mini 2020
  • Sonoma 14.7

とりあえずUTMはGithubからダウンロードして普通にインストールしておく。
Linuxですが、ご存知の通りCentOSの開発・メンテナンスは終了していて、CentOS StreamというRHL用の開発プラットフォームに当たるOSがある状況。Streamは避けるとして、もうしばらくCentOS7系でいくか、Debian系というかUbuntuサーバーに乗り換えるか悩むところだが、まあローカルだしw使い慣れたCentOS7系でしばらく行くことにした。yumyumうまい。
ということでサーバー環境は以下。

  • UTM 4.6.4
  • CentOS 7 minimal

【注】記事下部にありますが、CentOS 7は断念しました・・・

アプリケーション

枯れたOSに最新のアプリケーションがちゃんと乗るのか分からんが、以下のような構成でとりあえずやってみる。

  • PHP8.4.2(最新stable)
  • MariaDB 11.4 Community Server
  • Apache 2.4.62
  • Nginx 1.27.3

その他

あとはMac側のTerminalから仮想サーバーにSSHログインしたり、オレオレ証明書発行したり、あとphpMyAdminとか諸々のアプリケーション入れたり、あれこれ試してみる。

アーキテクチャーがArmのCentOS7をインストール

CentOS 7 Minimal の入手

もう、そのものズバリの「centos-7-aarch64-minimal-2009.iso」を検索して入手しましょうww
IIJや理化学研究所のミラーが見つかるのでDLします。

UTMで仮想サーバー構築

これは、やり方を解説したページがたくさんあるんですが、躓いたことがいくつかあるのでメモしておきます。
まず、大原則というか、もうね、なんだか本当に時間がかかる。レスポンスが遅い。ってのが印象。後述するが、普通ウィンドウが30秒も無反応だったら閉じるよね?え?閉じちゃダメだったの?ってことが結構ある。
私はだいたいサーバーOSはMinimalでインストールするんだけど、Everythingとかデスクトップ環境とかまで入れるとなると、結構時間かかっちゃうんじゃないだろうか・・・?

ということで!やっていきましょう!

まずは仮想マシンを作成

新規仮想マシンを[エミュレート][Linux]で作成。


どの記事を見ても[仮想化]の方は途中から進めないと書いてあるし、実際そうだったww
ずんずん進むぜ!
ここでDLしておいたisoファイルを設定して

アーキテクチャを間違いなくARM64に。システム欄は自動で設定される。
メモリはそのまま4GBで、コア数はとりあえず4。
ハードウェアOpenGLアクセラレーションについてですが、
後述する「Display output is not active」問題を調べている時に、解決策としてここにチェックを入れろという情報を英語でいくつか見かけたのでチェック入れてみる。どっちでもいいと思うんだけど。

ここはテキトーに。

ここで、UTMのCentOSとMacで共有するディレクトリを指定しておく。
後でもできるみたいだけど、とりあえずsheredフォルダを作って指定。

名前を付けて【保存】

CentOS 7 をインストール

この画面に戻ってくるので、いよいよCentOSのインストール。再生ボタンみたいなやつをクリック!

デフォで真ん中の段がフォーカスされているので、そのまま行こう

すると、この画面を経て

※「Display output is not active」問題
この画面でストップするのだ!!

ググってみると、やれグラフィックの設定をこうしたら上手くいっただ、ああやったら先に進めただ、日本語も英語も似たような情報があったんだけど、残念ながら私の環境ではどれをやってもだめだった。で、もうUTMは諦めようと思ったところで、ある記述が目に入ってきた。

待ちましょう。 エラーではありません。 慌ててStack Overflowで検索しなくとも…云々

な、何だと!?
ということで、5分ぐらい(体感)まったら、ほんとだ、進みました。

ちなみに、このインストール作業は何だかんだ他のOSでもやってみたりしたんですけど、「Display output is not active」表示で待たなければいけない時間も10秒ぐらいの時もあれば3〜5分ぐらいと感じることもあったり、そこから次の真っ黒けのウインドウが開いて数分待たされたりと、一定しない印象。

なにはともあれ、あとは普通にインストールを進めていきます。
GUIでインストールが進んでいくのでここは省略。

最初ネットワーク設定をONにするの忘れて面倒だったので、それだけ注意。

で、完了!!

そうしたら再起動する前にいったんサーバーを落とします。

で、isoイメージをアンマウント?消去?します。

じゃ、起動しよう!
はい、お疲れさん^^

やっぱりCentOS 7 は止めることにした

まあ、結果的には当たり前のことなんだけど、CentOS7がすでにEOLになっている以上、これを使うことは推奨はされないよな、と(ローカルとはいえ)。
何かっちゅうと、yumが使えねぇ。

その他、CentOSコミュニティーのいろんなサービスが使えなくなってるとのこと。
まあ、そうだよね。
/etc/yum.repos.d/ 内のファイルを書き換えて有効なリポジトリを読みに行かせれば大丈夫ってだけの話なんだけど、やっぱりサポート切れのサーバー使うのは良くない!

ということで、CentOS 7 はやめます。

ほんなら何にするねんな?

どうしよ?とりあえず、Streamを使うつもりはない。
で、代替OSはRHEL系かDebian系か。Debian系はあんまり触ったことないのでRH系がいいんだけどな・・・

調べてみると、以下の記事が非常に分かりやすかった。
CentOS終了後はどの代替OSを利用する?LinuxOS比較(2024年版)

検討の結果、Rocky Linuxを第一候補として進めていくことにしました。

ということで、次に進む!

2025/01/15開発環境Apache,Appleシリコン,CentOS,Linux,M1,MariaDB,MySQL,php,UTM

Posted by YANAGIDAryosuke