九保すこひ@フリーランスエンジニア|累計300万PVのブログ運営中
さてさて、現在いろんなことにチャレンジ中なのですが、ふと「そういえば言語だけじゃない部分でも体験だけはしておいたほうがいいな」なんてアイデアが浮かんできました。
すると突然、過去に購入した「あるもの」を思い出しました。
それが・・・・・・
Raspberry Pi(らずべりーぱい)
です。
なんと、すでに購入してから2年近くたっているのに封すらはがしていない「Raspberry Pi 3 Model B +」というセットになっているやつです。(この頃忙しかったんですよね😂)
そして、これもいい機会だと思い、ラズパイ(OSはそのままのRaspberry Pi OS
)を使ってLaravel
の開発環境を作ってみることにしました。
Raspberry Pi
は、教育用ということもあってすごく安いですので、「パソコンはないけど、Web開発にジョブチェンジを考えてる」という人は、一度今回の記事を見て環境構築し、本当に自分に向いてるかどうかをチェックしてもいいかもしれません。(ただし、環境構築の方が格段に難しいので、そこでプログラムが向いてないとは判断しないでほしいです👍)
ぜひ参考になれば嬉しいです😄✨
「Rasbery Piじゃなく、
Raspberry Pi です。
知らなかった…」
実行環境: Raspberry Pi 3 Model B +(すでに 4 が出てますが😂)
目次
やりたいこと
今回は、Raspberry Pi 3
を使って、PHP 8
の実行環境にLaravel 8
をインストールしてみます。
そして、さらにそのLaravel
プロジェクトはブラウザから「laravel-dev.test」でアクセスできして、ログインまでできるようにしてみます。
前提として
インターネットへの接続や日本語入力など基本的なラズベリーパイの設定が完了していることが前提です。
もしまだの方はYouTube
やブログなど先人たちの情報をみればすぐに完了できると思いますので、そのあとでまた戻ってきてください。(ヒカルくんとかの動画に遭遇しても頑張って戻ってきてください❗)
また、インストールなどの作業は「ターミナル」と呼ばれる黒い画面で命令文を実行していきます。
実行は以下の部分をクリックしてください。
もしくは、ホーム(ラズベリーマーク) > アクセサリ > LXTerminal でもOKです。
nginx(ウェブサーバー)をインストールする
では、まずはターミナルを開きウェブサーバーのnginx
をインストールしていきましょう。
nginx
は、apache
よりも高速に実行できるということで人気がでており、最近読んだ以下の記事でもシェアが1位になっています。
📝 参考ページ: (2021年)7月Webサーバシェア、Apacheが減少
では、インストールです。
以下のコマンドを実行してください。
sudo apt install nginx
すると、
続行しますか? [Y/n]
と聞かれますので、そのままエンターキーを押してください。
※ なお、この後の作業でも基本的に同じように聞かれますがエンターキーで実行を確定してください。
インストールが完了したらちゃんと動いているか確認してみましょう。
まず以下のコマンドでnginx
を起動します。
sudo systemctl start nginx
そして、ブラウザで「http://localhost/」にアクセスして以下の表示になっていればインストールはうまくいっています。
MySQL(MariaDB)をインストールする
今回は先にデータベースとしてMySQL
(MariaDB
)をインストールします。
MariaDB
とは、MySQL
と互換性があるデータベースのことです。
※ ただし、以下の記事によると10.3
以降は互換性が失われていくらしいので今後は注意が必要かもしれません。
📝 参考ページ: MySQL 8 と MariaDB 10.3 以降は注意
以下のコマンドでインストールしてください。
sudo apt install mariadb-server
これで、sudo mysql
を実行するとMariaDB
の中に入れます。(ちなみに、出るときはexit
です。Bye
と言われて終了することができます😄)
では、次に権限です。
MariaDB
の中に入ったまま以下のコマンドを実行して権限とパスワードを設定します。(今回はローカル環境なのでパスワードはシンプルに「password」にします)
grant all privileges on *.* to root@'localhost' identified by 'password';
0 rows affected と表示されてはじめ焦ります(私です😂)が、きちんと設定できています。
PHP 8 をインストールする
では、続いてPHP 8
がnginx
で使えるようにするための作業です。
PHP-FPM をインストールする
nginx
でPHP 8
を実行するにはPHP-FPM
が必要になりますので、これをインストールします。
以下のコマンドを実行してください。
sudo apt install php-fpm
なお、私の環境(Raspberry Pi 3)では、インストールされるのはPHP 7.0
ですが、これだとLaravel 5.5
をインストールしないといけなくなり、さすがに古すぎるので以下を実行してPHP 8.0
をインストールします。(感謝✨)
元ネタは以下のページです。
なお、PHP 8.0
がインストールされていればここは飛ばしてもOKです。
📝 参考ページ: Install PHP 8.0 on Raspberry Pi
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update
そして、以下を実行します。
sudo apt install php8.0-common php8.0-cli php8.0-fpm
これで、PHP 8.0
がインストールされます。
以下のコマンドでチェックしてみてください。
php -v
※ ちなみに、nginx
を使うと、サイトごとに違ったバージョンのPHP
を使うように設定できます。
Laravelに必要なPHPモジュールをインストールする
実は、PHP
だけをインストールしただけではLaravel
を動かすためのモジュールが足りていません。
そのため、以下のコマンドで必要なものをインストールしてください。
sudo apt install php8.0-bcmath php8.0-mbstring php8.0-xml php8.0-mysql
nginx の設定ファイルを変更する
次に「laravel-dev.test」でLaravel
にアクセスできるようにするための設定を追加します。
以下のコマンドを実行してください。
sudo leafpad /etc/nginx/sites-available/default
すると、leafpad
というテキストエディタでnginx
の設定ファイルが開きますので、以下を最後に追加して保存してください。
# laravel-dev.test server { listen 80; server_name laravel-dev.test; root /var/www/html/laravel-dev/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; index index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } }
そして、変更した設定を有効にするには、nginx
の再起動が必要になります。
以下のコマンドを実行してください。
sudo systemctl restart nginx
hostsを追加する
今のままでは、laravel-dev.test
がローカル環境に向いていないのでアクセスしてもうまくいきません。
そこで/etc/hosts
の中に、
laravel-dev.test は、 127.0.0.1(つまりローカル)にアクセスしてね!
という設定を追加します。(太字が追加した部分です)
127.0.0.1 localhost 127.0.0.1 laravel-dev.test ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.1.1 raspberrypi
これで、ブラウザからアクセスすると今からインストールするLaravel
が実行されることになります。
composer をインストールする
では、Laravel
をインストールするために必要なPHP
のパッケージマネージャcomposer
でインストールしていきます。
※ apt
でのインストールもできますが、旧バージョンの1
がインストールされるので、直接インストールしていきます。
ちなみに、インストールコマンドはバージョンで少しずつ違うので以下の本家ページに書いてある4行のコマンドを実行してください。
📝 本家ページ: Download Composer
※ なお、権限の関係でダウンロードできない可能性がありますので、cd & エンターキー
でホームディレクトリに移動しておいてください。
そして、4つのコマンドを実行したら以下のコマンドでパスが通っている(どこからでも実行できる)ディレクトリに移動させます。
sudo mv composer.phar /usr/bin/composer
実行後、composer
とコマンドを実行してバージョン情報やコマンドの一覧が表示されていればOKです。
npm&nodejs(バージョン12) をインストールする
では、ビルドする際に必要になってくるnpm
をインストールします。
npm
はNode.js
のパッケージマネージャです。
以下のコマンドを実行してください。
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
実行が完了したら、以下のコマンドでインストールできます。
sudo apt install nodejs
※ なお、node -v
もしくはnpm -v
でバージョンを確認することができます。
adminer をインストールする
おそらくMySQL
の管理はPhpMyAdmin
が有名だと思いますが、私の開発環境ではより高速に動くadminer
を使っています。
なんと、adminer
はたった1ファイルで作られているそうです!
この開発者さん、すごいですね。
ちなみにapt
でもインストールできるみたいですが、すごく古いバージョンだったので直接インストールすることにします。
以下のコマンドを実行してください。
sudo mkdir /usr/share/adminer
sudo wget "http://www.adminer.org/latest.php" -O /usr/share/adminer/latest.php
sudo ln -s /usr/share/adminer/latest.php /usr/share/adminer/adminer.php
これで、次回からは2個めのコマンドを実行してファイルを上書きするだけでadminer
が最新版にアップデートされます。
では、nginx
の設定にadminer
も追加しておきましょう。
以下のコマンドを実行してください。
sudo leafpad /etc/nginx/sites-available/default
そして、中身を次のように変更します。
# Adminer server { listen 80; server_name adminer.test; root /usr/share/adminer; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; index index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } }
そして保存が完了したら、以下のコマンドでnginx
を再起動します。
sudo systemctl start nginx
次に、/etc/hosts
です。
sudo leafpad /etc/hosts
以下を追加してください。
127.0.0.1 adminer.test
これでブラウザから「http://adminer.test/adminer.php」にアクセスすると以下のようにログインフォームが表示されます。
ユーザーに「root」、パスワードに「password」を入力すると以下のようにログインができます。
では、今回使うことになる「laravel-dev」というデータベースを登録しておきましょう。まずは「データベースを作成」リンクをクリックします。
すると、データベースの作成ページに移動するので、「laravel-dev」と入力し、「utf8bm4_unicode_cli」を選択。
後は、保存ボタンをクリックするだけでOKです。
完了すると以下のようになります。
Laravelをインストールする
では、長い長い作業のあとにやっとメインがやってきました。
高級なレストランなら、肉が来る前にお腹パンパンといったところでしょうか(笑)
まずターミナルでcd & エンターキー
でホームディレクトリに戻ります。
そして、以下のコマンドでフォルダをつくりましょう。
mkdir php-dev
※ 権限の関係でsudo
はつけないでください。
そして、つくったフォルダの中へ移動します。
cd php-dev
次に、composer
でLaravel
のインストールです。
composer create-project laravel/laravel laravel-dev
インストールが完了したら、フォルダ内に入ってパーミッション(権限)を変更しておきましょう。
cd laravel-dev
sudo chmod 777 storage -R
sudo chmod 777 bootstrap/cache -R
では、次にインストールしたLaravel
フォルダが「あたかも nginx で設定した場所にあるかのように」します。(いわゆる、シンボリックリンクです)
cd /var/www
sudo rm html -R
sudo ln -s /home/pi/php-dev html
これで、/var/www/html
内には、先程インストールしたlaravel-dev
フォルダが存在するようになります。
では、一度ブラウザで「http://laravel-dev.test」にアクセスしてみましょう。
うまくいっているようです👍
データベースの最大長問題対策をする
おそらくバージョンの関係でDBがうまく実行できないので、Laravel
側で対策をしておきます。
以下のコマンドを実行してください。
leafpad /home/pi/php-dev/laravel-dev//app/Providers/AppServiceProvider.php
するとテキストエディタが開くので、中身を以下のように変更してください。
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Schema; // 👈 ここを追加しました class AppServiceProvider extends ServiceProvider { /** * Register any application services. * * @return void */ public function register() { // } /** * Bootstrap any application services. * * @return void */ public function boot() { Schema::defaultStringLength(191); // 👈 ここを追加しました } }
ログインできるようにする
そして、せっかくなのでログインもできるようにやってみます。
まずは、.env
にDB情報を書き込み、保存しましょう。
leafpad /home/pi/php-dev/laravel-dev/.env
テキストエディタが開くので中身を以下のようにします。
# 省略 DB_DATABASE=laravel-dev DB_USERNAME=root DB_PASSWORD=password #省略
※ おそらくDB_USERNAME
は初期状態でroot
になってると思います。
そして、残りの作業は以下のページを参考にしてみてください。(ただし、コマンドは、/home/pi/php-dev/laravel-dev
の中にcd
コマンドで移動してから実行する必要があります)
📝 参考ページ: Laravel Breezeで「シンプルな」ログイン機能をインストール
テストしてみる
では、最後に「http://laravel-dev.test/login」にアクセスして実際にログインしてみましょう。
すると・・・・・・
はい❗
うまくログインできました。
成功です😄✨
ジョブチェンジをお考えの方へ: ラズパイで開発環境を提供します
今回Laravel
の開発環境をつくってみましたが、正直15年近く開発をしている私からしても「やること多いし、専門知識たくさんいるな…」と改めて感じました。
正直なところ、Laravel での開発より環境構築の方がはるかに難しいので、
Laravel を勉強するために、環境構築の勉強をしないといけない…
という本末転倒な状況で、これは「三角形の面積を求めるために、微分積分が必要」みたいなカンジです…💦
そこで、そんな方たちのために「私が Raspberry Pi を代理購入し、Laravel の開発環境を整えた上でお届けする」というサービスはどうかと考えていました。
というのも、(個人的な意見ですが)どんなことでも人には「向き不向き」があると考えているので、転職・退職をする前にまずプログラミングを体験してほしいという気持ちがあるからです。(いろんな意見があると思いますが、勉強するために退職というのはリスクが大きいかな、と考えています)
ラズパイでしたら、HDMI
がついているテレビにも接続できますし、あまっている有線マウス&キーボードがあればすぐにLaravel
の勉強をはじめることができます。(なんなら私の開発したサンプルLaravel
が起動できる状態で出荷してもいいかもしれません)
もしご興味があるようでしたらお見積させていただきますので、ぜひお問い合わせからご連絡ください。
お待ちしてます。m(_ _)m
おわりに
ということで今回は、Raspberry Pi
にLaravel
の開発環境をインストールしてみました。
まずはじめてRaspberry Pi
を体験して感じたのは、「こんな小さいにここまでサクサク動くとは!」でした。
もちろん動作が遅くなるときもありますが、なんなら、一昔前に10万円以上出して買ったモバイルノートよりも高性能なんじゃないでしょうか(笑)
なお、今回はRaspberry Pi OS
をそのまま使いましたが、正直なところUbuntu
では実行できるコマンドがRaspberry Pi OS
ではできなかったりしたので、もし次やるとしたらUbuntu
をインストールして使うと思います。
また、私のラズパイはメモリが1GBしかなかったため、当初は紹介する予定だったVSCode
の項目は削除しました。(もっさりどころか、フリーズしてしまいました…💦)
ただ、現在主流のバージョン4ではメモリが最大8GBも搭載しているので問題ないだろうと想像しています。
また、キーボード内部にRaspberry Pi 4
が搭載された「Raspberry Pi 400」、いいですよね!
※ ついに2021.08.01
に「Raspberry Pi 400 日本版」が発売されたので早速購入しちゃいました!
↓ ↓ ↓
後は、これ以外に必要なのはモニターだけです。
正直なところフリーランスな私は出先でもPCを使いたい場合がちょこちょこありますが、「さすがにノートPCは重いし、かさばるよな…」ということで、遠出すること自体が減ってしまいました。
ただ、これさえあればHDMI
のディスプレイがあればいいだけですし、なんならスマホをディスプレイ代わりに使うこともできるので、出先専用PCとして考えてもいいかなというカンジです。
やはりいろいろと興味のあることを経験してみるのはいいことですね。
ぜひ皆さんも楽〜に挑戦してみてください。
ではでは〜❗
「この記事はほとんど
ラズパイで書きました!」