倒せウンコード in PHP: レコード結果をそのまま使うやつ

はじめに

ついに必要に迫られてしまったのでLaravel5を触ってみました。
公式では、

Laravelフレームワークを動作させるには多少のシステム要件があります。もちろん、Laravel Homestead仮想マシンでは、要求が全て満たされています。ですから、Laravelのローカル開発環境としてHomesteadを活用されることを強くおすすめします。

引用元: Laravel5.4 インストール https://readouble.com/laravel/5.4/ja/installation.html

と、このようにローカル開発環境にはHomestead使えば楽でっせ、という記述があるものの、それで楽をすると本番で困りそうなので、Vagrant上で動かせるようにしてみました。
地味に導入が面倒だったので覚え書きとして、セットアップ~Welcomeページを表示させるまでを記します。

検証済み環境

  • Laravel5.4 (2017年6月19日現在の最新)
  • Windows10
  • Vagrant + VirtualBox
  • GitBash

今まで散々Dockerの記事書いてきましたが、今回はVagrantで。
Docker for Windowsでローカル開発環境(LAMP)を作るのにどハマリしたので備忘録。 – Qiita
【Docker×Windows】Hyper-Vが使えないならVagrantを使えば良いじゃない – Qiita

セットアップ後の想定環境

  • OS: CentOS 7.1
  • : 7.1
    • リポジトリにはWebtaticを使用します。
  • RDBMS: MariaDB

手順

1. Vagrant環境をセットアップする

今回使用するイメージはbento/centos-7.1

bash
vagrant box add bento/centos-7.1
vagrant init bento/centos-7.1
vagrant up

vagrant up後のセットアップコマンドは以下の通り。

bash
yum -y update
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

# mcryptの依存モジュールのインストール
yum -y install libmcrypt libmcrypt-devel

# 一気に必要なものをインストール
yum -y install httpd php71w php71w-cli php71w-common php71w-devel php71w-mbstring php71w-mcrypt php71w-mysql php71w-pdo php71w-pear php71w-pecl-xdebug php71w-xml mariadb mariadb-server

# httpd.confを編集
# /var/www、/var/www/htmlのAllowOverrideをAllにしておく
# DocumentRootを /var/www/html/public にしておく(後述)

# 起動・登録
systemctl start httpd.service
systemctl enable httpd.service
systemctl start mariadb.service
systemctl enable mariadb.service

# composerのインストール
# cf. https://getcomposer.org/download/
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Server Requirements について

Homesteadを使用しない場合は、以下の要件を満たす必要があります。
・PHP >= 5.6.4
・OpenSSL PHP拡張
・PDO PHP拡張
・Mbstring PHP拡張
・Tokenizer PHP拡張
・XML PHP拡張

引用元: Laravel5.4 インストール https://readouble.com/laravel/5.4/ja/installation.html

Homesteadを使用しない場合のLaravelの動作環境として、公式ではこのように記述されています。
ですが、上記のコマンド群で一通り対応済みとなります。

  • PHP >= 5.6.4
    => PHP7.1なので問題なし
  • OpenSSL PHP Extension
    => php71w-commonの中に入っている
  • PDO PHP Extension
    => php71w-pdoとしてインストール済み
  • Mbstring PHP Extension
    => php71w-mbstringとしてインストール済み
  • Tokenizer PHP Extension
    => php71w-commonの中に入っている
  • XML PHP Extension
    => php71w-xmlとしてインストール済み

cf. PHP 7.1 on CentOS/RHEL 6.8 and 7.3 via Yum – Webtatic.com

。。そういえばいつからmcryptいらなくなったの
一応入れてはありますが

Webtaticは各パッケージで何が一緒に入ってくるのか、丁寧に書いてあるのが有り難いですね。

DocumentRoot について

地味に詰まったところ。
Laravelの場合、 ApacheのDocumentRootをpublicに指定 しないといけないようです。

基本的にはApacheでLaravelアプリケーションのバーチャルホストを定義するだけ。Laravelアプリケーションのpublicフォルダをドキュメントルートに指定します。

引用元: ApacheでLaravel5アプリケーションを動かす

公式ドキュメントにそんな記述あったかな。。見落としていたらごめんなさい。
DocumentRoot直下にlaravelのプロジェクトを展開する場合、DocumentRootは以下のような設定になります。

/etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html/public"

2. Windowsにもcomposerをインストール

各種php artisanlaravelコマンドをローカルWindows上でも使用することがあるので、Windows上にもcomposerをインストールしちゃいます。
今回みたいな環境の場合、php artisan make:controller HogeFugaControllerとかはローカルで打ちますからね。
もちろん、マイグレーションなどはリモートで。

  1. Dependency Management for PHP
    からWindows Installerをインストールする。
  2. GitBashからwhich composerとして、パスが通っていることを確認

3. WindowsへのLaravelコマンドのインストール

ローカルWindows上においてlaravelコマンドを使用するために、laravelコマンドをインストールします。

GitBash
composer global require "laravel/installer"

4. プロジェクトの作成

ローカルWindows上にプロジェクトを作成します。
ワーキングディレクトリにて、下記コマンドを実行します。

GitBash
laravel new [ProjectName]

すると本体や各種必要モジュールなどがダウンロードされてきます。
これでインストールはいっちょ上がり。

5. リモートサーバーへの転送

FTPクライアントなどで、Vagrantの /var/www/html にLaravelのプロジェクトディレクトリを置きます。
今回は、html直下にLaravelの各種ディレクトリが展開されるように配置しました。

6. Welcomeページが開けるか確認

ここまで問題なければ、http://192.168.33.10でLaravelのWelcomeページが開けるはずです。

さいごに

今までずっと業務でCakePHP2しか使ってこなかった結果、composerとかも全く触れてこなかったので、ここまでだけでもだいぶ手間取る結果に。
ただ単にDocumentRootに置いて終わり!というCakeとは全然違いますね。
だいぶ昔にLaravel4系を触ったこともありましたが、最早記憶の彼方。。

ララ帳見ながら触っている最中ですが、なかなか今までと違い過ぎて戸惑ってます。
早いところ慣れなければ。

[紹介元] PHPタグが付けられた新着投稿 – Qiita 倒せウンコード in PHP: レコード結果をそのまま使うやつ

  • コメント

    1. 匿名希望
      2017/07/28(金) 17:55:29

      AppleScriptとJXAの勉強始める。

      スクリプトでmac操作できるって最高
      ぜひ私も習得したい!

      そういえばMAMPインストールした。使いやすい
      サーバーサイド言語をローカルで動かせるのは革新的

      Atlassian製品もう少し使いたいけど💰がね・・

    2. 匿名希望
      2017/07/28(金) 17:55:29

      ・メール設定完了(膨大なメールをローカルに置きたくないので、Thunderbirdにした)
      ・MS Officeインストール完了
      ・アップデートもうすぐ完了
      ・Dropbox設定完了

      大抵のことはこれでできるはず。

    3. 匿名希望
      2017/07/28(金) 17:55:29

      うーん…わからん。インストールされてるeslintのバージョンは同じ(3.19.0)なのに、ローカルで通るコードが、circleciだと弾かれる

    4. 匿名希望
      2017/07/28(金) 17:55:29

      CloudPlayer→曲の転送中(ローカル)
      ストア→Facebook(UWP)再インストール中
      帯域地獄

    記事に戻る

関連記事