既存のWebアプリケーションにおいて、一機能がボトルネックとなっており、解決策としてRubyで構築していた処理をErlangで書き直せないか検討しています。まずErlangを試すためにインストールから。
以下記事を参考にさせていただきました。
CentOS7にElixir+Phoenixを入れてみる
#目的と環境
目的
CentOS7にErlangの環境を構築して動かす。
環境
[Aldebaran@erlang ~]$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
#インストールする
Erlang公式を見ると、最新バージョンは18.3らしい(2016/04/26)
ソースコード取得
$ cd /usr/local/src
$ wget http://www.erlang.org/download/otp_src_18.3.tar.gz
$ ls -lh
-rw-r--r-- 1 erlang erlang 66M Mar 15 20:58 otp_src_18.3.tar.gz
構築に必要な環境整備
インストール手順によると、ビルドには以下が必要とのことです。
・Compiler -- GNU C Compiler, gcc
・Perl5
・ncurses
・sed
・OpenSSL
・Oracle Java SE JDK
※そのほか、GUIで動かすために必要なSWがありましたが、コマンドラインで動かすので省略します。
各SWがすでにインストールされているか現状を確認する
未インストールの場合はyumでインストールする。
$ gcc -v
gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
$ perl -v
This is perl 5, version 16
$ yum install ncurses ncurses-devel
$ sed --version
sed (GNU sed) 4.2.2
$ yum install openssl openssl-devel
$ curl -OL --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm
$ rpm -ivh jdk-8u73-linux-x64.rpm
$ java -version
java version "1.8.0_73"
wgetで取得したソースコードを展開して、ビルドする
$ tar -zxvf otp_src_18.3.tar.gz
$ cd otp_src_18.3
$ ./configure
Makefileの結果、警告が出てる?
** APPLICATIONS DISABLED **
odbc : ODBC library - link check failed
** APPLICATIONS INFORMATION **
wx : wxWidgets not found, wx will NOT be usable
** DOCUMENTATION INFORMATION **
documentation :
xsltproc is missing.
fop is missing.
The documentation can not be built.
特にインストール資料には明記されていないものもあるが、ビルド時に必要なSWがあるらしい。必要と思えるものを検索して、導入する。wxWidgetsはインストール資料によるとGUIアプリ用らしいので無視する。
$ yum install unixODBC unixODBC-devel fop
再度、Makefileを作成してmakeする
$ ./configure
$ make
$ make install
動作確認する
$ which erl
/usr/local/bin/erl
$ erl
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V7.3 (abort with ^G)
1>
Erlangで1+1=2を経由して、ThisisAnfield.する
1> X = 1.
1
2> Y = 1.
1
3> X + Y.
2
4> io:fwrite("ThisisAnfield!").
ThisisAnfield!ok
Erlangのインストールと、対話シェルから算術演算子と、文字列出力を試しました。長年色々な並行処理基盤を支えてきた言語であり、非常に関心があります。今後はElixirなどにも手を広げたい。