HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
English Translate 中文翻訳
LINK
BACK
 

[NEW] 2018/03/14

Raspberry Piに Laravel 5.6 PHPフレームワークの Webサーバを構築する方法 Raspberry Piに Laravel 5.6 PHPフレームワークの Webサーバを構築する方法

(ラズパイで Hello Laravel 5.6 + PHP7.1 PHPサーバを構築する、PHP7.1インストール方法も)

Tags: [Raspberry Pi], [電子工作]






● Raspberry Pi 3 Model Bを遂に購入

 Raspberry Pi3 Model B RPI2 RPI3

 大人気の CPUボードの Raspberry Piに WiFiと Bluetoothが搭載されたモデルが新発売となりました。
 以前から Raspberry Pi 2を買おうかどうか迷っていましたが、Raspberry Pi 3 Model Bの発売を機に購入を決意してラズベリアンになる事にしました。

 ※ ラズパイの OS Raspbianはバージョンが上がる毎に過去の版と OSの内部の作りが変わり、過去に書かれた製作記事(例えば Raspbian Wheezyの時代の記事)がそのままではエラーが出たりして動かない事が有ります。
 ※ 当方のホームページのラズパイ記事は全て Raspberry Pi 3 Model Bと Raspbian Jessieの組み合わせで動作確認をしております。
(ただし、将来的に新しい Raspbian OSが出た場合に、当方の Raspbian Jessieを基にした内容がそのままでは動かない可能性が有ります。)
 ※ 2017/08/16から Raspbian OSは Raspbian Jessieから Raspbian Stretchに変わりました。

Download Raspbian for Raspberry Pi

ちなみに、歴代のバージョンと名称は
Debianコードネーム年月備考
Debian 9Stretch2017/08/16~
Debian 8Jessie2015~2016/02からラズパイ3対応
Debian 7Wheezy2013~2016
Debian 6.0Squeeze2011~2014
Debian GNU/Linux 5.0Lenny2009~2012


●ラズパイで PHPフレームワークの Laravelサーバを構築する方法

 使用した Raspbian OSのバージョン

Release date: 2018-03-13
2018-03-13-raspbian-stretch.img
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.9.80-v7+ #1098 SMP Fri Mar 9 19:11:42 GMT 2018 armv7l GNU/Linux

pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.3 (stretch)
Release:        9.3
Codename:       stretch

Release date: 2017-11-29
2017-11-29-raspbian-stretch.img
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l GNU/Linux

pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.1 (stretch)
Release:        9.1
Codename:       stretch


● Laravelとは?

 Laravelとは Symfonyをベースにした PHPフレームワーク。

ウェブ職人のためのPHPフレームワーク。

 必要になりそうなので自分専用の実験環境を作成します。



● Laravelのバージョンと必要な PHPのバージョンの関係

Laravelのバージョン時期必要な PHPのバージョン
Laravel v5.42017年1月PHP 5.6.4以上
Laravel v5.52017年8月 LTSPHP 7.0以上
Laravel v5.62018年2月PHP 7.1.3以上
 Laravel 5.5は PHP 7.0以降を
 Laravel 5.6は PHP 7.1.3以降を必要とします。

 それで、ラズパイの Raspbian Stretch OSは 2018年 3月現在 PHP7.1に対応していませんが、下記の設定をする事で公式の raspbian.orgサーバから PHP 7.1を apt-getでインストール出来ます。
●公式の raspbian.orgサーバから取得するメリット
 ※ 第三者のビルドした PHP 7.1を組み込まなくても良い
 ※ PHP 7.1を自分でビルドしなくても良い

 公式の Raspbian Repositoryサーバから 2019年リリース予定の時期 OSの "Buster"から PHP 7.1をインストールします。
Raspbian Repository
http://archive.raspbian.org/ Index of /raspbian/dists/buster/

Clean install Rasbian buster
2017/8/28
You're about eighteen months too early. I wouldn't expect to be testing Buster before February 2019 as there will be nothing built for it until there's an early release candidate.
 「18ヶ月もはえーよ!」
 DougieLawsonさんは並々ならぬサポートで大変だなぁ。

