1. 为什么要在离线环境折腾全栈部署?
最近接手了一个项目,客户那边用的是银河麒麟服务器V10,x86_64架构,最关键的是,服务器完全处于内网隔离状态,一根外网线都接不进去。客户的需求很明确:要在上面搭一套完整的Web应用环境,数据库用MySQL5.7,Web服务器用nginx,后端跑Node.js,还有些老的管理页面需要PHP支持。这场景听起来是不是挺有挑战性?没错,这就是典型的国产化环境下的离线部署需求,在金融、政务、军工这些对安全要求极高的领域特别常见。
你可能觉得,现在都云原生、容器化了,谁还折腾离线安装啊?但现实是,在很多关键行业,物理隔离是硬性要求。服务器就像一座“信息孤岛”,所有软件、依赖包都得靠我们手动“搬运”进去。这个过程,说白了,就是跟操作系统底层依赖和各种编译环境“斗智斗勇”。我刚开始也踩了不少坑,比如明明在CentOS上几分钟搞定的东西,在麒麟上因为一个依赖库的版本问题就能卡半天。所以,今天我就把自己在银河麒麟V10上,从零开始搭建MySQL5.7、nginx、Node.js和PHP全栈环境的实战经验,掰开揉碎了分享给你。我会尽量避开那些晦涩的理论,用最直白的语言和一步步的操作命令,让你即使没接触过麒麟系统,也能跟着做下来。我们的目标就一个:在断网的情况下,把这一整套环境稳稳当当地跑起来。
2. 动手前的准备工作:理清思路与备齐“粮草”
打仗之前,得先清点弹药粮草。离线部署更是如此,一旦开始,可没有yum install一键下载的便利了。所以,准备工作做得好,能省去后面至少80%的麻烦。
首先,你得搞清楚你的“战场”环境。我这次用的是Kylin Linux Advanced Server V10 (Sun),x86_64架构。你可以在终端里用 cat /etc/os-release 和 uname -m 这两个命令来确认自己的系统版本和架构,千万别搞错了,ARM架构和x86的安装包可是完全不兼容的。
接下来是几项必须做的系统级准备工作,这步不能省:
-
关闭并禁用防火墙:在调试阶段,防火墙可能会阻挡我们的服务端口,先关掉它让部署更顺畅。当然,生产环境后期需要根据安全策略再严格配置。
systemctl stop firewalld # 立即停止防火墙 systemctl disable firewalld # 禁止防火墙开机自启 -
清理潜在的软件冲突:银河麒麟系统默认可能会安装一些与MySQL冲突的数据库,比如MariaDB。我们必须提前清理干净,不然安装MySQL时会报各种依赖错误。
# 查看是否安装了mariadb相关的包 rpm -qa | grep mariadb # 如果上面命令有输出,比如看到了 mariadb-libs,就用力删除它(假设包名是mariadb-libs) rpm -e --nodeps mariadb-libs同样,检查一下是否有旧版的MySQL残留:
rpm -qa | grep mysql # 如果有,也用同样的方式删除 -
准备好所有离线安装包:这是离线部署的核心。你需要在一台有网络的、相同操作系统版本的机器上(或者虚拟机里),提前下载好所有需要的软件包和它们的依赖。包括:
- MySQL 5.7 的RPM安装包(通常包括
mysql-community-server,mysql-community-client,mysql-community-libs等)。 - Node.js 的RPM安装包。
- Nginx 的RPM安装包。
- PHP及其常用扩展(如
php-fpm,php-mysqlnd等)的RPM安装包。 - 一个完整的系统ISO镜像:这是我们的“救命稻草”,因为很多基础依赖包(比如
gcc,make,openssl-devel)都可以从系统镜像里获取。去麒麟官方渠道下载和你服务器版本完全一致的ISO文件。
- MySQL 5.7 的RPM安装包(通常包括
-
传输工具:你需要一个可靠的SSH工具(比如Xshell、FinalShell、MobaXterm)来连接服务器,并用它的SFTP功能把刚才准备好的那一大堆安装包和ISO镜像上传到服务器上。别指望用U盘拷,对于服务器来说,SSH才是最稳的通道。
把这些东西都备齐了,我们心里就有底了。接下来,就要开始构建我们离线部署中最关键的基础设施——本地YUM仓库。
3. 搭建生命线:配置本地YUM源仓库
在离线环境里,系统镜像就是我们唯一的“软件应用商店”。配置本地YUM源,就是把系统ISO镜像里的所有安装包,变成一个本地的、可用的软件仓库。这样,我们后续安装nginx、PH

离线环境全栈部署指南:MySQL5.7+nginx+nodejs+php实战&spm=1001.2101.3001.5002&articleId=154108407&d=1&t=3&u=ab32218504934b9bacfa91a24f54c3a0)
336

被折叠的 条评论
为什么被折叠?



