0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker で AL2023 にPHP7.3.1をインストールして FuelPHP を動かしてみた

Last updated at Posted at 2024-07-19

はじめに

経緯

新しい職場で FuelPHP を使っているらしく、さらにクラウドを AWS に移行するみたいなので、ローカル環境用に AmazonLinux2023 のイメージを引っ張ってきて、 FuelPHP の wellcom ページが動くところまで構築してみた。
AmazonLinux2023 で FulePHP 動かす記事があまりなかったので、自分の備忘録も兼ねて解説用の記事を残しておく。

サンプルプロジェクト

前提

docker-compose を使っているので、Docker が入っていること。
また、wellcom ページが表示されるところまでを目標としているので、DB については一切触れていない。

Container (サービス)について

サンプルプロジェクトの docker-compose.yml を見てもらえれば分かると思うが、一応どういう立て付けでサービス定義しているか説明しておく。

docker-compose.yml
┝ app    #php,php-fpm,fuelphp を入れるアプリケーションサーバー
└ nginx  #http のリクエストを受け取って php-fpm と通信するサーバー

各種ファイルの説明

docker-compose.yml

nginx が立ち上がるときに app サービスの php-fpm が起きている必要があるので、depends_on を設定している。
ports の設定は、cgi-fcgi コマンドを使ってホスト PC から php-fpm 単体で動作確認するために解放しただけで、nginx サービスのコンテナからアクセスするだけなら不要。

version: '3'
services:
  app:
    build: ./docker/app
    volumes:
      - ./:/var/www
    ports:
      - 9000:9000
  nginx:
    build: ./docker/nginx
    ports:
      - 9090:80
    volumes:
      - ./docker/nginx:/etc/nginx/conf.d
    depends_on:
      - app

docker/app/Dockerfile

まず、PHP について、そもそも AmazonLinux2023 用のライブラリのリポジトリでは、PHP 8.1, 8.2 のみであり、それ以前のバージョンに関しては、remi レポジトリから取得するか自分でビルドする必要がある。今回は、自分でビルドしている。PHP をビルドする際、--with-openssl オプションをつけているのは、PHP のパッケージマネージャーである composer をインストールするためにつけている。
次に --with-openssl で必要になる openssl について、AmazonLinux2023 には元々 openssl3 が入っているが、下位互換がないため 1.1.1 を自分でビルドしてインストールしている。

FROM public.ecr.aws/amazonlinux/amazonlinux:2023.4.20240611.0

ENV PHP_VERSION=7.3.1

RUN dnf -y update
RUN dnf install -y tar gzip make gcc wget libxml2-devel bzip2-devel curl-devel readline-devel libxslt-devel less vim procps-ng perl-core

RUN wget https://www.openssl.org/source/openssl-1.1.1u.tar.gz
RUN tar -xzvf openssl-1.1.1u.tar.gz
WORKDIR /openssl-1.1.1u
RUN mkdir -p /root/lib/openssl
RUN ./config --prefix=/root/lib/openssl
RUN make
RUN make install
RUN echo "/root/lib/openssl/lib/" >> /etc/ld.so.conf.d/openssl-1.1.1u.conf
RUN ldconfig

WORKDIR /
RUN wget https://www.php.net/distributions/php-$PHP_VERSION.tar.gz
RUN tar -xzvf php-$PHP_VERSION.tar.gz 
RUN mv php-$PHP_VERSION php
WORKDIR /php
RUN ./configure --with-bz2 --enable-calendar --with-curl --enable-exif --enable-ftp --with-gettext --enable-mbstring --with-mysqli --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd  --enable-pcntl --with-pdo-mysql --disable-posix --with-readline --enable-sockets --enable-wddx --with-xmlrpc --with-xsl --with-zlib --enable-fpm --with-openssl=/root/lib/openssl/
RUN make install
COPY php-fpm.conf /usr/local/etc/php-fpm.conf
COPY www.conf /usr/local/etc/php-fpm.d/www.conf

WORKDIR /

RUN wget 'https://getcomposer.org/installer' -O 'composer-setup.php'
RUN php composer-setup.php --install-dir=/usr/local/bin --filename=composer

WORKDIR /var/www

CMD [ "php-fpm" ]

Nginx

nginx については、特別なことはしていないため、サンプルプロジェクトを参照されたし。

FuelPHP

サンプルプロジェクトには何も入れていない。
今回、PHP 7.3.1 を入れているので FuelPHP は 1.8 以降のみ対応している。
FuelPHP のインストール方法は例として以下の通り。

docker-compose exec -it app /bin/bash
wget https://fuelphp.com/files/download/36 -O fuelphp-1.8.zip
unzip fuelphp-1.8.zip
mv fuelphp-1.8/ fuelphp/       ;<- Important!!
rm fuelphp-1.8.zip
exit

終わりに

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?