Raspbian Buster
2018/1/28
Q: Raspbian Buster
A: You're about eighteen months too early.
 上記の "eighteen months"は時期の計算的にコピペミスでしょうか?


● Laravel 5.6

Laravel 5.6

Server Requirements
PHP >= 7.1.3
OpenSSL PHP Extension
PDO PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
XML PHP Extension
Ctype PHP Extension
JSON PHP Extension

5.6/composer.json
    "require": {
        "php": "^7.1.3",
        "ext-mbstring": "*",
        "ext-openssl": "*",
        "doctrine/inflector": "~1.1",
        "dragonmantank/cron-expression": "~2.0",
        "erusev/parsedown": "~1.7",
        "league/flysystem": "^1.0.8",
        "monolog/monolog": "~1.12",
        "nesbot/carbon": "^1.24.1",
        "psr/container": "~1.0",
        "psr/simple-cache": "^1.0",
        "ramsey/uuid": "^3.7",
        "swiftmailer/swiftmailer": "~6.0",
        "symfony/console": "~4.0",
        "symfony/debug": "~4.0",
        "symfony/finder": "~4.0",
        "symfony/http-foundation": "~4.0",
        "symfony/http-kernel": "~4.0",
        "symfony/process": "~4.0",
        "symfony/routing": "~4.0",
        "symfony/var-dumper": "~4.0",
        "tijsverkoyen/css-to-inline-styles": "^2.2.1",
        "vlucas/phpdotenv": "~2.2"
    },


● Laravelに必要なパッケージ

 PHP
PHP is a popular general-purpose scripting language

 Composer
Composer - Dependency Manager for PHP

 MySQLまたは MariaDBデータベース
 MySQL データベース
MySQL

 MariaDB creates open source database
MariaDB creates open source database

 HTTP Serverは任意(PHPビルトインサーバ機能でも動かせる)
PHPのビルトインサーバで動かしたい

 Apacheまたは nginx HTTP Server

 Apache HTTP Server
Apache HTTP Server

 nginx HTTP Server
nginx HTTP Server


● Laravel 5.5での構築手順

 Laravel 5.5を使いたい場合
 Raspberry Pi Raspbian Stretch OSに PHP 7.0を追加する方法。

[NEW] 2018/03/14
Raspberry Piに Laravel 5.5 PHPフレームワークの Webサーバを構築する方法
Raspberry Piに Laravel 5.5 PHPフレームワークの Webサーバを構築する方法

  ラズパイで Hello Laravel 5.5 + PHP7.0サーバを構築する、Apache2で PHP-FPMを有効にする方法


● Laravel 5.6での構築手順

 Laravel 5.6を使いたい場合
 Raspberry Pi Raspbian Stretch OSに PHP 7.1を追加する方法。

 下記の PHP7.1対応を行なうと MySQLのインストールで「E: Unable to correct problems, you have held broken packages.」が出るので先に MySQLをインストールする。
# お決まりの sudo apt-get update
sudo apt-get update

# MySQLのインストール
sudo apt-get -y install mysql-server

# MySQLのバージョンの確認
mysqld -V
# mysqld  Ver 10.1.23-MariaDB-9+deb9u1 for debian-linux-gnueabihf on armv7l (Raspbian 9.0)
mysql -V
# mysql  Ver 15.1 Distrib 10.1.23-MariaDB, for debian-linux-gnueabihf (armv7l) using readline 5.2
# PHP 7.1のパッケージの存在を確認
apt-cache search php7.1
# (何も出てこない)

# sources.listに下記の行を追加する
sudo nano /etc/apt/sources.list
deb http://mirrordirector.raspbian.org/raspbian/ buster main contrib non-free rpi

# 再度 sudo apt-get updateして変更を有効にする
sudo apt-get update

# PHP 7.1のパッケージの存在を確認
apt-cache search php7.1
# (色々出てくる)
# php7.1 - server-side, HTML-embedded scripting language (metapackage)

