質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.04%

PHP、CakePHP3について、デプロイに関する情報が少ない

解決済

回答 4

投稿

  • 評価
  • クリップ 2
  • VIEW 3,613

score 25

質問ではなく、アドバイスを乞うているだけのように思われるかもしれませんが。
私は、PHPとCakePHP3を勉強しています。
ごく単純なものですが、PHPでも、CakePHPでも、それぞれ一通りのものを作成し、レンタルサーバーにアップして実際のインターネット上で動作させることができた、というレベルです。

勉強開始当初から、疑問に思っていることがあり、質問させてください。

Q1)入門レベルから中級レベルのどの解説書にも、コードの書き方とxamppのhtdocsにおいたローカル環境での動作確認までしか載っておらず、デプロイのことがぜんぜん解説されていません。これはなぜなんでしょうか?
また、デプロイ(インターネットのサーバーに上げること)自体は、どうやって勉強したらいいのでしょうか?解説書や解説サイトでよいものはありますか?
あるいは、ただサーバーという記憶領域にフォルダまるごとコピーするだけなんだから、勉強というほどのことではないという認識でよいのでしょうか(少なくとも、PHPのようなレンタルサーバーにあらかじめ実行環境が整っているようなメジャーな言語なら)?

Q2)私は、大昔のホームページ作りブームの頃に有名だったらしい、「FFFTP」というソフトを使って、レンタルサーバーにデプロイしました。私の作ったものが単純な構造だからか、思ったように動いてくれています。しかし、FFFTPというソフトは、素人の私から見ても、単純に「手元にあるファイル群をサーバーの指定した場所にコピーする」だけの単純なソフトに見えます。よく知りませんが、サーバーの設定やらをどうこうするという機能はないように見えます。私は、今後、より複雑なものを開発したり、仕事にできたらということも考えています。それでも「FFFTPはプロのwebアプリ開発現場においても立派なデプロイソフトとして通用するものだ」と考えていてよいでしょうか?

以上2点、よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

+5

Q1)入門レベルから中級レベルのどの解説書にも、コードの書き方とxamppのhtdocsにおいたローカル環境での動作確認までしか載っておらず、デプロイのことがぜんぜん解説されていません。これはなぜなんでしょうか?

「入門レベルから中級レベルのどの解説書」はプログラミングそのものの学習にターゲットを絞っているからだと思います。
インターネットに公開(デプロイ)するにあたっては、無限に近い選択肢があり、すべてをカバーする様な形で汎用的に記述するのは難しいです。

また、デプロイ(インターネットのサーバーに上げること)自体は、どうやって勉強したらいいのでしょうか?解説書や解説サイトでよいものはありますか?

具体的な書籍やwebサイトは選択するOSやディストリビューションによって変わってくるかと思いますが、
まずはLAN内や仮想環境でLinuxサーバを立ててみて、webサーバの基本的な挙動から把握していくのが良いかと思います。
XAMPPはプログラミング学習にはとても優れた環境ですが、デプロイを考えた場合はあまり学習になりません。(学習段階でwindowsサーバでインターネットに公開する環境を使うことはあまり無いため)

あるいは、ただサーバーという記憶領域にフォルダまるごとコピーするだけなんだから、勉強というほどのことではないという認識でよいのでしょうか(少なくとも、PHPのようなレンタルサーバーにあらかじめ実行環境が整っているようなメジャーな言語なら)?

サーバへアップロードして使えるという環境を使っている間はそれで問題無いと思います。

おそらく、共有レンタルサーバを使用されているものと思いますが、
共有レンタルサーバは出来ることが制限される代わりにサーバやOSそのものの管理はサービス管理会社の責任で行ってくれるというサービスですので、機能的に事足りる場合は優れた選択肢です。

共有レンタルサーバでは事足らないという状況になったらVPSなりクラウド環境なりでサーバやOSそのものの設定を学習されると良いかと思います。

Q2)私は、大昔のホームページ作りブームの頃に有名だったらしい、「FFFTP」というソフトを使って、レンタルサーバーにデプロイしました。私の作ったものが単純な構造だからか、思ったように動いてくれています。しかし、FFFTPというソフトは、素人の私から見ても、単純に「手元にあるファイル群をサーバーの指定した場所にコピーする」だけの単純なソフトに見えます。よく知りませんが、サーバーの設定やらをどうこうするという機能はないように見えます。私は、今後、より複雑なものを開発したり、仕事にできたらということも考えています。それでも「FFFTPはプロのwebアプリ開発現場においても立派なデプロイソフトとして通用するものだ」と考えていてよいでしょうか?

FFFTPはご認識の通り、ファイルをアップロード/ダウンロードするためのソフト(FTPクライアント)です。
仕事にする場合でも、FTPだけで成り立つ場合もありますし、成り立たない場合もあります。
個人的な考えとしては、仕事としてサービスのデプロイまでするのであれば、FTPだけでは結構厳しいかなと思います。

