Help us understand the problem. What is going on with this article?

外為で勝つために その5 ~ Laravel 編

前回「外為で勝つために その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

mbstringxmlbcmath がないですね。
モジュール名それぞれの先頭に 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

それはさておき、
インストーラを 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

成功ですね。
これでデータベースにアクセスし放題です!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした