2024.10.01
自社の社内情報を未来の“ゴミ”にしないための備え 「情報量が多すぎる」時代がもたらす課題とは?
Laravelを本番環境にデプロイするまで(全1記事)
リンクをコピー
記事をブックマーク
紅林優氏(以下、紅林):「Laravelを本番環境にデプロイするまで」とテーマでLTさせていただきたいと思います。
まず最初に自己紹介させていただきます。
私、株式会社うるるでサーバサイドエンジニアをやらせていただいている、新卒1年目の紅林といいます。どうぞよろしくお願いします。Twitterは、@yukure3というアカウントでやっているので、よろしかったらフォローしていただけるとうれしいなと思います。最近やっていることは、Laravelを使ってAPI作ったりとか、Vue.jsでフロントのお仕事をさせていただいております。
お伝えしたいことがございまして、私、今回のLTが人生初LTで初登壇になります。なので、つたない点とか、「何言ってるんだろこいつ」みたいなことがたくさんあると思うんですけども、そこは温かい目で見守っていただけたらと思っております。どうぞよろしくお願いします。
(会場拍手)
本日、私、こんな方に向けてLTを作ってきました。
「なんかLaravelよさそうだから使ってみたいなぁ」とか、「開発環境どう立ち上げるのが楽なのかなぁ」とか、「本番運用も考えないといけないけど楽できないかなぁ」みたいな方にLaravelでの開発で集中できる方法をちょっとお伝えしたいなと思っております。
Laravel自体の良さとかVue.jsのお話は、他の私よりもめっちゃ強いエンジニアの方々がたくさんしてくれると思うので、私はあえてLaravelに集中できる方法をお伝えしたいと思います。
アジェンダとしてこんな感じになってます。
実現したいこととか、必要なこととか、まとめみたいな感じですね。
今回はこんな感じのことを実現したいと思っております。
ローカルから本番のデプロイまでって感じですね。これを実現するために必要なものがございまして、4つあるんですけども、ローカルと本番、あとCl/CDパイプライン、バージョン管理。上からこんな感じで、アイコンを載せさせていただいたんですけども、こんなものを使って今回は先ほどの環境を作っていきたいと思っております。
まず、ローカル開発環境の構築ですね。
この男の人がパソコンやってるところをlaradockで作っていきたいと思います。
コードをちょっと載せさせていただいたんですけども、ディレクトリを作って、laradockをクローンして、laravelをインストールしてみたいな感じの流れになっています。
ディレクトリ構造が一番下に書いてありまして、laradockのところにいるような感じですね。laradockとlaravelをインストールしてきたら、.envの修正をしていきます。
アプリケーションが置いてある場所だったりとか、nginxのポート、mysqlのversionを5.7とかに変更していくような感じですね。これlatestって一番下に書いてあるんですけど、latestしたままにしているとlaradockが動かないみたいなことがあったりするので、今回、開発環境ということもあって、5.7を使います。
次にlaravelの.envも修正していきたいと思います。
こんな感じで修正します。
docker-compose upみたいにやると、laravelの環境が立ち上がります。めっちゃ簡単です。ここまでがLaravelの開発環境、ローカル開発環境の構築です。
次に本番の開発環境の構築です。
一番右側です。ここを作っていきます。
Elastic Beanstalkで作っていくんですけども、AWSのマネジメントコンソールにいっていただいて、Beanstalkと検索してアプリケーションを作って、アプリケーション名を書く。このアプリケーション名が後ほどデプロイするときとかに必要になってくるので、覚えときますみたいな感じです。
アプリケーションを作ったら、環境を作って、Webサーバ指定という流れになってますね。ここの環境名も後ほど使うので覚えておきます。
環境の構築をしまして、ここでDBの設定も一緒にやっちゃおうみたいな感じで、Webサーバ構築。これで本番環境もできました。このように、すごく簡単に構築することができます。
バージョン管理は何やってやるかというと、みなさんもご存じというか、めっちゃ使ってると思いますが、GitHubで作ります。
まずリモートリポジトリを作って、各種設定を済ませて、pushして、という感じになります。
せっかくなので、ブランチをマスターからdevelopにデフォルトを変えて開発していきます。
次にCI/CDのパイプラインです。
これはCircleCIを使って、赤枠のところを作っていきたいと思います。いきなりCircleCIの設定に入るわけではなく、AWSでIAMのロールを作成します。
こんな感じにロールを作りまして、今回はデプロイ用のロールというわけでプログラムによるアクセスにチェックを付けていただいて、AWSをElastic Beanstalkに対するフルアクセス権限を持ったポリシーをアタッチして、ユーザを作っていきます。
作ったら、CSVのダウンロードというところに赤枠しているんですけど、これをダウンロードしとかないと、シークレットアクセスキーが今後一切見れなくなってしまうので、一応ダウンロードしておくことを忘れないようにします。
ようやく、デプロイする用の設定をしていきます。
自分のPCに、EBコマンドを打てるようにEB CLIをインストールしておきます。そして、eb initコマンドをlaravelのアプリケーションが入っているディレクトリ内でやると、こんなことを聞かれます。
めっちゃ長いのでざっくり何聞かれているかをまとめると、リージョンを聞いてたりとか、どのアプリケーションを使うかとか、どの環境にデプロイするかとか、CodeCommitを使うか みたいなことを聞かれます。なので、アジアパシフィックを選択したり、先ほど「ここで覚えときます」と言ったアプリケーション名をつけたりとか、あるいは環境名をつけたり、CodeCommit使いません! みたいな設定をして、するとですねElastic Beanstalkのconfig.ymlが作成されます。
これだけではなく、config.global.ymlを作って「このように設定する」というところをそのまま書いていただいて、これで設定が終わります。
次に、CircleCIの設定をしていきます。
めっちゃ長いのですが、ディレクトリを作って、configをうつして設定して、こんなBIOSを設定します。
大変見にくくて大変申し訳ないのですが、具体的に何を書いているかというと、コンテナのイメージとか環境変数の設定をして、ビルドとテストの情報を定義して、運用環境へデプロイする設定を書いて、Workflowを定義しています。
この中で一番肝になる部分が、「運用環境へのデプロイ」の箇所でして、これをちょっとピックアップさせていただきました。
具体的に何をやっているかというと、コードをgithubからチェックアウトしてきて、EB CLIをインストールします。そして、eb deploy laravel-vueというように、アプリケーションの環境にデプロイしていくような設定をしております。
今何したのかをざっくりご説明すると、プルリクが作成されたら、ビルドとテストが実行されるって設定を書いたのと、masterブランチにプルリクがマージされたらeb deployコマンドが実行されるような設定をしました。
これでCircleCIのWebサイトにいきまして、こんな感じで設定していきます。
今回はLaravelを使用するので、Linux・PHPを設定します。そして、start bildingというボタンがあるので、こちらを押していただくと、こんなようなページに遷移します。
このあとにデプロイするために、先ほど.csvでダウンロードしたシークレットアクセスキーとアクセスキーをCircleCIの環境変数に設定します。これを設定しないとデプロイできませんよ、と怒られちゃうのでちゃんと設定するようにします。
確認のために、readmeを編集するようなブランチを切って作業しました。
そして、作業した内容をgithubへpushして、プルリクを作ると一番下のほうにCircleCIのアイコンが出て、一応中身を見ると、ビルドとテストの処理結果が表示されています。
このPRをマージしたらCircleCIのダッシュボードにいっていただくと、ジョブが実行されていることが確認できるかと思います。
そして、workflowがこの様になっていて、ビルドが動いた後にデプロイが走ります。
これを作成したらBeanstalkをかけるほうにいってデプロイがかけるほうに完了しましたので、ページを見てみます。
するとForbiddenとなります。
あれ? って思ってよく考えたんですよ。私、ドキュメントルートの設定をしていなかったんですね。なのでこれ、忘れないようにしていただけるといいかなって思います。
/publicとやって、またアクセスしたらForbiddenの500のページにいったんですね。
どうしたのかな? と思ったら、これを忘れてました。
laravel、暗号化とかする関係でAPP_KEYを使うとして、これをちゃんと設定してやって、やっとWelcomページが表示されました!
まとめ入らせていただきます。
本日お伝えしたかったことは、開発環境はLaradockを使って簡単に構築できるよ! っということだったりとか、運用環境はEB使って簡単に構築できるよ! CI/CDパイプラインもお気軽運用できますね! などのことでした。
ご清聴ありがとうございました。
(会場拍手)
2024.10.29
5〜10万円の低単価案件の受注をやめたら労働生産性が劇的に向上 相見積もり案件には提案書を出さないことで見えた“意外な効果”
2024.10.24
パワポ資料の「手戻り」が多すぎる問題の解消法 資料作成のプロが語る、修正の無限ループから抜け出す4つのコツ
2024.10.28
スキル重視の採用を続けた結果、早期離職が増え社員が1人に… 下半期の退職者ゼロを達成した「関係の質」向上の取り組み
2024.10.22
気づかぬうちに評価を下げる「ダメな口癖」3選 デキる人はやっている、上司の指摘に対する上手な返し方
2024.10.24
リスクを取らない人が多い日本は、むしろ稼ぐチャンス? 日本のGDP4位転落の今、個人に必要なマインドとは
2024.10.23
「初任給40万円時代」が、比較的早いうちにやってくる? これから淘汰される会社・生き残る会社の分かれ目
2024.10.23
「どうしてもあなたから買いたい」と言われる営業になるには 『無敗営業』著者が教える、納得感を高める商談の進め方
2024.10.28
“力を抜くこと”がリーダーにとって重要な理由 「人間の達人」タモリさんから学んだ自然体の大切さ
2024.10.29
「テスラの何がすごいのか」がわからない学生たち 起業率2年連続日本一の大学で「Appleのフレームワーク」を教えるわけ
2024.10.30
職場にいる「困った部下」への対処法 上司・部下間で生まれる“常識のズレ”を解消するには