はじめに
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/php
でphp
でも起動できるようにしました。
$ 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.conf
のIfModule 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/ にアクセスしましょう。
次はphp
http://localhost:8080/info.php で確認。
番外(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を前提としているシステムなのでこの方法は見送りました。