質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

10615閲覧

【CentOS/Docker/M1 Mac】php7.1とapacheを導入の際、[error14]404エラーが発生する

退会済みユーザー

退会済みユーザー

総合スコア0

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/06/10 07:15

編集2021/06/15 00:08

6/15追記

ひとまずphp7.1、apacheのインストールができましたので最後にまとめておきます。
回答、助言を下さったみなさま、誠にありがとうございました。

前提・実現したいこと

Dockerを用いてphp7.1、apacheの環境構築をしたいです。目的としてはLaravelの開発環境を用意したいです。
その後MySQLなど準備したいものはあるのですが初手でつまづいてしまいました。
自分なりに色々と調べてみたのですが手詰まりとなってしまったので、知見をお借りできれば幸いです。

M1チップ搭載のMacを使用しているのが原因のようです。
色々試してはいるのですが解決には至ってないため、何かありましたらご提示いただけますと幸いです。

発生している問題・エラーメッセージ

CentOS 7 に PHP 7.1 を yum でインストールする手順
https://weblabo.oscasierra.net/centos7-php71-install/

こちらのページを参考にインストールを進めていたのですが、apacheとphp7.1を検索する段階で大量のエラーが発生します。

CLI

1#コンテナ作成 2$ docker run -it -d --name test centos:centos7 3 4#コンテナ内部へ移動 5$ docker exec -it test /bin/bash 6 7# EPELのリポジトリ情報を取得 8$ yum -y install epel-release 9 10# Remiのリポジトリ情報を取得 11$ yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm 12 13# ここで大量のerror[14]404が発生。インストールに失敗 14$ yum search httpd php71

エラーメッセージ一部

CentOS

1# yum search httpd php71 2Loaded plugins: fastestmirror, ovl 3Loading mirror speeds from cached hostfile 4epel/aarch64/metalink | 9.2 kB 00:00:00 5 * base: ftp.yz.yamagata-u.ac.jp 6 * epel: ftp.iij.ad.jp 7 * extras: ftp.yz.yamagata-u.ac.jp 8 * remi-safe: ftp.riken.jp 9 * updates: ftp.yz.yamagata-u.ac.jp 10base | 3.6 kB 00:00:00 11extras | 2.9 kB 00:00:00 12http://ftp.riken.jp/Linux/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found 13Trying other mirror. 14To address this issue please refer to the below wiki article 15 16https://wiki.centos.org/yum-errors 17 18If above article doesn't help to resolve this issue please use https://bugs.centos.org/. 19 20http://repo1.sea.innoscale.net/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found 21Trying other mirror. 22http://mirrors.thzhost.com/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found 23Trying other mirror. 24http://mirror.bebout.net/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found 25[…省略…] 26Trying other mirror. 27https://remi.mirror.digitalpacific.com.au/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found 28Trying other mirror. 29http://mirror.innosol.asia/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.innosol.asia/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: (28, 'Connection timed out after 30006 milliseconds') 30Trying other mirror. 31http://mirrors.mediatemple.net/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.mediatemple.net/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: (28, 'Connection timed out after 30006 milliseconds') 32Trying other mirror. 33http://remi.xpg.com.br/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: remi.xpg.com.br; Unknown error" 34Trying other mirror. 35 36 37 One of the configured repositories failed (Safe Remi's RPM repository for Enterprise Linux 7 - aarch64), 38 and yum doesn't have enough cached data to continue. At this point the only 39 safe thing yum can do is fail. There are a few ways to work "fix" this: 40 41 1. Contact the upstream for the repository and get them to fix the problem. 42 43 2. Reconfigure the baseurl/etc. for the repository, to point to a working 44 upstream. This is most often useful if you are using a newer 45 distribution release than is supported by the repository (and the 46 packages for the previous distribution release still work). 47 48 3. Run the command with the repository temporarily disabled 49 yum --disablerepo=remi-safe ... 50 51 4. Disable the repository permanently, so yum won't use it by default. Yum 52 will then just ignore the repository until you permanently enable it 53 again or use --enablerepo for temporary usage: 54 55 yum-config-manager --disable remi-safe 56 or 57 subscription-manager repos --disable=remi-safe 58 59 5. Configure the failing repository to be skipped, if it is unavailable. 60 Note that yum will try to contact the repo. when it runs most commands, 61 so will have to try and fail each time (and thus. yum will be be much 62 slower). If it is a very temporary problem though, this is often a nice 63 compromise: 64 65 yum-config-manager --save --setopt=remi-safe.skip_if_unavailable=true 66 67failure: repodata/repomd.xml from remi-safe: [Errno 256] No more mirrors to try. 68http://ftp.riken.jp/Linux/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found 69[…省略…] 70https://mirror.hoster.kz/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found 71https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found 72https://remi.mirror.digitalpacific.com.au/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found 73http://mirror.innosol.asia/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 12] Timeout on http://mirror.innosol.asia/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: (28, 'Connection timed out after 30006 milliseconds') 74http://mirrors.mediatemple.net/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.mediatemple.net/remi/enterprise/7/safe/aarch64/repodata/repomd.xml: (28, 'Connection timed out after 30006 milliseconds') 75http://remi.xpg.com.br/enterprise/7/safe/aarch64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: remi.xpg.com.br; Unknown error"

