2019-12-22 23:44:58
DockerでCentOS7,php7.3(ソースインストール),apache2.4(yumでインストール) の環境構築に苦戦したので記録
目次
- なぜやろうと思ったのか
- apacheのvirtualhostの設定で躓いてた
- Dockerfile,docker-compose.yml,vhost.confの設定とか
- 終わり
- 参考資料
なぜやろうと思ったのか
ざっくり2つの理由があります。
- PHPを「ソースからインストール」というものをやってみたかった
- 個人で考えたサービスを開発するのにPHP使うおうと思った
PHPは業務でも使っているのでElixirより慣れています。「Gigalixir使えるElixirのほうがよくね?」と思ったのは別の話です。
apacheのvirtualhostの設定で躓いてた
「DocumentRootとServerName設定すれば使えるっしょ」と思ってました。実際にはそれだけでは使えません。Directoryの設定、FilesMatchの設定、IfModuleの設定が必要でした。XAMPPでVirtualhostが素直に設定できたのは環境の恩恵を受けていたからでした。
Dockerfile,docker-compose.yml,vhost.confの設定とか
せっかく作ったので記載。vhost.confのディレクティブ全然詳しくないです。都度調べて都度忘れています。
dockerfile
FROM centos:centos7
RUN yum update -y
RUN yum install
tar
gcc
openssl openssl-devel
make
libxml2-devel
curl-devel
libpng libpng-devel
httpd httpd-devel
-y
RUN cd /usr/local/src &&
curl -Lkvf https://www.php.net/distributions/php-7.3.0.tar.gz -o php-7.3.0.tar.gz &&
tar -zxf php-7.3.0.tar.gz &&
cd php-7.3.0 &&
./configure
--enable-fpm
--with-openssl
--with-curl
--with-mysqli
--with-zlib
--with-fpm
--with-gd
--enable-mbstring
--with-mysql-sock=/var/lib/mysql/mysql.sock
--with-apxs2=/usr/bin/apxs
RUN cd /usr/local/src/php-7.3.0 &&
make &&
make install
COPY ./vhosts.conf /etc/httpd/conf.d/
CMD ["/sbin/init"]
docker-compose.yml
version: '3.2'
services:
myphpdocker:
build: .
ports:
- "80:80"
privileged: true
command: /sbin/init
volumes:
- ./web:/home/mysample/public
vhost.conf
<VirtualHost *:80>
<Directory "/home/mysamle">
AllowOverride None
Require all granted
</Directory>
DocumentRoot /home/mysamle/public
ServerName local.mysamle.com
<IfModule dir_module>
DirectoryIndex index.php
</IfModule>
<IfModule mine_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>
</VirtualHost>
終わり
自分の未熟さを知った土日でした。php.iniって最初から用意されていないことを知りました(php.ini-development, php.ini-productionがありました)。
参考資料
- できるPRO Apache Webサーバー 改訂版 Version 2.4/2.2/2.0対応 (できるPROシリーズ)
- https://www.javadrive.jp/php/install/index5.html