php_modが非推奨になったのね

昔のバージョンのphp環境でphpバージョンを上げるという対応中。 apache + PHP8のインスタンスを構築してドキュメントルートまで到達を確認。 対応する人にドキュメントルートまで到達するからプロジェクトのファイルを置いてバージョンアップのエラーを確認してもらうため依頼しましたが HTTP 503 Service Unavailable のエラーが出ているとのこと。 HTMLファイルはアクセスできているからPHPの実行ができていないと思い調べると Apache HTTP サーバーで使用するために PHP に提供されている mod_php モジュールが非推奨になりました。 php-fpmをインストールして起動し、リクエストを流してphp-fmpでphpを実行するようにして解決。 しばらくPHPを触っていなかったのでモジュールが非推奨になったことに気づかずでした。

【amazon linux 2】を使ってみた

【amazon linux 2】を使ってみた

目的はオープンソースでアンケートサイトを構築する機会があったので新しいものを使ってみるというところで amazon linux2 でLimeServeyを動かして動作を確認するまでです。

LimeServeyの推奨セットアップ環境である
nginx+php+mysql
php with php-fpm, mbstring, gd2 with freetype, imap, ldap, zip, zlib and databse drivers

こちらで構築したいと思いますが推奨がPHP5.6です。amazon linux2の利用できる新しいトピックがPHP7.2(デフォルトでyumリポジトリにamzn2-coreがありPHP5.4があるんですがこれは流石に利用しないです。。)だったのでnginxもmysqlもバージョンは推奨を考えないで構築したいと思います。

しかし【amazon linux2】の【Extras Library】にmysqlがなかったりPHP7.2のphp-xmlがなかったりと結局追加でmysqlとremiのリポジトリを追加して対応しました。
手法として正しいかは別としてとりあえず動作はしたのでそれをメモに残したいと思います。

とりあえず【amazon linux2】の特徴
AMIやDockerイメージで利用できる。Hyper-v、VirtualBox、VMware、KVMの仮装マシンイメージでも利用できる
LTS(長期サポート。セキュリティ・バグ修正)
Extras Library(パッケージが依存関係ない。従来のトレードオフを排除)
など

とりあえずインスタンス作成は省略
※amazonlinuxと変わらない作成手順でした。

SSHでインスタンスにログイン

管理者作業が続くので
sudo su

yum list で出てくるPHPのバージョンが古い。。

パッケージ管理が変わっているらしいので調べてみる
【Amazon Linux Extras Library】
一般的なパッケージをより新しいバージョンで利用することができる
となっています。とりあえずamazon-linux-extrasコマンド経由で管理するらしいので構築を進めてみます。

とりあえずパッケージ管理がわからないのでリポジトリの一覧を見てみる
yum repolist all
amazonlinuxのamzn-mainはなくamzn2-coreというリポジトリになっています






しかしyum list でみても無いし、phpは5.4だしちょっと混乱

ここがExtras Libraryなのかと使いかたを調べてみた
Extras Libraryのパッケージはamazon-linux-extrasコマンドを使って管理するらしい

とりあえずHELP

amazon-linux-extras help
  help      See list of commands.
  info      See details of a specific package.
  install   Enables specified topics and installs their packages.
  list      Lists topics in the catalog. Some may be enabled.

Amazon Linux Extras software topics give you access to the most-recent
stable software you specifically choose, without the uncertainty of a
wholly new environment.

Best practice is to enable only one or two topics. More than that, and
you lose the benefits of working in a stable environment.

1つか2つのトピックを有効にすることをおすすめしますってことは各機能ごとにインスタンス立てるような設計の方がいいのかな。
でも今回はお試しなのですいません言うこと聞きません。

どんなパッケージがあるのか確認してみます