# PHP 7.1のインストールを一行で一括で行なう場合
sudo apt-get -y install php7.1 php7.1-common php7.1-mbstring php7.1-xml php7.1-mysql php7.1-zip php7.1-gd php7.1-curl php7.1-json mcrypt php7.1-mcrypt
# libc-bin
# Configuring libc6:armhf

# PHPのバージョンの確認
php -v
# PHP 7.1.15-1 (cli) (built: Mar  6 2018 10:50:10) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
#     with Zend OPcache v7.1.15-1, Copyright (c) 1999-2018, by Zend Technologies
# Apache 2 Web Serverのインストール(不要)
# sudo apt-get -y install apache2

# Apache 2 Web Serverのバージョンの確認
apache2 -v
# Server version: Apache/2.4.29 (Raspbian)
# Server built:   2018-01-14T11:01:58
# Composerのインストール
sudo apt-get -y install composer

# Composerのバージョンの確認
composer -V
# Composer 1.6.3 2018-01-31 16:28:17
# Composerを使って Laravelをインストールする
# /var/www/laravelに作成する
sudo mkdir /var/www/laravel
# 本来であれば chownでファイル権限のユーザーで許可を与えるが、自分だけの開発環境なので chmodで安易に済ませている。
sudo chmod 777 /var/www/laravel
composer create-project laravel/laravel /var/www/laravel
# Installing laravel/laravel (v5.6.12)
#   - Installing laravel/laravel (v5.6.12): Downloading (100%)

# Created project in /var/www/laravel
# > @php -r "file_exists('.env') || copy('.env.example', '.env');"
# Writing lock file
# Generating optimized autoload files
# > Illuminate\Foundation\ComposerScripts::postAutoloadDump
# > @php artisan package:discover
# Discovered Package: fideloper/proxy
# Discovered Package: laravel/tinker
# Discovered Package: nunomaduro/collision
# Package manifest generated successfully.
# > @php artisan key:generate
# Application key [base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=] set successfully.
# Laravelのバージョンを確認する
cd /var/www/laravel/
php artisan --version
# Laravel Framework 5.6.12
# 000-default.confの DocumentRoot設定を書き換える
sudo nano /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>
#       DocumentRoot /var/www/html
        DocumentRoot /var/www/laravel/public

# apache2の設定ファイルを書き換えたので apache2を再起動する
sudo systemctl restart apache2

# failed to open stream: Permission deniedになるので 757にする
# UnexpectedValueException
# The stream or file "/var/www/laravel/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied
# 本来であれば chownでファイル権限のユーザーで許可を与えるが、自分だけの開発環境なので chmodで安易に済ませている。
# sudo chown -R www-data:www-data /var/www/laravel/storage
sudo chmod -R 757 /var/www/laravel/storage

 パソコンの Webブラウザでラズパイの IPアドレスにアクセスする。
http://192.168.1.123

 Bonjourを入れている場合は(sudo apt-get install avahi-daemon)
http://raspberrypi.local

 白い画面に灰色の文字で下記が出れば成功。
Laravel
DOCUMENTATION LARACASTS NEWS FORGE GITHUB
・ラズパイで PHPフレームワークの Laravelサーバを構築する方法
ラズパイで PHPフレームワークの Laravelサーバを構築する方法



● phpinfoでサーバの PHPの状態を確認する方法

cd /var/www/laravel/public
nano /var/www/laravel/public/phpinfo.php
<?php
  phpinfo();
?>
sudo echo '<?php phpinfo(); ?>' > /var/www/laravel/public/phpinfo.php

# Server API: Apache 2.0 Handler



● Apache 2サーバで php-fpmを使う場合

# php7.1-fpmのインストール
sudo apt-get -y install php7.1-fpm
# NOTICE: Not enabling PHP 7.1 FPM by default.
# NOTICE: To enable PHP 7.1 FPM in Apache2 do:
# NOTICE: a2enmod proxy_fcgi setenvif
# NOTICE: a2enconf php7.1-fpm
# NOTICE: You are seeing this message because you have apache2 package installed.

