背景
anyenvは個人でも便利でよく使うものですが、主に開発環境のところで利用していました。今回は本番などでウェブサーバー(phpenv)を利用する場合を想定してシステムワイドにインストールする方法をやってみます。
参考:https://qiita.com/mikesorae/items/e8e2d13b6b46b60ef4c4
概要
- Versionのインストールはrootユーザー
- 利用は全ユーザー
インストール
上記の参考URLの内容にすると以下のエラーに出ました。
ANYENV_DEFINITION_ROOT(/*********/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:
解決方法として調べた内容がこちらです。sudo及びrootで実装で実行します。
cd /opt
git clone https://github.com/riywo/anyenv
echo 'export PATH="/opt/anyenv/bin:$PATH"' >> /etc/profile.d/anyenv.sh
echo 'export ANYENV_ROOT="/opt/anyenv"' >> /etc/profile.d/anyenv.sh
echo 'export ANYENV_DEFINITION_ROOT="/opt/anyenv/share/anyenv-install"' >> /etc/profile.d/anyenv.sh
echo 'eval "$(anyenv init -)"' >> /etc/profile.d/anyenv.sh
exec $SHELL -l
勿論、直ぐにphpenvをインストールしたりしたければ、上記の設定が反映されないと動けないです。
*2019-10-28:以下の実装を入れた方が良いかと
ln -s /opt/anyenv/envs/phpenv/shims/php /bin/php
phpenvでの注意点
基本的にversionのインストールはroot権限があるユーザーで行う設定ですが、phpenvでインストールした後にcomposerを実行すると「/opt/anyenv/envs/phpenv/shims/composer」が実行されてcomposerをインストールを行います。
ただし、ファイルの権限で以下のようになってしまい、他のユーザーが使用時にpermissionエラーが出る場合があります。
# /opt/anyenv/env/phpenv/versions/*.*.*/composer/の内容
-rw------- 1 root root 124 Nov 11 12:32 auth.json
-rwxr-xr-x 1 root root 1933813 Nov 11 12:32 composer.phar
-rw------- 1 root root 21 Nov 11 12:32 config.json
-rw-r--r-- 1 root root 13 Nov 11 12:32 .htaccess
なので以下のコマンドでpermissionの修正をした方が良いです。phpenvの設定でできるか調べてはいますが、まだ見つからない状態です。
# chmode 644 *.json
AWS Linux2での注意点
phpenvでphp7.3.*をインストールする際に以下の物を先にインストールしました。
sudo yum -y install gcc libxml2 libxml2-devel libcurl libcurl-devel libpng libpng-devel libmcrypt libmcrypt-devel libtidy libtidy-devel libxslt libxslt-devel openssl-devel bison libjpeg-turbo-devel readline-devel autoconf bzip2-devel libicu-devel gcc-c++ libzip libzip-devel re2c libtidy
だが、AWS Linux2では以下のエラーでlibtidyが出来ませんでした。
$ yum -y install libtidy libtidy-devel
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
26 packages excluded due to repository priority protections
No package libtidy available.
No package libtidy-devel available.
原因は「amzn-main?」ではlibtidyがないことでした。それで以下のコンマンドでインストールがでいました。
参考:https://dev.classmethod.jp/cloud/aws/amazon-linux-2-enable-epel-repository-with-amazon-linux-extras/
amazon-linux-extras install -y epel
yum --enablerepo=epel install libtidy-devel