5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHPerのためのLaravel forgeとDigital Oceanで簡単サーバー管理

Posted at

この記事はうるる Advent Calendar 2019 9日目の記事です。

#はじめに
この記事は下記の方を対象にしています。

  • インフラやサーバー周りが苦手のPHPのサーバーサイドエンジニア
  • 自分でサービス開発をしたいエンジニア
  • エンジニアなりたての方

インフラとかサーバーとかよくわからないし、怖いし、面倒ですよね。私もそうでしたので、よくわかります。

私自身はプログラマ歴4年のサーバーサイドエンジニア。自分でサービスをやっているため、必要に迫られてサーバー管理を嫌々やっています。(本当にサーバー管理キライですw)

この記事ではLaravel forgeとDigital Oceanを使って楽に環境構築を行います。

Laravel forge is 何??

スクリーンショット 2019-12-08 21.58.45.png
  • Laravel 開発者のためのサーバー管理ツール
  • Laravel開発者のTaylor Otwellさんを中心に開発。Laravelとの相性が抜群に良い
  • Digital OceanやAWS、その他のVPSと簡単に連携でき、すぐにLaravelのアプリケーションが動かせる
  • Gitからの自動デプロイ、Redis,Queueなどアプリケーションに必要なことが簡単に設定できる

Digital Ocean is 何??

  • アメリカのクラウドサービスの会社。 VPS、DB、クラウドストレージサービスを安く、シンプルな使い勝手で提供。
  • アメリカのスタートアップがよく使っている
  • AWSよりシンプルで安く、簡単なサービスと認識してもらえればOK!

forgeを使って、Digital Oceanにサーバーを作る

  • forge, DOともにアカウントを取得する
    • forgeは5日間無料トライアルあり。月額12ドルから使えます。
    • DOは利用した分だけ課金されます。サーバーは最小構成なら月500円程で立てれます。
  • DOの管理画面にてAPIを発行
  • forgeの画面にて先ほどのDOのAPIを入力
    • My Account ->Profile -> Server ProvidersにてAPIを入力
スクリーンショット 2019-12-08 22.40.14.png スクリーンショット 2019-12-08 22.33.39.png
  • forgeの画面でcreateサーバーにて、Digital Oceanをクリック
    • 連携が成功していたらcredentialにDigital Oceanの自分の名前が表示されます
スクリーンショット 2019-12-08 22.23.13.png
  • Nameを決めて、Region,Server sizeなどを選択して、create Serverボタンをクリック。今回はadvent-calendarというサーバーを作ります
  • すぐにDigial Oceanと連携して構築し始めます。
スクリーンショット 2019-12-08 22.23.48.png
  • DO側の画面
    • 先ほど名前をつけたサーバーが出来ています
    • 実際にはプロビジョニングに10分くらいかかります
    • 完了するとforgeから完了メールが届きます。このメールにSudo passwordやDBパスワードが書いてあるので保存しておく
スクリーンショット 2019-12-08 22.24.34.png

サイトの公開

  • Forgeに戻って、先ほど作ったサーバーを選択する
スクリーンショット 2019-12-08 22.53.18.png
  • New Siteにドメインを追加する(例:advent-calendar-test.com)
スクリーンショット 2019-12-08 23.00.44.png
  • active siteに先ほど作ったサイトが追加される。サイト名をクリック
スクリーンショット 2019-12-08 23.02.38.png
  • Gitのレポジトリ情報を追加する
スクリーンショット 2019-12-08 23.05.33.png - 試しにLaravelのGit Repositlyを追加 スクリーンショット 2019-12-08 23.06.56.png
  • 勝手にデプロイし始めます
スクリーンショット 2019-12-08 23.07.06.png
  • デプロイ完了したらこの画面。
スクリーンショット 2019-12-08 23.09.55.png
  • デプロイしたい時は右上のDeploy Nowをクリック
  • 自動デプロイは Enable Quick Deploy をクリック。これにしておくとGitが更新されるたびに自動デプロイが走ります
  • 設定したドメインは、ドメインを管理しているサイトでDNSでAレコードにIPアドレスを追加すれば表示されます。(今回の例ではIPアドレスは159.89.200.65。 Digital Oceanのサイトでも確認できるが、ご丁寧にforgeの中でもちゃんと書いてある)
スクリーンショット 2019-12-08 23.11.14.png
  • advent-calendar-test.comはアクセスしてみても、私がドメイン持ってないので表示されません。念のため。

その他設定

  • envはここで設定。 LaravelのEnvをコピペして、本番用に書き換えれば使えます
スクリーンショット 2019-12-08 23.10.27.png
  • SSLも設定可能。Let's encryptあるので、わかんない人はそれクリックしておけばOK。勝手にSSLが反映されます。
スクリーンショット 2019-12-08 23.10.45.png
  • Workerも画面から簡単に設定できる。RedisでもDatabaseでも設定可能です。
スクリーンショット 2019-12-08 23.10.35.png
  • Cronだけはサーバー画面から設定する。トップメニューのServersからサーバーを選び、設定する
スクリーンショット 2019-12-08 23.24.46.png

その他補足

  • 設定はServer details, Site detailsの二つがあり、設定するものによって場所が違う。サイトがシンプルすぎて、何がどこにあるか最初わからないので注意する。
  • ForgeはSudo passwordがたまに求めらるが、サイト上からは見れない。provisioning時のメールにある。最初わからなすぎてパニクった。
  • Digital Oceanはサーバーのバックアップを1週間ごとに取ってくれる。外部サービス使えば、毎日バックアップしてくれます。
  • DOは、managed Database (RDSのパクリ)、 Spaceというオブジェクトストレージ(S3のパクリ)を持っています。この二つは安いのに超便利。 これ以外にもロードバランサーやちょっとしたサーバー監視ツールもある。小規模サービスであればAWS出なくても、DOで十分に事足ります。
  • Digital Oceanに関してはこの記事がよく説明されています。https://nekonenene.hatenablog.com/entry/hello-digitalocean

まとめ

forgeとDigital oceanを使えば、簡単にサーバー構築が出来ます。二つとも海外のサービスなので、基本英語。なので、最初はとっつきにくいです。ただ、その分ネットに情報はたくさんあるし、わかってくれば使いこなせます。

forge のキャッチコピーはServer management doesn't have to be a nightmare.
直訳すると「サーバー管理は悪夢である必要がありません」という意味です。 そのコピーの通り、誰でも簡単に操作できるし、楽に管理できます! 

価格も安いし、ぜひ、使ってみてくださいねー!

Advent Calendar 9日目でした。
明日10日目は Hiroaki Moriyamaさんによる記事を乞うご期待!
https://adventar.org/calendars/4548

5
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?