4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Docker上でAmazonLinux2023にApache2とPHP8とXdebugを動かす。

Last updated at Posted at 2023-09-04

嗚呼キャンプ行きたい❗️ハワイ🌺もいいな。
「ワイハでバカンス」ってここに響く〜染み渡る〜嗚呼行きたいって思う今日この頃です。
IT技術で荒稼ぎしたいです。でも日本の法律をよく守り、公序良俗に添い、品行方正で、ダンディーに行きたいです。
大人ですがアダルトはお断りしています。ぼくにとって女性は尊厳の対象です。
基本みんなが尊敬の対象。だからあなたのことも尊重します。

さて、
Amazon Linux 2023をDockerに載せてApache2とPHP8を動かしXdebugの起動のところまで持って行けたので共有します。

結論から言うと、amazonlinux2023 は Apache2 でのPHPモジュール動作をデフォルトで止めてますね。
これをしたかったんですが、できませんでした。

で、Apache2 に PHP-FPM を組み合わせて動作させるための方法を紹介します。
とっても簡単です!にも関わらずドキュメントがどこにもない❗️
う〜んどういうことだ。

おかげで気分は逃避行動✈️ハワイへ飛んで行ってます。
嗚呼、もっと稼ぎたいし、このインフレの中でモリモリマックが欲しいんです。(銀のやつです。黄色のじゃないです)

前提:Dockerで動かす。

Docker上で動かすことになるので、systemctl は使えません。いや、特権モードにすれば使えるんだけど、やっぱり使いません。

まずは必要なサービス一式をインストールできるように

Dockerfile

dnf -y update
dnf -y install wget \
    tar \
    gzip \
    gcc \
    make \
    procps \
    which \
    git \
    autoconf \
    httpd \
    httpd-devel \
    bison \
    re2c \
    vim \
    libxml2-devel \
    libcurl-devel \
    libpng-devel \
    libjpeg-devel \
    libicu-devel \
    libxslt-devel \
    readline-devel \
    libedit-devel \
    libzip-devel \
    sqlite-devel \
    bzip2-devel \
    oniguruma-devel

# PHPをインストール
## この記事を書いた時点ではPHP8.2が最新でしたので、これでPHP8.2がインストールされました。
dnf install -y php php-fpm php-mbstring php-mysqlnd php-pdo php-xml php-gd php-curl php-pear php-devel php-bcmath

# xdebugをインストール
RUN pecl install xdebug

# PHP動作確認ファイル
WORKDIR /var/www/html
RUN echo "<?php phpinfo(); " > ./index.php

# php-fpm 起動設定
## 本来パーミッションは慎重に考慮すべきです。あなたのセキュリーティーポリシーに基づいて制限してね。
WORKDIR /run
RUN mkdir php-fpm
RUN chmod 777 php-fpm

# .bashrc
RUN echo "export PS1='\[\033[37m\][\t \[\033[36m\]\u\[\033[37m\]@\h \[\033[32m\]\W\[\033[37m\]]$ '" > ~/.bashrc

# ポート80を開放します
EXPOSE 80

# Apacheをバックグラウンド起動
## どうもこれでは初回の自動起動はしないようなので下記に追記あります
RUN php-fpm -R
RUN httpd -k start
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

これでイメージファイルの基本定義ができました。
以下を実行して、イメージファイルを拵えてもらいます。

docker build -t php82xdebugOnal23 .

一連のインストールが完了しイメージファイルが出来上がったようなら確認をしましょう。

docker images
REPOSITORY        TAG      IMAGE ID       CREATED        SIZE
php82xdebugOnal23 latest   1df5b80dxxxx   2 hours ago    859MB

多分こんな感じで出力されているはず

続いてdocker-compse.ymlを描きます。

version: "3"
services:
  web:
    image: php82xdebugOnal23:latest
    ports:
      - 8080:80
    container_name: web
    restart: always
    command: bash -c "exec httpd -DFOREGROUND"
    volumes:
      - /Users/yourpc/docker-data:/var/docker-data

これで起動します。

docker-compose up -d

起動させても、きっとウェブサーバーは動いていないはず。php.iniを修正しましょう。
ウェブサーバーにログインして起動コマンドを叩きましょう。

docker exec -it web bash

php.iniファイルに加筆修正

vi /etc/php.ini

以下の情報をファイルの最後に加筆してください。

[xdebug]
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.start_with_request=yes

上記の設定のままならログインするとこんな感じです。

[09:11:43 root@53921fe28866 run]$ 

起動コマンドは以下。

php-fpm -R
httpd -k start

これで動き始めました。ありがとうございました!

【もしかしたらこんなエラーが】

bash$ php-fpm -R
ERROR: unable to bind listening socket for address '/run/php-fpm/www.sock': No such file or directory (2)
ERROR: FPM initialization failed
bash$

となりましたら、/run/php-fpm/ディレクトリがないかもしれません。

$ cd /run
$ mkdir php-fpm
$ chmod 777 php-fpm

本来はパーミッションは慎重に考慮する必要があります。が、Dockerで急ぎ動かすためなんで、とりあえず。

ps.
記事の一部にChatGPT4から技術支援を受けました。もちろん動作検証しています。AL2023の情報は持っていないので何度かやり取りする必要がありましたが、xdebugの設定は一発でした。これはこれで使えるので引き続き、支援を受けながら充実させる予定。

4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?