LoginSignup
0
0

CakePHP2のブログチュートリアルにおける開発環境構築とデプロイ

Last updated at Posted at 2024-04-27

目次

はじめに
検索手段
反省
zipダウンロード
開発環境構築
versionエラー
再ダウンロード
filezillaエラー
開発
sql

はじめに

CakePHP2系の開発環境を構築し、ブログアプリを開発し、デプロイする機会があったので、その過程でつまづいた箇所、そしてそれをどう突破したかをまとめています。

実際にコードを書く部分は割愛し、開発環境とデプロイの部分を記載しています。
(コードを書く部分は環境の違いなどは関係なく、特筆すべきことはないと考えたので)

公式サイト

検索手段

まずはわからないことをどのように調べるべきか考えました。私は今までコードを書いているとき生成AIに助けてもらったことが多かったので、今回は主に生成AIのGeminiと、たまに
GPT-3.5を使用することにしました。
(後に後悔することになります)

理由

各生成AIを選んだ理由

  • Gemini(旧Bard)

返答が丁寧。抜け漏れがないボリュームのある文章を生成してくれるように感じる。

  • GPT-3.5
    コードのみの質問に関しては、GeminiCopilotより精度が高いように感じる。(金銭的な理由で有料版のGPT-4は契約していない)

Webではなく生成AIを選んだ理由

  • 自分が今どういう状況で、どういうアウトプットが欲しいのか、という細かな指定ができる
    • それにより、当然回答の精度も向上
    • Webだと意図に合わないサイトを見てしまうことも多々あり、時間効率が悪い
    • 自分が今書いた変なコードも、そのままコピペで修正点を聞く、ということが可能

  • 「記憶」の存在により、以前の回答を踏まえてさらなる質問に繋げられる

  • 質問とそれに対する回答が何回もなされていく訳だが、Webだとそれらは1つ1つが完全に断絶されているし、質問の柔軟性もない。しかし生成AIだとすべての質問と回答のセットを接続できるし、質問の柔軟性がある

  • 生成AIだとソースが不明でブラックボックス化しているというデメリットもあるが、ソースの信頼性を確保したい場合のみWebでも二重で検索すれば良いだろうと判断

反省

ということでほとんど生成AIのみに頼って進めていると、エラーがいくつもでてきて、それを突破できない、という状況が続きました。

そこで、単純にWeb検索でエラーコードをコピペしたりキーワードを入れたりした結果、一気にエラー解決がはかどりました。

生成AI(Gemini)に頼りっきりはダメですね。良い経験をしました。
間違った情報(今はエラーになる、古いバージョンでしか使えないコマンドなど)を平気で送ってきます。ハルシネーションですね。そしてそれに対して「〇〇というエラーが出ました」と伝えても有効な解決策を送ってくることはありませんでした。

かなり柔軟な質問をするときのみに生成AIを使っていくことにします。ということで基本はWeb検索をする方向性にシフトします。

zipダウンロード

では、さっそくCakePHP2のzipフォルダをダウンロードしていきます。
「cakephp github」などと検索すれば出てくる、以下ページに進みます。
https://github.com/cakephp/cakephp

私が参考にしていたdotinstallの講義ではversion2.2.0を使っているようだったので、2.2.0を探します。
赤枠のversionが書かれている箇所をクリックします。

image.png

Tagsタブをクリックし、ダウンロードしたいversionのセクションをクリックします。

image.png

すると、そのversionのフォルダ・ファイル一覧が表示された画面になるので、赤枠のCodeセクションをクリックします。

image.png

Download ZIPをクリックします。すると、自動的にzipフォルダがダウンロードされます。ダウンロードされたzipフォルダは、そのままでは使えないので解凍しておきましょう。これでCakePHPのダウンロードは終了です。

image.png

開発環境構築

エディター

VSCodeを使用。

開発環境

本番環境で開発。

今回はローカル環境ではなくいきなり本番環境で開発を進めました。理由としては、完成したブログアプリのurlを送って人に見てもらう必要があったため、どちらにせよデプロイが必須だったからです。
また、開発自体は1日で終わってしまうような量しかないため、わざわざローカルで試してから本番環境にデプロイするのではなく、最初から本番環境で開発してしまった方が設定などいろいろと楽だと思ったからです。

...というのもありますが最大の原因は、PHPファイルの中身をただの文字列ではなくスクリプトとして実行させてうまくブラウザに表示させるというローカル環境構築ができなかったからです。

