Amazon Linux2にLinuxbrewをいれて環境構築してみる
はじめに
皆さん、どうもです。k.s.ロジャースのやすもんです。
今回は、今までcurlとかbuildとかで頑張って構築していたDockerのwebアプリケーションコンテナをLinuxbrewを使ってやろうと思います!
弊社ではPHPのフレームワークにphalconを採用しているのですが、現状ソースからのbuildなのでこれらをbrewで入れれると楽だなーという感じです
では、早速いってみましょう!
前提
dockerなどの環境構築は完了している想定です!
amzn2イメージの取得
$ docker pull amazonlinux:2
Linuxbrewを入れる
amzn2のコンテナを起動し、環境構築開始です!
$ docker run -it --name test amazonlinux:2 /bin/bash
以降はコンテナ内の作業です
Linuxbrewを入れる準備(公式のコマンド)
$ yum groupinstall -y 'Development Tools' && yum install -y curl file git curl-devel
amzn2イメージは軽量構成なので、各種神器たちを入れていきます
$ yum -y install gcc make autoconf sudo diffutils vi wget tar which
brewはrootだと入らないので、ユーザを作成します
$ adduser brew
$ echo 'brew:hoge' |chpasswd
$ usermod -G wheel brew
$ su - brew
Linuxbrewをインストール
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
途中でパスワードを求められたら入力します
warning吐いて終了しますが、一旦OK
PATH周り設定
test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
brew doctorしてみる
$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!
Warning: The following directories do not exist:
/home/linuxbrew/.linuxbrew/var/homebrew/linked
You should create these directories and change their ownership to your account.
sudo mkdir -p /home/linuxbrew/.linuxbrew/var/homebrew/linked
sudo chown -R $(whoami) /home/linuxbrew/.linuxbrew/var/homebrew/linked
ディレクトリ作ってchownしろと言われるので仰せのままに
$ sudo mkdir -p /home/linuxbrew/.linuxbrew/var/homebrew/linked
$ sudo chown -R brew /home/linuxbrew/.linuxbrew/var/homebrew/linked
再度brew doctorしてみる
$ brew doctor
Your system is ready to brew.
よさそうだ
PHPの環境を構築
PHP7.2とPhalcon3.4.2の環境を作っていきます
php7.2のインストール
まぁamazon-linux-extras
で入れれるのでこれはそこまでありがたみがないですが。。。
$ brew install php72
$ echo 'export PATH="/home/linuxbrew/.linuxbrew/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile
$ echo 'export PATH="/home/linuxbrew/.linuxbrew/opt/[email protected]/sbin:$PATH"' >> ~/.bash_profile
$ exit
$ su - brew
$ php -v
PHP 7.2.17 (cli) (built: Apr 12 2019 06:04:59) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.17, Copyright (c) 1999-2018, by Zend Technologies
$ which php
/home/linuxbrew/.linuxbrew/opt/[email protected]/bin/php
よさそうだ
続いて、phalconをインストールしていく(公式のコマンド)
$ brew tap tigerstrikemedia/homebrew-phalconphp
$ brew install php72-phalcon
php.iniにphalcon.soのpathを通す
$ vi /home/linuxbrew/.linuxbrew/etc/php/7.2/php.ini
(最下部に以下を追加)
extension=/home/linuxbrew/.linuxbrew/Cellar/php72-phalcon/3.4.2/phalcon.so
確認
$ php -i "(command-line 'phpinfo()')" | grep phalcon
phalcon
phalcon => enabled
phalcon.db.escape_identifiers => On => On
phalcon.db.force_casting => Off => Off
phalcon.orm.cast_on_hydrate => Off => Off
phalcon.orm.column_renaming => On => On
phalcon.orm.disable_assign_setters => Off => Off
phalcon.orm.enable_implicit_joins => On => On
phalcon.orm.enable_literals => On => On
phalcon.orm.events => On => On
phalcon.orm.exception_on_failed_save => Off => Off
phalcon.orm.ignore_unknown_columns => Off => Off
phalcon.orm.late_state_binding => Off => Off
phalcon.orm.not_null_validations => On => On
phalcon.orm.update_snapshot_on_save => On => On
phalcon.orm.virtual_foreign_keys => On => On
うむ、うまく動いてそうだ
$ php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
intl
json
ldap
libxml
mbstring
mysqli
mysqlnd
odbc
openssl
pcntl
pcre
PDO
pdo_dblib
pdo_mysql
PDO_ODBC
pdo_pgsql
pdo_sqlite
pgsql
phalcon
Phar
phpdbg_webhelper
posix
pspell
readline
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tidy
tokenizer
wddx
xml
xmlreader
xmlrpc
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
モジュール一覧にも出てきているし、よさそう
以前はソースからビルドしていたので、これで結構楽だ
後方互換がないのでgit clone git://github.com/phalcon/cphalcon.git -b "3.4.x"
みたいな感じでブランチのバージョン指定したり割とめんどくさかったんだよね。。。
さいごに
いじってみた感想ですが、Docker上のamznlinux2構築はちょと癖がありましたね
Dockerはデフォルトのユーザがrootユーザなので一般ユーザを追加しないといけなかったり。。。
しかし、上記の問題をクリアすればbrew自体のインストールはすごく簡単にできました
また、brew使ってphpやモジュール周りのインストールも楽でした!
一点気をつけなければいけないのはpath周りですね
通常PHPなどをインストールすれば/etc
配下にphpディレクトリが作成され、php.ini
もそこに作成されますが、brewの場合は/home/linuxbrew/.linuxbrew/etc/
配下になるので注意が必要だと思いました
最初/etc
配下にphpディレクトリがなく、php.iniが見つけられずちょと困惑しましたw
pathの考慮ができれば、環境構築が捗るのでおすすめです!
是非試してみてください!
Wantedlyでもブログ投稿してます
Techブログに加えて会社ブログなどもやっているので、気になった方はぜひ覗いてみてください。
https://www.wantedly.com/companies/ks-rogers
Author And Source
この問題について(Amazon Linux2にLinuxbrewをいれて環境構築してみる), 我々は、より多くの情報をここで見つけました https://qiita.com/yasumon/items/dcf76005b97a02b2de14著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .