0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2023-08-27

前提

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

Docker と Laravel Sail は使いません。また、この環境は SELinux が有効でなく、Firewall も動いていませんのでご留意ください。

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のサイトを参照して、設定ファイルを作成後に再起動して有効にする。サイトに記載のとおり、WSLのデフォルトのUbuntuではこの作業は不要のようだが、現時点でのAlmaLinux8では必要。

/etc/wsl.conf
[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のインストール

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レポジトリを追加してインストールする。

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

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

.env
+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が可能になっている。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?