サーバの設定や管理を行う場合、SSHでログインして設定ファイルを書き換えたりOSやデーモンの再起動を行うということをしますので、
「SSHでログインできる環境」を用意し、SSHクライアント(windowsならteratermやputty等)でログインするという一連の流れを学習されるのが良いかと思います。
(これも前述のLinuxサーバそのものの学習で必ず出てくる部分です)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/16 17:33

    とても勉強になりました。これからの課題が見えた気がします。ありがとうございました。

    キャンセル

  • 2017/07/26 12:10

    minarai_SEさんと同じことを考えておりました、(xampp環境で作ったcakephp3をレンタルサーバーに上げるのにここ最近四苦八苦してましたので)、minarai_SEさん質問ありがとうございます。
    tanatさん的確な回答勉強になりました。

    キャンセル

  • 2017/07/26 16:04

    > ho_riさん
    お役に立てたのなら何よりです。

    キャンセル

+4

1.デプロイの学習について
そのまま「デプロイ」で検索してみる等でいくらでも情報出てくると思います。
最近では「CI」というコトバと、そのツール群が流行っていますが、ビルドする必要のないPHPでは立派すぎるモノの事が多いです。
が、いずれにせよデプロイ専用の目的で作られたモノばかりですので、学ぶことは多いと思います。

2.FFFTPはデプロイツールか?
これについては後述します。

私は、最近の業務ではGitを使っています。
本番環境にmasterリポジトリをCloneしておき、本番反映の際にはoriginのmasterをPullしてくる形でデプロイ(と言うか、ファイルの設置)をしています。

プロジェクトによっては、origin/masterにPushされたらHookでデプロイコマンドを投げるようにしているものもあります。

また、GitLabのCI機能を使っているモノもあります。

Gitを絡ませたデプロイは、やらかした(誤ったデプロイを行った)場合でも復旧が容易で確実に行える利点があり、複数人での開発案件で逐次アップデートを行うサービスの場合は特に有効な手段だと感じています。

Jenkins等使う方法もありますし、その他色々やり方はあると思います。
(それこそFFFTPで直接アップロードする方法も)

ただ、私が考える「デプロイ」は、ある程度の人的ミスが排除できる仕組みが必要だと思っています。
仮にFFFTPで直接アップロードする場合は、以下の手順が必ず必要になります。
1.現行本番環境の、更新予定ファイルのバックアップの保存
2.本番環境へアップロードするファイル一式について、それぞれのファイルが間違いなく更新対象のファイルである事の確認(古いファイルを上げようとしていないか?足りないファイルはないか?余計なファイルを含めていないか?)

これらは手順書にまとめるなどして啓蒙活動すれば、勿論人的ミスの軽減にはなるかと思います。
が、確実ではなく、ミスした場合の復旧等はとても面倒な事になると予想されます。
そういった意味では、FFFTPなどで直接手動でアップロードする手法は「ベストな」方法ではないと考えます。

ただし、FFFTPでファイルをドラッグ&ドロップするだけ、という単純な手法は、デザイナーさん等、サーバでコマンドを発行したりWEB UIをいじったりして行うやり方に抵抗がある方にも受け入れやすい利点はあります。
そういった意味で、「場合によっては教育コスト等考えると、ベターな方法である」という結論になる場合もあると思います。

取り敢えず学習段階であるならば、色々手を付けてみてはいかがでしょう。
個人的にはGitLabが使いやすくて好きです。(デプロイ目的と言うよりは、バージョン管理的な面が大きいですが)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/16 17:36

    実際に業務として扱っている人の持っているイメージを教えていただきとてもためになりました。ありがとうございました。

    キャンセル

+3

PHP のフレームワークだとデプロイはあまり考えることはないものが多いですね。
そもそも CakePHP は手軽に使えることを目指して、「適切な場所と命名規則で配置してあれば設定ファイル要らずで動作する」(設定するより規約に従って配置せよ)ですから。

逆に言えば、設定ファイルをいじらなければならないような状況なら、本来はインストーラーが必要になるのです。
※ファイルを配置して、どこそこの設定ファイルを正しく修正して……なんてのを手作業に任せるのはクレバーではなく、自動的にやれるようにするべき、という考え方

単にファイルを配置することをデプロイといっていいのか、という認識の問題であって、FFFTP はデプロイツールであるともないとも言えます。
※PHP の他にも、静的な Web サーバのコンテンツをアップするためにも使われますから、Web 開発者で FFFTP (ないし他の FTP クライアントソフト)を使ったことがない人というのはまずいません

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/16 17:34

    フレームワークというもののイメージが少し深まりました。ありがとうございました。

    キャンセル

+3

すでに解決済みですが、既存の回答にはあがっていない自分が知っている参考文献をあげておきます
なお、デプロイを含めて構成管理をどこまでやるかはプロジェクトの規模やデプロイの頻度によって変わってくるので一概にはいえないと思いますが、結構奥が深い分野なので、勉強して損はないと思います

  • PHP The Right Way の 各種サーバーへのデプロイ
    情報量はそこまで多くないですが、もれなく関連するキーワードが載っていますので、気になった部分から深掘りしていくとよいかと。

  • 書籍:CakePHPで学ぶ継続的インテグレーション
    自分が知る限りCakePHPでデプロイや構成管理について扱っている唯一の書籍だと思います。CakePHP2の頃の書籍ですが、CakePHP3にも十分応用できるかと。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/21 21:01

    ありがとうございます!!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.04%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る