# php7.1-fpmの有効化
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.1-fpm
# Enabling conf php7.1-fpm.
# To activate the new configuration, you need to run:
#   systemctl reload apache2

# PHPの www.confファイルを書き換える
sudo nano /etc/php/7.1/fpm/pool.d/www.conf

; listen = /run/php/php7.1-fpm.sock
listen = 127.0.0.1:9000

# php-fpmのサービスを再起動する
sudo service php7.1-fpm stop
sudo service php7.1-fpm start

# apache2の 000-default.confファイルを書き換える
sudo nano /etc/apache2/sites-available/000-default.conf

#       DocumentRoot /var/www/html
        DocumentRoot /var/www/laravel/public

        <FilesMatch "\.php$">
            SetHandler "proxy:fcgi://127.0.0.1:9000/"
        </FilesMatch>

# apache2の設定を変更したので apache2を再起動する
sudo systemctl restart apache2

 phpinfo()で下記になっていれば Apache 2の php-fpm化が成功
# Server API: FPM/FastCGI

 通常は下記(php-fpmが動いていない)
# Server API: Apache 2.0 Handler



●ファイルのアクセス権限が無いので Laravel実行時にブラウザにエラー画面が出る
UnexpectedValueException
The stream or file "/var/www/laravel/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied

ErrorException (E_WARNING)
file_put_contents(/var/www/laravel/storage/framework/sessions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx): failed to open stream: Permission denied

sudo chmod 777 -R /var/www/laravel/storage/
 本来であれば chownでファイル権限のユーザーで許可を与えるが、自分だけの開発環境なので chmodで安易に済ませている。

pi@raspberrypi:~ $ ls -l /var/www/laravel/.env
-rw-r--r-- 1 pi pi 702 Mar 16 14:20 /var/www/laravel/.env

pi@raspberrypi:~ $ ls -l /var/www/laravel/storage/framework/sessions/
total 4
-rw-r--r-- 1 www-data www-data 178 Mar 16 14:30 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
・Laravel UnexpectedValueException failed to open stream: Permission denied
Laravel UnexpectedValueException failed to open stream: Permission denied



● /etc/apt/sources.listに "buster"を追加後は mysql-serverのインストールに失敗する

 Buster版の mysql-serverのインストールパッケージと Stretch版とに互換性が無い?
sudo apt-get -y install mysql-server

pi@raspberrypi:~ $ sudo apt-get -y install mysql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 mysql-server : Depends: default-mysql-server but it is not going to be installd
E: Unable to correct problems, you have held broken packages.

● PHP 7.1をインストール中に libc6パッケージの自動更新を聞いてきます
sudo apt-get -y install php7.1 php7.1-xml php7.1-mbstring php7.1-mysql php7.1-json php7.1-curl php7.1-cli php7.1-common php7.1-mcrypt php7.1-gd libapache2-mod-php7.1 php7.1-zip

Configuring libc6:armhf

 x There are services installed on your system which need to be restarted    x
 x when certain libraries, such as libpam, libc, and libssl, are upgraded.   x
 x Since these restarts may cause interruptions of service for the system,   x
 x you will normally be prompted on each upgrade for the list of services    x
 x you wish to restart.  You can choose this option to avoid being           x
 x prompted; instead, all necessary restarts will be done for you            x
 x automatically so you can avoid being asked questions on each library      x
 x upgrade.                                                                  x
 x                                                                           x
 x Restart services during package upgrades without asking?                  x
 x                                                                           x
 x                    <Yes>                       <No>                       x


 x Running services and programs that are using NSS need to be restarted,    x
 x otherwise they might not be able to do lookup or authentication any more  x
 x (for services such as ssh, this can affect your ability to login).        x
 x Please review the following space-separated list of init.d scripts for    x
 x services to be restarted now, and correct it if needed.                   x
 x                                                                           x
 x Note: restarting sshd/telnetd should not affect any existing              x
 x connections.                                                              x
 x                                                                           x
 x Services to restart for GNU libc library upgrade:                         x
 x                                                                           x
 x ssh cron_________________________________________________________________ x
 x                                                                           x
 x                                  <Ok>                                     x

