20210915のlaravelに関する記事は2件です。

完成したアプリ(Laravel)を、ConoHa VPSを使って公開するまでの手順

○はじめに 今回、私が作成したアプリは個人で作成して運用していくことを目的としたものです。 そのため、 コストを出来るだけ抑えて、なおかつ、運用して行くにあたってのそれなりのパフォーマンスを追求したい と考えました。 当記事では、 公開までの手順を1から記載し、詰まったポイントについて解説したり、参考記事ではわかりにくかったポイントなどを解説します。 細かい公開手順については、参考記事を参照してください。 ○簡単に、VPSとは? 仮装専用サーバーのことです。 1代のサーバーを複数人で共有する点では、PaaSやレンタルサーバーと同じですが。 1人1台カスタマイズして作った仮装的な専用サーバーを使える事がメリットです。 ○なぜ、VPSを使用する? 初めに、記載しましたが、 コストを出来るだけ抑えて、なおかつ、運用して行くにあたってのそれなりのパフォーマンスを追求したいと考えたからです。 個人サービスで、AWSを利用するとVPS以上にオンプレに近い自由は効くと思いますが、従量課金性でまあまあの高額請求がきます。笑 (使い方にもよると思いますが、、、) その点、VPSサービスは月定額のため分かりやすいですし、安価です。 しかし、仮装サーバーといえど、物理サーバーは1台のため、 万が一、アクセス数が急激に増えた時が心配です。 その際は、AWSへ移行する方法もあるため、臨機応変に対応したいと思います。 また、レンタルサーバーのような共有サーバーよりもVPSでは多少なりとも、運用においての影響は受けづらいと考えました。 ○今回使用するインフラ・環境 インフラ・環境 ConoHa VPS CentOS 8 Apache 2.4.37 PHP 7.4.23 Laravel 6.20.32 Composer version 2.1.7 ○公開手順 ①ConoHa VPSに登録〜VPS作成 まずは、Conohaの新規登録を完了させてください。(登録は無料) その後、VPSを作成していきます。 ・サーバーを追加 → イメージタイプ:CentOS → rootパスワードの設定 これで、VPSが出来上がります。 ②サーバーの設定 サーバー側の設定は、以下記事を参考にしました。 この記事では、Apache、Laravel、MySQLでの環境構築を目標にしています。 参考に進めてみてください。 下記記事では、sshに既に接続された状態からの設定が記載されているので、わかる方は飛ばしていただいて結構ですが、以下sshの接続方法を記載します。 ●コマンドラインからsshに接続する まずは、ConoHaのコントロールパネルに記載されているIPアドレスの確認を行ってください。 ・サーバータグ → ネームタグ → ネットワーク情報 → IPアドレス sshに接続します $ ssh root@[ipアドレス] パスワード入力 接続ができれば、この記事からサーバーの設定行えます。 ③コンポーザーをインストール コンポーザーが入っていないと、動かない。 CentOSへcomposerのダウンロードを行なってください。 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" sudo mv composer.phar /usr/local/bin/composer $ composer composer:not foundにならなければ、完了です。 ここまでくれば、http://[IPアドレス]:8000/を叩くと表示されるはず。(まだ完了ではないが) ④500エラーが出ている場合。Apacheのエラーログを確認する sshで接続した状態で [root@IPアドレス ~]# cd /var/log/httpd/ [root@IPアドレス httpd]# ls access_log error_log [root@IPアドレス httpd]# tail -f error_log ⑤.envを編集する 下記記事を参考に.envの編集を行います #APP_ENV=production #APP_URL=[アプリのURL] #APP_DEBUG=false #DB_DATABASE=[データベース名] #DB_USERNAME=root #DB_PASSWORD=root←まだ変更していなければ 私の場合は、上記の設定を変更してDBやサーバーとの接続できました。 ⑥.htaccessを編集する ・/public配下にあるので編集 ⑦Laravelのセットアップ % composer install ← まだ、本番環境にインストールしていない方は % php artisan key:generate Application key set successfully. % php artisan migrate:fresh SQLSTATE[HY000] [1049] Unknown database 'laravel' →私は.envの設定が間違ってここでエラー .envの修正 →DB_DATABASE=[自分でつけたデータベースの名前] これで、なんとかDBの作成まで完了しました。 実はここまででは、まだ私の環境では見れないページがあるのですが、公開という意味ではとりあえずは一段落つきました。 残り、「APIのエラー修正、本番環境でのメールの送受信」を修正して記事にします。 お疲れ様でした。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

単一責任の原則をLaravelで学習した

単一責任の原則について調べていると「クラスとメソッドは1つの責任だけを持つべき」など諸々調べると出てくるが、概念的にはわかるもののいまいちコードに反映することができていなかったので、モヤっとしていた。 そんな時に、いい感じのサイトに出会えたので勉強がてらまとめておく。 いい感じのサイト↓ Laravelベストプラクティス 実際にコードを見てみる 以下に登場するコードは上記のサイトから転記したものです。 単一責任の原則に反するコード public function getFullNameAttribute() { if (auth()->user() && auth()->user()->hasRole('client') && auth()->user()->isVerified()) { return 'Mr. ' . $this->first_name . ' ' . $this->middle_name . ' ' . $this->last_name; } else { return $this->first_name[0] . '. ' . $this->last_name; } } あー。ifの条件がちょっと複雑だけどこうやって書いちゃうな..ってのが正直な感想です。 名前の作成の部分が、複雑でちょっと何しているかわかりにくいなとは思います。 「〜〜〜の修正お願い!」と頼まれても「えーと。ここのifの中身は〜〜〜」「なんか文字列結合しまくってるけどなんやろこれ?」ってなりそうな感じがします。 単一責任の法則に則ったコード // これがメイン public function getFullNameAttribute() { return $this->isVerifiedClient() ? $this->getFullNameLong() : $this->getFullNameShort(); } // 認証認可関連 // ここもうちょいどうにかならんのか?と少し感じる public function isVerifiedClient() { return auth()->user() && auth()->user()->hasRole('client') && auth()->user()->isVerified(); } // 名前の取得① public function getFullNameLong() { return 'Mr. ' . $this->first_name . ' ' . $this->middle_name . ' ' . $this->last_name; } // 名前の取得② public function getFullNameShort() { return $this->first_name[0] . '. ' . $this->last_name; } 感想としてすごいわかりやすいなーと思いました。 getFullNameAttribute()だけ読めば「ああなるほど」となります。 修正を加える際にも、「ここを修正すればいいな」「ここは今回は関係ないな」というのが明確にわかのではないかと思います。 まとめ 綺麗なコードが書きたい。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む