XAMPPAMPPDockerなどの知識が必要になりそうで、自分なりに調べながら丸3日くらいいろいろやってみたのですが一旦ギブアップすることにしました。これは後に勉強したいと思っています。

サーバ

さくらのレンタルサーバのライトプランを使用。

最初の2週間はお試し期間のため無料でサーバを使用することができます。
レンタルサーバのプランはライト、スタンダード、ビジネス、ビジネスプロの4つです。ライトプランだけデータベースを使用することができません。今回はブログ投稿者や投稿文のデータを保持するということでデータベースを使用したいので、ライトプランではなくスタンダードプランをお試し契約することにしました。

image.png

データベース

MySQLを使用。

さくらのレンタルサーバからphpMyAdminで簡単にMySQL操作が行えます。

FTPツール

FileZilla Clientを使用。

これにより、VSCodeでコードを書きながらその変更をブラウザに簡単に反映させることができます。

これを使わないとさくらレンタルサーバのファイルマネージャーで0から自分でフォルダを作ったりファイルをアップロードしたりする必要があって非常に面倒なので、FTPツールは使うべきだと思います。

versionエラー

CakePHPの2.2.0のzipフォルダをダウンロードした訳ですが、これをさくらレンタルサーバでブラウザ表示してみると、画面には

Fatal error: Cannot use 'Object' as class name as it is reserved in /home/dotcake/www/blog/lib/Cake/Core/Object.php on line 26

という文言が出ます。どうやらダウンロードしたCakePHPのコードが古いことによりエラーが出ているようです。CakePHP2系の最新versionをダウンロードする必要がありそうです。

再ダウンロード

ということでCakePHP2系の最新バージョンを探しに行くと、2.10.24が最新のようなので、こちらをダウンロードして使うことにします。

filezillaエラー

そして、まだやらなければいけないことがあって...

FileZillaで自分の登録してあるさくらレンタルサーバのサーバに接続しようとすると、以下のエラーになりました。

状態: "ECONNREFUSED - サーバーによって接続が拒否されました" への接続の試行が失敗しました。
エラー: サーバーに接続できません

これはユーザー名やパスワード、ポート番号など、たくさんある入力事項のうちのどれかが間違っているようですが、どれなのか見当もつきません。ここは苦戦しました。
(さくらレンタルサーバのファイルマネージャーでCakePHPのフォルダを自分で0から作り上げていけばFTPツールを使う必要はないのですが、あまりに非効率ですし、単純作業が6時間くらい続くので避けたいと思い、なんとしてもこのエラーを解決したいと奮闘しました)

エラー解決

エラーコードをコピペしていろいろと調べているうちに、下記サイトを見つけました。
https://hth.guide/ja/fix-econnrefused-connection-refused-by-server-filezilla/
本家(英語版): https://hth.guide/fix-econnrefused-connection-refused-by-server-filezilla/

ここの「方法1」の箇所に書いてあるようにポート番号を22にしてみましたが、それでもエラーのままでした。

エラー: SFTP サーバーに対して FTP 接続を確立できません、適切なプロトコルを選択してください。
エラー: 致命的なエラー: サーバーに接続できません

そこで、今度は21にしてみたところ、ついに接続することができました。

なぜ21なのか

理由としては、今回使用しているのは、さくらサーバ(=インターネット)そのものではなくそこに繋げるFileZilla(=FTP)なので、「インターネット」の80番ではなく「FTP」の21番を使う必要があるから、だと理解しました。

また、activeモード(データ転送用の線をサーバからクライアントに投げるやり方)の20番ではなく、今回はその逆を行う、なのでpassiveモードにすべき、なので21番、という流れですね。理解できました。

下記サイトを参考にさせていただきました。
https://wa3.i-3-i.info/word19675.html

サーバにアップロード

サーバと接続できたので、自分のPC(ローカル)にあるCakePHPのフォルダ・ファイル一式をサーバ上にアップロードします。そしてさくらサーバの自分のurlに入ってみると、無事画面にCakePHPのwelcomeページが表示されました。

image.png

開発

これでようやく、コードを書いていく開発のフェーズに移ることができます。あとはチュートリアルの通りファイルに上書きする形でコードを書いていきます。この部分は省略します。
なお、ファイルに変更を加えたら、FileZillaを使ってそのファイルだけサーバにアップロードすることで、ローカルの変更をサーバに同期し、ブラウザで簡単に結果を確認することができます。

sql

データベース・テーブル作成などに関しては、phpMyAdminSQLタブからSQL文を実行することで行いました。

image.png

0
0
0

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
0
0