こんにちは!
プログラミング未経験文系出身、Elixirの国に迷い込んだ?!見習いアルケミストのaliceと申します。
今回はWindows11に対してHyper-Vを用いたElixir開発環境を量産する方法をまとめます。
目的
ElixirのElixir, Phoenixを量産したい。
(環境構築の練習がしたい。かつ、万が一何かやらかしてもOSごと壊せばいいやという環境を作りたい(;^ω^))
実行環境
Windows 11(以降ホストOSはHyper-Vを使える前提で進めます)
目標
こちらの記事に沿って、VM内にElixirの開発環境を構築したい。
ホストOS上のVMの中にさらにWSL2(Ubuntu)をインストールするという、「仮想化の仮想化(仮想化の入れ子)」の環境でElixir, Phoenixの環境構築を行いました。
ホストOS上でやること
Windows11をVMとして作成
VMの仮想化を有効化
ホストOSのPowerShellを管理者権限で起動します。
VMの一覧を取得します。
Get-VM
Name State CPUUsage(%) MemoryAssigned(M) Uptime Status Version
---- ----- ----------- ----------------- ------ ------ -------
ubuntu22.04 Off 0 0 00:00:00 正常稼働中 11.0
Windows 11 開発環境 Running 0 3178 00:10:47.7350000 正常稼働中 11.0
VMの仮想化を有効化します。1
Set-VMProcessor -VMName "Windows 11 開発環境" -ExposeVirtualizationExtensions $true
VM上でやること
(Windowsのみ)WSL2のインストール前(要再起動)
VMのPowerShellを管理者権限で起動し下記実施します。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
(Windowsのみ)WSL2とUbuntu 20.04のインストール
元記事様の手順通りです。
x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージはこの画面が出たらインストール完了です。
※VMの仮想化を有効化が完了していないとWSL2を使おうとした際下記のエラーメッセージが出ます。
(余談)VM上でWSL2起動時にUbuntu20.04がデフォルトで起動する設定
本Windows11(評価版)には最初からUbuntuがインストールされていましたが今回は使いません。
WSL2起動時に新たにインストールしたUbuntu-20.04が起動してほしいので、下記で設定を変更します。
wsl --list
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
Ubuntu-20.04
wsl --set-default Ubuntu-20.04
デフォルトで起動するOSが上記でインストールしたUbuntu-20.04に切り替わりました!
wsl --list
Windows Subsystem for Linux Distributions:
Ubuntu-20.04 (Default)
Ubuntu
WSL上のUbuntu20.04にaliceというユーザー名を作っていたのでそちらでログインしたことが確認できます。
wsl
alice@WinDev2311Eval:/mnt/c/Users/User$
VMのWSL2上でやること
ElixirとPhoenixのインストール
元記事様の手順通りです。
(補足)下記エラーが発生したときの対処
mix archive.install hex phx_new
を実行時に下記エラーが発生する場合
** (UndefinedFunctionError) function :crypto.strong_rand_bytes/1 is undefined (module :crypto is not available)
Elixir、Erlangのバージョンを最新のものにしてみましょう
PostgreSQL(DB)のインストール
元記事様の手順通りです。
DB付きPhoenix PJを動かす
元記事様の手順通りです。
VM内のWSL2配下にて、mix phx.serverで起動できました!
Elixirを最新版(2023年9月現在は1.15.5)に上げる
元記事様の手順通りです。
Phoenixを最新版に上げる
元記事様の手順通りです。
VM内のWSL2配下にて、Phoenix1.7が起動できました(^▽^)/
~Elixirの国のご案内~
↓Elixirって何ぞや?と思ったらこちらもどぞ。Elixirは先端のアレコレをだいたい全部できちゃいます
↓ゼロからElixirを始めるなら「エリクサーチ」がおすすめ!私もエンジニア未経験から学習中です。
↓We Are The Alchemists, my friends!2
Elixirコミュニティは本当に優しくて温かい人たちばかり!
私が挫折せずにいられるのもこの恵まれた環境のおかげです。
まずは気軽にコミュニティを訪れてみてください。3
-
仮想マシンで WSL 2 を実行できますか?
https://learn.microsoft.com/ja-jp/windows/wsl/faq#can-i-run-wsl-2-in-a-virtual-machine- ↩ -
@torifukukaiouさんのAwesomeな名言をお借りしました。Elixirコミュニティを一言で表すと、これに尽きます。 ↩