Amazon Linux 2 で Laravel 環境をセットアップ

July 21, 2019

はじめに

今回は 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** にアクセスしてみます。 以下のようなページが表示されていれば成功です。

f:id:shiro_kochi:2018××××××××:plain:w100:left

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


 © 2023, Dealing with Ambiguity