試したこと

調べたところ同様のエラーの事例は数多くありましので、キャッシュの削除やネットワーク通信の確認をしましたが問題は解決しませんでした。

#キャッシュの削除 $ yum clean all $ rm -rf /var/cache/yum/* #ネットワーク通信の確認 $ ping www.yahoo.co.jp

試したこと②

ダウンロードに失敗しているミラーサイトのURLを見るとaarch64になっているがremiからはaarch64の配布を行っていない(x86_64に書き換えると有効なURLが見つかる)

$ docker run -it -d --platform linux/amd64 --name centos7 centos:centos7 $ docker exec -it centos7 /bin/bash $ uname -m x86_64

X86_64でCentOSが起動できているかと思ったのですが

# yum -y install epel-release # yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm # yum search httpd php71 Loaded plugins: fastestmirror, ovl Loading mirror speeds from cached hostfile One of the configured repositories failed (Unknown), and yum doesn't have enough cached data to continue. At this point the only safe thing yum can do is fail. There are a few ways to work "fix" this: 1. Contact the upstream for the repository and get them to fix the problem. (以下省略)

やはり同様のエラーが出てしまいました。

補足情報

mirrorとして出てくるURLが全て無効なものなので、根本的に何か方法を間違えているのかと思います。

https://shsm385.hatenablog.com/entry/2019/09/20/102722
こちらのサイトが参考になるかと思ったのですが、

#CentOS-Base.repo [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/altarch/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-aarch64 #released updates

例えばこのCentOS-Base.repoをどのように修正すればいいのか、

あるいはエラーの最初に出てくるhttp://ftp.riken.jp/Linux/remi/enterprise/7/safe/aarch64/repodata/repomd.xmlのURLが404ならばどのようにして正しいURLを探せば良いのか、解決の方向性が分からず困っております。

また、PHPとapache導入のコマンドをDockerfileにまとめたいと思っているため、viで編集するというのは根本的な解決ではないのかなと感じております。

長くなりましたがCentOS7にphp7とapacheを導入するにあたり、御助言いただければ幸いです。
よろしくお願いします。

###解決方法

CLI

1# docker run -d --privileged --platform linux/amd64 --name test centos:centos7 /sbin/init 2# docker exec -it test /bin/bash 3# yum install epel-release -y 4# vi /etc/yum.repos.d/epel.repo

epelをインストールした段階でyumが正常に動かなくなっていました
https://www.mapleharp.jp/342/
ここを参考に編集します。
baseurlのコメントアウトを解除し、metalinkをコメントアウトしました。

CLI

1# yum update -y 2# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm 3# yum search httpd php71 4# yum -y install httpd php71 php71-php 5# systemctl enable httpd.service 6# systemctl start httpd.service 7# php71 -v 8PHP 7.1.33 (cli) (built: Apr 28 2021 09:50:40) ( NTS ) 9Copyright (c) 1997-2018 The PHP Group 10Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

ひとまずphpとapacheがインストール出来ましたのでBAさせて頂きました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/10 07:38 編集

dockerから外に出られないようなネットワーク設定になっていると思うので、docker runするときに--netオプションを補って使えるネットワークを指定したら直りそうな気がするけど、自分ではやったことがないし責任が取れないので回答にはしません。「docker run ネットワーク設定」でそれなりに記事があります。
退会済みユーザー

退会済みユーザー

2021/06/10 07:37

ご意見ありがとうございます。 curlなどもやってみたのでネットワークは有効かと思うのですが、また別の問題があるということでしょうか。 --netを使う方法についても調べてみますので、何か進展あれば投稿させて頂きます。 ご意見ありがとうございます。
FKM

2021/06/10 08:37

yumには普通にアクセスできるんでしょうか? 見たところ、yumのミラーサイトのリポジトリが死んでる気がしますが…
yukky1201

2021/06/10 08:57 編集

M1チップのMacを使用でしょうか? その場合、アーキテクチャがx86_64ではなくaarch64と認識されてしまい、aarch64のパッケージを探しに行ってしまう。しかし、該当のディレクトリは存在しない。そのため、404エラーになってしまう。というのが原因です。 別な方も質問もありましたが、M1チップMacでx86_64アーキテクチャとして認識させる方法は、残念ながら不明でした。
退会済みユーザー

