[{"data":1,"prerenderedAt":597},["ShallowReactive",2],{"content:\u002Fposts\u002Falpine-install-config":3,"surround:\u002Fposts\u002Falpine-install-config":587},{"id":4,"title":5,"body":6,"categories":562,"date":564,"description":565,"draft":566,"extension":567,"image":568,"meta":569,"navigation":571,"path":572,"permalink":568,"pinned":566,"published":568,"readingTime":573,"recommend":568,"references":568,"seo":578,"sitemap":579,"stem":580,"tags":581,"type":584,"updated":585,"__hash__":586},"content\u002Fposts\u002Fposts\u002Falpine-install-config.md","Alpine Linux 极简安装流程与生产环境轻量化配置",{"type":7,"value":8,"toc":541},"minimark",[9,19,22,25,48,53,56,67,72,75,82,88,99,105,111,120,125,128,133,140,147,152,156,164,167,173,179,184,190,195,201,206,212,217,223,228,234,239,245,250,256,261,267,276,282,287,293,298,304,309,315,320,326,331,337,342,348,353,359,364,370,375,381,386,392,396,399,403,406,414,418,424,428,431,437,441,447,451,457,461,464,468,474,478,481,487,491,494,501,504,510,517,521,527,538],[10,11,15],"alert",{"type":12,"icon":13,"title":14},"info","tabler:robot","AI 迁移提示",[16,17,18],"p",{},"本文由 AI 协助从旧站迁移，尚未完成逐篇人工审校；内容如有疏漏，将在复核后修订。",[16,20,21],{},"起因：站长的服务都是部署在家里，通过Frp映射到公网上的，最近有服务器要到期了，研究了下阿里云的ECS计费，决定使用一款轻量级的Linux系统，购买阿里云 2vCPU 0.5GB的服务器，3年仅需300多，如果使用学生优惠券，基本免费。带宽按量付费，使用CDT（云数据传输），国内每个月20G免费流量，境外每个月220G免费流量。",[16,23,24],{},"然而，在 2vCPU 0.5GB 这个“螺蛳壳里做道场”的极限配置下，我们熟悉的 CentOS、Ubuntu 甚至 Debian 都显得有些“富态”了。它们安装后动辄占用数百 MB 内存，留给应用本身的空间已然不多。",[16,26,27,31,32,35,36,39,40,43,44,47],{},[28,29,30],"strong",{},"我们的目标非常明确：在有限的资源内，榨干每一分性能。"," 这时，一个专为资源受限环境而生的系统进入了视野——",[28,33,34],{},"Alpine Linux","。它基础运行内存仅需 ",[28,37,38],{},"5-10 MB","，安装后硬盘占用不到 ",[28,41,42],{},"100 MB","，恰恰是这种超轻量级服务器的“天作之合”。选择 Alpine，不是追逐潮流，而是在极致性价比方案下的",[28,45,46],{},"必然技术选择","。",[49,50,52],"h2",{"id":51},"一开始安装","一、开始安装",[16,54,55],{},"Alpine 60M镜像链接",[57,58,64],"pre",{"className":59,"code":61,"language":62,"meta":63},[60],"language-sql","https:\u002F\u002Fdl-cdn.alpinelinux.org\u002Falpine\u002Fv3.23\u002Freleases\u002Fx86_64\u002Falpine-virt-3.23.2-x86_64.iso\n","sql","",[65,66,61],"code",{"__ignoreMap":63},[68,69,71],"h3",{"id":70},"_1-阿里云添加自定义镜像","1. 阿里云添加自定义镜像",[16,73,74],{},"因为阿里云不提供Alpine的镜像，我们要使用自定义镜像，下面跟我一起配置吧",[76,77,78],"ol",{},[79,80,81],"li",{},"将镜像上传至阿里云OSS",[83,84,85],"blockquote",{},[16,86,87],{},"由于我们需要自定义镜像，但是镜像又必须要通过OSS提供，所以我们需要临时性的创建一个OSS Bucket实例，来上传我们的ISO镜像。在实例成功创建后，我们可以将其删除，以避免不必要的扣费",[16,89,90,91,98],{},"首先，来到 ",[92,93,97],"a",{"href":94,"rel":95},"https:\u002F\u002Foss.console.aliyun.com\u002Findex",[96],"nofollow","OSS管理控制台"," ，创建一个 Bucket，地域一定要选你服务器所在的区域 ，并且上传ISO，最后，复制URL备用",[16,100,101],{},[102,103],"img",{"alt":63,"src":104},".\u002Fimages\u002Falpine-install-951987.webp",[76,106,108],{"start":107},2,[79,109,110],{},"导入镜像",[16,112,113,114,119],{},"前往 ",[92,115,118],{"href":116,"rel":117},"https:\u002F\u002Fecs.console.aliyun.com\u002Fimage\u002Fregion\u002Fcn-shanghai",[96],"云服务器管理控制台"," ，选择到所属的地区，然后选择右上角的 导入镜像",[16,121,122],{},[102,123],{"alt":63,"src":124},".\u002Fimages\u002Falpine-install-878387.webp",[16,126,127],{},"注意，需要授权ECS访问OSS业务",[16,129,130],{},[102,131],{"alt":63,"src":132},".\u002Fimages\u002Falpine-install-134291.webp",[16,134,135,136,139],{},"然后正常填写，",[28,137,138],{},"取消勾选“导入后执行检测”"," ，先不要点下一步",[16,141,142,143,146],{},"接下来勾选配置云盘属性，并且将 ",[28,144,145],{},"云盘容量设置为1GB"," ，确认无误，导入",[16,148,149],{},[102,150],{"alt":63,"src":151},".\u002Fimages\u002Falpine-install-481683.webp",[68,153,155],{"id":154},"_2-安装alpine系统","2. 安装Alpine系统",[83,157,158,161],{},[16,159,160],{},"如果你使用阿里云自定义镜像进行安装了，需要使用vnc远程链接进行安装系统，别家的厂商也是一样。",[16,162,163],{},"进入 云服务器管理控制台 选择你刚买的ECS，接下来点击 远程连接 ，展开更多，选择 通过VNC远程连接",[16,165,166],{},"接下来就是愉快的敲命令环节~ （方括号内为默认值，你可以输入新值回车覆盖也可以直接回车应用默认值）",[168,169,170],"ul",{},[79,171,172],{},"启动 Alpine 安装程序",[57,174,177],{"className":175,"code":176,"language":62,"meta":63},[60],"localhost:~# setup-alpine\n",[65,178,176],{"__ignoreMap":63},[168,180,181],{},[79,182,183],{},"选择键盘布局",[57,185,188],{"className":186,"code":187,"language":62,"meta":63},[60],"Select keyboard layout: [none] us\nSelect variant: [us]\n",[65,189,187],{"__ignoreMap":63},[168,191,192],{},[79,193,194],{},"设置主机名",[57,196,199],{"className":197,"code":198,"language":62,"meta":63},[60],"Enter system hostname (fully qualified form, e.g. 'foo.example.org') [localhost] alpine-vps\n",[65,200,198],{"__ignoreMap":63},[168,202,203],{},[79,204,205],{},"设置网卡",[57,207,210],{"className":208,"code":209,"language":62,"meta":63},[60],"Available interfaces are: eth0 lo\nWhich one do you want to initialize? [eth0]\n",[65,211,209],{"__ignoreMap":63},[168,213,214],{},[79,215,216],{},"设置 IP 获取方式",[57,218,221],{"className":219,"code":220,"language":62,"meta":63},[60],"Ip address for eth0? (or 'dhcp', 'none', 'manual') [dhcp]\n",[65,222,220],{"__ignoreMap":63},[168,224,225],{},[79,226,227],{},"是否进行手动网络配置",[57,229,232],{"className":230,"code":231,"language":62,"meta":63},[60],"Do you want to do any manual network configuration? [no]\n",[65,233,231],{"__ignoreMap":63},[168,235,236],{},[79,237,238],{},"设置 root 密码（输入时不会显示）",[57,240,243],{"className":241,"code":242,"language":62,"meta":63},[60],"New password:\nRetype password:\n",[65,244,242],{"__ignoreMap":63},[168,246,247],{},[79,248,249],{},"设置时区，或者（PRC）",[57,251,254],{"className":252,"code":253,"language":62,"meta":63},[60],"Which timezone are you in? ('?' for list) [UTC] Asia\u002FShanghai\n",[65,255,253],{"__ignoreMap":63},[168,257,258],{},[79,259,260],{},"设置代理",[57,262,265],{"className":263,"code":264,"language":62,"meta":63},[60],"HTTP\u002FFTP proxy URL? [none]\n",[65,266,264],{"__ignoreMap":63},[168,268,269],{},[79,270,271,272,275],{},"选择软件仓库镜像。这个地方建议先输入 ",[65,273,274],{"code":274},"s"," 列出所有镜像，然后上下翻找找到阿里云镜像源，然后输入对应镜像源编号，否则如有选错",[57,277,280],{"className":278,"code":279,"language":62,"meta":63},[60],"Which mirror do you want to use? (or '?' or 'done') [44] \n",[65,281,279],{"__ignoreMap":63},[168,283,284],{},[79,285,286],{},"不创建普通用户",[57,288,291],{"className":289,"code":290,"language":62,"meta":63},[60],"Setup a user? (enter a username, or 'no') [no] no\n",[65,292,290],{"__ignoreMap":63},[168,294,295],{},[79,296,297],{},"选择 SSH 服务",[57,299,302],{"className":300,"code":301,"language":62,"meta":63},[60],"Which SSH server? ('openssh', 'dropbear', or 'none') [openssh]\n",[65,303,301],{"__ignoreMap":63},[168,305,306],{},[79,307,308],{},"是否允许 root 通过 SSH 登录",[57,310,313],{"className":311,"code":312,"language":62,"meta":63},[60],"Allow root ssh login? ('?' for help) [prohibit-password] yes\n",[65,314,312],{"__ignoreMap":63},[168,316,317],{},[79,318,319],{},"没有找到磁盘，是否安装至 vda 云盘，是",[57,321,324],{"className":322,"code":323,"language":62,"meta":63},[60],"No disk available, Try boot media \u002Fmedia\u002Fvda ? (y\u002Fn) [n] y\n",[65,325,323],{"__ignoreMap":63},[168,327,328],{},[79,329,330],{},"选择要安装的磁盘",[57,332,335],{"className":333,"code":334,"language":62,"meta":63},[60],"Which disk(s) would you like to use? (or '?' for help or 'none') [none] vda\n",[65,336,334],{"__ignoreMap":63},[168,338,339],{},[79,340,341],{},"选择磁盘使用方式",[57,343,346],{"className":344,"code":345,"language":62,"meta":63},[60],"How would you like to use it? ('sys', 'data', 'crypt', 'lvm') [sys]\n",[65,347,345],{"__ignoreMap":63},[168,349,350],{},[79,351,352],{},"确认格式化磁盘",[57,354,357],{"className":355,"code":356,"language":62,"meta":63},[60],"WARNING: Erase the above disk(s) and continue? [y\u002FN] y\n",[65,358,356],{"__ignoreMap":63},[168,360,361],{},[79,362,363],{},"安装系统",[57,365,368],{"className":366,"code":367,"language":62,"meta":63},[60],"Installing system on \u002Fdev\u002Fsda:\n  Installing alpine-base...\n  Installing busybox...\n  Installing openssh...\n  Installing openrc...\n",[65,369,367],{"__ignoreMap":63},[168,371,372],{},[79,373,374],{},"安装完成提示",[57,376,379],{"className":377,"code":378,"language":62,"meta":63},[60],"Installation is complete. Please reboot.\n",[65,380,378],{"__ignoreMap":63},[168,382,383],{},[79,384,385],{},"重启系统",[57,387,390],{"className":388,"code":389,"language":62,"meta":63},[60],"localhost:~# reboot\n",[65,391,389],{"__ignoreMap":63},[49,393,395],{"id":394},"二配置系统","二、配置系统",[16,397,398],{},"在安装完 Alpine 系统后，需要进行一些配置，才能正常使用。",[68,400,402],{"id":401},"_1-设置dns","1. 设置DNS",[16,404,405],{},"一般情况下不需要，云厂商会帮你配置好",[57,407,412],{"className":408,"code":410,"language":411,"meta":63},[409],"language-bash","alpine-vps:~# setup-dns\nDNS Domain name? (e.g. 'bar.com') nameserver\nDNS nameserver(s)? [223.5.5.5] 1.1.1.1 8.8.8.8\n","bash",[65,413,410],{"__ignoreMap":63},[68,415,417],{"id":416},"_2-换源并更新","2. 换源并更新",[57,419,422],{"className":420,"code":421,"language":411,"meta":63},[409],"# 配置社区阿里云源\ncd \u002Fetc\u002Fapk\nvi repositories  \n## 取消 community 仓库前面的注释符号（#）。\n\n## 可选edge源\nhttp:\u002F\u002Fmirrors.aliyun.com\u002Falpine\u002Fedge\u002Fcommunity\nhttp:\u002F\u002Fmirrors.aliyun.com\u002Falpine\u002Fedge\u002Ftesting\n\n# 更新系统及软件包\napk update\napk upgrade\n",[65,423,421],{"__ignoreMap":63},[68,425,427],{"id":426},"_3-配置-ip-信息","3. 配置 IP 信息",[16,429,430],{},"在这里可以将dhcp改为静态配置",[57,432,435],{"className":433,"code":434,"language":411,"meta":63},[409],"# 编辑网络配置文件\nvi \u002Fetc\u002Fnetwork\u002Finterfaces\n## 将默认的 DHCP 配置修改为静态 IP\nauto eth0\niface eth0 inet static\n   address 192.168.1.100\n   netmask 255.255.255.0\n   gateway 192.168.1.1\n   dns-nameservers 8.8.8.8\n\n# 配置 DNS（可选） \nvi \u002Fetc\u002Fresolv.conf\n\nnameserver 8.8.8.8\n\n# 重启网络服务 使配置立即生效\nifdown eth0 && ifup eth0\n",[65,436,434],{"__ignoreMap":63},[68,438,440],{"id":439},"_4-安装基本软件包","4. 安装基本软件包",[57,442,445],{"className":443,"code":444,"language":411,"meta":63},[409],"apk add --no-cache vim openssh util-linux bash bash-doc  bash-completion curl net-tools unzip zip jq openssl tar iproute2 lsblk htop\n",[65,446,444],{"__ignoreMap":63},[68,448,450],{"id":449},"_5-校时","5. 校时",[57,452,455],{"className":453,"code":454,"language":411,"meta":63},[409],"# 设置时区\nsetup-timezone -z Asia\u002FShanghai\n\n# 使用 chrony进行校时\n## 安装 chrony\napk add chrony\n\n## 启动服务并设置开机自启\nrc-service chronyd start\nrc-update add chronyd\n",[65,456,454],{"__ignoreMap":63},[49,458,460],{"id":459},"三系统相关命令","三、系统相关命令",[16,462,463],{},"这里记录了 Alpine 系统常用的命令",[68,465,467],{"id":466},"_1-apk命令","1. APK命令",[57,469,472],{"className":470,"code":471,"language":411,"meta":63},[409],"apk update  # 更新最新镜像源列表\n\napk search                 # 查找所有可用软件包\napk search -v              # 查找所用可用软件包及其描述内容\napk search -v '包名'       # 通过软件包名称查找软件包\napk search -v -d 'docker'  # 通过描述文件查找特定的软件包\n\napk add openssh                       # 安装一个软件\napk add openssh  vim  bash nginx      # 安装多个软件\napk add --no-cache mysql-client       # 不使用本地镜像源缓存，相当于先执行update，再执行add\n\napk info           # 列出所有已安装的软件包\napk info -a zlib   # 显示完整的软件包信息\napk info --who-owns \u002Fusr\u002Fsbin\u002Fnginx # 显示指定文件属于的包\n\napk upgrade            # 升级所有软件\napk upgrade openssh    # 升级指定软件\napk upgrade openssh  vim  bash nginx # 升级多个软件\napk add --upgrade busybox  # 指定升级部分软件包\n\napk del openssh      # 删除一个软件\napk del nginx mysql  # 删除多个软件\n",[65,473,471],{"__ignoreMap":63},[68,475,477],{"id":476},"_2-rc服务命令","2. rc服务命令",[16,479,480],{},"Alpine 不使用 systemctl 而是 OpenRC，这对于习惯了 Ubuntu\u002FCentOS 的人来说是最大的门槛。建议在“系统相关命令”部分加一个直观的对比表：",[57,482,485],{"className":483,"code":484,"language":411,"meta":63},[409],"rc-update    # 主要用于不同运行级增加或者删除服务。\nrc-status    # 主要用于运行级的状态管理。\nrc-service   # 主用于管理服务的状态\nopenrc       # 主要用于管理不同的运行级。\n\n\n\nrc-service \u003C服务名> start    # 启动服务\nrc-service \u003C服务名> stop    # 停止服务\nrc-service \u003C服务名> restart  # 重启服务\nrc-service \u003C服务名> reload    # 重新加载配置（不重启）\nrc-service \u003C服务名> status    # 查看服务状态\n\n\n\nrc-update add \u003C服务名> \u003C运行级别>    # 添加服务到开机自启\nrc-update del \u003C服务名>          # 删除服务的开机自启\nrc-update show            # 查看所有开机自启的服务\n\n# 运行级别说明\n## boot - 系统启动时运行\n## default - 默认运行级别（多用户模式）\n## nonetwork - 无网络模式\n## single - 单用户模式（维护模式）\nrc-update add 服务名 boot      # 核心服务（如docker）\nrc-update add 服务名 default    # 普通服务（如nginx、ssh）\n\n\n\n\n\ntail -f \u002Fvar\u002Flog\u002Fmessages    # 查看所有系统日志\ntail -f \u002Fvar\u002Flog\u002Fmessages | grep docker    # 查看特定服务的日志\nls \u002Fvar\u002Flog\u002F | grep -E \"(docker|nginx|ssh)\"    # 查看服务自己的日志文件（如果有）\n",[65,486,484],{"__ignoreMap":63},[49,488,490],{"id":489},"四frp服务安装","四、FRP服务安装",[16,492,493],{},"FRP 是一个反向代理工具，它可以将本地服务暴露到公网，实现远程访问。",[16,495,496,497],{},"下载FRP：",[92,498,499],{"href":499,"rel":500},"https:\u002F\u002Fgithub.com\u002Ffatedier\u002Ffrp\u002Freleases",[96],[16,502,503],{},"如果网络不好可以使用gh镜像站点",[57,505,508],{"className":506,"code":507,"language":411,"meta":63},[409],"wget https:\u002F\u002Fgithub.com\u002Ffatedier\u002Ffrp\u002Freleases\u002Fdownload\u002Fv0.67.0\u002Ffrp_0.67.0_linux_amd64.tar.gz\n",[65,509,507],{"__ignoreMap":63},[57,511,515],{"className":512,"code":513,"filename":514,"language":411,"meta":63},[409],"# 创建 OpenRC 服务文件\ntee \u002Fetc\u002Finit.d\u002Ffrps \u003C\u003C'EOF'\n#!\u002Fsbin\u002Fopenrc-run\n\n# 基础信息\nname=\"frp server\"\ndescription=\"FRP Server with Infinite Auto-Restart\"\n\n# 执行程序和参数\ncommand=\"\u002Fopt\u002Ffrp\u002Ffrps\"\ncommand_args=\"-c \u002Fopt\u002Ffrp\u002Ffrps.toml\"\ncommand_user=\"root\"\n\n# 核心守护配置\nsupervisor=\"supervise-daemon\"\nrespawn_delay=10\nrespawn_max=0 # 无限次重试\n\n# 依赖网络和 DNS\ndepend() {\n    need net\n    use dns\n    after firewall\n}\n\n# 启动前的清理工作\nstart_pre() {\n    # 强制清理可能锁死服务的 PID 文件\n    rm -f \u002Frun\u002F${RC_SVCNAME}.pid\n    checkpath --directory --owner root:root \u002Frun\u002F${RC_SVCNAME}\n}\n\nEOF\n\n# 设置权限并添加服务\nchmod +x \u002Fetc\u002Finit.d\u002Ffrps\n\n# 启动服务\nrc-service frps start\n\n# 停止服务\nrc-service frps stop\n\n# 查看状态\nrc-service frps status\n\n# 重启服务\nrc-service frps restart\n\n\n# 开机自启\nrc-update add frps default\n\n","frps",[65,516,513],{"__ignoreMap":63},[49,518,520],{"id":519},"五docker安装","五、Docker安装",[57,522,525],{"className":523,"code":524,"language":411,"meta":63},[409],"# 启用cgroups\nrc-update add cgroups boot\nrc-service cgroups start\n# 检查是否挂载\nmount | grep cgroup\n\n# 安装docker\napk add docker docker-compose\n\n# 配置文件\n## 创建配置目录\nmkdir -p \u002Fetc\u002Fdocker\n\n## 配置daemon.json\ncat > \u002Fetc\u002Fdocker\u002Fdaemon.json \u003C\u003C 'EOF'\n{\n  \"log-driver\": \"json-file\",\n  \"log-opts\": {\n    \"max-size\": \"5m\",\n    \"max-file\": \"2\"\n  },\n  \"storage-driver\": \"overlay2\",\n  \"default-ulimits\": {\n    \"nofile\": {\n      \"Name\": \"nofile\",\n      \"Hard\": 1024,\n      \"Soft\": 512\n    }\n  },\n  \"max-concurrent-downloads\": 1,\n  \"max-concurrent-uploads\": 1\n}\nEOF\n\n## 重启Docker使配置生效\nrc-service docker restart\n",[65,526,524],{"__ignoreMap":63},[10,528,529,532],{"type":12},[16,530,531],{},"站长提示： 在 512MB 内存的机器上，限制 Docker 并发下载数（设置为 1）至关重要，否则多个线程同时拉取镜像会瞬间撑爆内存导致系统卡死（OOM）。",[16,533,534,537],{},[65,535,536],{"code":536},"max-concurrent-downloads: 1"," 能有效防止拉取镜像时因并发过高导致的 OOM（内存溢出）。",[16,539,540],{},"至此，一个极其轻量且功能完备的 Alpine 生产环境就搭建完成了。",{"title":63,"searchDepth":542,"depth":542,"links":543},4,[544,549,556,560,561],{"id":51,"depth":107,"text":52,"children":545},[546,548],{"id":70,"depth":547,"text":71},3,{"id":154,"depth":547,"text":155},{"id":394,"depth":107,"text":395,"children":550},[551,552,553,554,555],{"id":401,"depth":547,"text":402},{"id":416,"depth":547,"text":417},{"id":426,"depth":547,"text":427},{"id":439,"depth":547,"text":440},{"id":449,"depth":547,"text":450},{"id":459,"depth":107,"text":460,"children":557},[558,559],{"id":466,"depth":547,"text":467},{"id":476,"depth":547,"text":477},{"id":489,"depth":107,"text":490},{"id":519,"depth":107,"text":520},[563],"系统","2026-03-01","追求极致轻量？本文带你快速上手 Alpine Linux 安装与 APK 包管理，教你如何配置资源占用极低的微服务生产环境。",false,"md",null,{"slots":570},{},true,"\u002Fposts\u002Falpine-install-config",{"text":574,"minutes":575,"time":576,"words":577},"13 min read",12.01,720600,2402,{"title":5,"description":565},{"loc":572},"posts\u002Fposts\u002Falpine-install-config",[582,583],"系统安装","Alpine","tech","2026-06-27 08:49:55","X8sB_ULlYmAHjhxZsQ6p3b7M2rW3k4NYQ3hIJW_c0co",[588,593],{"title":589,"path":590,"stem":591,"date":592,"type":584,"children":-1},"RabbitMQ 进阶实战：延迟消息插件安装与配置指南","\u002Fposts\u002Frabbitmq-delayed-message-plugin-setup","posts\u002Fposts\u002Frabbitmq-delayed-message-plugin-setup","2026-02-27",{"title":594,"path":595,"stem":596,"date":564,"type":584,"children":-1},"Ubuntu Server 安装教程与配置优化","\u002Fposts\u002Fubuntu-install-config","posts\u002Fposts\u002Fubuntu-install-config",1788712223508]