Ubuntu24にCakePHP開発環境を構築 NetBeans版

cakephp5

IDEにNetbeansを利用するCakePHPの開発環境を構築したときのメモです。

CakePHPとは?

CakePHP(ケイクピーエイチピー)とは、PHPで書かれたオープンソースのWebアプリケーションフレームワークです。先行するRuby on Railsの概念の多くを取り入れており、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークと言われているようです。

前提条件

開発環境は、VMwareのゲストマシンに構築することとします。
ソース管理にはGitを利用するものとします。
Gitリモートリポジトリの接続先は、ssh://hoge@192.168.1.202/home/hoge/git/bare/php/fuga.git です。
ファイルをコミットしていないmasterブランチが初めに作成されており、これを基に作成したdevelopブランチが既にあります。開発側はdevelopブランチを使用します。

入れるもの

ウェブサーバ:Apache HTTP 2.4
データベース:MySQL 8.0
プログラミング言語:PHP 8.3
フレームワーク:CakePHP 5

OS環境

VMwareのゲストOSとして、Ubuntu24.04を最小構成でインストールします。

共有フォルダ

ホストとファイルのやり取りに便利なので作成します。
詳細は、本サイトのVMware Workstationのページを参照してください。

ドメイン設定

ローカルのウェブサーバへ接続するため、/etc/hosts にドメインを設定します。
ドメイン名の設定にワイルドカード(*)は使えません。

127.0.0.1   example.test fuga.example.test 

一括でインストール

Apache、MySQL、PHPをまとめてインストールするには、以下のコマンドを実行します。

sudo apt install apache2 mysql-server libapache2-mod-php php-mysql 

以下のパッケージがインストールされます。

  apache2 apache2-bin apache2-data apache2-utils libaio1t64 libapache2-mod-php
  libapache2-mod-php8.3 libapr1t64 libaprutil1-dbd-sqlite3 libaprutil1-ldap
  libaprutil1t64 libcgi-fast-perl libcgi-pm-perl libevent-core-2.1-7t64
  libevent-pthreads-2.1-7t64 libfcgi-bin libfcgi-perl libfcgi0t64
  libhtml-template-perl libmecab2 libprotobuf-lite32t64 libsodium23
  mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0
  mysql-client-core-8.0 mysql-common mysql-server mysql-server-8.0
  mysql-server-core-8.0 php-common php-mysql php8.3-cli php8.3-common
  php8.3-mysql php8.3-opcache php8.3-readline

PHPパッケージの追加

CakePHPはデバッグにSQLiteを利用するため、以下のパッケージを追加します。

sudo apt install php-sqlite3

プログラミング言語

PHP

一括インストールの際にインストールされていると思います。
詳細は、本サイトのPHP開発環境インストールのページを参照してください。

ウェブサーバ

一括インストールの際にインストールされていると思います。
詳細は、本サイトのApache HTTP Server環境の構築のページを参照してください。
ここでは、この後作成するプロジェクトを対象にした設定とhttps接続に必要なプライベート証明書を作成します。

データベース

一括インストールの際にインストールされていると思います。
本サイトのMySQL環境の構築のページを参照してください。

phpMyAdmin

本サイトのphpMyAdmin環境の構築のページを参照してください。

NetBeans IDE

詳細は、本サイトのNetBeans IDEのページを参照してください。

プロジェクト作成

Gitリモートリポジトリと連携させたプロジェクトの作成を行います。
リモートリポジトリ側にはmasterとmasterから作成したdevelopブランチがあり、開発側はdevelopブランチ利用することとします。

CakePHPプロジェクトを作成

Composerでプロジェクトを作成します。以下のコマンドを実行するカレントディレクトリの中に、指定したプロジェクト名のディレクトリを作成します。
cakephpのバージョンを指定しない(以下の「:”5.*”」を付けない)と、その時の最新バージョンが適用されます。

composer create-project --prefer-dist cakephp/app:"5.*" fuga

NetBeansプロジェクトを作成

NetBeansのメニュー「File」-「New Project…」を選択します。

作成するプロジェクトの種類を選択します。
作成したCakePHPプロジェクトを使うので、PHP Application with Existing Sourcesを選択します。

プロジェクトの基となるディレクトリとPHPのバージョン、文字コードを設定します。

実行時の設定を行います。
今回はローカルに構築したウェブサーバを利用し、Apacheの設定に合わせてURLを設定します。
Index Fileですが、ここでは一旦、空にしておきます。

リモートリポジトリと連携

以下のコマンドを実行してローカルに作成したプロジェクトを初期化します。ここではブランチ名を指定していないので、masterという名前でブランチが作成されます。

cd fuga
git init

ローカルで使用するブランチはdevelopのため、初期化したブランチ名を変更します。

git branch -m develop

以下のコマンドを実行して、リモートリポジトリへ接続する情報を追加します。ここでは、接続情報にoriginという名前を設定しています。

git remote add origin ssh://hoge@192.168.1.202/home/hoge/git/bare/php/fuga.git

リモートの情報をローカルへ取り込む処理を行います。

NetBeans内のプロジェクトから「Git」-「Remote」-「Pull…」を選択します。

追加したリモートリポジトリ接続情報が設定されて表示されます。ここで接続情報を変更したい場合は、「Specify Git Repository Location」を選択し、情報を書き換えます。
情報設定後は「Next>」ボタンを押します。

ローカルの「develop」からリモートの「develop」(リモートリポジトリ接続情報には「origin」と名前を付けているので、origin/develop)が該当)へPushする選択肢が表示されるので、これを選択します。

実行後、可能であればリモートリポジトリに反映されているか確認しましょう。

実行時の設定

ここでは、先ほど空にしていたIndex Fileを設定します。
CakePHPでは/webroot/index.phpを設定します。

PHPUnit

PHPUnitは、 PHPプログラミング言語用の単体テストを行うためのフレームワークです。作成したメソッドを実行して期待値通りか判定することで、単体テストの結果が得られます。

CakePHPでは、プロジェクト作成時に一緒にインストールされると思います。そこで、NetBeansで使用する場合について紹介します。

対象のプロジェクトを選択し、ショートカットメニューを開きます。
メニューからPropertiesを選択します。
Testingを選択します。

「Add Folder…」ボタンを押して、プロジェクトのtestsフォルダを選択します。Testing Providersには、PHPUnitを選択します。

Testingを展開するとテストプロバイダのカテゴリが表示されます。
Use XML Configurationには、プロジェクトルートにあるphpunit.xml.distを選びます。
(/var/www/html/fuga/phpunit.xml.dist)
Use Custom PHPUnit Scriptには、プロジェクト作成時にインストールされているPHPUnitの実行スクリプトを選択します。
(/var/www/html/fuga/vendor/phpunit/phpunit/phpunit)

テストクラスのファイルまたは実行したいテストメソッドを実行して結果が表示されると設定完了です。CakePHP5には、予めPagesControllerTest.phpというテストクラスが用意されていますので、これを実行してOKであれば大丈夫だと思います。

コメント

タイトルとURLをコピーしました