[总结向]昨天,我被老板开除了

2015-11-06 18:02:46 +08:00
 master13

故事的经过

嗝……要不是刚才旁边要饭的给了我一块又黑又硬的面包,我现在还饿着肚子呢。

这两天也一直有人问故事最后怎么发展了,我知道你们都是看热闹不嫌事大的,详情请戳这里

这也是来自乡下的我第一次有 100+回复!

在各位 V 大牛和 V 喷的帮助下,我也学到了一些东西,现在拿出来总结一下。

问题

在 CentOS离线安装LNMP
- 其他 Linux 系统请自行脑补
- 安装其他东西也请自信脑补

老板的要求

解决方案

在翻阅了互联网资料、咨询了各路大牛、被喷子喷了一整天之后,我把所有可能的方法列在下面,别分别给出这些使用这些方法在实际使用时候的限制,希望能帮到有需要的人。

请注意:这些方案任选其一即可,它们是完全并列的,并不是依次执行的步骤!

方案 1 :内网搭建 yum 服务器

费事,但一劳永逸……好吧,一劳很长一段时间逸

yum类似于Ubuntu里面的apt-get,在连接互联网的CentOS上,我们只需要yum install XXXX,它就自动的去预先配好的站点检索我们想要的东西,如果有就下载回来并进行安装。

所以我们的思路是:我们自己搞一个这样的站点,然后把预先配好的站点地址改成本地网络能访问的内部地址,然后就像在连接互联网的机器上一些样,直接使用yum就好!

这里有一篇详细的教程,如果你没时间看,我总结一下:

  1. 在内网准备一台能开 80 端口的服务器
  2. 去把别人站点上的所有 rpm 下载下来,几百个 G ,全考到准备好的那台
  3. 修改yum指定源的配置文件,把这台内网地址配进去
  4. 像平常一样使用yum,然后喝咖啡

这种方法需要你自己搭建yum源,倒也是一劳很长时间逸的方法。

方案 2 :下载everything.iso本地源

更便捷,逸的情况没有上面多

这个方案和上面的很类似,everything.iso听上去就有很多东西似的。 CentOS 官网现在提供这个玩意的下载,把他下载来烧录到 DVD 中,然后插入到待安装内网服务器里,就可以当本地源使用了。

这个东西有很多版本,包含的东西量是不一样的,根据需要下载,一般来说最常用的都在最小的那个里面了。

这种方法不用下载太多东西,比方案 1 更简单。

请注意:官网提供 CentOS 7 的 everything ,并不能保证其中所有 rpm 与低版本的 CentOS 完美兼容

方案 3 :下载源码编译安装

中规中矩,累死人,但一定有效

这是最最中规中矩的办法,也是最最麻烦的办法。说这种方法不好,肯定有人该不愿意了,这是可以理解的——因为每一个称得上“牛”的人,都多多少少会有这样的经历。

先依次登录它们的官网,找到 php 、 mysql 、 nginx 的源码,然后再去找他们的支持库,依次登录支持库的官网,下载支持库的源码,再去找这些支持库的支持库,依次登录支持库的支持库的官网,下载支持库的支持库的源码……如此下载完毕后,从后往前编译安装。

这里有一篇《 Ubuntu 离线安装 Nginx 》,如果你没时间看,这是结论:

  1. 下载 openssl 源代码压缩包,解压编译并安装
  2. 下载 pcre 源代码压缩包,解压编译并安装
  3. 下载 zlib 源代码压缩包,解压编译并安装
  4. 下载 nginx 源代码压缩包,解压编译并安装,这里需要将刚才编译安装的支持库配置进来(下面的命令只是一部分,并不完整,完整请戳上面文章):

    --with-http_ssl_module --with-openssl=../openssl-1.0.1e --with-pcre=../pcre-4.4 --with-zlib=../zlib-1.1.3

  5. 最新版本的 nginx 还需要 GeoIP 的支持,而 GeoIP 需要 GeoIP-data 和 GeoIP-update 的支持,这里不再赘述安装方法。

    正如上面所说,我假设你有 gcc 或 g++,你可以熟练地用他们来编译

方案 4 :yum-downloadonly

讨巧的方案

脑洞:我在能连互联网的机器上 yum 安装,把所有过程中的包刻录到内部网络机器,不就可以了?好主意!

我们平时使用 yum 的时候,都是全自动安装的,甚至不用管它把 rpm 下到了哪里。事实上,我们需要用 yum 的一款插件来保留住这些包。

  1. 安装插件:yum install yum-downloadonly
  2. 下载包:yum -y install PACKAGE_NAME --downloadonly --downloaddir=.

我们以 php 为例,在一台连接互联网的 CentOS6.4 上,用 yum-download 下载 php ,可以看到它还下载了另外 4 个文件,是 php 依赖库以及依赖库的依赖库,把他们全部拷到内网服务器上,按正确的顺序安装就好了。