退会済みユーザー

2021/06/11 01:37

追記しておきべきでした。M1チップのMacbookを使用しております。 Keynoさんの回答を見てもそうだったのですが原因が分かりすっきりしました。 確かに下記のようにaarch64の部分を書き換えるとパッケージを見つけることができました。 ありがとうございます!
FKM

2021/06/11 03:02

クローズする場合は情報提供者にBAを返しておいてください。あとあとの閲覧者も困りませんので。
退会済みユーザー

退会済みユーザー

2021/06/11 05:53

問題解決ができていないので、このままにしておいた方が良いかと思ったのですがいかがでしょうか? M1 Macで同様のエラーに阻まれている人も多いため、解決策が見つかれば後の方々の役にも立つかなと思っております。
guest

回答2

0

ベストアンサー

内容

yum 参照時の CPU アーキテクチャ依存について

yum での取得URLが aarch64 となっているのをみるに、M1 Mac などの arm 用CPUをお使いでしょうか。

remi では arm 用のPHP自体が配布されてなさそうなので、yum での取得ができないと思われます。
Riken - remi repository mirror について

Docker コンテナを起動時にプラットフォーム指定して x86_64 でさせるか、
PHP, apache の Docker を使用するかがよいと思いました。
(追記: 他の方の回答で PHP のソースビルドに触れられていますが、そちらはその通りで失念でした)

M1 Mac を所有していないので、検証できていないのですが、
プラットフォーム指定はコマンド引数に「--platform linux/amd64」を指定すると起動できそうです。
Docker - マルチアーキテクチャ起動について

PHP, Apache 環境の Docker Image について

用途が不明で申し訳ないのですが、centos でなくてもよいのであれば、
Docker image に PHP のものや apache のものがあるので、
そちらを使うなどするのも手段かと思います。

(7.4-apache とか使えそう)

※目的が開発環境の準備であれば、既存のイメージを利用をしたほうが早く目的を達成できるのでは考えたのでこちらについても触れさせていただきました。

追記

yum repository について

centos に yum repository を追加後、有効化の設定変更が必要になるので、
yum install 時にオプションコマンドで有効化する必要があることについて触れてませんでした。

(例)

# yum install httpd php71 --enablerepo=remi-php71

/etc/yum.repos.d/ 配下の ***.repo を設定変更する方法と、
yum コマンド実行時のコマンドオプションで --enablerepo を指定する方法があります

Laravel 開発の Docker 環境について

Docker で Laravel を使用されたということであれば、Sail を使うという方法が推奨されているようです(Laravel 公式製)。
Laravel - Sail

ただ、M1 Mac で使う場合は mysql => mariadb に差し替える必要があったりはするようです
参考URL

投稿2021/06/10 19:01

編集2021/06/11 19:18
kiino

総合スコア557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/11 02:51

おっしゃる通りM1チップ搭載のMacbookを使っております。 原因がはっきりして大変ありがたいです! 理解できていない部分もあるかと思うのですが、 $ docker run -it -d --platform linux/amd64 --name centos7 centos:centos7 $ docker exec -it centos7 /bin/bash $ uname -m x86_64 という結果になったので、x86_64でプラットフォームを指定できるのかと思うのですが、やはりphp7を導入することはできませんでした。 # yum search httpd php71 のコマンドの際にすぐ One of the configured repositories failed (Unknown),(以下略)のエラーが出力されます。 M1 Mac+DockerでLaravelの開発環境を作成したいため、自分の認識違いでなければcentosは必要になってくるかと思います。 ひとまず古いMacで開発を進めようと思いますが、質問はこのままとさせて頂ければと思います。 回答ありがとうございました。
kiino

2021/06/11 18:52

