
2025.03.19
急成長するドバイ不動産市場の今 投資のチャンスと注意点を専門家が解説
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パイプラインもお気軽運用できますね! などのことでした。
ご清聴ありがとうございました。
(会場拍手)
2025.03.21
マネージャーの「自分でやったほうが早い」という行動で失うもの 効率・スピード重視の職場に足りていない考え方
2025.03.17
不確実な時代だからこそ「知らないこと」を武器にする ハーバード首席卒業生の逆説的なメッセージ
2025.03.17
いくら読書をしても「成長しない人」が見落としていること 10分でできる「正しい学び方」
2025.03.19
部下の「タスクの先延ばし」が少ない上司の特徴とは? 研究が示す、先延ばし行動を減らすリーダーの条件
2025.03.17
ソフトバンクとOpenAIにとって「歴史的な日」になった 孫正義氏が語る、AI革命の全ぼう
2025.03.18
フェデラー氏が語る「努力しない成功は神話」という真実 ダートマス卒業生に贈る勝利の秘訣
2025.03.18
全知全能の最先端AI「Cristal」が企業の大脳となる ソフトバンク孫正義氏が語る、現代における「超知性」の可能性
2025.03.19
フェデラー氏が語る「ただの1ポイント」の哲学 ウィンブルドン敗北から学んだ失敗からの立ち直り方
2025.03.18
部下に「そうかなぁ?」と思われない1on1の問いかけ エンゲージメントを高めるマネジメントに欠かせない「聴く」技術
2025.03.19
組織をダメにする“害虫”の正体は間違った思い込み AIやDXなど手段のみにこだわるダメ上司の見極め方
グローバルの経営理論に学ぶ、企業アルムナイ成功への示唆〜中央大学ビジネススクール 犬飼知徳教授
2025.02.18 - 2025.02.18
【手放すTALK LIVE#046】 出版記念イベント 『大きなシステムと小さなファンタジー』 一つ一つのいのちが大切にされる社会へ
2025.02.03 - 2025.02.03
「聴く」から始まる組織変革 〜篠田真貴子さんと考える対話型マネジメント〜
2025.02.14 - 2025.02.14
「目の前の利益を優先する」心理とは:ビジネスに活かせる意思決定の科学
2025.02.12 - 2025.02.12
新刊『組織をダメにするのは誰か?職場の問題解決入門』出版記念セミナー
2025.02.04 - 2025.02.04