1と2のリビジョン間の差分
2018-03-04 01:19:21時点のリビジョン1
サイズ: 11468
コメント:
2019-05-08 18:42:58時点のリビジョン2
サイズ: 11548
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 1: 行 1:
## page was renamed from CentOS/YUMリポジトリ/Remi's RPM repository

Remi’s RPMリポジトリ

  • Remi's RPM repository は最新のPHP、5.4~5.6/7.0~7.2 のホスティングしているYUMリポジトリです。
  • またPHPのメンテナンスポリシーに合わせて比較的簡単に消えていきます。
  • CentOS6/7をサポートしています。CentOS5は表に出てませんが、一応残ってるようです。
  • 最新のPHP使いたいならRemi一択かな。それ以外のリポジトリは評価したこと無いです。
  • バージョン固定して長く使いたいならSCLsリポジトリを使用するのが吉です。
  • 以下のリポジトリに依存しているので、先にセットアップしてください。
    • EPEL
  • また php-mysqlnd パッケージや php-pgsql パッケージは、それぞれのライブラリに依存しているため、使用するDBに合わせたライブラリを事前にインストールしておく必要があります。
  • そうでない場合、CentOS標準の古いライブラリに依存するため、状況によっては使えない機能が発生する場合があります。
  • 少なくともCentOS標準の mysql-libs パッケージは使えないようで、RemiリポジトリではわざわざMySQL5.5を提供しています。
  • よって利用に合わせて事前にライブラリのインストールまたは更新を実施してください。
    • php-mysqlnd → MySQLリポジトリ
    • php-pgsql → PGDGリポジトリ

Remiセットアップ

※本情報は若干古いですが、更新はあまり意味が無い(バージョン番号が変わるだけ)ので、そのままとします。

リポジトリ名

デフォルト

GPGパス

所属パッケージ

remi

無効

/etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remi-release

remi-debuginfo

無効

/etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remi-release

remi-php55

無効

/etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remi-release

remi-php55-debuginfo

無効

/etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remi-release

remi-php56

無効

/etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remi-release

remi-php56-debuginfo

無効

/etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remi-release

remi-php70

無効

/etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remi-release

remi-php70-debuginfo

無効

/etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remi-release

remi-php70-test

無効

/etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remi-release

remi-php70-test-debuginfo

無効

/etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remi-release

remi-safe

有効

/etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remi-release

remi-test

無効

/etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remi-release

remi-test-debuginfo

無効

/etc/pki/rpm-gpg/RPM-GPG-KEY-remi

remi-release

  • デフォルトご覧の通りで remi-safe のみ、つまり「混ぜるな危険」を体現したデフォルトとなっています。
  • これはインストール先ディレクトリの起点(トップディレクトリ)が「/」(ルート)では無いことを意味します(混ぜない)。
  • よって通常の運用だと PATH を通す必要があったりと面倒があります。
  • その代わり、複数バージョン(5.6 系、7.0 系など)を共存させたりできます。
  • 同時に運用できるかは運用者の腕次第です。

CentOS7環境

yum -y install epel-release
rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

※すでにEPELをインストール後に再度インストールしようとしても無視されるため、安全のため入れてあります。

CentOS6環境

yum -y install epel-release
rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-6.rpm

※すでにEPELをインストール後に再度インストールしようとしても無視されるため、安全のため入れてあります。

CentOS5環境

yum -y install epel-release
rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-5.rpm

※すでにEPELをインストール後に再度インストールしようとしても無視されるため、安全のため入れてあります。

CentOS4環境

ドキュメントを見ると存在するようですが、ここに書いた手順通り動くようには見えないので、スルーします。 2012年の更新を最後に、PHP5.3.10を使用したい向きの人は頑張ってください。

remi-phpXX リポジトリのアクティベイト

  • /usr/bin/php として(混ぜます危険)使用したいPHPのバージョンを決めます(5.5, 5.6, 7.0)。
  • remi リポジトリとバージョンに対応する remi-phpXX リポジトリをアクティベイトします。
  • CentOS7およびCentOS6ではコマンドで設定できますが、一応設定ファイルを紹介しておきます。
  • アクティベイトとは具体的に、/etc/yum.repos.d/remi.repo ファイルが下記のように enabled=1 になるよう設定します。

  :
[remi]
  :
enabled=1
  :

[remi-php55]
  :
enabled=0
  :

[remi-php56]
  :
enabled=1
  :
  • ただし、PHP7.0については /etc/yum.repos.d/remi-php70.repo 【も】合わせて参照してください(remi.repo は必須です)。

  :
[remi-php70]
  :
enabled=0
  :

PHPのバージョンを変更したい(5.5 や 7.0 を使用したい)場合は、下記のように別途設定します。 

CentOS7

yum-config-manager --enable remi remi-php70

