tetero
@tetero (tetero)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ec2でgit cloneしたlaravelのフォルダをデプロイしたい

解決したいこと

ec2でgit cloneしたlaravelのフォルダをデプロイしたい

環境

ec2
apache
laravel
macOS

発生している問題・エラー

・htmlやcssのような普通のファイルはデプロイできる
・フォルダのままではできないからコピーして中身を全部/var/www/htmlに入れる作業が必要
・それでもHTTP ERROR 500になり表示できない
・Laravelの初期設定であるドキュメントルートは正しく指定できてると思う

参考サイト

https://qiita.com/nakm/items/0bcc6564538a0604b2ce

他の解決策

・gitから自動デプロイするcodedeploy?など(AWSの学習はまだ浅い)

これの難易度は高いでしょうか?
このままlaravelのgit cloneで悩んでいるぐらいならこちらの方が早いでしょうか?

わかりづらいとは思いますが、よろしくお願い致します!!

0

3Answer

エラーの内容がわからないのでなんともですが、

A. composer install をしていない。
B. storageフォルダにApacheのユーザーで書き込み権限がない
のどちらかではないでしょうか。

Aの場合はデプロイしたLaravelのプロジェクトルートで
composer install
を実行。

Bの場合はデプロイしたLarvelのプロジェクトルートで
sudo chown 0777 -R ./storage
を実行する良いのではないでしょうか。

0Like

Comments

  1. @tetero

    Questioner

    わかりやすいご指摘ありがとうございます!
    両方とも試してみたのですが、作動することができませんでした。。

    違うデプロイの方法などご存知でしょうか?
  2. 違うデプロイ方法は 以下の2案を考えました。どちらも悪い例です。
    A案 rsync で開発サーバーと動機を取る。これは悪い例。
    B案 gitではなくSubVersionを使う。

    発生しているエラーの情報、エラーメッセージなどが分かればもう少し細かい回答ができると思います。

何かエラーメッセージは出ていないでしょうか?
問題の根本原因が特定できると解決に近付くことがあります.

0Like

Comments

  1. @tetero

    Questioner

    ありがとうございます!

    /var/www/htmlディレクトリで
    composer create-project --prefer-dist laravel/laravel
    というようなコマンドを打った時に
    [ErrorException]
    mkdir(): Permission denied
    というエラーが出てlaravelのプロジェクトを作れません。
    参考になるかはわかりませんが、何か手がかりになりますでしょうか?
    よろしくお願い致します!
  2. 失敗しているので、それはそれで良くはなさそうですね。
    できないことはそれで良かったでしょうか?

    そもそも500エラーになることが問題かと思っていました
  3. @tetero

    Questioner

    このlaravelのプロジェクトを作れないというのもなにか関係しているのかなと思ったのでお伝えしてみました!
    おっしゃるとおり、私の問題は500エラーになることです。

    sudo tail /var/log/httpd/error_log
    このコマンドを実行すると、下記エラーが出ます!


    [Wed Feb 24 22:57:29.418100 2021] [php7:error] [pid 31076] [client 153.219.146.226:49899] PHP Fatal error: require(): Failed opening required '/var/www/html/massage_reservation-project/public/../vendor/autoload.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/massage_reservation-project/public/index.php on line 34
  4. @tetero

    Questioner

    ありがとうございます!
    @Shiro-neko-kamen さんにも先程お聞きした内容と同じなのですが、

    massage_reservation-projectの権限は下記の通りec2-userが持っています。
    drwxr-xr-x 12 ec2-user ec2-user 4096 2月 22 03:04 massage_reservation-project
    ec2-userでcomposer dump-autoloadをしました。
    下記のエラーが出てきました。
    apacheも起動出来なくなっているようなのですが、原因や解決策などどのようなことが考えられますでしょうか?

    Composer could not find a composer.json file in /var/www/html
    To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section

    よろしくお願い致します!!
  5. こちらのエラーは,

    ```
    Composer could not find a composer.json file in /var/www/html
    ```
    とありますので,`composer.json` が見つかっていないようです.
    カレントディレクトリは,`massage_reservation-project `にて作業されていますでしょうか?
    こちらのエラーでは,`/var/www/html` にて実行されているように読めました.

    apache が起動していないのは,何かエラーは出ていませんか?
  6. @tetero

    Questioner

    `massage_reservation-project `にてcomposer dump-autoloadをしました。
    下記のエラーが出たのでphpを7.3.0にアップデートしようとしたのですが、まだできていない状態です。

    -----------------------------------------------------------------------------------------
    Generating optimized autoload files
    Class Illuminate\Foundation\ComposerScripts is not autoloadable, can not call post-autoload-dump script
    > @php artisan package:discover --ansi
    Composer detected issues in your platform:

    Your Composer dependencies require a PHP version ">= 7.3.0". You are running 7.2.34.

    PHP Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.3.0". You are running 7.2.34. in /var/www/html/massage_reservation-project/vendor/composer/platform_check.php on line 24
    Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 255
    ------------------------------------------------------------------------------



    ドキュメント読んでもわからなかったので、こちらの記事を参考にしています。
    https://www.rem-system.com/centos-httpd-php73/

    yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
    このコマンドを打ったら下記エラーが出ます。

    ------------------------------------------------------------------------------------
    --> 依存性解決を終了しました。
    エラー: パッケージ: remi-release-7.9-1.el7.remi.noarch (/remi-release-7)
    要求: epel-release = 7
    問題を回避するために --skip-broken を用いることができます。
    これらを試行できます: rpm -Va --nofiles --nodigest
    --------------------------------------------------------------------------


    apacheを起動するためにsudo systemctl start httpdを打ちました。
    下記エラーが出ました。

    --------------------------------------------------------------------
    Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
    --------------------------------------------------------------------


    エラーだらけで混乱しています!
    わかりづらくてすみませんが、何か試してみる可能性がある方法などありましたらお教え頂けたらと思います。
    よろしくお願い致します!

