Laravel 5.1 入門記 その1(セットアップ編)
本業のお仕事に時間を取られて、なかなか取りかかれなかったけど、 Laravel 5.1 にこれから入門してみたいと思う。
とりあえず攻略本としては、これ
オフィシャルなドキュメントを元に粛々と基本的なことを試していくつもり。 自分用の備忘録なので、雑な感じなのは悪しからず。
ちょっとその前に
Laravel はいま一番流行っている PHP の Web アプリケーションフレームワークで、モダンな開発が出来るらしい。概要を読むと、ファサードがなんとか色々書かれて居るけど、PHPer じゃないので良く分からない/(^O^)\
まぁ、PHP は何となく読めるし、なんとかなるでしょ。なるはず!
あと入門記で、5.1 を選んだのは LTS を掲げられていたこと。2年くらいは開発を続け、3年間はセキュリティパッチを提供するよ、と書かれて居たから。プロダクションに投入する時には重要ですよね。
それではセットアップを行っていきます。
Setup
必須要件
以上が必要らしい。 前回 Composer 入門時に使った vagrant の仮想マシンを継続して使おう。
PHP の準備
と言うわけで、順々にパッケージをインストールしていく。
…
と思ったら、apache module を入れた時点で、色々なものが入ったらしい。 よって次のパッケージだけインストールした。
sudo apt-get install php-mysql
これで PDO も入ります。
MySQL の準備
MySQL サーバを準備します。今回は同じ仮想サーバにインスコ。
sudo apt-get install mysql-server mysql-client
途中、MySQL の root パスワードを聞かれるので適当に設定。 続いて、 MySQL の設定ファイルを変更する。
sudo vi /etc/mysql/my.cnf
以下を追加。(それぞれのセクションに追記なので注意)
[client]
default-character-set = utf8
[mysqld]
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
設定出来たら、MySQL を再起動
$ sudo service mysql restart
続いて、MySQL に新しいデータベースを作成
$ sudo mysql -u root -p
MySQL のコンソールにログインし
mysql> create database laravel character set utf8 collate utf8_general_ci;
今回は root でアプリケーションからもログインするので、これで MySQL の準備は完了。
Laravel の準備
ドキュメントによると、 Via Laravel Installer と Via Composer Create-Project の二つのやり方が書かれていた。むつかしい…。
Composer に入門したばかりなので、まずは Via Composer Create-Project というやり方を試したいと思う。
global 環境に Composer をインストールしているわけではないので、昨日と同じディレクトリで実行する。composer.phar が無かったら、昨日の Composer の入門記事
を見てください。 さて、ドキュメントにならって Composer を実行します。
./composer.phar create-project laravel/laravel --prefer-dist
実行には暫くかかります。待っていると…
The following exception is caused by a lack of memory and not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details
PHP Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///home/vagrant/php/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:974
メ、メモリが足りなーい!/(^O^)\
仕方が無いので、仮想マシンからログアウトして
$ vagrant halt
そしてメモリの割り当てを変更する。
$ vi Vagrantfile
46 行目から 52 行目を書き換える。元は 1024MB の割り当てだったようだ。
config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
vb.memory = "2048"
end
そして、 仮想マシンを起動してログイン
$ vagrant up
$ vagrant ssh
そして、再度 composer create-project を実行する
$ cd php
$ ./composer.phar create-project laravel/laravel --prefer-dist
今度こそ出来たー! なんかよく分からないけど、以下のような出力がされていた。
Writing lock file
Generating autoload files
> php artisan clear-compiled
> php artisan optimize
Generating optimized class loader
> php artisan key:generate
Application key [irZBf7sdXE9BAu2PVBeQnJxqlHpke90i] set successfully.
ls してみると laravel というディレクトリが出来ていて、中を見ると…
$ ls laravel/
app bootstrap composer.lock database package.json phpunit.xml readme.md server.php tests
artisan composer.json config gulpfile.js phpspec.yml public resources storage vendor
色々できていた。
Configuration
Installation - Laravel - The PHP Framework For Web Artisans
config ディレクトリに何やら設定ファイルが入っていると書かれている。 順々に見ていきます。
Directory Permissions
storage と bootstrap/cache に write パーミッションを設定しないといけないらしい。 では実施します。
$ cd laravel
$ chmod 777 storage
$ find ./storage -type d -exec chmod 777 {} \;
$ chmod 777 ./bootstrap/cache/
$ chmod 666 ./bootstrap/cache/services.json
ファイルを調べていて気がついたのだが、 create-project を行った時には、.gitignore ファイルまで作るのね…。
Application Key
Composer Create-Project か Laravel Installer を使った場合は、既に作られてるよ。とのこと。
あー、さっきの
> php artisan key:generate
Application key [irZBf7sdXE9BAu2PVBeQnJxqlHpke90i] set successfully.
これか。 そして生成されたキーは .env に書き出されていると。
$ cat .env
APP_ENV=local
APP_DEBUG=true
APP_KEY=irZBf7sdXE9BAu2PVBeQnJxqlHpke90i
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
確かに入ってた。
If the application key is not set, your user sessions and other encrypted data will not be secure!
セッションデータの暗号化に使っているらしい。 さっきの .env を見るとメッセージキューを使う処理もデフォルトサポートなのかな。少し楽しみ。
Additional Configuration
Laravel はあまり設定することが無いけど、 config/app.php は見ておいたほうが良いらしい。中でも timezone と locale は自分のアプリケーションに合わせて設定してねとのこと。 timezone は Asia/Tokyo 、locale は ja にしておいた。
Pretty URLs
なんのこっちゃ、というセクションだけど、URL設定方法が書かれていた。 Apache であれば、 laravel/public ディレクトリに .htaccess は設置済みなので公開設定するだけ nginx であれば、以下の設定のみらしい。
location / {
try_files $uri $uri/ /index.php?$query_string;
}
ん?あれ? php-fpm とか無くて動くのか…? まぁ、とりあえず動かすのは Apache なのでスルーします。
Vagrant のポートフォワード設定を忘れていたので SSH はログアウトします。
$ vagrant halt
$ vi Vagrantfile
25行目付近のコメントアウトを外します。
config.vm.network "forwarded_port", guest: 80, host: 8080
これを戻したら、再び vagrant up して、ホストマシン上のブラウザで http://localhost:8080/ にアクセスすると、Laravel 5 のロゴが見えました!\(^o^)/
意外と時間が掛かるので、今回はここで一区切り。 次は Environment Configuration から。
追記
セットアップ以降も色々書いてます。
Laravel 入門記の記事一覧は こちらから