質問: 質問ではなく、アドバイスを乞うているだけのように思われるかもしれませんが。 私は、PHPとCakePHP3を勉強しています。 ごく単純なものですが、PHPでも、CakePHPでも、それぞれ一通りのものを作成し、レンタルサーバーにアップして実際のインターネット上で動作させることができた、というレベルです。 勉強開始当初から、疑問に思っていることがあり、質問させてください。 Q1)入門レベルから中級レベルのどの解説書にも、コードの書き方とxamppのhtdocsにおいたローカル環境での動作確認までしか載っておらず、デプロイのことがぜんぜん解説されていません。これはなぜなんでしょうか? また、デプロイ(インターネットのサーバーに上げること)自体は、どうやって勉強したらいいのでしょうか?解説書や解説サイトでよいものはありますか? あるいは、ただサーバーという記憶領域にフォルダまるごとコピーするだけなんだから、勉強というほどのことではないという認識でよいのでしょうか(少なくとも、PHPのようなレンタルサーバーにあらかじめ実行環境が整っているようなメジャーな言語なら)? Q2)私は、大昔のホームページ作りブームの頃に有名だったらしい、「FFFTP」というソフトを使って、レンタルサーバーにデプロイしました。私の作ったものが単純な構造だからか、思ったように動いてくれています。しかし、FFFTPというソフトは、素人の私から見ても、単純に「手元にあるファイル群をサーバーの指定した場所にコピーする」だけの単純なソフトに見えます。よく知りませんが、サーバーの設定やらをどうこうするという機能はないように見えます。私は、今後、より複雑なものを開発したり、仕事にできたらということも考えています。それでも「FFFTPはプロのwebアプリ開発現場においても立派なデプロイソフトとして通用するものだ」と考えていてよいでしょうか? 以上2点、よろしくお願いします。
回答: > > 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サーバそのものの学習で必ず出てくる部分です)