🕛 2024.5.22 22:26

【Hands-On】ZendFrameworkの概要とセットアップ

  • 仕事でZendFrameworkを使うことになったがよくわかっていない
  • ZendFrameworkの歴史や目的がよくわからない
  • ZendFrameworkのどのように使うかわからない

ZendFrameworkはPHPで書かれたオープンソースフレームワークで、MVCアーキテクチャに基づいています。

この記事を読むことで、ZendFrameworkの基本的な概要、歴史、目的、そして今後の使用に関する不安を解消するための方法を理解することができます。

ZendFrameworkの基本概要を理解

  • ZendFrameworkの主な特徴や利点について学ぶことができます。

ZendFrameworkの歴史と目的を把握

  • ZendFrameworkがどのようにして誕生し、どのような目的で使用されてきたのかを知ることができます。

開発環境のセットアップ方法を習得

  • Dockerを使った開発環境のセットアップ方法を学びます。。

ZendFrameworkの基本概要

ZendFrameworkは、PHPベースのオープンソースフレームワークで、主にエンタープライズアプリケーションの開発を目的としています。その特徴として、モジュール化、再利用性、セキュリティ、パフォーマンスの最適化が挙げられます。

  • モジュール化:独立したコンポーネントを必要に応じて使用できるため、柔軟性が高い。
  • 再利用性:多くのコンポーネントが他のプロジェクトやフレームワークでも使用可能。
  • セキュリティ:セキュアなアプリケーションを構築するためのツールやベストプラクティスが提供されている。
  • パフォーマンス:大規模なアプリケーションでも迅速に動作するよう最適化されている。

ZendFrameworkの歴史と目的

ZendFrameworkは2006年にZend Technologiesによって開発が開始され、PHPの標準フレームワークとして広く利用されてきました。ZendFrameworkの主な目的は、開発者が効率的に高品質なWebアプリケーションを構築できるようにすることです。

2019年にZendFrameworkはLaminasプロジェクトに移行され、現在はLaminasとして引き続き開発・サポートされています。LaminasはLinux Foundationによって管理され、セキュリティアップデートや新機能の追加が行われています。

ZendFrameworkをDockerでセットアップする手順

ステップ1: Dockerをインストール

ZendFrameworkをDockerで使う方法


ユーザーの悩み

  1. ZendFrameworkをDocker環境でセットアップする方法がわからない
  2. 開発環境を効率的に管理したいが、どこから始めればいいかわからない
  3. コンテナを使った開発のメリットがわからない

このブログ記事を読むことで解決できることを主張

この記事を読むことで、Dockerを使ってZendFrameworkを簡単にセットアップし、開発環境を効率的に管理する方法を学ぶことができます。


このブログ記事を読むことで解決できるポイント

  1. Dockerの基本概念と利点を理解
    • Dockerがどのように開発環境のセットアップと管理を簡素化するかを学びます。
  2. ZendFrameworkのDocker環境でのセットアップ手順を学習
    • ZendFrameworkをDockerコンテナで実行するための具体的な手順を説明します。
  3. 効率的な開発環境の管理方法を習得
    • Dockerを使った開発環境の管理方法を理解し、プロジェクトの効率を向上させます。

記事を読み終えて得られる最高の結果

この記事を読み終えることで、Dockerを使ってZendFrameworkの開発環境を構築し、効率的に管理する方法をマスターできます。これにより、開発作業がスムーズに進み、プロジェクトの品質と生産性が向上します。


記事全体の要約

この記事では、Dockerを使ってZendFrameworkの開発環境を構築する方法をステップバイステップで解説します。Dockerの基本概念から始め、ZendFrameworkを実行するためのDockerファイルの作成方法、コンテナの起動方法、効率的な環境管理のポイントまでを詳しく説明します。


記事の内容

1. Dockerの基本概念

Dockerは、アプリケーションを軽量なコンテナ内で実行するためのプラットフォームです。これにより、開発環境の一貫性を保ち、簡単にデプロイできるようになります。

主な利点:

  • 一貫性:どのマシンでも同じ環境で実行できる。
  • 隔離:各コンテナは独立して動作するため、依存関係の衝突を防ぐ。
  • 移植性:コンテナをどこにでも移動して実行できる。

ZendFrameworkをDockerでセットアップする手順

ステップ1: Dockerをインストール

まず、Dockerをインストールします。公式サイトからインストールパッケージをダウンロードし、インストール手順に従ってください。

ステップ2: プロジェクトディレクトリを作成

mkdir zend-docker
cd zend-docker

ステップ3: Dockerfileを作成

FROM php:8.0-apache

# Apache設定とPHPモジュール
RUN apt-get update && apt-get install -y \
    libpng-dev \
    libzip-dev \
    zip \
    && docker-php-ext-install pdo_mysql zip

# Composerのインストール
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# プロジェクトディレクトリ作成
RUN mkdir -p /var/www/html

# Apacheのドキュメントルートを設定
ENV APACHE_DOCUMENT_ROOT=/var/www/html/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf

# プロジェクトディレクトリをコンテナにコピー
WORKDIR /var/www/html

ステップ4: docker-compose.ymlを作成

version: '3.1'

