haiju's 開発メモ

開発に必要な情報を自分用にメモ

AWS EC2(AmazonLinux2)にcomposer + Laravel 6.xをインストールした記録

タイトル通り、ec2にLaravel6.xの最新(LTS)をインストールした手順を記録する(Φω|

それにしてもインストール自体は言語のパッケージマネージャをインストール後に

プロジェクト名を作成するという最近流行りの方法なのに、スワップファイルを

作成して対応ってのは、どういうことなんだってばよw

別件で、laravel-oci8をcomposerでインストールしようとして、out of memory

でエラーになった。なんか、インストールしようとしているパッケージの依存関係

が多いとパッケージのメタ情報のjsonを大量に読み込む必要があり、メモリが上限

に達してエラーになる場合があるらしい...(ΦωΦ;

[手順]

■ composerをインストール。

1. 公式のCommand-line installationに従い、EC2にsshログインしているユーザ

 のhomeディレクトリ以下にインストールを実行。

 ここでは、/home/ec2-user

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2bbafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

php composer-setup.php

php -r "unlink('composer-setup.php');"

2. EC2にsshログインしているユーザのhomeディレクトリ以下のセットアップ

 スクリプトを削除。

$ rm composer-setup.php

3. 下記コマンドを実行してcomposerの実行ファイルを移動。

$ sudo su -
# mv /home/ec2-user/composer.phar /usr/local/bin/composer

4. 下記コマンドを実行してcomposerの実行ファイルを実行。

php /usr/local/bin/composer

5. 下記コマンドを実行してパスを設定。(ユーザ名にはssh接続しているEC2

 インスタンスのユーザ名を入力する。Apacheディレクトリルートで実行

 することを考えフルパスでパスを通す。)

$ echo "export PATH=/home/ec2-user/.config/composer/vendor/bin:$PATH" >> ~/.bash_profile

$ source ~/.bash_profile

6. 下記コマンドを実行してコマンドにパスが通ったことを確認。

$ composer

■ Laravel6.xをインストール。

0. 前提条件

0-1. タイムゾーンを日本に設定。

$ sudo su -

# cp /etc/localtime /etc/localtime.org

# cp -p /usr/share/zoneinfo/Japan /etc/localtime

0-2.Laravelインストール前にメモリ不足エラーになることを考慮して、1GBほど

 スワップファイルを作成。

# dd if=/dev/zero of=/swapfile bs=1M count=1024
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile

0-3. 以下コマンドでスワップファイルが作成されたことを確認。

$ free -m

1. /var/www に移動。

$ cd /var/www

2. composerが実行できるようにディレクトリの所有者を変更。

$ sudo su -

# chown ec2-user:ec2-user html/

# exit
$ cd /var/www/html/

3. composerで6.xの最新でLaravelプロジェクトを作成し、インストール。

$ composer create-project --prefer-dist laravel/laravel project_name "6.*"

※ここでproject_name(app_name)はtestとしている。

$ composer create-project --prefer-dist laravel/laravel test "6.*"

4. Laravelプロジェクト作成後の設定。

 composerのupdateを行う。

$ composer update

4-1. test以下のパーミッションを変更。

$ chmod -R 777 bootstrap/cache

$ chmod -R 777 storage

4-2. Laravelをapache上で動かすために、ドキュメントルートの権限を変更。

 ユーザをapacheグループに追加。

$ sudo su -

# usermod -a -G apache ec2-user

# exit

4-3. グループのメンバーシップを検証。

$ groups

4-4. グループ所有権をapacheグループに変更。

$ sudo su -

# chown -R ec2-user:apache /var/www

4-5. グループの書き込み許可を追加。

# chmod 2775 /var/www

4-6. サブディレクトリにグループIDを設定するため、/var/www とサブディレクト

 を許可。

# find /var/www -type d -exec chmod 2775 {} \;

4-7. グループ書き込み許可を追加するため、/var/www とサブディレクトリの

 ファイル許可を再帰的に変更。

# find /var/www -type f -exec chmod 0664 {} \;

5. apacheにVirtualHostを設定

 /etc/httpd/conf.d 配下にVirtualHost設定用のvhost.confファイルを作成。

 conf.d以下のファイルはapache起動と共に自動で読み込まれる。

# vim /etc/httpd/conf.d/vhost.conf

<VirtualHost *:80>
    DocumentRoot /var/www/html/test/public
    ServerName test-laravel.com
    ServerAlias test-laravel.com

    <Directory "/var/www/html/test/public">
        #.htaccessを利用可能にする
        #AllowOverride All

        # Laravelで利用する環境変数を development に設定
        #SetEnv APP_ENV development
        #アクセス許可
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

 8. vhost.confを編集して保存したらapacheを再起動。

# systemctl restart httpd.service

or

# systemctl stop httpd.service

# systemctl start httpd.service

 9. Windows10のhosts(C:\Windows\System32\drivers\etc\hosts)ファイルに割り当てら

 れたEC2のipとVirtualHostに設定したServerNameを追加。

10. WebブラウザでVirtualHostに設定しているServerNameでLaravelのWelcome

  ページにアクセスできることを確認。

11. laravelコマンドをどこからでも実行できるようにパスに追加。

[参考サイト]

getcomposer.org

qiita.com

readouble.com

qiita.com

gb-j.com

qiita.com

qiita.com

qiita.com

readouble.com