PHP7とLaravel 5でFacebookアカウントでログインできるTODOアプリをつくる 1日目(環境構築編)
昨年、PHP7がリリースされたので、PHP7で動作するTODOアプリを作ってみます。
ただのTODOアプリでは少し色気がないので、Facebookアカウントでログインできるようなアプリにしてみようと思います。
環境について
TODOアプリの開発に使用する環境は以下とします。
- VirtualBox
- Vagrant
- Ubuntu 14.04 LTS
- Apache 2.4
- PHP7
- Laravel 5
- SQLite3
バージョン番号は記載していませんが、基本的に最新版を使っているものと考えてください。
Vagrantを採用している理由はいくつかありますが、ローカル環境をよごさずに開発したいのと、Win/Mac/Linux問わず動くようにしたいからという2点が大きいです。
また、各ソフトウェア、フレームワーク等についての説明は割愛します。
環境構築
Vagrantで環境構築をしていきます。
まずはVagrantfileを用意して、vagrant up
、vagrant ssh
でVMにログインします。
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure(2) do |config| config.vm.box = "ubuntu/trusty64" config.vm.network "private_network", ip: "192.168.33.10" end
$ vagrant up $ vagrant ssh
VMにログインできたら、PHP7をインストールするため、PPAのリポジトリを追加します。
PHPといえばondrejさんですね。いつもお世話になってます。
https://launchpad.net/~ondrej/+archive/ubuntu/php-7.0launchpad.net
$ LC_ALL=en_US.UTF-8 sudo add-apt-repository -y ppa:ondrej/php
ここでLC_ALL
を指定していますが、ondrejことOndřej Surýさんはチェコの方らしく、名前に含まれる文字がASCII外なのでLC_ALL
を指定しないと以下のようなエラーが起きてしまいます。
$ sudo add-apt-repository -y ppa:ondrej/php gpg: keyring `/tmp/tmp4mtd1r5u/secring.gpg' created gpg: keyring `/tmp/tmp4mtd1r5u/pubring.gpg' created gpg: requesting key E5267A6C from hkp server keyserver.ubuntu.com gpg: /tmp/tmp4mtd1r5u/trustdb.gpg: trustdb created gpg: key E5267A6C: public key "Launchpad PPA for Ond\xc5\x99ej Sur�" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) Exception in thread Thread-1: Traceback (most recent call last): File "/usr/lib/python3.4/threading.py", line 920, in _bootstrap_inner self.run() File "/usr/lib/python3.4/threading.py", line 868, in run self._target(*self._args, **self._kwargs) File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 687, in addkey_func func(**kwargs) File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 370, in add_key return apsk.add_ppa_signing_key() File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 261, in add_ppa_signing_key tmp_export_keyring, signing_key_fingerprint, tmp_keyring_dir): File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 210, in _verify_fingerprint got_fingerprints = self._get_fingerprints(keyring, keyring_dir) File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 202, in _get_fingerprints output = subprocess.check_output(cmd, universal_newlines=True) File "/usr/lib/python3.4/subprocess.py", line 609, in check_output output, unused_err = process.communicate(inputdata, timeout=timeout) File "/usr/lib/python3.4/subprocess.py", line 947, in communicate stdout = _eintr_retry_call(self.stdout.read) File "/usr/lib/python3.4/subprocess.py", line 491, in _eintr_retry_call return func(*args) File "/usr/lib/python3.4/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 92: ordinal not in range(128)
このエラーが出てもリポジトリは追加されているようなのですが、ondrejさんに敬意をはらってLC_ALL
を指定しておきましょう。
リポジトリを追加したら、以下の手順でPHP7などをインストールしていきます。
$ sudo sed -i s/archive.ubuntu.com/ftp.jaist.ac.jp/ /etc/apt/sources.list $ sudo apt-get update $ sudo apt-get install apache2 php7.0 php7.0-sqlite3 git curl language-pack-ja
1行目はUbuntu標準のリポジトリを国内のミラーサーバーに切り替えるためのコマンドです。この記事を読まれているかたは日本にお住まいの方が圧倒的に多いと思いますので、日本のミラーサーバーにしました。
Gitやcurlなどは後々必要になるかもしれないということでインストールしています。他にも足りないパッケージがあるかもしれませんが、必要になったときに改めてインストールすることとします。
この時点でPHP7がインストールされているか、以下のコマンドで確認してみます。
$ php -v PHP 7.0.2-1+deb.sury.org~trusty+1 (cli) ( NTS ) Copyright (c) 1997-2015 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
PHP7がインストールできているようですね。あわせてSQLite3の拡張が有効になっていることも確認しておきましょう。
$ php -i | grep sqlite /etc/php/7.0/cli/conf.d/20-pdo_sqlite.ini, /etc/php/7.0/cli/conf.d/20-sqlite3.ini PDO drivers => sqlite pdo_sqlite sqlite3 sqlite3.extension_dir => no value => no value
こちらも問題なさそうです。
最後に、phpinfo()
を表示するスクリプトをApacheのドキュメントルート配下においてみます。
/var/www/html
がドキュメントルートとなりますが、オーナー、グループがroot
になっているので、vagrant
ユーザーに所有者を変更してからファイルを追加することとします。
$ sudo chown vagrant.vagrant /var/www/html $ echo '<?php phpinfo();?>' > /var/www/html/phpinfo.php
上記のコマンドを実行したあとに、以下のURLにアクセスすると、phpinfo()
の結果が表示されると思います。
http://192.168.33.10/phpinfo.php
本日はここまでです。
ここまでの作業がvagrant up
一発で完了するようなVagrantfile
も用意しておきました。よろしければお使いください。
Laravel リファレンス[Ver.5.1 LTS 対応] Web職人好みの新世代PHPフレームワーク
- 作者: 新原雅司,竹澤有貴,川瀬裕久,大村創太郎,松尾大,丸山弘詩
- 出版社/メーカー: インプレス
- 発売日: 2015/12/04
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る