前回「外為で勝つために その4 ~ LINE 通知編」の続きです。
ご無沙汰してます。
ポータルサイトを作るための材料を用意したり、NISA で株の買い付けしたりしてました。
今年もどうぞよろしくお願いします。
ポータルサイトを作るにあたり、
チャートなどを表示するために、データベースに接続する必要があります。
データベース接続といえば PHP ですが
ここはオシャレに Laravel フレームワークを使いたいと思います。
PHP だけでも構築できますが、勉強も兼ねてということで。
PHP バージョン確認
早速問題になるのが PHP のバージョンです。
今回導入する Laravel は 6.7.0 で、土台として PHP 7.2 以上が必要なのだそう。
Raspberry Pi の標準的なインストール方法では PHP 7.0.33 までしか入りません。
$ php -v
PHP 7.0.33-0+deb9u6 (cli) (built: Oct 24 2019 18:50:20) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.33-0+deb9u6, Copyright (c) 1999-2017, by Zend Technologies
PHP 7.3 をインストール
ということで、裏技的に PHP 7.3 をインストールします。(執筆時点で安定した最新版)
まずは管理者ログインして、apt に必要なキー情報を登録します。
$ sudo -i
# wget -O - https://packages.sury.org/php/apt.gpg | apt-key add -
stdout へ出力完了 [1769/1769]
パッケージリストを更新して PHP 7.3 を探せるようにします。
# echo "deb https://packages.sury.org/php/ stretch main" >> /etc/apt/sources.list.d/php.list
# apt-get update
パッケージリストを読み込んでいます... 完了
インストールできる PHP のバージョンを確認します。
7.3 の文字が見えますね。
# apt-cache policy php
php:
インストールされているバージョン: 1:7.0+49
候補: 2:7.3+70+0~20191118.18+debian9~1.gbp66b4ed
バージョンテーブル:
2:7.3+70+0~20191118.18+debian9~1.gbp66b4ed 500
500 https://packages.sury.org/php stretch/main armhf Packages
*** 1:7.0+49 500
500 http://raspbian.raspberrypi.org/raspbian stretch/main armhf Packages
100 /var/lib/dpkg/status
PHP 7.3 をインストールします。バージョンは必ず指定してあげましょう。
インストールはあっけなく終わるので、管理者からログアウトしてバージョンを確認します。
# apt-get install php7.3
# exit
ログアウト
$ php -v
PHP 7.3.12-1+0~20191128.49+debian9~1.gbp24559b (cli) (built: Nov 28 2019 07:38:18) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.12, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.12-1+0~20191128.49+debian9~1.gbp24559b, Copyright (c) 1999-2018, by Zend Technologies
PHP 7.3.12 が無事インストールされました。
Laravel インストールの下準備
Laravel にはいくつか必要なモジュールがあるそうで、
下記のコマンドを実行して表示されないモジュールをインストールするようなことが、どこかに書いてありました。(どこだったかはもう完全に忘れました)
$ php -m | grep -e openssl -e PDO -e mbstring -e tokenizer -e ^xml$ -e ctype -e json -e bcmath
ctype
json
openssl
PDO
tokenizer
mbstring
と xml
と bcmath
がないですね。
モジュール名それぞれの先頭に php- を付けてインストールしておきます。
インストールが終わったら、同じ確認コマンドを実行して再確認します。問題なさそうですね。
$ sudo apt-get install php-bcmath php-mbstring php-xml
$ php -m | grep -e openssl -e PDO -e mbstring -e tokenizer -e ^xml$ -e ctype -e json -e bcmath
bcmath
ctype
json
mbstring
openssl
PDO
tokenizer
xml
Composer のインストール
Laravel は PHP のフレームワークでありパッケージの1つです。
PHP 関係のパッケージは Composer で依存性を一元管理するらしいです(多分)。いわゆるパッケージマネージャーですね。これを先にインストールしておきます。
それにしても、やたら味のある Web サイトのトップだったのでスクショしておきました。
良いセンスを感じますねぇ。
![Screenshot_20200124[1].png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F362854%2F3e46b60d-6c0c-cb04-1144-96893ae55212.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=0e7b7e82ddff0a226253cf856ae26259)
それはさておき、
インストーラを HTTP GET して、そのままインストールします。
$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...
Composer (version 1.9.1) successfully installed to: /home/pi/composer.phar
Use it: php composer.phar
$ sudo mv composer.phar /usr/local/bin/composer
$ composer -v
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.9.1 2019-11-01 17:20:17
インストールはあっさり完了しました。
Laravel のインストール
いよいよ本命の Laravel をインストールします。
Composer 経由でインストールコマンドを実行します。
$ cd /home/pi/.config/composer
$ composer global require laravel/installer
Problem 1
- laravel/installer v3.0.1 requires ext-zip * -> the requested PHP extension zip is missing from your system.
- laravel/installer v3.0.0 requires ext-zip * -> the requested PHP extension zip is missing from your system.
- Installation request for laravel/installer ^3.0 -> satisfiable by laravel/installer[v3.0.0, v3.0.1].
Installation failed, deleting ./composer.json.
なんか失敗しましたね。
zip が足らんのでインストールが続行できないとのこと。
ならば php-zip をインストールしてリトライ。
$ sudo apt-get install php-zip
$ composer global require laravel/installer
Changed current directory to /home/pi/.config/composer
Using version ^3.0 for laravel/installer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 14 installs, 0 updates, 0 removals
- Installing symfony/process (v5.0.1): Downloading (100%)
- Installing symfony/polyfill-ctype (v1.13.1): Downloading (100%)
- Installing symfony/filesystem (v5.0.1): Downloading (100%)
- Installing psr/container (1.0.0): Downloading (100%)
- Installing symfony/service-contracts (v2.0.1): Downloading (100%)
- Installing symfony/polyfill-php73 (v1.13.1): Downloading (100%)
- Installing symfony/polyfill-mbstring (v1.13.1): Downloading (100%)
- Installing symfony/console (v5.0.1): Downloading (100%)
- Installing ralouphie/getallheaders (3.0.3): Downloading (100%)
- Installing psr/http-message (1.0.1): Downloading (100%)
- Installing guzzlehttp/psr7 (1.6.1): Downloading (100%)
- Installing guzzlehttp/promises (v1.3.1): Downloading (100%)
- Installing guzzlehttp/guzzle (6.5.0): Downloading (100%)
- Installing laravel/installer (v3.0.1): Downloading (100%)
symfony/service-contracts suggests installing symfony/service-implementation
symfony/console suggests installing symfony/event-dispatcher
symfony/console suggests installing symfony/lock
symfony/console suggests installing psr/log (For using the console logger)
guzzlehttp/psr7 suggests installing zendframework/zend-httphandlerrunner (Emit PSR-7 responses)
guzzlehttp/guzzle suggests installing psr/log (Required for using the Log middleware)
guzzlehttp/guzzle suggests installing ext-intl (Required for Internationalized Domain Name (IDN) support)
Writing lock file
Generating autoload files
インストールできた感じは微塵もありませんが、無事完了したようです。
Laravel Web Artisan の作成
もう少しです。
インストールは完了したので、Laravel 実行環境である(プロジェクトとも呼ばれる)Web Artisan(ウェブ職人)を作成します。
事前に composer/vendor/bin にパスを通しておきます。
作成先フォルダは /var/www/html/MarketMonitor にしました。
laravel new <Project Name>
で作成します。今回はひねりなく laravel にしました。
$ export PATH="~/.config/composer/vendor/bin:$PATH"
$ cd /var/www/html/MarketMonitor
$ laravel new laravel
Package manifest generated successfully.
Application ready! Build something amazing.
「アプリケーションの準備ができました!素晴らしいものを作りましょう」
と言われたらインストール完了です。もちろん作りますよ。素晴らしいものを。
Laravel のテスト
「すばらっ」なアプリケーションを作成する前に、実際動くかどうかをテストしましょう。
書き込みが発生する(であろう)ディレクトリ配下のファイルに、パーミッションを与えておきます。
php artisan serve
を実行するとサーバーが起動します。
$ chmod -R 777 /var/www/html/MarketMonitor/laravel/storage
$ chmod -R 777 /var/www/html/MarketMonitor/laravel/bootstrap/cache
$ cd /var/www/html/MarketMonitor/laravel
$ php artisan --version
Laravel Framework 6.7.0
$ php artisan serve
Laravel development server started: http://127.0.0.1:8000
[Wed Dec 11 14:06:27 2019] 127.0.0.1:47120 [200]: /favicon.ico
ttp://127.0.0.1:8000 にアクセスしろ、とのことです。
![Screenshot_20200124[2].png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F362854%2F9b605e4d-9ef1-617d-f4ff-831e65d6a852.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=af3b5b220c878c35caddf13e07f5364b)
成功ですね。
これでデータベースにアクセスし放題です!