嗚呼キャンプ行きたい❗️ハワイ🌺もいいな。
「ワイハでバカンス」ってここに響く〜染み渡る〜嗚呼行きたいって思う今日この頃です。
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の設定は一発でした。これはこれで使えるので引き続き、支援を受けながら充実させる予定。