なるほど、確認ありがとうございます。 以下2点について確認させてください。 - x86_64 アーキでの起動後の php install について - Mac M1 での Laravel 開発環境について ## x86_64 アーキでの起動後の php install について こちらですが、エラー文をみると yum の動作の問題みたいですね。 ネットワークなのか、キャッシュなのかとか理由はなんなんでしょうね。。。 ちなみにですが、php 用の yum repository は有効になっていますでしょうか? 私がためしたところ、remi-release-7.rpm を入れただけだとレポジトリが有効にならないみたいなので、 設定変更などで明示的に有効にする必要があると思うのですが、そちらは設定されてますでしょうか。 私は設定変更が面倒なのでいつも yum install の時の引数で有効化していれてしまってます。 以下のコマンドを実行すれば、私の環境では php71 は見つかりました(指定なしだとみつからず) # yum search php71 --enablerepo=remi-php71 yum repository の有効の有無は 「yum repolist <repo名>」 で確認できます # yum repolist all |grep php71 remi-php71 Remi's PHP 7.1 RPM repository disabled なので、今回だと enablerepo を試してもらってもよいでしょうか? ## Mac M1 での Laravel 環境について 最終目標が Laravel 環境構築なのですね。 Laravel のことに詳しくないので把握しきれていないのですが、 php が入っていれば composer でとってこれそうと思ったのですが、 centos 特有の何かが必要なんですね。 docker で Laravel を使用されたいということであれば、Sail を使うという方法が一般的なようです。 Laravel 公式がこれを使うと開発環境の構築がスムーズにできる、と言って提供してくれているようです。 https://readouble.com/laravel/8.x/ja/sail.html ただ、M1 Mac で使う場合は mysql => mariadb に差し替える必要があったりはするようです 参考: https://alfrednutile.info/posts/sail/ この環境だと、期待した環境にならない感じでしょうか
退会済みユーザー

退会済みユーザー

2021/06/14 08:39

ご確認ありがとうございます。 確かに enablerepo を試したところファイルが何も見つかりませんでした。 repositoryの有効、無効についてそこで色々と試していたところ、 ①epelをインストールした段階でyumが起動しなくなっていることが分かった ②etc/yum.repos.d/epel.repo を編集 https://www.mapleharp.jp/342/ こちらを参考に、metalinkをコメントアウトし、baseurlを有効にしました ③remi-release-7.rpm のインストールに成功 ④docker上でphpとapacheの動作を確認 という結果になりました。 一旦こちらで進めてみたいと思います。 ここからLaravelの環境構築となるとこれからまた問題がありそうなのですが、当初の問題は解決したので一旦BA(クローズ)とさせて頂きます。 DockerやCentOSについてもまだまだ理解不足な点があると思うので、今後の課題とさせて頂きます。 Sailという方法については初めて知りましたので、こちらも試してみたいと思います。 ともあれ、長らく悩んでいた問題が一つ解決してすっきりしております。 ありがとうございます!
guest

0

Apache (httpdパッケージ)と、 Remi リポジトリの php71 パッケージの問題を分けて考えます。

aarch64 アーキテクチャの httpd パッケージを yum で入れる

まず、エラーメッセージ

[Errno 14] HTTP Error 404 - Not Found Trying other mirror.

と出るのは、CentOS 7 ミラーサイトのうち、 x86_64 以外のアーキテクチャをミラーしていない所が多いためです。ちなみに、国内のミラーサイトの場合は、aarch64 対応のパッケージを公式ミラーしているのは山形大学(ftp.yz.yamagata-u.ac.jp)だけです。

対策は、この山形大学のミラーを参照させるようにします。

# echo 'prefer=ftp.yz.yamagata-u.ac.jp' >> /etc/yum/pluginconf.d/fastestmirror.conf

それから、 yum search httpd を実行すると、aarch64 対応のパッケージ情報が確認できるでしょう。

この状態で、 yum install httpd を実行しますと、 aarch64 対応の httpd パッケージを yum で入れられます。

# yum -y install httpd (途中省略) Installed: httpd.aarch64 0:2.4.6-97.el7.centos Dependency Installed: apr.aarch64 0:1.4.8-7.el7 apr-util.aarch64 0:1.5.2-6.el7 centos-logos.noarch 0:70.0.6-3.el7.centos httpd-tools.aarch64 0:2.4.6-97.el7.centos mailcap.noarch 0:2.1.41-2.el7 Complete!

このように、バージョン情報等も確認できるでしょう。

# httpd -v Server version: Apache/2.4.6 (CentOS) Server built: Nov 16 2020 16:22:16

Remi リポジトリでの aarch64 用 PHP 7.1 のパッケージについて

現状提供されているのは http://rpms.remirepo.net/enterprise/7/php71/ にありますように x86_64 アーキテクチャのものしかありません。

Remi リポジトリでの yum でのバイナリ配布はありませんので、ソースコードから構築するか、SRPM ファイルを使って RPM ファイルをビルドするなどの方法があります。

捕捉

そもそもの目的が M1 上で Laravel を使われたいのであれば、現状様々な障壁があるようです。

たとえば、 https://laravelm1.tighten.co/ にまとまっている手順で Laravel が入るようですが、こちらで紹介されている手法では、Docker は対応していないようでした。

投稿2021/06/11 11:52

編集2021/06/11 11:54
zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/14 08:44

回答ありがとうございます。 まだM1チップでの開発は厳しいようですね…。 そういったご意見を頂けてありがたいです。 ミラーの参照方法など、今後の参考にさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問