services:
  zend:
    build: .
    ports:
      - "8080:80"
    volumes:
      - .:/var/www/html
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: zend
      MYSQL_USER: zend
      MYSQL_PASSWORD: zend
    depends_on:
      - db

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: zend
      MYSQL_USER: zend
      MYSQL_PASSWORD: zend
    volumes:
      - db-data:/var/lib/mysql

volumes:
  db-data:

servicesセクションには、コンテナとして実行する各サービス(コンテナ)を定義します。この例では、zenddbの2つのサービスを定義しています。

  • build: . : Dockerfileが存在するディレクトリを指定します。
  • ports: "8080:80" : ホストのポート8080をコンテナのポート80にマッピングします。これにより、ホストマシンのhttp://localhost:8080からZendアプリケーションにアクセスできます。
  • volumes: .:/var/www/html : ホストの現在のディレクトリをコンテナの/var/www/htmlにマウントします。これにより、ホスト上のコード変更が即座にコンテナ内に反映されます。
  • environment : MySQLデータベースに接続するための環境変数を設定します。
  • depends_on: db : このサービスはdbサービス(データベース)が起動した後に起動することを示します。
  • image: mysql:5.7 : MySQL 5.7の公式イメージを使用します。
  • environment : MySQLデータベースの設定(ルートパスワード、データベース名、ユーザー名、ユーザーパスワード)を環境変数として設定します。
  • volumes: db-data:/var/lib/mysql : db-dataという名前のDockerボリュームをコンテナの/var/lib/mysqlにマウントします。これにより、データベースのデータが永続化されます。

ステップ5: ZendFrameworkのインストール

docker-compose run --rm zend composer create-project -sdev laminas/laminas-mvc-skeleton .

ステップ6: コンテナを起動

docker-compose up -d

Zendframeをセットアップ

今回、ubuntuにZendframeをセットアップすることにした。依存関係の問題があるため、composer ver 1 系ではなければセットアップできない。composer ver 1 は、php 8.0 に対応していないた、php7.4を新たにubuntuにインストールした。

下準備

作業フォルダとzendframeを展開するフォルダーを作成します。zendframeを空のフォルダにしか展開できないので、作業フォルダ(zend-docker) 内に src フォルダを作成します。

mkdir zend-docker
cd zend-docker
mkdir src

php7.4 インストール

ubuntuにphp7.4をインストールします。

# 必要なパッケージをインストール
sudo apt update
sudo apt install software-properties-common

# ondrej/php PPA リポジトリを追加
sudo add-apt-repository ppa:ondrej/php
sudo apt update

# PHP 7.4 をインストール
sudo apt install php7.4

#  PHP 拡張モジュールもインストール
sudo apt install php7.4-cli php7.4-fpm php7.4-mysql php7.4-xml php7.4-curl
# update-alternatives コマンドを使用して PHP のバージョンを設定
sudo update-alternatives --set php /usr/bin/php7.4
$ php -v
PHP 7.4.33 (cli) (built: Apr 11 2024 22:13:28) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies

composer 1系 インストール

作業フォルダ(zend-docker)で、composer ver 1 をインストールします。

Composerバージョン1をインストールするには、Composerインストーラーをダウンロードして、特定のバージョンを指定してインストールします。

pwd
# /home/****/zend-docker

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --version=1.10.22
php -r "unlink('composer-setup.php');"

Zend Framework のインストール

ローカル src フォルダに Zend Framework を展開します。作業フォルダ(zend-docker)で、インストールコマンドを実行します。

pwd
# /home/****/zend-docker

php composer.phar create-project zendframework/skeleton-application src

Docker のコンテナ作成

作業フォルダ(zend-docker) にdocker 関連ファイルを作成します。

touch docker-compose.yml
touch Dockerfile

docker-compose.yml

version: '3.8'

services:
  app:
    build: .
    ports:
      - "3000:80"
    volumes:
      - ./src:/var/www/html
    depends_on:
      - db

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: zend_db
      MYSQL_USER: zend_user
      MYSQL_PASSWORD: zend_password
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

Dockerfile

# 基本となるイメージを指定
FROM php:7.4-cli

# 必要なパッケージをインストール
RUN apt-get update && apt-get install -y git unzip

# PHPの拡張をインストール
RUN docker-php-ext-install pdo pdo_mysql

# Composerをインストール
COPY --from=composer:1 /usr/bin/composer /usr/bin/composer

# 作業ディレクトリを設定
WORKDIR /var/www/html

# ポートを公開
EXPOSE 80

# コンテナ起動時に実行するコマンドを設定
CMD ["php", "-S", "0.0.0.0:80", "-t", "/var/www/html/public"]

コンテナ立ち上げ

 docker-compose up -d --build

#停止
docker-compose down

http://localhost:3000 にアクセスすると Zend Framework のホームページが表示されました。

まとめ

基本概要

  • PHPベースのオープンソースフレームワーク
  • エンタープライズアプリケーション開発に最適
  • モジュール化、再利用性、セキュリティ、パフォーマンスの最適化が特徴

歴史と目的

  • 2006年にZend Technologiesによって開発開始
  • 開発者が効率的に高品質なWebアプリケーションを構築するためのツール
  • 2019年にLaminasプロジェクトへ移行

ZendFrameworkセットアップ

  • Dockerを使用してZendFrameworkの開発環境を構築できる
  • PHP7.4とComposer ver 1系が必要