Linux 系统下安装 Erlang 详细指南?Linux怎么安装Erlang?Linux如何安装Erlang?
Erlang作为一门专为高并发和分布式系统设计的函数式编程语言,凭借其轻量级进程模型和成熟的OTP框架,已成为构建电信级高可用系统的首选技术,全球知名应用如WhatsApp(支撑数十亿用户消息收发)、RabbitMQ(企业级消息队列)以及金融领域的高频交易系统都基于Erlang实现,本文将深入讲解Linux环境下Erlang的完整安装方案,涵盖Ubuntu、CentOS等主流发行版,并提供生产环境优化建议。
系统环境准备
系统更新建议
在安装前建议先执行系统更新,以确保软件依赖的兼容性:
# Ubuntu/Debian系 sudo apt update && sudo apt full-upgrade -y # RHEL系(CentOS/Rocky Linux) sudo yum update -y --skip-broken # Fedora新版 sudo dnf upgrade --refresh -y
最佳实践:对于生产服务器,建议在非业务高峰期执行更新,并提前做好快照备份。
开发依赖安装
Erlang编译需要完整的开发工具链支持:
Ubuntu/Debian系统
sudo apt install -y build-essential autoconf m4 libncurses-dev \ libssl-dev libwxgtk-webview3.2-dev libgl1-mesa-dev \ libsqlite3-dev unixodbc-dev libjpeg-dev libpng-dev
RHEL/CentOS系统
sudo yum groupinstall -y "Development Tools" && \ sudo yum install -y epel-release && \ sudo yum install -y openssl-devel ncurses-devel wxGTK3-devel \ unixODBC-devel libxslt fop
技术提示:对于需要系统集成的环境,建议额外安装:
# Ubuntu sudo apt install -y libsystemd-dev # CentOS sudo yum install -y systemd-devel
多种安装方案详解
官方仓库安装(推荐生产环境)
Ubuntu/Debian
# 添加ESL官方仓库 wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb sudo dpkg -i erlang-solutions_*.deb sudo apt update # 安装长期支持版本 sudo apt install -y esl-erlang erlang-manpages erlang-doc
RHEL系
# 添加仓库 sudo rpm -Uvh https://packages.erlang-solutions.com/erlang-solutions-2.0-1.noarch.rpm # 查看可用版本 yum list available esl-erlang* # 安装特定版本(示例) sudo yum install -y esl-erlang-26.0
源码编译安装(适合定制需求)
# 下载OTP 26.0源码包 wget https://github.com/erlang/otp/releases/download/OTP-26.0/otp_src_26.0.tar.gz tar xzf otp_src_*.tar.gz && cd otp_src-26.0 # 配置编译参数(根据需求调整) ./configure --prefix=/opt/erlang-26.0 \ --enable-threads \ --enable-smp-support \ --enable-kernel-poll \ --with-ssl=$(openssl version -d | awk '{print $2}' | tr -d '"') \ --with-javac \ --enable-dynamic-ssl-lib # 使用多核编译(提升速度) make -j$(($(nproc)+1)) && sudo make install
关键编译参数解析:
--enable-kernel-poll
:启用Linux内核事件通知机制,提升I/O性能30%+--with-dynamic-trace=dtrace
:支持动态追踪(需系统安装SystemTap)--disable-hipe
:关闭本地代码编译(牺牲部分性能换取更好兼容性)
使用asdf版本管理(开发推荐)
# 安装asdf核心 git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.13.1 echo '. "$HOME/.asdf/asdf.sh"' >> ~/.bashrc source ~/.bashrc # 添加Erlang插件 asdf plugin-add erlang https://github.com/asdf-vm/asdf-erlang.git # 安装依赖(Ubuntu示例) sudo apt install -y autoconf curl dpkg-dev build-essential # 安装多个版本 asdf install erlang 25.3.2 asdf install erlang 26.0 # 项目级版本控制 echo "erlang 26.0" > .tool-versions
优势对比: | 方案 | 适用场景 | 维护难度 | 灵活性 | |------------|--------------|---------|-------| | 官方仓库 | 生产环境 | ★★☆☆☆ | ★★☆☆☆ | | 源码编译 | 定制需求 | ★★★★☆ | ★★★★★ | | asdf管理 | 多版本开发 | ★★☆☆☆ | ★★★★☆ |
安装验证与调优
环境验证
# 验证安装版本 erl -eval 'io:format("Erlang/OTP ~s~n", [erlang:system_info(otp_release)]), halt().' -noshell # 检查关键功能 erl -noshell -eval 'io:format("Crypto: ~p~nSSL: ~p~n", [code:which(crypto), code:which(ssl)]), halt().'
系统级配置
建议在/etc/profile.d/erlang.sh
创建全局配置:
export ERLANG_HOME=/opt/erlang-26.0 export PATH="${ERLANG_HOME}/bin:${PATH}" export MANPATH="${ERLANG_HOME}/man:${MANPATH}" export KERL_CONFIGURE_OPTIONS="--with-ssl=/usr/local/openssl"
生产环境优化
内存管理
在vm.args
中配置:
+P 5000000 # 最大进程数 +Q 262144 | # 端口数上限 +SDio 10 # 异步线程池
网络优化
# /etc/sysctl.conf 追加 net.ipv4.tcp_max_syn_backlog = 4096 net.core.somaxconn = 4096
监控配置
建议安装observer工具:
erl -eval 'observer:start().'
安全实践
- 最小权限原则:使用专用用户运行Erlang节点
sudo useradd -r -s /bin/false erlang
- 网络隔离:配置防火墙规则限制EPMD端口(4369)
- 加密通信:强制使用TLS1.3加密节点间通信
扩展学习
- Erlang官方文档
- OTP设计原则
- Elixir生态(基于Erlang VM的现代语言)
版本说明:本文档基于Erlang/OTP 26.0编写,最后更新于2023年10月,对于ARM架构服务器,需要额外添加--enable-aot
编译参数以获得最佳性能。
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。