※yum-config-manager コマンドは yum-utils パッケージのインストールが必要です。

CentOS6

yum-config-manager --enable remi remi-php70

※yum-config-manager コマンドは yum-utils パッケージのインストールが必要です。

CentOS5

/etc/yum.repos.d/remi.repo および /etc/yum.repos.d/remi-php70.repo の当該 enabled 行を変更します。 CentOS5の yum-utils パッケージには yum-config-manager コマンドを提供していません。

アップデート

※何かあったような…。あとで再度検証する。

Remiのインストール例

PHPのインストール

yum -y install php php-opcache php-mbstring

PHPをどう使うかによるので、どういうライブラリが必要になるかについては特に議論しない。 たぶん上記例くらいは当たり前に入れるんでないかな。

PHPの初歩的な設定

/etc/php.ini

メモリ使用量等、デフォルトのリミッターがきつめかもしれないので自らの使用を措定して設定は見直してください。

   1 --- /etc/php.ini.orig   2015-11-26 16:04:08.000000000 +0900
   2 +++ /etc/php.ini        2016-08-16 00:21:14.278592318 +0900
   3 @@ -363,7 +363,7 @@
   4  ; threat in any way, but it makes it possible to determine whether you use PHP
   5  ; on your server or not.
   6  ; http://php.net/expose-php
   7 -expose_php = On
   8 +expose_php = Off
   9 
  10  ;;;;;;;;;;;;;;;;;;;
  11  ; Resource Limits ;
  12 @@ -372,7 +372,7 @@
  13  ; Maximum execution time of each script, in seconds
  14  ; http://php.net/max-execution-time
  15  ; Note: This directive is hardcoded to 0 for the CLI SAPI
  16 -max_execution_time = 30
  17 +max_execution_time = 300
  18 
  19  ; Maximum amount of time each script may spend parsing request data. It's a good
  20  ; idea to limit this time on productions servers in order to eliminate unexpectedly
  21 @@ -382,7 +382,7 @@
  22  ; Development Value: 60 (60 seconds)
  23  ; Production Value: 60 (60 seconds)
  24  ; http://php.net/max-input-time
  25 -max_input_time = 60
  26 +max_input_time = 120
  27 
  28  ; Maximum input variable nesting level
  29  ; http://php.net/max-input-nesting-level
  30 @@ -393,7 +393,7 @@
  31 
  32  ; Maximum amount of memory a script may consume (128MB)
  33  ; http://php.net/memory-limit
  34 -memory_limit = 128M
  35 +memory_limit = 256M
  36 
  37  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  38  ; Error handling and logging ;
  39 @@ -660,7 +660,7 @@
  40  ; Its value may be 0 to disable the limit. It is ignored if POST data reading
  41  ; is disabled through enable_post_data_reading.
  42  ; http://php.net/post-max-size
  43 -post_max_size = 8M
  44 +post_max_size = 32M
  45 
  46  ; Automatically add files before PHP document.
  47  ; http://php.net/auto-prepend-file
  48 @@ -808,10 +808,10 @@
  49 
  50  ; Maximum allowed size for uploaded files.
  51  ; http://php.net/upload-max-filesize
  52 -upload_max_filesize = 2M
  53 +upload_max_filesize = 32M
  54 
  55  ; Maximum number of files that can be uploaded via a single request
  56 -max_file_uploads = 20
  57 +max_file_uploads = 4
  58 
  59  ;;;;;;;;;;;;;;;;;;
  60  ; Fopen wrappers ;

/etc/php.d/timezone.ini

よく出る警告なので必ず設定します。

   1 --- /etc/php.d/timezone.ini.orig    1970-01-01 09:00:00.000000000 +0900
   2 +++ /etc/php.d/timezone.ini 2016-08-15 23:46:00.436613075 +0900
   3 @@ -0,0 +1 @@
   4 +date.timezone = Asia/Tokyo
   5 

一つ忠告があるとすれば「サーバーの提供元はグローバル(UTC)かもしれないけど、 サービスの利用者(エンドユーザーしかり運用者しかり)はローカル時間である」 という点でしょうか。

OSレイヤーから上は利用者のローカル時間を前提としないと極度に混乱します。

/etc/php.d/mbstring.ini

これもどう設定するかは用件によるので、設定例ということで。

   1 --- /etc/php.d/mbstring.ini.orig        1970-01-01 09:00:00.000000000 +0900
   2 +++ /etc/php.d/mbstring.ini     2016-08-15 23:47:21.735872137 +0900
   3 @@ -0,0 +1 @@
   4 +mbstring.language = Japanese
   5 

Remi参考文献

CentOS/YUM Repository/Remi's RPM repository (最終更新日時 2019-05-08 18:42:58 更新者 NorikatsuShigemura)