请注意:两台机器的 CentOS 版本必须完全相同。……很难想象你在 x64 的互联网机下载的安装包,如何运行在 x86 的公司内部服务器上。

方案 5 : Docker 技术

高端大气上档次

你百度一下 Docker 就知道这是什么东西了。打一个不太恰当的比方——这个就跟虚拟机差不多,然而他们叫容器

百度百科: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app )。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。

我觉得这个跟 VMWare 的导出 ovf 功能很相似的,只不过是在实体机上构建镜像(image),然后在另外一台实体机的 Docker 上部署(deploy)。这项技术相关的文档不要太多,感兴趣的同学请自行学习。这里着重推荐一下 Docker 官网,有一个 Step-by-Step 手把手的教程,试试就会了。

Docker 很有趣的地方在于,他有一个 Docker-hub ,很多人把自己打造的牛逼镜像放在上面了,你就跟逛免费超市一下随便取用,开不开心?!!

请注意: Docker 官方仅提供对 x64 系统的支持,如果一定要在 x86 的机器上运行,需要自行下载源码进行编译。

方案 2+4 :推荐的方案

老师说了,结合的东西才是好东西

上面说了,方案 2 是烧录 DVD 做本地源,方案 4 是 yum 下载所需要的 rpm ——所以我们自然想到,先用 yum 下载需要的 rpm ,然后将这些东西烧入 DVD 。这样一来,内网机用这个 DVD 当源,虽然源中的 rpm 数量很少,但恰好是安装所需要的全部 rpm 。

这种方法较方案 2 的优势是不用下载和刻录太多东西,兴许一张 CD 就够了;较方案 4 的优势是可以在内网机直接使用 yum 命令,不需要手动关注 rpm 的安装顺序。

这是最快最便捷的方法,但绝谈不上“一劳永逸”——你每次要安装不同的东西,都要烧制不同的镜像光盘。

你为什么看贴不回帖

你这是逼 po 主想办法水经验,是犯罪!

不说了,我去找个公园睡一觉。

9473 次点击
所在节点    职场话题
69 条回复
ByZHkc3
2015-11-06 18:04:55 +08:00
占位~楼主现在到底怎样了?
master13
2015-11-06 18:10:25 +08:00
已 PO 好,请各位 V 友点评……
FrankFang128
2015-11-06 18:10:29 +08:00
楼主叫做 peter 吗?
wy315700
2015-11-06 18:12:26 +08:00
只是想说,这个需求其实非常非常简单,

曾经在学校维护一群断外网的机器的时候,就找了个跳板机,用 wget 把所有的 rpm 下下来,然后建 Http 服务,,,
bugsnail
2015-11-06 18:16:15 +08:00
@wy315700 干的漂亮,想当初为了上网,还手写路由......

楼主,节哀~~
master13
2015-11-06 18:21:47 +08:00
@FrankFang128 No! My name is Li Lei, what's your name?
zivfun
2015-11-06 18:30:35 +08:00
楼主方案不错,以后面试会问你:离职原因,你咋说?期待后期面试直播:)
echo1937
2015-11-06 18:32:08 +08:00
楼主骨骼精奇,心态极好,还能随时随地总结,他日必成大气。
b821025551b
2015-11-06 18:33:50 +08:00
看完了才发现是个广告
kslr
2015-11-06 18:36:55 +08:00
下雪了,再找个棉被吧
kmahyyg
2015-11-06 18:39:54 +08:00
@master13 I'm Han Meimei.快去 V2EX 的酷工作发个贴找工作把
wolf1981
2015-11-06 19:05:58 +08:00
习惯写指引的,绝对是好员工
aivier
2015-11-06 19:14:49 +08:00
咦 →_→ 居然是你,我肯定会直接用 ISO 的。。。
我记得 DVD1 里就有差不多的服务器软件了吧?设置为安装源,应该差不多,没试过
master13
2015-11-06 19:15:17 +08:00
@b821025551b !!!哪里是广告了!
master13
2015-11-06 19:15:44 +08:00
@aivier 就是听取了你们的回复,才总结出来的嘛
b821025551b
2015-11-06 19:17:14 +08:00
@master13 开个玩笑 233333
br00k
2015-11-06 19:19:51 +08:00
楼主还是要善于使用搜索啊,很多问题都能找到现成的答案。
crab
2015-11-06 19:21:35 +08:00
感谢楼主分享!你那老板肯定内分泌失调。
hantsy
2015-11-06 19:28:00 +08:00
方案 1 :内网搭建 yum 服务===》 搞个 Mirrro 同步就行了。
CoSpLi
2015-11-06 19:43:50 +08:00
楼主抽了 2 小时出来没?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/234225

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX