はじめに
今回は Amazon Linux 2 で Laravel 環境をセットアップしてみたいと思います。 なお、Apache 及び PHP はすでにインストール済みの想定です。
環境
OS/Kernel Version 、httpd 及び php のバージョンは以下になります。
$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
$ uname -r
4.14.128-112.105.amzn2.x86_64
$ httpd -v
Server version: Apache/2.4.39 ()
Server built: Apr 4 2019 18:09:28
$ php -v
PHP 7.2.19 (cli) (built: Jun 12 2019 20:39:39) (NTS)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
また、PHP 関連でインストールされたパッケージは以下となります。
$ yum list installed php*
Loaded plugins: langpacks, priorities, update-motd
Installed Packages
php-cli.x86_64 7.2.19-1.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
php-common.x86_64 7.2.19-1.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
php-fpm.x86_64 7.2.19-1.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
php-gd.x86_64 7.2.19-1.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
php-json.x86_64 7.2.19-1.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
php-mbstring.x86_64 7.2.19-1.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
php-mysqlnd.x86_64 7.2.19-1.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
php-pdo.x86_64 7.2.19-1.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
php-pecl-apcu.x86_64 5.1.12-3.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
php-pecl-igbinary.x86_64 2.0.7-3.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
php-pecl-memcached.x86_64 3.0.4-3.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
php-pecl-msgpack.x86_64 2.0.2-3.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
php-xml.x86_64 7.2.19-1.amzn2.0.1 @amzn2extra-lamp-mariadb10.2-php7.2
Composer のインストール
まずは composer をインストールしましょう。
$ curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...
Composer (version 1.8.6) successfully installed to: /var/www/html/composer.phar
Use it: php composer.phar
$ sudo cp composer.phar /usr/bin/composer
$ composer -v
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.8.6 2019-06-11 15:03:05
...
実際に動かしてみる
それでは実際に、プロジェクトを作成し、ブラウザで表示されるかを試してみます。ひとまず Document Root 配下に laravel/test というディレクトリを作成し、そこに blog という名のプロジェクトを作成してみたいと思います。
$ mkdir laravel
$ cd laravel/
$ mkdir test
$ composer create-project --prefer-dist laravel/laravel blog
Installing laravel/laravel (v5.8.17)
- Installing laravel/laravel (v5.8.17): Downloading (100%)
Created project in blog
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 80 installs, 0 updates, 0 removals
- Installing symfony/polyfill-ctype (v1.11.0): Downloading (100%)
- Installing phpoption/phpoption (1.5.0): Downloading (100%)
- Installing vlucas/phpdotenv (v3.4.0): Downloading (100%)
- Installing symfony/css-selector (v4.3.2): Downloading (100%)
...
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: beyondcode/laravel-dump-server
Discovered Package: fideloper/proxy
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.
すると、以下のように "blog" というディレクトリが作成されます。少々パーミッションも変更しておきます。
$ ls
blog
$ ls -l blog/
total 236
drwxrwsr-x 6 ec2-user apache 4096 May 14 13:28 app
-rwxr-xr-x 1 ec2-user apache 1686 May 14 13:28 artisan
drwxrwsr-x 3 ec2-user apache 4096 May 14 13:28 bootstrap
-rw-rw-r-- 1 ec2-user apache 1550 May 14 13:28 composer.json
-rw-rw-r-- 1 ec2-user apache 167578 Jul 21 07:45 composer.lock
drwxrwsr-x 2 ec2-user apache 4096 May 14 13:28 config
drwxrwsr-x 5 ec2-user apache 4096 May 14 13:28 database
-rw-rw-r-- 1 ec2-user apache 1125 May 14 13:28 package.json
-rw-rw-r-- 1 ec2-user apache 1156 May 14 13:28 phpunit.xml
drwxrwsr-x 4 ec2-user apache 4096 May 14 13:28 public
-rw-rw-r-- 1 ec2-user apache 4151 May 14 13:28 readme.md
drwxrwsr-x 6 ec2-user apache 4096 May 14 13:28 resources
drwxrwsr-x 2 ec2-user apache 4096 May 14 13:28 routes
-rw-rw-r-- 1 ec2-user apache 563 May 14 13:28 server.php
drwxrwsrwx 5 ec2-user apache 4096 May 14 13:28 storage
drwxrwsr-x 4 ec2-user apache 4096 May 14 13:28 tests
drwxrwsr-x 40 ec2-user apache 4096 Jul 21 07:46 vendor
-rw-rw-r-- 1 ec2-user apache 538 May 14 13:28 webpack.mix.js
$ chmod -R 777 bootstrap/cache/
$ chmod -R 777 storage
実際に **http://your-domain/laravel/test/blog/public** にアクセスしてみます。 以下のようなページが表示されていれば成功です。
laravel コマンドについて
laravel コマンドをインストールしておけば、簡単にプロジェクトを作成できるのでついでにインストールしておく。
$ composer global require "laravel/installer=~1.1"
Changed current directory to /home/ec2-user/.config/composer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 11 installs, 0 updates, 0 removals
- Installing symfony/process (v3.4.29): Downloading (100%)
- Installing psr/log (1.1.0): Loading from cache
- Installing symfony/debug (v4.3.2): Loading from cache
- Installing symfony/polyfill-mbstring (v1.11.0): Loading from cache
- Installing symfony/console (v3.4.29): Downloading (100%)
- Installing guzzlehttp/promises (v1.3.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/guzzle (6.3.3): Downloading (100%)
- Installing laravel/installer (v1.3.4): Downloading (100%)
symfony/console suggests installing symfony/event-dispatcher
symfony/console suggests installing symfony/lock
guzzlehttp/psr7 suggests installing zendframework/zend-httphandlerrunner (Emit PSR-7 responses)
Writing lock file
Generating autoload files
以下にインストールされてる模様。
$ ls -l ~/.config/composer/vendor/bin/laravel
lrwxrwxrwx 1 ec2-user ec2-user 28 Jul 21 08:29 /home/ec2-user/.config/composer/vendor/bin/laravel -> ../laravel/installer/laravel
パスを通しておく。
$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/.config/composer/vendor/bin
追加で php-pecl-zip インストールしたり composer global update したりしなきゃいけなかったけど、ひとまず以下のコマンドでプロジェクトが作成できた。
$ laravel new laravelapp
Crafting application...
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 80 installs, 0 updates, 0 removals
- Installing doctrine/inflector (v1.3.0): Loading from cache
- Installing doctrine/lexer (1.0.2): Loading from cache
- Installing dragonmantank/cron-expression (v2.3.0): Loading from cache
- Installing erusev/parsedown (1.7.3): Loading from cache
- Installing symfony/polyfill-ctype (v1.11.0): Loading from cache
- Installing phpoption/phpoption (1.5.0): Loading from cache
- Installing vlucas/phpdotenv (v3.4.0): Loading from cache
...
おまけ
artisan コマンド一覧について非常に良いまとめがあったので、念のために貼っておく。 (全68種類!Laravel 5.6のartisanコマンドまとめ) https://blog.capilano-fw.com/?p=768