#contents ** 環境 [#nd74f399] - Amazon Linux AMI release 2017.03 ** OS 初期設定 [#ldfbbecf] - yum update $ sudo yum -y update - 時刻設定 $ date 2017年 7月 19日 水曜日 06:32:19 UTC $ cp /usr/share/zoneinfo/Japan ./ $ mv Japan localtime $ sudo mv ./localtime /etc/localtime $ date 2017年 7月 19日 水曜日 15:33:47 JST - history コマンド 日時表示設定 $ sudo vi ~/.bashrc - HISTTIMEFORMAT 設定追記 export HISTTIMEFORMAT='%F %T ' - selinux, iptables 状態確認 &color(red){※}; Amazon Linux ではデフォルトで selinux, iptables は無効 $ getenforce Disabled $ sudo /etc/init.d/iptables status iptables: ファイアウォールが稼働していません。 ** Apache 2.2 インストール [#v4378f32] $ sudo yum -y install httpd $ httpd -v Server version: Apache/2.2.32 (Unix) ** PHP 7.1 インストール [#ua3e0308] - Remi リポジトリ追加 $ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm - scl-utils パッケージ追加 $ sudo rpm -Uvh ftp://ftp.scientificlinux.org/linux/scientific/6.4/x86_64/updates/fastbugs/scl-utils-20120927-8.el6.x86_64.rpm - 事前に必要なライブラリをインストール $ sudo yum -y install --disablerepo=amzn-main --enablerepo=epel libwebp インストール: libwebp.x86_64 0:0.4.3-3.el6 $ sudo yum -y install libmcrypt libtool-ltdl libtidy libXpm libtiff gd-last autoconf automake policycoreutils-python tcl インストール: autoconf.noarch 0:2.69-11.9.amzn1 automake.noarch 0:1.13.4-3.15.amzn1 gd-last.x86_64 0:2.2.4-1.el6.remi libXpm.x86_64 0:3.5.10-2.9.amzn1 libmcrypt.x86_64 0:2.5.8-9.1.2.amzn1 libtidy.x86_64 0:0.99.0-19.20070615.1.4.amzn1 libtiff.x86_64 0:4.0.3-27.29.amzn1 libtool-ltdl.x86_64 0:2.4.2-20.4.8.3.31.amzn1 policycoreutils-python.x86_64 0:2.1.12-5.25.amzn1 tcl.x86_64 1:8.5.7-6.9.amzn1 依存性関連インストール: audit-libs-python.x86_64 0:2.6.5-3.28.amzn1 compat-libtiff3.x86_64 0:3.9.4-21.15.amzn1 jbigkit-libs.x86_64 0:2.0-11.4.amzn1 libselinux-python.x86_64 0:2.1.10-3.22.amzn1 libsemanage-python.x86_64 0:2.1.6-3.13.amzn1 m4.x86_64 0:1.4.16-9.10.amzn1 perl-Data-Dumper.x86_64 0:2.145-3.5.amzn1 perl-Test-Harness.noarch 0:3.28-3.6.amzn1 perl-Thread-Queue.noarch 0:3.02-2.5.amzn1 python27-IPy.noarch 0:0.75-1.6.6.amzn1 selinux-policy.noarch 0:3.10.0-98.26.amzn1 setools-libs.x86_64 0:3.3.7-34.23.amzn1 setools-libs-python.x86_64 0:3.3.7-34.23.amzn1 - PHP 7.1 インストール $ sudo yum -y install --enablerepo=remi,remi-php71 --disablerepo=amzn-main,amzn-updates php71 php php-pdo php-mysqlnd php-mbstring php-tokenizer php-xml php-common php-cli php-devel php-gd php-intl php-mcrypt php-opcache php-pear php-process インストール: php.x86_64 0:7.1.7-1.el6.remi php-cli.x86_64 0:7.1.7-1.el6.remi php-common.x86_64 0:7.1.7-1.el6.remi php-devel.x86_64 0:7.1.7-1.el6.remi php-gd.x86_64 0:7.1.7-1.el6.remi php-intl.x86_64 0:7.1.7-1.el6.remi php-mbstring.x86_64 0:7.1.7-1.el6.remi php-mcrypt.x86_64 0:7.1.7-1.el6.remi php-mysqlnd.x86_64 0:7.1.7-1.el6.remi php-opcache.x86_64 0:7.1.7-1.el6.remi php-pdo.x86_64 0:7.1.7-1.el6.remi php-pear.noarch 1:1.10.5-2.el6.remi php-process.x86_64 0:7.1.7-1.el6.remi php-xml.x86_64 0:7.1.7-1.el6.remi php71.x86_64 0:1.0-1.el6.remi 依存性関連インストール: environment-modules.x86_64 0:3.2.10-0.el6.remi php-json.x86_64 0:7.1.7-1.el6.remi php71-php-cli.x86_64 0:7.1.7-1.el6.remi php71-php-common.x86_64 0:7.1.7-1.el6.remi php71-php-json.x86_64 0:7.1.7-1.el6.remi php71-runtime.x86_64 0:1.0-1.el6.remi - PHP バージョン確認 $ php -v PHP 7.1.7 (cli) (built: Jul 6 2017 13:46:08) ( NTS ) - PHP インストール済みモジュール確認 $ php -m ** &color(red){※}; php71-php モジュールのインストール不可 (Apache 2.4 の場合) [#c88aa8db] $ sudo yum install --enablerepo=remi,remi-php71 --disablerepo=amzn-main,amzn-updates php エラー: パッケージ: php-7.1.7-1.el6.remi.x86_64 (remi-php71) 要求: httpd-mmn = 20051115 *** 事象 [#ced29eed] - remi-php71 リポジトリが要求する httpd-mmn は 20051115 - amzn リポジトリに含まれる httpd24 パッケージの httpd-mmn は 20120211 - Apache から PHP をロードする際に必須のモジュールである php71-php のインストールが不可 *** 結論 [#q5bf8520] - Amazon Linux 上に Apache 2.4 + PHP 7.1 環境をパッケージ管理で構築することは困難 - Apache 2.4 → Apache 2.2 にすると php71-php モジュールのインストール可 - PHP 7.0 であれば amzn リポジトリにパッケージが含まれているためインストール可 - CentOS 7 用の Remi リポジトリであれば httpd-mmn は 20120211 のため Apache 2.4 でもインストール可 ** PHP 設定変更 [#v94b13bc] $ cp -p /etc/php.ini /etc/php.ini_org $ sudo vi /etc/php.ini - /etc/php.ini を編集 max_execution_time = 3600 memory_limit = 1024M upload_max_filesize = 1024M default_socket_timeout = 1800 date.timezone = 'Asia/Tokyo' ** Apache 起動 [#we324042] - Apache を起動 $ sudo /sbin/service httpd start - 自動起動設定 $ sudo chkconfig httpd on ** PHP 動作確認 [#k3a1f640] - index.php 作成 $ cd /var/www/html/ $ sudo vi index.php <?php echo "Hello World!" ?> <!DOCTYPE html> <html lang="ja"> <body> <p>Hello World <?php echo "from PHP!";?></p> <body> </html> - phpinfo.php 作成 $ sudo vi phpinfo.php <?php phpinfo(); - DocumentRoot 権限変更 $ sudo chown -R apache:apache /var/www/html/ - ブラウザ経由で確認 ** Apache ログ 設定確認 [#n6e40597] $ sudo vi /etc/httpd/conf/httpd.conf - CustomLog 設定追加 (custom を追加) LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent LogFormat "%a %h %l %u %t \"%r\" %>s %b" custom - LogFormat を custom に指定 #CustomLog logs/access_log combined #CustomLog logs/access_log common CustomLog logs/access_log custom - ErrorLog 設定確認 ErrorLog logs/error_log *** アクセスログ確認 [#p0c93232] $ sudo cat /var/log/httpd/access_log 192.168.33.1 192.168.33.1 - - [17/Jul/2017:07:38:41 +0000] "GET / HTTP/1.1" 200 100 192.168.33.1 192.168.33.1 - - [17/Jul/2017:07:38:53 +0000] "GET /index.php HTTP/1.1" 200 100 192.168.33.1 192.168.33.1 - - [17/Jul/2017:07:39:12 +0000] "GET /phpinfo.php HTTP/1.1" 200 85687 *** エラーログ確認 [#c9b77988] $ sudo cat /var/log/httpd/error_log