amazon-linux-extras list
  0  ansible2   disabled  [ =2.4.2 ]
  1  emacs   disabled  [ =25.3 ]
  2  memcached1.5   disabled  [ =1.5.1 ]
  3  nginx1.12   disabled  [ =1.12.2 ]
  4  postgresql9.6   disabled  [ =9.6.6 ]
  5  python3   disabled  [ =3.6.2 ]
  6  redis4.0   disabled  [ =4.0.5 ]
  7  R3.4   disabled  [ =3.4.3 ]
  8  rust1   disabled  [ =1.22.1 ]
  9  vim   disabled  [ =8.0 ]
 10  golang1.9   disabled  [ =1.9.2 ]
 11  ruby2.4   disabled  [ =2.4.2 ]
 12  nano   disabled  [ =2.9.1 ]
 13  php7.2=latest  enabled  [ =7.2.0 ]
 14  lamp-mariadb10.2-php7.2   disabled  [ =10.2.10_7.2.0 ]

今回必要なphp+nginxの最新トピックをインストールしてみる
amazon-linux-extras install php7.2
amazon-linux-extras install nginx1.12

がしかしmysqlがパッケージない!
と言うことでここからはこの手法が正しいかわかりませんがリポジトリを追加していき対応することに。Extras Libraryを使うことのメリットを壊すような気もしますが仕方がありません。

mysqlのリポジトリを追加
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum localinstall mysql57-community-release-el7-11.noarch.rpm

リポジトリに追加されたか確認してみる
yum repolist

追加されているのでリストに上がってくるか確認する
yum list | grep mysql

mysqlをインストールする
yum --enablerepo='mysql57-community*' install mysql-community-server

とりあえずサービスを起動してみる

service nginx start
service php-fpm start
service mysqld start
※php-fpmは明示的に起動しなかったのにnginx起動したら一緒に立ち上がっていた気もするが一応書いておきました。

mysql5.7なので初期パスワードを確認
cat /var/log/mysqld.log

set password for `root`@`localhost`=password('パスワード');
FLUSH PRIVILEGES;

パスワードはデフォルトお堅いので
set global validate_password_policy=LOW;

grant all on *.* to `question`@`localhost` identified by 'question';
FLUSH PRIVILEGES;
※経験論なのですがユーザー作成されても権限がすぐに反映しないような挙動がありました。CREATEでユーザー作成してから権限付与した方がいいのかな?

LimeServeyのソースをドキュメントルートにしようとしているディレクトリに配置
nginxとphp-fpmの設定ファイルを編集
Docker+nginx+php7.0でphpinfo()を表示する
nginxで画像が表示されない。。
設定はここら辺をこのブログのページですが参考にできれば

http://【IPアドレス】/admin/admin.php
にアクセス

ディレクトリの権限がらみでエラーが出る(ディレクトリの所有社かグループまたは権限を適切にすれば問題ない)

権限を解決するとsimple-xmlが使えないとエラーが出る
がしかしyumのリストで見るとphp-xmlが無い。。。

もう仕方がないremiリポジトリを追加して入れようと考えた・・・

https://fedoraproject.org/wiki/EPEL/ja
で対象リンクのURLをコピーして
直接wget
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum localinstall epel-release-latest-7.noarch.rpm
remiをインストール
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

remiリポジトリからphp7.2のxmlをインストール
yum --enablerepo=remi-php72 --disablerepo=amzn2-core install php-xml

ただ別々のリポジトリからインストールすることで依存関係ができるので手法として正しいのか疑問

表示されるようになったのでそのままLimeServeyのインストール画面にて進めます

そうするとreadmeにも推奨phpライブラリが書いてありますがライブラリチェックがあるのでインストールします
yum --enablerepo=remi-php72 --disablerepo=amzn2-core install php-mbstring php-gd php-ldap php-imap php-pecl-zip

表示されるようになったのでそのままLimeServeyの画面に従ってインストール

コメント

このブログの人気の投稿

nginxで画像が表示されない。。

AWSのS3バケットをマウントするs3fsでマウントが外れた件

CakePHP3でHTTPSにする