Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
30
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

AmazonLinux2にphp7.2+Apacheの環境を作る & Docker

はじめに

AmazonLinuxからAmazonLinux2に移行する機会があったのではまったところや注意点などを記述します。
AmazonLinux2にはExtrasLibrary(amazon-linux-extras)を使ってphp7をインストールすることは可能なのですが、使用できるパッケージが限られるためRemiリポジトリを使用してインストールしました。
Dockerでも開発を行いたいのでその都度記述していきます。

必要なものをインストール

sudo yum -y update
sudo yum install -y \
        curl \
        git \
        libxml2 \
        libxml2-devel \
        httpd \
        mysql \
        gcc \
        vim \
        mod_ssl

インストールしたものについては社内のシステムで必要なものを入れたので全て必要と言う訳ではありません。

Remiリポジトリの追加

sudo wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo rpm -ivh epel-release-latest-7.noarch.rpm
sudo yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php72
  • sudo yum install -y phpでphpを入れるとphp5が入ってしまうので注意
  • sudo yum-config-manager --enable remi-php72でリポジトリの有効化
  • リポジトリを確認したいのであればll /etc/yum.repos.d/で一覧を確認
$ ll /etc/yum.repos.d/
合計 56
-rw-r--r-- 1 root root  982  6月 26 09:04 amzn2-core.repo
-rw-r--r-- 1 root root  763  6月 23 07:46 amzn2-extras.repo
-rw-r--r-- 1 root root 1050 10月  3  2017 epel-testing.repo
-rw-r--r-- 1 root root  951 10月  3  2017 epel.repo
-rw-r--r-- 1 root root  446  6月 19 17:28 remi-glpi91.repo
-rw-r--r-- 1 root root  446  6月 19 17:28 remi-glpi92.repo
-rw-r--r-- 1 root root  446  6月 19 17:28 remi-glpi93.repo
-rw-r--r-- 1 root root  456  6月 19 17:28 remi-php54.repo
-rw-r--r-- 1 root root 1314  6月 19 17:28 remi-php70.repo
-rw-r--r-- 1 root root 1314  6月 19 17:28 remi-php71.repo
-rw-r--r-- 1 root root 1314  7月 24 10:15 remi-php72.repo
-rw-r--r-- 1 root root 1314  6月 19 17:28 remi-php73.repo
-rw-r--r-- 1 root root  750  6月 19 17:28 remi-safe.repo
-rw-r--r-- 1 root root 2605  6月 19 17:28 remi.repo

こんな感じになってればokです。

phpとそのパッケージをインストール

sudo yum install -y php72 php72-php

php72-phpがないと起動しないので注意!
phpコマンドではなくphp72コマンドになっているので注意(python3のようだ)。
sudo ln -s /usr/bin/php72 /usr/bin/phpphpでも起動できるようにしました。

$ php -v
PHP 7.2.8 (cli) (built: Jul 17 2018 08:41:40) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.8, Copyright (c) 1999-2018, by Zend Technologies

Apache(httpd)の設定

執筆日(2018/07/24)時点ではyumでインストールしたhttpdのバージョンは2.4.33です。

$ httpd -v
Server version: Apache/2.4.33 ()
Server built:   Jun 15 2018 20:38:53

Apache httpd 2.4.27以降から、Preforkを使っている場合は、mod_http2 が無効になるためhttp2ができなくなっています。参考
しかし、AmazonLinux2がhttp2で通信をしようとしてきます。 Dockerで行う際、http2で通信をする必要がないので/etc/httpd/conf/httpd.confIfModule mod_http2.cのブロックを全てコメントアウトしましょう。

#<IfModule mod_http2.c>
#    Protocols h2 h2c http/1.1
#</IfModule>

Dockerfile

上記で行ったことをDockerfileに記述します

FROM amazonlinux:2
RUN yum update -y \
    && yum upgrade -y \
    && yum install -y  \
      curl \
      git \
      libxml2 \
      libxml2-devel \
      httpd \
      mysql \
      gcc \
      vim \
      make \
      mod_ssl \
      wget

RUN yum -y install yum-utils

RUN wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

RUN rpm -ivh epel-release-latest-7.noarch.rpm

RUN yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

RUN yum-config-manager --enable remi-php72

RUN yum install -y php72 php72-php

RUN yum clean all

RUN echo "<?php phpinfo();" > /var/www/html/info.php # とりあえずphpが起動するかテスト

RUN sed -ie '354,356d' /etc/httpd/conf/httpd.conf # httpsをするのを阻止

RUN mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.confdisable # httpsをするのを阻止

RUN ln -s /usr/bin/php72 /usr/bin/php

EXPOSE 80
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

build

docker build -t amzn-linux2-php7 .    

run

docker run -it -d --name test-1 -p 8080:80 amzn-linux2-php7           

Apacheの起動しているか確認しましょう。
http://localhost:8080/ にアクセスしましょう。
スクリーンショット 2018-07-24 18.09.09.png
次はphp
http://localhost:8080/info.php で確認。
スクリーンショット 2018-07-24 18.11.20.png

番外(amazon-linux-extrasでphpを入れる)

$ amazon-linux-extras
  0  ansible2                 available  [ =2.4.2 ]
  1  emacs                    available  [ =25.3 ]
  2  memcached1.5             available  [ =1.5.1 ]
  3  nginx1.12                available  [ =1.12.2 ]
  4  postgresql9.6            available  [ =9.6.6  =9.6.8 ]
  5  python3                  available  [ =3.6.2 ]
  6  redis4.0                 available  [ =4.0.5 ]
  7  R3.4                     available  [ =3.4.3 ]
  8  rust1                    available  [ =1.22.1  =1.26.0 ]
  9  vim                      available  [ =8.0 ]
 10  golang1.9                available  [ =1.9.2 ]
 11  ruby2.4                  available  [ =2.4.2  =2.4.4 ]
 12  nano                     available  [ =2.9.1 ]
 13  php7.2                   available  [ =7.2.0  =7.2.4  =7.2.5 ]
 14  lamp-mariadb10.2-php7.2  available  \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5 ]
 15  libreoffice              available  [ =5.0.6.2_15 ]
 16  gimp                     available  [ =2.8.22 ]
 17  docker=latest            enabled    [ =17.12.1  =18.03.1 ]
 18  mate-desktop1.x          available  [ =1.19.0  =1.20.0 ]
 19  GraphicsMagick1.3        available  [ =1.3.29 ]
 20  tomcat8.5                available  [ =8.5.31 ]

インストール可能なパッケージ一覧が表示される。

sudo amazon-linux-extras install php7.2

AmazonLinux2で phpをyumでインストールするとがバージョン5.4が入り、上記したamazon-linux-extrasでインストールするとバージョンは7.2ですが同時にphp-fpmが入るのでnginx前提のようです。
Amazon Linux2とAmazon Linuxの違いについて(メモ)
しかし今回はApacheを前提としているシステムなのでこの方法は見送りました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
30
Help us understand the problem. What are the problem?