Centos7 Composerを使用してLaravelを導入 + プロジェクトを生成~確認まで

広告

いま勢いに乗っているPHPのフレームワークLaravelの導入メモ。

前置き


1) PHPの動作環境が必須です。
以下、自分の環境です。
# php --v
PHP 7.2.7 (cli) (built: Jun 20 2018 08:21:26) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

2) laravel でプロジェクトを作成する方法は2通りあります。
・composerを使ってダイレクトにプロジェクト作成
・インストーラでlaravelインストール => プロジェクトを作成

今回は前者の方法である、composerコマンドでオプションを指定してプロジェクトを作成していくやり方で進めていきます。
※依存関係にあるパッケージも合わせてインストールしてくれるため導入が楽で安全なため。

3) Composerを導入してなければ以下参考
Centos7 Composerインストール

導入


準備


生成したいプロジェクトのディレクトリ直下に移動して、プロジェクト用のフォルダを生成します。
# mkdir /var/www/html/test
とりあえずテストとして/var/www/html/にtestフォルダを作成しました。

testフォルダのユーザとパーミッションをroot以外のユーザに設定
# chmod 777 /var/www/html/test
# chown -R ユーザ名:ユーザ名 /var/www/html/test

もしここでrootでログインしていたら上記で作成したユーザでログインしなおそう。
# su - ユーザ名


プロジェクト生成


ここでいよいよプロジェクト生成コマンドを実行します。
# composer create-project laravel/laravel --prefer-dist /var/www/html/test
Installing laravel/laravel (v5.7.19)
- Installing laravel/laravel (v5.7.19): Downloading (100%)
Created project in test
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 86 installs, 0 updates, 0 removals
- Installing vlucas/phpdotenv (v2.5.2): Downloading (100%)
- Installing symfony/css-selector (v4.2.1): Downloading (100%)
- Installing tijsverkoyen/css-to-inline-styles (2.2.1): Downloading (100%)
- Installing symfony/polyfill-php72 (v1.10.0): Downloading (100%)



Discovered Package: beyondcode/laravel-dump-server
Discovered Package: fideloper/proxy
Discovered Package: laravel/nexmo-notification-channel
Discovered Package: laravel/slack-notification-channel
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
> @php artisan key:generate --ansi
Application key set successfully.
依存関係のパッケージ等インストールしてくれてます。これぞcomposerの恩恵(´▽`)

パーミッション設定


読み書きされるディレクトリに対してパーミッションを設定。
# chmod -R 777 /var/www/html/test/storage/
# chmod -R 777 /var/www/html/test/bootstrap/cache


確認


ホスト名/test/publicにアクセスして以下のように表示されれば完成!



ドキュメントルートを変更する


Laravelデフォのドキュメントルートは
http://ホスト名/プロジェクト名/public/
となります。これを、
http://ホスト名/プロジェクト名
にしていきます。

まずプロジェクト/public直下にあるファイル一式をプロジェクト直下に移動します。
# mv /var/www/html/test/public/* /var/www/html/test/

次に、移動した一式の中にあるindex.phpを編集します。
//変更前
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

//変更後
require __DIR__.'/./bootstrap/autoload.php';
$app = require_once __DIR__.'/./bootstrap/app.php';
変更したら保存して、以下形式でアクセスしてみましょう!
http://ホスト名/プロジェクト名


表示されれば完成( ^^) _U~~


トラブルシューティング


composerはroot以外で実行する


composer create-project laravel/laravel --prefer-dist /var/www/html/プロジェクトフォルダ
これ実行する時、プロジェクトフォルダがなければ新規生成してくれます。
今回サンプルとして取り急ぎ/var/www/html/直下で、かつ、rootユーザ以外でcreate-projectしました。
そのため権限の問題でrootでプロジェクトフォルダをあらかじめ生成 + 権限付与してから別ユーザでcreate-projectした回りくどい流れになっております。。
composerコマンドをrootで実行しないため + 既存の環境の権限設定等で今回のような手順を踏まえましたが、各々の環境背景に合わせ柔軟に置き換えてください。
ちなみにプロジェクトを生成するディレクトりに対して権限がないユーザでcomposer create-project実行するとあたり前ですが怒られます(;^ω^)
# composer create-project laravel/laravel /var/www/html/test --prefer-dist
Installing laravel/laravel (v5.7.19)
[ErrorException]
mkdir(): Permission denied

ここらへんは環境背景によるところですがトラブルシューティングも兼ね。

vendor/autoload.php: failed to open stream: No such file or directory


いざURLアクセスしても表題のエラーがでることがあります。vendorフォルダがなく怒られてます。
これはcomposerがインストールされてなく、不完全にプロジェクトcreateされたときにvendorフォルダが生成されず発生するものです。
プロジェクトフォルダ直下で以下コマンドを実行すれば再度必要なパッケージを拾ってきてくれます。
# composer update


verify that they are enabled in your .ini files:


composer create-projectする時に以下のメッセージが表示されてcreate-project中に中断されてしまうことがありました。
To enable extensions, verify that they are enabled in your .ini files:
- /etc/php.ini
- /etc/php.d/20-bz2.ini
- /etc/php.d/20-calendar.ini
- /etc/php.d/20-ctype.ini
- /etc/php.d/20-curl.ini
- /etc/php.d/20-exif.ini
- /etc/php.d/20-fileinfo.ini
- /etc/php.d/20-ftp.ini
- /etc/php.d/20-gettext.ini
- /etc/php.d/20-iconv.ini
- /etc/php.d/20-json.ini
- /etc/php.d/20-phar.ini
- /etc/php.d/20-sockets.ini
- /etc/php.d/20-tokenizer.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

php.iniで上記モジュールが有効になっていない時のエラーメッセージ。
自分のケースはそもそも存在してないiniもあったりなかったり。
考えるの面倒なので改めて必要そうなモジュールをごっそりインストールして解決しました。
※「--enablerepo=remi-php72」ここの部分だけ各々のPHPのバージョンに合わせて下さい。
# yum -y install --enablerepo=remi-php72 php-mbstring php-mysql php-devel php-pear php-mbstring php-openssl php-mbstring php-pdo

こんなんでよいのやら。。。(^^;

以上!
広告


関連記事
Centos7 Composerインストール

Centos7 Composerインストール

環境構築 2019-01-03

Profile