composer create-project 実行に Permission denied エラーが出ているのでプロジェクトディレクトリの作成に失敗している様ですね。

ls -ld /var/www/html/laravel
を実行して laravel ディレクトリが存在しないことを確認して
存在しているのであれば、多分作成に失敗したディレクトリなので /var/www/html/laravel をどこかに移動して
パーミッションがある状態で composer create-project コマンドを再実行ですね。

Apacheのエラーログの情報だと
/var/www/html/massage_reservation-project/
ディレクトリにプロジェクトが存在していて composer が php ファイルを見つけられていない様な感じなので
パーミッションを持っているユーザー権限で
cd /var/www/html/massage_reservation-project
composer dump-autoload
を実行すると直るかもしれません。

0Like

Comments

  1. @tetero

    Questioner

    massage_reservation-projectの権限は下記の通りec2-userが持ってます。
    drwxr-xr-x 12 ec2-user ec2-user 4096 2月 22 03:04 massage_reservation-project
    ec2-userでcomposer dump-autoloadをしました。
    下記のエラーが出てきました。
    apacheも起動出来なくなっているようなのですが、原因や解決策などどのようなことが考えられますでしょうか?

    Composer could not find a composer.json file in /var/www/html
    To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section

    よろしくお願い致します!!
  2. 問題は2つあって

    1.composerが動かない
    2.Apacheが起動しない

    この2つは分けて考えないと混乱します。

    まず、
    1.composerが動かない
    から解決しましょう。

    エラーメッセージを読む必要があります。

    ```
    Composer could not find a composer.json file in /var/www/html
    To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section

    ```

    のメッセージを英語で読みましょう。英語が苦手であれば Google翻訳で日本語にして読みましょう。

    エラーメッセージの内容を理解してから、どうすれば解決するかを考えてみてください。

    *今までの情報から推測すると環境の作成に失敗しているようです。


  3. @tetero

    Questioner

    @Shiro-neko-kamenさん、ありがとうございます!
    たしかに問題の細分化ができていなくて混乱していました!

    試してみました。

    https://getcomposer.org/ を参考にしました。
    composer --versionを実行。
    Composer version 2.0.11 と出てきました。
    composer dump-autoloadを実行。
    php7.3以上が必要だというエラーが出ました。
    -------------------------------------------------
    エラー文の一部
    Your Composer dependencies require a PHP version ">= 7.3.0". You are running 7.2.34.
    -------------------------------------------------
    phpバージョンアップしないといけない。
    homebrewがインストールできていないことに気づきました。
    homebrewをインストールするコマンドを打ちました。
    「[sudo] ec2-user のパスワード:」というのを求められました。
    予想のパスワードを入れても「残念、また試してください」と弾かれました。
    sudo suでパスワードを再設定。
    もう一度試しても「残念、また試してください」と弾かれました。
    homebrewがインストールできない。


    今ここで止まっている状態です。
    エラーに次ぐエラーでまだ解決できていません。



    環境を作り直した方が良いのでしょうか?
  4. >「[sudo] ec2-user のパスワード:」というのを求められました。

    sudoができないのは辛いですね。

    管理者権限でないと実行できない操作ができないため phpのバージョンアップをしたり出来ない状態です。

    EC2のサーバーを作る時に設定したパスワードを、記録していない、紛失したのであれば
    サーバーを作成し直して、sudo ができる様にしないといけないと思います。

Your answer might help someone💌