Laravel+Livewireで遊ぶ為の環境作り on CentOS8

7 min read読了の目安(約6500字

Laravel+Livewireで遊ぶ為の環境づくり on CentOS8[1]

前提

  • クラウド VPS 仮想環境 LinuxPCどれでも良いのでLinux環境を用意出来る事
  • OS付属のパケットフィルタ(ファイヤーウォール)[2]を設定出来る事
  • WEBサーバーはapache2.x、phpはmod_phpで動作
  • https非対応
  • この記事で使う環境はdockerのcentOS8のイメージ ※真似すると躓くので注意

パッケージインストール

インストール

OSアップデート

command
#OSアップデート
[root@0117bc9732cb /]# dnf -y update 
command
epelリポジトリ追加
[root@0117bc9732cb /]# dnf -y install epel-release && dnf -y update 
command
#php、apache、sqlite、redisのインストール
[root@0117bc9732cb /]# dnf install -y php httpd libsqlite3x-devel redis

#phpのインストール
[root@0117bc9732cb /]# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
[root@0117bc9732cb /]# dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
[root@0117bc9732cb /]# dnf module reset php
[root@0117bc9732cb /]# dnf module install php:remi-7.4
[root@0117bc9732cb /]# dnf update

#細々したものインストール
[root@0117bc9732cb /]# dnf install -y libzip-devel libxml2-devel
#細々したものインストール2
[root@0117bc9732cb /]# dnf install php-json php-xml php-pecl-zip unzip mod_php php-pecl-redis5

remi関連のコマンドは全てremi公式を参考にしています

各パッケージの動作確認

apache

command
[root@0117bc9732cb /]# systemctl start httpd

http://IPアドレスにアクセス

dockerコンテナ使っている人はhttpdコマンドを打たないと起動出来ません

php

command
[root@0117bc9732cb /]# php -v
PHP 7.4.15 (cli) (built: Feb  2 2021 14:19:57) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

SQLite

command
[root@0117bc9732cb /]# sqlite3 dbfile
SQLite version 3.26.0 2018-12-01 12:34:55
Enter ".help" for usage hints.
sqlite>

Laravelインストール

composerのインストール

composerの公式ページを参考に

command
[root@0117bc9732cb /]# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
[root@0117bc9732cb /]# php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
[root@0117bc9732cb /]# php composer-setup.php
[root@0117bc9732cb /]# php -r "unlink('composer-setup.php');"
[root@0117bc9732cb /]# mv composer.phar /usr/bin/composer

Laravelインストーラーのインストール

laravel公式ページを参考に

command
[root@0117bc9732cb /]# composer global require laravel/installer
[root@0117bc9732cb /]# export PATH=$HOME/.config/composer/vendor/bin:$PATH

Laravelのインストール

command
[root@0117bc9732cb /]# mkdir /var/www
[root@0117bc9732cb www]# laravel new lfz-app
message _ _
| |                             | |
| |     __ _ _ __ __ ___   _____| |
| |    / _` | '__/ _` \ \ / / _ \ |
| |___| (_| | | | (_| |\ V /  __/ |
|______\__,_|_|  \__,_| \_/ \___|_|

~ごちゃごちゃごちゃ~

Laravel+Livewireで遊ぶのようにlaravel new lfz-app --jetにする事も出来ます

Apacheの設定

apacheの動作モード変更[3]

vim /etc/httpd/conf.modules.d/00-mpm.conf
#LoadModule mpm_event_module modules/mod_mpm_event.so#コメントアウト
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so  

バーチャルホストの設定

vim /etc/httpd/conf.d/laravel.conf
<VirtualHost *:8880>
    DocumentRoot /var/www/lfz-app/public
    ServerName localhost
    RewriteEngine on
    DirectoryIndex index.html index.php

    <Directory "/var/www/lfz-app">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
  1. <VirtualHost *:8880>8880は使うポートを指定
  2. ServerName localhostlocalhostは使うドメインを指定

portを変更する場合はListenディレクティブも設定し、パケットフィルタでもポート開放しましょう

Laravel動作確認

Apache再起動

command
[root@0117bc9732cb www]# systemctl restart httpd

サイト表示

http://localhost:8880
エラーが表示される事の確認

The stream or file "/var/www/lfz-app/storage/logs/laravel.log" could not be opened in append mode: failed to open stream: Permission denied

ディレクトリ権限の変更

command
[root@0117bc9732cb www]# chmod -R 777 /var/www/lfz-app/storage

サイト表示 part2

http://localhost:8880
正常に表示出来る事の確認

SQLite用に.envの修正

vim /var/www/lfz-app/.env
DB_CONNECTION=sqlite
DB_DATABASE=/var/www/lfz-app/lfz_app.sqlite
DB_FOREIGN_KEYS=true
command
[root@0117bc9732cb www]# cd /var/www/lfz-app
[root@0117bc9732cb lfz-app]# touch /var/www/lfz-app/lfz_app.sqlite
[root@0117bc9732cb lfz-app]# php artisan config:cache

参考
https://laravel.com/docs/8.x/database#sqlite-configuration

マイグレーション

command
[root@0117bc9732cb lfz-app]# php artisan migrate

Redisの導入

Redisサーバー起動

command
[root@0117bc9732cb lfz-app]# systemctl start redis

dockerコンテナ使っている人はredis-serverコマンドを打たないと起動出来ません

Redis接続確認

command
[root@0117bc9732cb lfz-app]# redis-cli
127.0.0.1:6379> exit

tinkerでRedisが使える事を確認

[root@0117bc9732cb lfz-app]# php artisan tinker
Psy Shell v0.10.6 (PHP 7.4.15 — cli) by Justin Hileman
>>> use Redis;
>>> $redis = new Redis();
=> Redis {#3344
     isConnected: false,
   }
>>> $redis->connect('127.0.0.1', '6379');
=> true
>>> $redis->set('LfzKey', 'livewire de A So Bu');
=> true
>>> $redis->get('LfzKey');
=> "livewire de A So Bu"

参考

https://laravel.com/docs/8.x/redis

nodejsの追加

command
[root@0117bc9732cb lfz-app]# curl -sL https://rpm.nodesource.com/setup_15.x | bash -
[root@0117bc9732cb lfz-app]# dnf update
[root@0117bc9732cb lfz-app]# dnf -y  install nodejs
[root@0117bc9732cb lfz-app]# npm update

注意事項まとめ

前提にある通りVPSかHyper-Vなどの仮想環境にCento OS8を入れて実施しましょう
本記事のようにdockerコンテナ上で作業するのはおすすめしません

サービスの起動、停止はsystemctlを使いましょう

ちょっと開発に慣れたらsqliteは使わずmysqlを導入しましょう
そこそこ開発に慣れたらapache+mod_phpを卒業してnginx+php_fpmに移行しましょう

脚注
  1. Laravel+Livewireで遊ぶではdockerコンテナを複数使って構築しており、webサーバーもnginxを使っています ↩︎

  2. RH系ならfirewalld(iptables)、debian系ならufw
    よく分からない人はVPSならパケットフィルタリングサービス付きのVPSでフィルタリング設定してOSのフィルタはノーガードに設定しましょう
    ローカル環境ならノーガードでOKです ↩︎

  3. mod_phpを使う為に必要です
    これをしない場合はphp-fpmの設定が必要です ↩︎