● composerを sudo付きで実行すると「警告」が出ます
pi@raspberrypi:~ $ sudo composer create-project laravel/laravel /var/www/html/laravel
Do not run Composer as root/super user! See https://getcomposer.org/root for details




Tags: [Raspberry Pi], [電子工作]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法
Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法

  ラズパイで一般的な Webサービスを動かす場合に必要なアプリが入った LAMP stackを構築

Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法
Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法

  ラズパイで Webサービスを動かす、Lighttpd + PHP + Perl + Python + Ruby CGIの LLMP stackを構築

Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法
Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法

  ラズパイで Webサービス LEMP Stackを構築、nginx + PHP + Perl(UNIXドメインソケット方式)

Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法
Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法

  Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法

Raspberry Pi 3 Model Bで CMSフレームワーク WordPressをセットアップする方法
Raspberry Pi 3 Model Bで CMSフレームワーク WordPressをセットアップする方法

  ラズパイ3で WordPressをインストールする方法

Raspberry Pi3を Gitサーバとして設定する方法、Git単体と GitLabを使用する方法
Raspberry Pi3を Gitサーバとして設定する方法、Git単体と GitLabを使用する方法

  ラズパイ3でローカルの Gitサーバを動かす方法。GitLabをインストールする方法

Raspberry Pi3に Postfixメールサーバーを Gmailの SMTPをリレーとして立てる方法
Raspberry Pi3に Postfixメールサーバーを Gmailの SMTPをリレーとして立てる方法

  Raspbian Jessieで Postfix Mail serverを Gmailの SMTPを中継サーバとして設定する方法

Gitでリモートにプッシュした内容を完全に無かった事にする方法
Gitでリモートにプッシュした内容を完全に無かった事にする方法

  いわゆる Gitでやらかした時に使える最強奥義 git reset --hard HEAD~; git push -f

Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入出来る通販ショップ一覧まとめ
Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入出来る通販ショップ一覧まとめ

  ラズパイゼロW ワイヤレスモデルを海外通販でサクッと簡単に個人輸入で入手。技適通過でも国内販売は常に品切れ

Raspberry Pi 3で安定して使える相性の無い最適な microSDカードの種類のまとめ
Raspberry Pi 3で安定して使える相性の無い最適な microSDカードの種類のまとめ

  ラズパイ3で安定して使える microSDカードを購入する Teamと SanDiskは絶対に買わない

Raspberry Pi 3 Model Bに専用カメラモジュールを接続する方法
Raspberry Pi 3 Model Bに専用カメラモジュールを接続する方法

  ラズパイに専用カメラモジュールを接続して Raspbianで写真の静止画撮影や動画を録画する方法

Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ
Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ

  ラズパイの Raspbian OSのコマンドラインで使用する便利コマンド、負荷試験や CPUシリアル番号の確認方法等も

Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳
Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳

  ラズパイ公式フォーラムの「The Raspberry Pi 3 Model B Q&A thread」の日本語訳

ラズパイを意識した別物製品 Orange Pi Zeroを買ってみた、Allwinner H2+ Cortex-A7 4core
ラズパイを意識した別物製品 Orange Pi Zeroを買ってみた、Allwinner H2+ Cortex-A7 4core

  オレンジパイはラズパイよりもコスパは良いが情報が無いので利用者側に一定のスキルが必要

Orange Pi PC 2を買ってみた、Allwinner H5 Cortex-A53 4core ARM64
Orange Pi PC 2を買ってみた、Allwinner H5 Cortex-A53 4core ARM64

  ラズパイを意識した別物製品、オレンジパイはラズパイよりもコスパが良い、でも情報が無い

Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板
Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板

  Espressif ESP8266 ESP-12-E NodeMCU V1 ESP12 CP2102

BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)
BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)

  レーザー彫刻機、カラー液晶の DIYオシロ、Arduinoや Raspberry Pi用の小型カラー液晶



[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外はweb構成の変更で移動する場合があります)
Copyright (c) 2018 FREE WING, Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_web_server_php_laravel_5_6/