WSLのAlmaLinux9でLaravel11のサンプルプロジェクトを起動するまで
前提
Windows10 Pro(x64)
WSL2インストール済み
MicrosoftStoreからAlmaLinux9インストール済み
WSLは初回起動してユーザー作成済み
Docker と Laravel Sail は使いません。またこの環境は SELinux が有効でなく、Firewall も動いていませんので、ご留意ください。
WSLについては、よければ下記を参照ください。
pipin68k.hatenablog.com
この記事は、以下の焼き直しです。
pipin68k.hatenablog.com
AlmaLinuxの初期状態確認
まずはOSを確認する。インストール時期で異なると思われるが、ここでは、9.3 であることが確認できる。redhat -releaseとsystem-releaseは、almalinux-release のリンボリックリンクになっている。
cat /etc/almalinux-release
AlmaLinux release 9.3 (Shamrock Pampas Cat)
パッケージは minimal となっているのか、hostname
,ip addr
といった基本的なコマンドが使えない。また、systemd が有効になっていない。ping が動作しないのは、パッケージ不足ではなく、ケイパビリティかカーネル パラメータの変更によるもの。
hostname -> NG
ip addr -> NG
whoami -> OK
ping www.google.com -> NG
sudo systemctl -> NG
dnf list --installed -> OK
systemd 有効化
ゲストOSの動作を制御する設定ファイル(/etc/wsl.conf)を作成し、WSLを再起動してこれを有効にする。
[boot]
systemd=true
コンソールからshutdown -h now
は通らないので、PowerShell からシャットダウンする。ターミナル等からアクセスすれば自動的に起動する。再起動後はsystemctl
が利用可能になっている。
wsl --shutdown
参考
基本的なコマンドのインストール
locate
は好みで。find
で良ければ不要。
sudo dnf install hostname iproute
sudo dnf install zip unzip
sudo dnf install mlocate
sudo dnf update
ping を実行できるようにするには、ICMPのため raw socket を開く許可を与えるか、ping _group_range を変更するか、のどちらかが必要になる。詳細はリンク先を参照のこと。
sudo setcap 'cap_net_raw+p' /bin/ping
or
sudo sysctl -w net.ipv4.ping_group_range="0 65535"
hostname -> OK
ip addr -> OK
sudo systemctl -> OK
ping www.google.com -> OK
参考
Apache2のインストール
インストールして、起動して、サービス登録する。
sudo dnf install httpd
sudo systemctl start httpd
sudo systemctl enable httpd
Windows 側から「http://localhost 」にアクセスして、AlmaLinuxのテストページが表示されることを確認する。
Apache Test Page
参考
PHP8.2のインストール
インストール可能なPHP を確認する。
dnf module list php
AlmaLinux 9 - AppStream
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Laravel11の対応はPHP8.2~8.3なので、レポジトリの追加なしでインストールできる。
sudo dnf module install php:8.2
Laravel11に必要なモジュールをインストールする。公式サイトに記載のサーバ要件はこれで満たせるはず。
sudo dnf install php-pdo
Apache と同様にFastCGI の起動とサービス登録をしておく。Apache を再起動する。パッケージは、php と同時にインストールされている。
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
sudo systemctl restart httpd
httpd とphp -fpm サービスが「running」となっていることを確認する。
systemctl list-units --type=service
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 が有効なことを確認する。
参考
PostgerSQL 16 のインストール
今回は、PostgerSQL を使いたいのでインストールする。
インストール後は、データベースを初期化し、サービスとして起動しておく。クライアントの php -pgsql もインストールする。
# Install the repository RPM:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# Disable the built-in PostgreSQL module:
sudo dnf -qy module disable postgresql
# Install PostgreSQL:
sudo dnf install -y postgresql16-server
# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16
sudo dnf install php-pgsql
認証に関する設定は、pg_hba.conf ファイルで行う。
sudo locate pg_hba.conf
sudo cat /var/lib/pgsql/16/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
#local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# IPv6 local connections:
host all all ::1/128 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 scram-sha-256
host replication all ::1/128 scram-sha-256
初期状態ではローカルからのpeer認証しかできないので、ローカル接続して、パスワードを設定する。
sudo -u postgres psql
\password
\quit
パスワード設定後は、ホスト接続して、テスト用データベースを作成する。
psql -h localhost -U postgres
create database laravel;
\list
\quit
参考
phAdmin4のインストール
PostgreSQL の管理ツールもインストールしておく。
sudo rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm
Desktopモードはインストールせず、Webモードのみをインストールする。セットアップスクリプト 実行時に、ログインIDとなるメールアドレスとパスワードを登録する。
# Install for web mode only.
sudo yum install pgadmin4-web
sudo /usr/pgadmin4/bin/setup-web.sh
http://localhost/pgadmin4 にアクセスして、ログインすると管理が可能になっている。設定(/etc/httpd /conf.d/pgadmin4.conf)は以下のとおり、ローカル接続からのアクセスのみ許可されているので、必要に応じて、特定のIPアドレス を追加しておく。
LoadModule wsgi_module modules/mod_wsgi.so
WSGIDaemonProcess pgadmin processes=1 threads=25 python-home=/usr/pgadmin4/venv
WSGIScriptAlias /pgadmin4 /usr/pgadmin4/web/pgAdmin4.wsgi
<Directory /usr/pgadmin4/web/>
WSGIProcessGroup pgadmin
WSGIApplicationGroup %{GLOBAL}
<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
+ Allow from AAA.BBB.CCC.DDD
</IfModule>
</Directory>
参考
Composerのインストール
公式サイトの案内どおり。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { 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.7.7 2024-06-10 22:11:12
参考
Laravelプロジェクト作成
composer で、Laravel プロジェクトを作成する。
composer create-project laravel/laravel sample-app
cd sample-app
php artisan -V # Laravel Framework 11.15.0
個別環境設定ファイル(.env)で、DBにpgsqlを使うように変更。
-DB_CONNECTION=sqlite
-# DB_HOST=127.0.0.1
-# DB_PORT=3306
-# DB_DATABASE=laravel
-# DB_USERNAME=root
-# DB_PASSWORD=
+DB_CONNECTION=pgsql
+DB_HOST=127.0.0.1
+DB_PORT=5432
+DB_DATABASE=laravel
+DB_USERNAME=postgres
+DB_PASSWORD=postgres
migrateを実行すると、.envで設定したlaravelデータベースにテーブルが作成される。
php artisan migrate
php artisan serve
Windows 側から「http://localhost:8000 」にアクセスして、サンプルプロジェクトが表示されることを確認する。
参考
node.js のインストール
アセットのコンパイル に必要なのでインストールしておく。npmもインストールされる。
dnf module list nodejs
Name Stream Profiles Summary
nodejs 18 common [d], development, minimal, s2i Javascript runtime
nodejs 20 common [d], development, minimal, s2i Javascript runtime
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
sudo dnf module install nodejs:20/common
node -v # v20.12.2
npm -v # 10.5.0
npmは他でも使えた方が便利なので、グローバル環境にインストールしておく。
sudo npm install -g npm
上記のあと、プロジェクトのルートフォルダでnpm install することで、package.json を参照して、node関連のパッケージがインストールされる。
cd sample-app
npm install
参考
Starter Kits(Breeze)のインストールと日本語化
ログイン回り一式を提供してくれる Starter Kits があるので、これを導入する。
composer require laravel/breeze --dev
php artisan breeze:install
php artisan migrate
すべて英語表記だが、日本語化パッケージを作ってくれている人がいるので、これを導入する。
composer require askdkc/breezejp --dev
php artisan breezejp
トップページの右上に「Log in」と「Register」が追加されている。クリックで表示される各画面が日本語化されているのが確認できる。
php artisan serve
Laravel Test Page
参考