【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の設定ファイルを編集
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の画面に従ってインストール
コメント
コメントを投稿