WSLのAlmaLinux8でLaravel10のサンプルプロジェクトを起動するまで

前提

  • Windows10 Pro(x64)
  • WSL2インストール済み
  • MicrosoftStoreからAlmaLinux8インストール済み
  • WSLは初回起動してユーザー作成済み

Docker と Laravel Sail は使いません。またこの環境は SELinux が有効でなく、Firewall も動いていませんので、ご留意ください。 また、WSLの環境については、よければ下記を参照ください。

WSLについての覚書 - pipin68k’s blog

AlmaLinuxの初期状態確認

パッケージは minimal となっているのか、hostname,ip addrといった基本的なコマンドが使えない。また、systemd が有効になっていない。

hostname -> NG
ip addr -> NG
whoami -> OK
ping www.google.com -> OK
sudo systemctl -> NG
dnf list --installed -> OK

systemd 有効化

Microsoftのサイトを参照して、設定ファイル(/etc/wsl.conf)を作成し、WSLを再起動してこれを有効にする。サイトに記載のとおり、WSLのデフォルトのUbuntuではこの作業は不要のようだが、現時点でのAlmaLinux8では必要。

[boot]
systemd=true

PowerShellからシャットダウンする。ターミナル等からアクセスすれば自動的に起動する。

wsl --shutdown

参考

基本的なコマンドのインストール

locateは好みで。

sudo dnf install hostname iproute
sudo dnf install zip unzip
sudo dnf install mlocate
sudo dnf update
hostname -> OK
ip addr -> OK
sudo systemctl -> OK

Apache2のインストール

インストールして、起動して、サービス登録する。

sudo dnf install httpd
sudo systemctl start httpd
sudo systemctl enable httpd

Windows側から「http://localhost 」にアクセスして、テストページが表示されることを確認する。

PHP8.2のインストール

インストール可能なPHPを確認する。

dnf module list php
Last metadata expiration check: 0:16:35 ago on Sun Aug 27 10:08:06 2023.
AlmaLinux 8 - AppStream
Name                     Stream                     Profiles                                      Summary
php                      7.2 [d]                    common [d], devel, minimal                    PHP scripting language
php                      7.3                        common [d], devel, minimal                    PHP scripting language
php                      7.4                        common [d], devel, minimal                    PHP scripting language
php                      8.0                        common [d], devel, minimal                    PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Laravel10はPHP8.1以降が必要なので、Remiレポジトリを追加してPHP8.2をインストールする。

sudo dnf install epel-release
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf module list php
Remi's Modular repository for Enterprise Linux 8 - x86_64
Name              Stream                   Profiles                                   Summary
php               remi-7.2                 common [d], devel, minimal                 PHP scripting language
php               remi-7.3                 common [d], devel, minimal                 PHP scripting language
php               remi-7.4                 common [d], devel, minimal                 PHP scripting language
php               remi-8.0                 common [d], devel, minimal                 PHP scripting language
php               remi-8.1                 common [d], devel, minimal                 PHP scripting language
php               remi-8.2                 common [d], devel, minimal                 PHP scripting language
sudo dnf module install php:remi-8.2

Laravel10に必要なモジュールをインストールする。公式サイトに記載のサーバ要件はこれで満たせるはず。

sudo dnf install php-pdo

Apacheと同様にFastCGIの起動とサービス登録をしておく。Apacheを再起動する。

sudo systemctl start php-fpm
sudo systemctl enable php-fpm
sudo systemctl restart httpd

サービスが「running」となっていることを確認する。

systemctl list-units --type=service

参考

PHPが有効か確認

httpd.conf を探して、DocumentRootを確認する。

sudo updatedb
locate httpd.conf
sudo cat /etc/httpd/conf/httpd.conf |grep DocumentRoot

PHP情報確認用ページ(/var/www/html/info.php)を作成する。

<?php
  phpinfo();

Windows側から「http://localhost/info.php 」にアクセスして、PHPが有効なことを確認する。

参考

sqlite3のインストール

Sqliteを使いたいので、インストールしておく。

sudo dnf install sqlite
sqlite3 -version # 3.26.0 2018-12-01 12:34:55 ... 

Composerのインストール

公式サイトの案内どおり。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
composer -v # Composer version 2.5.8 2023-06-09 17:13:21

参考

Laravelプロジェクト作成

composer で、Laravel プロジェクトを作成する。内部的には、git clone をしている模様。

composer create-project laravel/laravel sample-app
cd sample-app
php artisan -V # Laravel Framework 10.20.0

個別環境設定ファイル(.env)で、DBにsqliteを使うように変更。

+DB_CONNECTION=sqlite
-DB_CONNECTION=mysql
-DB_HOST=127.0.0.1
-DB_PORT=3306
-DB_DATABASE=laravel
-DB_USERNAME=root
-DB_PASSWORD=

migrateを実行すると、sqliteデータベースを作成するか聞かれるので、YESする。

php artisan migrate
php artisan serve

Windows側から「http://localhost:8000 」にアクセスして、サンプルプロジェクトが表示されることを確認する。

参考

node.js のインストール

アセットのコンパイルに必要なのでインストールしておく。npmもインストールされる。

dnf module list nodejs
Last metadata expiration check: 11:29:36 ago on Sun Aug 27 10:30:09 2023.
AlmaLinux 8 - AppStream
Name           Stream         Profiles                                      Summary
nodejs         10 [d]         common [d], development, minimal, s2i         Javascript runtime
nodejs         12             common [d], development, minimal, s2i         Javascript runtime
nodejs         14             common [d], development, minimal, s2i         Javascript runtime
nodejs         16             common [d], development, minimal, s2i         Javascript runtime
nodejs         18             common [d], development, minimal, s2i         Javascript runtime

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
sudo dnf module install nodejs:18/common
node -v # v18.16.1
npm -v # 9.5.1
npm install -g npm

上記のあと、プロジェクトのルートフォルダ(package.jsonがある)でnpm install することで、node.jsからのデバッグ実行npm run dev(ただし、これはフロントエンドのデバッグ実行)とアセットのコンパイルnpm run buildが可能になっている。

cd sample-app
npm install

参考