V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
master13
V2EX  ›  职场话题

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

  •  
  •   master13 · 2015-11-06 18:02:46 +08:00 · 9511 次点击
    这是一个创建于 3342 天前的主题,其中的信息可能已经有所发展或是发生改变。

    故事的经过

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

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

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

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

    问题

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

    老板的要求

    • 公司内部网络服务器,绝对不能与互联网直接连接
    • CentOS 6.4
    • x86
    • “那个系统是我亲手装的,上面有我的青春、理想和远方,你可别弄没了”

    解决方案

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

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

    方案 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 主想办法水经验,是犯罪!

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

    69 条回复    2015-11-10 07:58:48 +08:00
    ByZHkc3
        1
    ByZHkc3  
       2015-11-06 18:04:55 +08:00
    占位~楼主现在到底怎样了?
    master13
        2
    master13  
    OP
       2015-11-06 18:10:25 +08:00
    已 PO 好,请各位 V 友点评……
    FrankFang128
        3
    FrankFang128  
       2015-11-06 18:10:29 +08:00 via Android
    楼主叫做 peter 吗?
    wy315700
        4
    wy315700  
       2015-11-06 18:12:26 +08:00
    只是想说,这个需求其实非常非常简单,

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

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

    我要是老板,肯定找你这样的,越多越好
    Felldeadbird
        26
    Felldeadbird  
       2015-11-06 20:04:41 +08:00
    然后楼主真的被炒了??
    wy315700
        27
    wy315700  
       2015-11-06 20:06:01 +08:00
    @bugsnail
    我发现现在好多人只会‘官方’方案,当一个条件不满足的时候就不知所措了。

    我记得以前第一次去实习的时候,带我的人和我说,千万不要盯着 API ,如果大家都盯着 API ,那就没有病毒了。
    ts
        28
    ts  
       2015-11-06 20:10:10 +08:00
    NAT 那个方案没弄?
    gangsta
        29
    gangsta  
       2015-11-06 20:17:39 +08:00
    LZ 忘记配图了

    windfarer
        30
    windfarer  
       2015-11-06 20:19:00 +08:00 via Android
    楼主现在在哪个公园?
    master13
        31
    master13  
    OP
       2015-11-06 20:39:39 +08:00
    @sancome 最基本的支持库都不存在的时候,那个 full 包真的需要连网的,我为了跟别人吹牛逼,专门拔了网线试了一次,然后真的就一屏红字退出了。
    master13
        32
    master13  
    OP
       2015-11-06 20:40:26 +08:00
    @windfarer 你要来给我送饭吗
    MntCw
        33
    MntCw  
       2015-11-06 20:41:10 +08:00
    用 cdrom 建立 local.repo
    master13
        34
    master13  
    OP
       2015-11-06 20:45:59 +08:00
    @kurtrossel 然后公司 1 年就倒闭了……
    luzjcn
        35
    luzjcn  
       2015-11-06 21:00:02 +08:00
    为啥我说的没记录上
    https://github.com/lj2007331/lnmp

    一键安装, 所有组件都是最新版, 并且还能随时升级
    正常半小时内安装完毕
    Andy1999
        36
    Andy1999  
       2015-11-06 21:00:05 +08:00
    一台能连外网的服务器进行 nginx 反代 yum 源,然后 hosts 绑定好
    再用 lnmp 包进行编译。。。
    viator42
        37
    viator42  
       2015-11-06 21:05:07 +08:00
    lnmp.org 这个试过没?
    Ansen
        38
    Ansen  
       2015-11-06 21:14:39 +08:00 via iPhone
    同 Linux 运维
    今天也被开了!原因是公司(新成立)业绩不好 母公司把我们和旗下另外一家业绩同样不好的公司合并了,由于我们这边基本上都是试用期,所以 行政 财务 前端 美工 运维 都被在裁员的范围之内。
    9hills
        39
    9hills  
       2015-11-06 21:16:19 +08:00
    还有一个最最简单,最不用配置的方法

    那就是反向代理,只需要在内网找一台能够连上外网的机器,用 squid 或者 nginx 做一个反向代理就好了
    SquirrelMAN
        40
    SquirrelMAN  
       2015-11-06 21:27:31 +08:00
    没人吐槽亲手安装、理想、远方吗
    kaneg
        41
    kaneg  
       2015-11-06 21:31:01 +08:00 via iPhone
    奇怪楼主为什么不用代理?
    gyteng
        42
    gyteng  
       2015-11-06 21:37:41 +08:00
    楼主不知道还有一种方法叫做外接 4G 路由器吗
    KgM4gLtF0shViDH3
        43
    KgM4gLtF0shViDH3  
       2015-11-06 21:43:03 +08:00
    @gangsta 666
    zhangyh26258
        44
    zhangyh26258  
       2015-11-06 22:03:33 +08:00
    你前老板不讲道理啊,源码不接入网怎么下载?自己写?
    讲道理啊,怎么不用 gentoo/lfs 啊
    Hipponensis
        45
    Hipponensis  
       2015-11-06 22:03:43 +08:00
    这个不应该两个小时没搞定就该问人了么,现在才总结有点晚。。
    weakiwi
        46
    weakiwi  
       2015-11-06 22:07:54 +08:00
    全盘备份,找个机器全盘恢复,联网,安装,全盘备份,全盘恢复
    zho6
        47
    zho6  
       2015-11-06 22:13:01 +08:00
    10 年前 在深圳上班时 招了一个助手 让他安装一个 mysql 数据库 那小伙一天也没有弄好 并什么也没有问我 只有果断让他走人
    enotx
        48
    enotx  
       2015-11-06 22:29:37 +08:00
    喷了,这种事情做两天还搞不定,感觉我也能当运维了
    hqs123
        49
    hqs123  
       2015-11-06 22:34:14 +08:00
    认真看了下,觉得楼主大材小用了,建议楼主去别的公司发展把,以楼主的实力完全可以找到更好有前途的公司!
    kurtrossel
        50
    kurtrossel  
       2015-11-06 22:40:27 +08:00
    @master13

    看玩笑,怎么可能倒

    就凭你卖这一手好萌,做地推也能养活公司几百口人
    maskerTUI
        51
    maskerTUI  
       2015-11-06 22:42:34 +08:00 via Android
    还有个办法,接个 usb 网卡,连个 WIFI
    pynix
        52
    pynix  
       2015-11-06 22:51:31 +08:00 via Android
    看热闹不闲事大。。。
    wdlth
        53
    wdlth  
       2015-11-06 22:54:21 +08:00
    把 toolchain 全换新的,上一个新内核,依赖重新用新 toolchain 编译,把 CentOS 弄成不像 CentOS ……
    odirus
        54
    odirus  
       2015-11-06 22:58:33 +08:00
    感觉楼主必成大器啊,之前你的帖子我也看了,这样的领导不要也罢,你只是工作、更多的是提升自己,没必因为 NC 而打消学习的勇气。
    odirus
        55
    odirus  
       2015-11-06 23:00:55 +08:00
    以前我在厂里搬砖的时候,虽然数据进出公司都要高级领导亲自解密,也没这么坑。
    panzhc
        56
    panzhc  
       2015-11-06 23:16:55 +08:00
    代理应该是最简单的办法,而且符合要求,没有“直接”连公网
    feather12315
        57
    feather12315  
       2015-11-07 01:57:34 +08:00 via Android
    指出点 nginx 编译依赖错误(用 docker 125m 的 debian 为基础镜像编译, apt libc6-dev dpkg-dev curl make gcc git g++ 后),还缺少这个库 libexpat1-dev 的一个头文件,编译成功后缺少依赖,在这里 libexpat1 (版本 1.80 ,额外添加了 4 个模块, upstream-fair , dav-ext-module , http_google_filter_module , http_substitutions_filter_module
    seki
        58
    seki  
       2015-11-07 04:48:42 +08:00
    排版得这么好我还以为是什么广告贴呢,还找了半天广告在哪里
    SmiteChow
        59
    SmiteChow  
       2015-11-07 07:41:08 +08:00
    其实我想说你开个 vpn 在能入网的机器上,这边挂上不就好了?有这么麻烦吗?
    jydeng
        60
    jydeng  
       2015-11-07 08:23:51 +08:00
    以前自己搞过 PHP 运行环境,直接挂 CentOS 的 iso ,然后 RPM 安装,缺什么装什么就可以了。
    iloveayu
        61
    iloveayu  
       2015-11-07 08:55:15 +08:00 via Android
    方案 2 各大镜像源也一直在提供低版本的 ISO
    leassy
        62
    leassy  
       2015-11-07 09:56:33 +08:00
    楼主我早给你说过了,只要他威胁你就辞职,这种老板不值得为他服务
    chigco
        63
    chigco  
       2015-11-07 10:09:15 +08:00 via iPhone
    有效…
    RqPS6rhmP3Nyn3Tm
        64
    RqPS6rhmP3Nyn3Tm  
       2015-11-07 12:39:59 +08:00 via iPad
    代理不就好了……
    lovedboy
        65
    lovedboy  
       2015-11-07 12:47:33 +08:00
    nginx 反向代理一下就 OK 了吧?
    AntonChen
        66
    AntonChen  
       2015-11-07 12:56:12 +08:00
    首先 嫌大官方 DVD 可已搭建内网 Yum 源 甚至于可以直接挂载 ISO 文件作为 Yum 安装源
    有了源就简单了 下载个 LNMP 离线包 执行 泡杯茶、点支烟、出去散步半小时 回来好了.........
    konakona
        67
    konakona  
       2015-11-07 19:17:15 +08:00
    阿婆主成熟了,懂得记事。
    也是给了原来老板一记响亮的耳光,但是,要懂得感恩,不管原来老板的立场是好是坏,我们大家和你都知道,结果是:你变得更好了。

    记得感恩,无论别人对你是好是坏,注重自己的变化,从心出发。

    OK ,说到这里,我去杀僵尸了。
    morning
        68
    morning  
       2015-11-09 21:59:54 +08:00
    “那个系统是我亲手装的,上面有我的青春、理想和远方,你可别弄没了”
    老板最后这句真的太萌了~
    master13
        69
    master13  
    OP
       2015-11-10 07:58:48 +08:00
    @morning 嗯嗯,终于看到一个有诗情画意的程序员了!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   986 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:46 · PVG 04:46 · LAX 12:46 · JFK 15:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.