本人小公司开发一枚,工作最近有个项目,在客户纯内网环境部署 web 应用,公司小,没有纯运维,就安排我去了
没有网!!!从零开始部署,臣妾做不到啊,安装 centos 虚拟机,配置网络,大半天过去了,传文件也是个问题,文件先复制到优盘,优盘再复制到 windows 台式机,在用 secureCRT scp 到虚拟服务器,还要安装什么 winsshd 才能互通。也就是说安装各种应用和依赖包都要这么来一遍。
本来想 docker 部署,据说没有网络 docker 部署也很麻烦, docker 我也不熟,然后就采用传统方式部署 安装 mongodb 倒很快,已有的安装文件复制过去就好了 mysql 就遇到大坑了,安装提示我需要 perl ,安装 perl 又说要 gcc ,安装 gcc 又要 gmp 等等等等,安装过程中各种乱七八糟的错误,无力吐槽 还有一堆 python 的库需要安装,画面太美不敢看
楼主现在已疯,表示要放弃了、离职找工作去了,求搭救
1
Kilerd 2016-12-06 14:16:49 +08:00 via iPhone
其实我不太懂为什么要纯内网。
|
3
putianxi 2016-12-06 14:20:24 +08:00 via iPhone
你需要的是现在有网的地方把虚机做好 在放到内网 很多金融环境都没网的
|
4
huntzhan 2016-12-06 14:25:28 +08:00
> 没有网!!!从零开始部署,臣妾做不到啊,安装 centos 虚拟机,配置网络,大半天过去了,传文件也是个问题,文件先复制到优盘,优盘再复制到 windows 台式机,在用 secureCRT scp 到虚拟服务器,还要安装什么 winsshd 才能互通。也就是说安装各种应用和依赖包都要这么来一遍。
......跟鹅厂的工作流基本一样。如果机器环境可以保证一样,你可以用 Ansible 之类的配置管理工具批量安装这些东西。不过建议还是离职比较好。 |
5
Kilerd 2016-12-06 14:27:05 +08:00 via iPhone 1
|
7
9hills 2016-12-06 14:30:12 +08:00 1
既然能用虚拟机,你找个有网络的环境,把各种东西都做好, dump 出硬盘镜像。
然后拿到内网,搞定 |
10
derek80 2016-12-06 14:31:43 +08:00
virtualenv 安装 copy 过去
|
11
alvy OP @derek80 嗯,这又是另外一个大问题, python 包,上午折腾了半天 virtualenv ,大部分正常,某些包死活装不上,比如 mysql - python ,放弃。。。。。。
|
13
wmhx 2016-12-06 14:52:19 +08:00
你先弄个无线网卡联网装好,不也就半天的时间么?
|
14
autulin 2016-12-06 14:52:26 +08:00
做成虚拟机镜像拷贝过去……
|
15
rtx3 2016-12-06 14:59:51 +08:00
亲 , 你需要现在自己的笔记本上 rsync 一个 centos 的 repo 镜像, 然后进入内网环境后把自己的机器作为镜像源. 或者自己弄一个 docker repo, 一个道理
|
17
9hills 2016-12-06 15:07:42 +08:00
|
18
huntzhan 2016-12-06 15:11:59 +08:00
@alvy 我是直接在内网搭了一个 pyenv 源来装环境,搭了一个 pypi 源来装 package 。你如果愿意折腾也可以这么搞。更多见 https://github.com/huntzhan/pyenv-mirror
|
19
huntzhan 2016-12-06 15:14:28 +08:00
> 客户服务器,不让联网。而且还是在 windows 台式机用管理软件操作
离职吧。 |
20
huntzhan 2016-12-06 15:17:53 +08:00
|
21
loading 2016-12-06 15:21:15 +08:00 via Android
其实并不复杂,复制过去就行。
应该是楼主没用和服务器一样的系统。 |
22
wuwuyun 2016-12-06 15:22:36 +08:00
docker 本地先做好 mysql,nginx,python web 镜像, export 然后再 import 没难度
关键在于 docker 环境 也可以本地装个光的 ubuntu apt-get install --print-uri docker-engine 打出来所有需要装的 deb 包的 url 本地下下来再 scp 传装上去 也没难度 centos 类似 |
23
wuwuyun 2016-12-06 15:26:03 +08:00
vagrant 也类似
没什么难度 本地 virtual box 里面做好全部环境 做个镜像 服务器上装 vagrant 和 virtual box 就行了 就是麻烦点而已 |
24
ericls 2016-12-06 15:31:14 +08:00
用个 container 全部装好放过去。。
|
25
ragnaroks 2016-12-06 15:41:56 +08:00
给公安做过内网东西,直接在公司电脑虚拟机部署完成并进行隔离测试,通过后直接在客户机器上安装个虚拟机就好了
|
26
pubby 2016-12-06 15:50:02 +08:00 via Android
加钱,包硬件。
直接抱服务器过去。 |
27
robinlovemaggie 2016-12-06 16:10:00 +08:00
就不能找个内网里联网的机器搭个 squid 代理?或者 ss 或者 vpn ? 这点挫折就怕了?
|
28
revol 2016-12-06 16:14:01 +08:00
docker 很好学的
|
29
qwer1234asdf 2016-12-06 16:30:30 +08:00
买个 360 移动 wifi ,。。。接下来,你懂得。。。。。 O(∩_∩)O~
|
30
aec4d 2016-12-06 16:32:43 +08:00
这有啥难度,只要能 ssh 连进去一切都不是问题
比如你本机开了一个 socks5 代理 端口为 1085 使用 ssh 反向端口映射 将远程主机的 8888 映射到本机的 1085 ssh -R 8888:127.0.0.1:1085 xxx 远程主机测试:curl -x socks5://127.0.0.1:8888 z.cn 然后远程主机就相当于有网络了 以上示例将 socks5 换成 http 代理就好了 unix 上大多数程序都支持环境变量设置 http 代理 |
31
sowish 2016-12-06 16:35:12 +08:00
vmware+虚拟机拷贝
|
32
lesxc 2016-12-06 16:46:53 +08:00 1
这个时候 golang 的优势就显现出来了! 逃~~~~
|
33
alvy OP @robinlovemaggie 纯内网,不能连外网。
|
35
fchypzero 2016-12-06 18:02:10 +08:00
上面就有解决方法,找到对应的虚拟环境,直接做好虚拟机,导出,然后导入虚拟机,不就完了吗?
|
36
ldrljq 2016-12-06 18:17:28 +08:00
依赖包的问题可以用 ISO 做 Yum 源解决。。。
|
37
starqoq 2016-12-06 19:16:27 +08:00
内网镜像。
|
38
sylecn 2016-12-06 19:24:26 +08:00
虚拟机可以在有公网的环境做好再导出,文件复制到移动硬盘,再在纯内网导入。
纯内网就不要 docker 了,不然还得自己搭 docker 依赖的服务。 |
39
9 2016-12-06 20:22:47 +08:00
@alvy docker 不用编译啊,就一个二进制文件, docker 传上去之后,再从外面拉个镜像下来,再传上去,就这么运行了!轻松愉快
|
40
lalalakakaka 2016-12-06 20:34:50 +08:00
我有类似的经历,方案是:
=== 本机 === 0. 准备 ESXI 安装盘 0.1 准备 coreOS 镜像 0.2 封装 docker 镜像 0.3 本机测试 docker on coreOS on VMware 运行情况 0.4 导出 docker ===内网机器=== 1.裸机装 ESXI 2.ESXI 导入 coreOS 镜像 3.coreOS 导入 docker 镜像 4.完成 或者更粗暴的办法: ===本机=== 装系统 装环境 装程序 cloneZilla 整个系统镜像 ===内网=== 恢复 cloneZilla 镜像 修复启动 完事 |
41
lalalakakaka 2016-12-06 20:40:30 +08:00
更更更粗暴的办法
===本机=== 1.装 virtualbox 2.virtualbox 里装系统,装程序 3.导出 vdi 镜像 ===内网=== 1.装 virtualbox 2.导入镜像 3.配好网络 4.完事 什么? virtualbox 不稳定?性能不够? 瞎说,你不试试怎么知道。半年不停机没问题~ 再说内网系统你确定有性能压力? |
42
lalalakakaka 2016-12-06 20:49:30 +08:00
说最后一个方案:
我今天刚用顺丰发了个配好的服务器去客户那里。。。 |
43
billwang 2016-12-06 21:32:13 +08:00
不错了,你这纯内网的环境还可以用虚拟机。如果虚拟机不让用就给你个 centos 让你安装,……
|
44
sagaxu 2016-12-06 21:48:41 +08:00 via Android
这种时候 java 和 go 语言的优势就来了,全平台,零依赖
|
45
zsj950618 2016-12-06 21:54:17 +08:00
pyinstaller 打包 python
|
46
shyling 2016-12-07 00:10:09 +08:00
docker 导出后再装上不就好了,什么 docker 怎么装?直接下 rpm 呐
|
47
jarlyyn 2016-12-07 01:01:49 +08:00 via Android
Docker 或者虚拟机
|
48
eyp82 2016-12-07 02:06:43 +08:00
@aec4d 他这不一定是技术的问题. 这种全内网的服务器, 不少时候是有审计之类的, 私连外网是严重的安全违规, 被抓了很麻烦.
|
49
weakiwi 2016-12-07 08:10:59 +08:00 via Android
用 yum cache 不知道行不行?
|
50
wuzhizhan 2016-12-07 08:25:27 +08:00
为啥你们都是怪内网,不怪 python 语言呢, python 部署麻烦又不是不知道!
听我的,换成 java,根本不需要装这些东西到服务器! 带个 jdk,tomcat ,打个 war 包过去就能部署了! |
51
urmyfaith 2016-12-07 09:09:47 +08:00
wuwuyun 和 lalalakakaka 的方案是比较好的。
|
52
zhchyu999 2016-12-07 09:34:06 +08:00
vagrant 即可
|
53
nevin47 2016-12-07 10:32:19 +08:00
都说了是客户保密需求有人还逼逼离职真有意思……
我最近也遇到了一个这个需求,客户还是 Windows ,只能直接把所有需要的东西下载 whl 或者自己编出来,然后在虚拟机上测试好然后刻光盘带进去调试 |
54
ppwangs 2016-12-07 10:52:16 +08:00
在你机器上 docker 部署好, save 镜像,带着镜像和 deb / rpm 包过去安装好,直接 load
|
55
yanzixuan 2016-12-07 10:58:24 +08:00
下载最全的镜像,然后刻盘,带着这个盘去机房。然后设置源为镜像。然后开始玩吧。
|
56
AlexaZhou 2016-12-07 11:03:05 +08:00
这种情况直接用 Docker 吧,配置好了保存成镜像,到客户那里三分钟就运行起来。
|
57
chuhades 2016-12-07 11:17:00 +08:00
这时你需要个 4g 手机:)
|
58
bomb77 2016-12-07 11:19:08 +08:00
运维出身的我,一开始也是负责纯内网环境部署软件,依赖装到哭,心疼楼主一下
如果要批量部署一批机器的话,在内网搭建源站还是很有必要的以后会省很多事情, yum 源 pip 源之类 |
59
est 2016-12-07 11:36:14 +08:00
用 freeze 啊。编译成 rpm 或者 deb 包。
|
61
revol 2016-12-07 13:35:16 +08:00
@alvy https://get.daocloud.io/docker-offline/ 这里提供了 docker 的离线安装包,镜像的话你本地 build 好然后 docker save 出来 放到服务器上 docker load 就行,你这都嫌麻烦还写个毛代码
|
62
sleeperqp 2016-12-07 14:17:36 +08:00
个人经验 老老实实装依赖, 一个一个装 或者你做个本地 yum 库
说 docker 这些的别想的这么容易 如果系统版本不对比如 centos6.5 docker 装不上去,遇到依赖也得一个一个装 |
63
iyaozhen 2016-12-07 14:27:39 +08:00 via Android
我就没用过能访问外网的机器。线上机器虽然能访问外网但也不能使用 pip 等方式安装。
慢慢编译呗,缺啥补啥。 话说你自己电脑不能直接 rz 文件到服务器上吗? |
64
Miy4mori 2016-12-07 20:03:43 +08:00 via Android
@alvy 你既然有 everything iso 就应该去了解一下设置本地源呀,装 gcc perl 完全没有问题
|
65
hheedat 2016-12-08 10:24:16 +08:00
卖他们一台服务器
|
66
alvy OP @all 谢谢楼上各位,最后是这么解决的:
1. 编译器:重装了 centos 系统,所有的附件之类都给装上,这样 gcc 编译器之类的就都有了。 2. python 库:把公司的服务器下的 /usr/lib/python2.7 和 /usr/lib64/python2.7 打包复制到此内网服务器,这样就不用安装了 3. 其他 mysql 、 mongodb 、 nginx 之类:参照官方文档,下载安装文件,复制到内网服务器,采用二进制源码的方式安装 豁然开朗,之前一直是在网络环境下开发,安装一个东西一个命令搞定,到内网环境下就完全懵逼了 |