CentOS 7 上 Elixir 开发之环境配置

由于 erlang 依赖 wxGTK 等相关基础图形库,后者是维护在 epel 仓库里,所以首先需要安装 epel 软件仓库

添加 epel 软件仓库

yum install epel-release

安装需要用到的小工具

yum install unzip wget git vim

安装 erlang

wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
sudo rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
yum install erlang

安装 elixir

注意:由于版本过度,请不要从 CentOS 的中央仓库安装 elixir

git clone https://github.com/elixir-lang/elixir.git
cd elixir
ELIXIRLASTREVISION=$(git rev-list --tags --max-count=1)
ELIXIRLASTTAG=$(git describe --tags ${ELIXIRLASTREVISION})
cd -
rm --force --recursive elixir/
wget --quiet https://github.com/elixir-lang/elixir/releases/download/${ELIXIRLASTTAG}/Precompiled.zip
sudo rm -R /usr/lib/elixir
sudo unzip Precompiled.zip -d /usr/lib/elixir/
sudo rm Precompiled.zip
sudo rm /usr/bin/iex
sudo rm /usr/bin/elixir
sudo rm /usr/bin/elixirc
sudo rm /usr/bin/mix
sudo ln -s ../lib/elixir/bin/iex /usr/bin/
sudo ln -s ../lib/elixir/bin/elixir /usr/bin/
sudo ln -s ../lib/elixir/bin/elixirc /usr/bin/
sudo ln -s ../lib/elixir/bin/mix /usr/bin/

最后确认下 mix 的版本:

mix --version

在笔者写作这篇文章时的输出:

Erlang/OTP 19 [erts-8.2] [source-fbd2db2] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]
Mix 1.4.0-rc.1 (16a14c1)

安装 hex, postgresql-9.6 及 phoenix app

postgresql 是 phoenix 默认的数据库,若需要的话,遵循如下方式安装最新的 9.6 版本:

  • 添加 postgresql 软件源

    yum localinstall https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
  • 安装 postgresql-9.6

    yum install postgresql96
  • 初始化数据库

    /usr/pgsql-9.6/bin/postgresql96-setup initdb
  • 启动数据库服务

    systemctl start postgresql-9.6.service
  • 添加为系统自启动服务

    systemctl enable postgresql-9.6.service
  • 为支持 live code reload 安装下 nodejs, inotify-tools

    yum install inotify-tools
    yum install nodejs
  • 安装 hex 及 phoenix app 框架

    mix local.hex
    mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez
  • [可选] 安装 vim elixir 语法高亮插件
    需要 Vundle 支持

    vim ~/.vimrc
    添加:
    Plugin 'elixir-lang/vim-elixir'