以前書いた「nginx + php7 + Lumen な開発環境をVagrantでつくる」をAmazon Linuxに持って行くときの補填記事です。
AmazonLinuxはCentOS 6系ライクだから、EC2に持って行くことを前提とするならVagrantの開発環境も6系で作った方が良かった気がしている。。
ベースは上の記事内で紹介している通りだから、ここではAmazon Linuxで構築するときのコマンドを差分として備忘録に。
Contents
nginxはそのままインストール
違いとしては、Amazonのリポジトリがデフォルトで提供してくれているから、nginxのリポジトリをインストールする必要がなくなった。ちょっぴり楽に。
1 2 3 |
# sudo yum install -y nginx # nginx -v nginx version: nginx/1.8.1 |
phpはちょっとハマる
(追記 2017/01/29)
下記は PHP 7.0.x ですが、追記時点で PHP 7.1 系がリリースされています。
7.1系のインストールだけ別の記事にしましたので、ご参考ください。
Amazon Linux に php7.1 をインストール
6系のremiリポジトリを入れてenablerepoするだけでしょ?って思っていたけど、何度やっても認識してくれなくて・・・
1 2 3 4 5 6 7 8 |
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm # rpm -ivh remi-release-6.rpm # yum install -y httpd # yum --enablerepo=remi-php70 --disablerepo=amzn-main install php # php -v PHP 7.0.4 (cli) (built: Mar 2 2016 18:12:39) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies |
曲者なのが amzn-main
のリポジトリを明示的に --disablerepo
しないと、優先度の問題で remi-php70
が参照できないことと、自動で httpd
の依存性解決を行ってくれないから、先にインストールしておく必要があること。
ちなみに php70
なら --enablerepo=remi
だけですんなり入る。でもインストール先が標準のphpと異なる点が要注意。
PHPのパッケージ
phpのパッケージも、依存解決してくれないから先に自分でインストールしないといけないのもある。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
必須のパッケージ。これらはそのままインストール可能。 # yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-pdo php-mbstring php-pecl-zip php-fpm 次のもそのままインストール可能。 # yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-xml php-bcmath php-opcache php-mysqlnd php-pecl-apc (追記: 2017/01/29) いつの間にか gd-last のインストールがコケるようになっていたので gd-last のインストールに libwebp が必要だが、Amazonリポジトリのものはバージョンが合わない # yum --disablerepo=amzn-main --enablerepo=epel install libwebp (追記: 2017/01/29) php-mcrypt のインストールに libmcrypt が必要 # yum install libmcrypt これらはそのまま入れるとエラーになる3つ。 # yum install libtool-ltdl gd-last enchant # yum --enablerepo=remi-php70 --disablerepo=amzn-main install php-mcrypt php-gd php-enchant |
それぞれ、
libltdl.so.7 でエラーになったときは libtool-ltdl が、
libvpx.so.1, libtiff.so.3 でエラーになったときは gd-last が、
libenchant.so.1 でエラーのときは enchant のインストールが必要。
サービスの起動と自動起動の設定
Amazon Linux や CentOS 6 を使っていればすごく基礎的だけれど、 systemctl の代わりに service と chkconfig で制御する。
1 2 3 4 5 |
# service nginx start # chkconfig nginx on # service php-fpm start # chkconfig php-fpm on |
そのほか
- Lumenのインストールに必要な zip と unzip パッケージはデフォルトでインストールされていて、特にインストールする必要はない
- nginxとphp-fpmの設定ファイルで指定したユーザーとグループは nginx を設定する
- nginx の sendfile 設定はVirtualBoxのバグに起因する設定なので、本番ではお好みで
remi-php70 のリポジトリについて
公式のブログによると、「このレポジトリは開発用のバージョンも提供するから開発用に使ってね〜」って仰っている。なるほど。
かといって remi-safe
の方はインストール先が奥まったところになるし、remi-php70
でもバージョン指定で入れておけば本番で使っても問題ないと思います。
どこか他に良いリポジトリを知っている方がいらっしゃれば教えてください。
所感
関係ないけど、履歴書って手書きはおろか、紙じゃなくてもよくないですか? LinkedIn がデファクトスタンダードみたいになって欲しいなあ。