こんにちは、コンサル部@大阪オフィスのTodaです。
GW中、時間があるため2022/02/08にリリースされたLaravel9を使って何か作れないかと思い準備をしています。 今回はAmazonLinux2にPHP8.1とLaravel9を導入する手順をまとめてみました。
ご注意事項
当開発環境はセキュリティグループで制限されたIPからのみ接続できる想定となっています。
パーミッション等の設定は適切でない場合がございますのでご注意ください。
事前の準備
開発環境用にEC2を1台、AmazonLinux2にて準備いたします。
必要なソフトは下記手順にて導入をしていきます。
セキュリティグループはport:22と80インバウンドルールをIP制限にて許可するよう設定しています。
導入操作
インスタンスへのログイン
開発環境用に用意したインスタンスにSSH接続にてログインをおこないます。
ソフトウェアの更新
新規インスタンスを起動したタイミングで導入ソフトを最新の状態にしておきます。
$ sudo yum update
amazon-linux-extrasのソフト確認
EC2にはパッケージ管理ツールとしてamazon-linux-extrasが導入されています。
今回利用するnginxとphp8.1が導入可能か確認をおこないます。
$ amazon-linux-extras
38 nginx1 available [ =stable ]
42 php7.4 available [ =stable ]
51 php8.0 available [ =stable ]
確認をしたところphp8.1は導入できないことがわかりましたのでyumリポジトリを追加して対応を進めていきます。
EPELとRemiレポジトリの有効化
EPELとRemiレポジトリを有効化してphp8.1の導入ができるようにします。
EPELレポジトリのインストールはamazon-linux-extrasにて対応が可能です。
$ sudo amazon-linux-extras install epel
$ sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
パッケージ検索
Yumコマンドにてphp8.1のパッケージが導入可能か検索をおこないます。
設定が正常な場合、下記コマンドにてパッケージが一覧で表示されます。
$ sudo yum search php81
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
224 packages excluded due to repository priority protections
=======================================================================
php81-php.x86_64 : PHP scripting language for creating dynamic web sites
php81-php-ast.x86_64 : Abstract Syntax Tree
php81-php-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php81-php-brotli.x86_64 : Brotli Extension for PHP
php81-php-cli.x86_64 : Command-line interface for PHP
以下省略
PHP8.1の導入
パッケージ検索にて表示されたリストからLaravelの動作に必要な物を探しインストール用のコマンドを用意します。 コマンドの準備が出来たら実行をします。
$ sudo yum install php81 php81-php-mbstring php81-php-mysqlnd php81-php-gd php81-php-xml php81-php-fpm
PHPコマンドの調整
インストールが完了するとphpコマンドの実行ができます。
「php81」にてコマンド実行できるのを「php」でもできるように調整をおこないます。
$ php -v
-bash: php: コマンドが見つかりません
$ php81 -v
PHP 8.1.5 (cli) (built: Apr 12 2022 16:19:58) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.5, Copyright (c) Zend Technologies
alternativesコマンドを利用して「php」で呼び出しできるように調整します。
$ sudo alternatives --install /usr/bin/php php /usr/bin/php81 1
$ php -v
PHP 8.1.5 (cli) (built: Apr 12 2022 16:19:58) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.5, Copyright (c) Zend Technologies
Composerの導入
Laravelの導入操作にはComposerをご利用頂きます。
composerのインストール操作は規約により公式サイトの手順を確認いただく必要がございますので下記リンクに移動頂きDownload導入手順をご利用ください。
■ Download Composer
https://getcomposer.org/download/
Laravelの導入
Composerを利用してLaravelの導入をおこないます。
今回開発環境の配置は「/var/www/app」におこなうようにします。
※/var/wwwの権限をec2-userに変更しておこないます。
$ sudo chown ec2-user /var/www
$ cd /var/www
$ composer create-project --prefer-dist laravel/laravel app
Nginxの導入
amazon-linux-extrasコマンドを利用してnginxを利用いたします。
$ sudo amazon-linux-extras install nginx1
Nginxの設定
開発環境の公開ディレクトリを見るようにNginxを設定します。
また、phpと連携をおこなうためphp-fpmの設定を追加します。
$ sudo vi /etc/nginx/conf.d/app.conf
-- 以下、設定内容 --
server {
listen 80;
charset UTF-8;
root /var/www/app/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* /\. {
deny all;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffers 256 128k;
fastcgi_buffer_size 128k;
fastcgi_intercept_errors on;
fastcgi_read_timeout 120s;
}
}
FPMの起動と自動起動設定
FPMの起動とインスタンス起動時に自動で立ち上がるようにします。
$ sudo systemctl start php81-php-fpm.service
$ sudo systemctl enable php81-php-fpm.service
Nginxの起動と自動起動設定
Nginxの起動とインスタンス起動時に自動で立ち上がるようにします。
$ sudo systemctl start nginx.service
$ sudo systemctl enable nginx.service
Laravelの表示確認
Nginxの起動が完了したら、EC2インスタンスのパブリックIPアドレスにブラウザアクセスをおこないLaravelの画面が表示されることを確認します。
画面がアクセスできない場合は、セキュリティグループやACLにて遮断されていないか、FPMまたはNginxが起動できているかを確認ください。
さいごに
今回はAmazonLinux2にPHP8.1とLaravel9を入れて開発環境を作ってみました。
Laravel6から触っていなかったためLaravel9でのコンテンツ作成がすごく楽しみです!
GW中にわかったこととかがありましたらBlogにしたいと思います。
少しでもお客様の作りたい物の参考になればと考えております。