标签: 服务器

对于搭建小型 OpenStack 平台,如何采购服务器

目前学院有 10 万美元用于采购服务器,计划搭建 OpenStack 平台供学院的师生科研和实验使用。因为本人对专业服务器不太了解,所以向各位咨询一下服务器配置的选择以及架构的可行性。

架构方面,目前计划一台服务器作为控制服务器用于一系列基础服务(Keystore, Horizon, Glance,有可能再加上 Heat),一台或者两台分别用于块存储和对象存储 (Cinder, Swift,如果一台服务器不可以同时安装这两个服务的话就上两台),一台用于网络服务 (Neutron),若干台用于计算服务 (Nova)。目标用户大概包括 10~20 个老师和 100 以内的学生。每个用户单个 instance 的配置并不高,主要在于做实验的时候可能用到的 instance 数量较多。

针对上述架构的话,我认为网络服务器和计算服务器的瓶颈在于 CPU、内存和网络,存储服务器的瓶颈在于硬盘和网络。然后计划采购戴尔的 PowerEdge 系列的 Rack Server,不知道针对上述架构在配置的选择上大佬们有没有什么建议。当然如果有更好的选择的话,品牌也可以不限于戴尔。另外大家也可以分享一下自己搭建 OpenStack 平台的架构。谢谢大家的帮助!

感谢各位的回复。以下是*终和老师商议后暂定的方案,希望对其他人有所帮助:

pfSense Firewall Dell PowerEdge R740 Rack Server CPU: 2x Intel Xeon Gold 5217 3.0G 8C/16T RAM: 64G RDIMM 2933MT/s Hard drive: 2x 600GB 10K RPM SAS with RAID 1 Network: Intel X520 Dual Port 10GbE SFP+ & i350 Dual Port 1GbE BASE-T Price: $6600

OpenStack Controller (Keystone, Horizon, Glance, Swift, Cinder, Nova Server, etc) Dell PowerEdge R740 Rack Server CPU: 2x Intel Xeon Gold 5218 2.3G 16C/32T RAM: 128G RDIMM 2933MT/s Hard drive: 2x 600GB 10K RPM SAS with RAID 1 Network: Intel X520 Dual Port 10GbE SFP+ & i350 Dual Port 1GbE BASE-T Price: $7400

OpenStack Network (Neutron) 同pfSense Firewall

Distributed Storage Dell PowerEdge R740 Rack Server CPU: 2x Intel Xeon Silver 4216 2.1G 16C/32T RAM: 64G RDIMM 2933MT/s Hard drive: 2x 300GB 15K RPM SAS with RAID 1 & 8x 2.4T 10 RPM SAS with RAID 5 Network: Intel X520 Dual Port 10GbE SFP+ & i350 Dual Port 1GbE BASE-T Price: $12000

2x OpenStack Compute (Nova) Dell PowerEdge R840 Rack Server CPU: 4x Intel Xeon Gold 5218 2.3G 16C/32T RAM: 512G LRDIMM 2666MT/s Hard drive: 2x 600GB 10K RPM SAS with RAID 1 Network: Intel X520 Dual Port 10GbE SFP+ & i350 Dual Port 1GbE BASE-T Price: 2x $24000

$100k经费的话,这样选配下来还剩$20k左右,还可以再选购10Gbps的交换机等等。目前考虑到初期内部测试使用,暂不对外开放,就没有对Controller部分没有做HA。这套选配可能还存在着种种问题,欢迎大家的意见与建议。

uleh 2019-07-31 08:49:57 +08:00 ❤️ 1
一个 instance 按 4G ram + 50G hd 来算,120 个 Instance 就是 480G 内存 + 6T 硬盘
品牌选戴尔、联想都可以,配置用 2U + 128GRAM,买 6 台组成 2 控+4 算 的集群
一台 1 万多刀,一共估计在 8w 刀之内,剩下钱买硬盘、光纤卡、交换机
uleh 2
uleh 2019-07-31 08:51:10 +08:00 ❤️ 1
如果对数据可靠性有要求就不加硬盘,增一台存储服务器
swulling 3
swulling 2019-07-31 09:13:26 +08:00 via iPhone ❤️ 1
两个控制节点,其他计算节点。虽然集群小,也要*起码有个主从…

如果钱不多,控制节点也可以跑计算
swulling 4
swulling 2019-07-31 09:14:57 +08:00 via iPhone ❤️ 1
存储和计算混部
littlewey 5
littlewey 2019-07-31 09:20:09 +08:00 via iPhone ❤️ 1
可以试试用 airship 来部署
x7395759 6
x7395759 2019-07-31 09:29:24 +08:00 ❤️ 1
搭建 OpenStack 有太多坑了,我不是很喜欢这个方案哈哈哈哈哈

主从我觉得可以不用,一般来说内存是*缺的,CPU 可以超并且影响不大,网络也还好,专业交换机上了也没有瓶颈。
zrp1994 7
zrp1994 2019-07-31 09:31:17 +08:00
@uleh
@swulling
请问两控是指一个 Network Controller 另一个是其他 Controller services 么?还是两个同样的 controller 做 high availability ?
zrp1994 8
zrp1994 2019-07-31 09:34:00 +08:00
@x7395759 因为之前在现有服务器上搭过 OpenStack 并且 Research 与 OpenStack 相关所以选用了 OpenStack。正如你所说的,OpenStack 坑太多,而且如果不深入优化的话性能不是很好。请问除了 OpenStack 有没有其他的平台建议?
x7395759 9
x7395759 2019-07-31 09:40:44 +08:00 ❤️ 1
@zrp1994 之前我司也自建了 OpenStack,后来搭建了 k8s+docker。个人感觉后者利用率是高一些,不过和 OpenStack 还是有很大的区别,如果要私有云的话好像是没有别的方案了。

也许科研学习实验用途对性能要求没有那么高也无所谓,主要还是看用途。
swulling 10
swulling 2019-07-31 10:01:50 +08:00 via iPhone ❤️ 1
@zrp1994 做 HA,控制节点你这么小规模没啥资源需求的

uleh 2019-08-06 10:43:38 +08:00 ❤️ 1
@zrp1994 做 HA 就行了
如果主要需求是提供虚拟机给学生 /老师用,其实用 proxmox 或者 oVirt 搭建集群更方便。。
httplife 12
httplife 2019-08-08 13:59:25 +08:00 ❤️ 1
pfSense Firewall 这个应该可以省去, 加个好点的 Layer 7 Juniper / Cisco 交换机(就是需要额外学一下怎么用 Junos OS/Cisco)
Dell 本身 software raid 不怎样, 用硬件 RAID,SSD 代替 SAS .

如果愿意折腾, 建议用 SuperMicro, 可以搭配更好点配置. 省下的钱还可以买备件
p200635 13
p200635 2019-09-27 07:39:33 +08:00 via Android
虚拟化 上 dell 这个方向没错。 但是为什么要上 OpenStack 而不是 ovirt 我司就是全套 VMware 爽到*限
p200635 14
p200635 2019-09-27 07:44:13 +08:00 via Android
从构架分析 你需要超融合方案 成熟的商用有 VMware nitanix 其他的不推荐 计算和存储是要分离的 网络是要支持软件定义的 还需要自动化运维 或者是桌面云 基本上数下来的话 直接找开源的话 ovirt 或者 pve 是*好的 也可以直接上 nutanix 的一体机 也是便宜还带有成熟的解决方案

不遵循 restful_api 设计,所有的 api 使用 POST 提交

GET ( SELECT ):从服务器取出资源(一项或多项)。
POST ( CREATE ):在服务器新建一个资源。
PUT ( UPDATE ):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH ( UPDATE ):在服务器更新资源(客户端提供改变的属性)。
DELETE ( DELETE ):从服务器删除资源。
把所有的 API 都设计为 POST 提交方式,你们是如何看待的。

ieiayaobb 2019-08-26 14:37:22 +08:00
当 GET 超过了 URL 限制,只能用 POST 替代
qq292382270 2
qq292382270 2019-08-26 14:43:29 +08:00
我觉得挺好的. 因为我的客户大部分只会 post .
mokeyjay 3
mokeyjay 2019-08-26 14:48:46 +08:00
没啥好看待的,有些人只知道获取资源用 GET,其他所有情况用 POST
至于用这种还是用 restful 看具体情况谁话语权大了
Cyron 4
Cyron 2019-08-26 14:50:37 +08:00
无所谓,文档写好就行了
wingoo 5
wingoo 2019-08-26 14:52:24 +08:00 ❤️ 1
restful 并不是标准, 不用就会出错
hnbcinfo 6
hnbcinfo 2019-08-26 14:53:20 +08:00
严格遵循 restful 我觉得不现实,也不一定就好。我一般就用 Get Post。读操作 get,写操作 post,当然也会偶尔有例外。只要文档写好,有一套规则,别随便用就好。
rockyou12 7
rockyou12 2019-08-26 14:55:32 +08:00 ❤️ 1
远古时代,http 的 get 请求会被各种服务商做缓存,所以请求都用 post 还算合理的设计。现在反正都 https 了,不存在了
mcfog 8
mcfog 2019-08-26 15:02:51 +08:00 ❤️ 1
不如何看待,工作那么多年了就没见过纯按标准来的 PATCH 或者 PUT 方法的接口

顺便,楼主你的理解也并不准确,PUT 同样适用于新增
learnshare 9
learnshare 2019-08-26 15:03:04 +08:00
没有*佳实践,不专业才是正常的,多数上层应用不遵守协议也能凑合运行嘛

@rockyou12 也不知道谁遇到过这个问题,并把他的垃圾经验推广开了
ikaiguang 10
ikaiguang 2019-08-26 15:30:42 +08:00
@mcfog

嗯呢。上面的理解,摘自“ 阮一峰”的。

ikaiguang 2019-08-26 15:32:50 +08:00
@Cyron
@qq292382270

我们的项目都是 post,不使用 get.

为了贪图方便
est 12
est 2019-08-26 15:49:10 +08:00 ❤️ 1
挺好的。

real world 如果只能用这 5 种方式操作资源简直是智障设定。比如我登出操作,如何对应这 5 种资源操作?
mcfog 13
mcfog 2019-08-26 15:53:18 +08:00 via Android
@est 可以当然是可以的,虚拟资源虚拟万物即可
DELETE /session/current 或者 /session/:sid
baiyi 14
baiyi 2019-08-26 16:10:24 +08:00 ❤️ 2
不赞成所有的 API 都是用 POST

但同样不赞成将 HTTP 方法对应 CRUD,例如说 POST:确实有“创建新资源”的语义,但是它还有“向数据处理过程提交数据块”的语义,这个“ data-handling process ”描述的太模糊了,所以 POST 方法完全可以替代 PUT、DELETE、PATCH,就像 HTML 的 form 标签,只支持 GET、POST,也完全符合语义的。在《 RESTful Web APIs 》这本书里叫它“ whatever ”……

所以我个人更倾向于用业务逻辑的安全性、幂等性来定义 API 该是用哪种方法。

举个例子:转账,使用 CRUD 就很难去对应,有的可能会用 PUT,因为修改了两个账户的余额信息,有的用 POST,但可能是强行将主体对象从账户转为转账记录这样的资源上,就会让人感觉很混乱。

但如果使用幂等性来判断就很简单,PUT 幂等,POST 不幂等,那转账,肯定是不幂等的。按照这个思路换个例子:修改用户余额,可能这样的场景比较少,但主要是为了说明。这个就应该使用 PUT,应为它是幂等的。
beyond99 15
beyond99 2019-08-26 16:18:21 +08:00
@mcfog 这种为了 restful 而 restful 的方式有什么意义?只会让接口更难懂
baiyi 16
baiyi 2019-08-26 16:23:35 +08:00
@mcfog #13 不建议这样构建资源

对于用户来说,POST “/user/logout ” 比 DELETE “/session ” 更容易理解,用户需要额外的去理解 session 这个资源的意义
ArJun 17
ArJun 2019-08-26 16:28:44 +08:00
所谓的规矩就是用来打破的,且意义上的 restful 都用 POSt 请求方式并没有什么影响
wu67 18
wu67 2019-08-26 16:46:27 +08:00
post 没什么毛病啊. 上面也说了 get 会被缓存, 这是其一; 统一 post 的话, 前端 /客户端封装请求方法也简洁很多, 不会出现 新来的菜鸡实习生搞不清楚为什么出错到处发问(笑) 的情况…
hmzt 19
hmzt 2019-08-26 16:54:22 +08:00
挺方便的,甚至一开始就不该设计那么复杂
Vegetable 20
Vegetable 2019-08-26 17:12:11 +08:00 ❤️ 1
挺方便的,信息更集中,通过 json 传递的参数带基本类型,减少犯错空间.比如 querystring 的 a=1&a=2 这种设计,很容易让新手犯错.

你可能觉得不遵守规范是不对的,实际上这就是一种权衡,严格遵守 restful 很难,复杂业务下,只要有一份规则,大家共同遵守就可以,没有圣经.
Cyron 21
Cyron 2019-08-26 17:16:03 +08:00
@ikaiguang #11 json api 全用 post 也没问题,时间可以花在命名规范上
westoy 22
westoy 2019-08-26 17:20:54 +08:00
还有就是跨浏览器和避开一些防火墙对 delete、patch、put 的阻断, 你永远不知道真实世界里会出啥妖蛾子

框架里*早提倡 REST 实践的是 rails 2 吧, 但是貌似直到现在 rails 都是通过 POST 传_method 字段来做的
nnqijiu 23
nnqijiu 2019-08-26 17:29:49 +08:00
都用 post
otakustay 24
otakustay 2019-08-26 17:49:28 +08:00
总比都用 GET 好,对吧
est 25
est 2019-08-26 18:06:42 +08:00
@mcfog 那带 CAPTCHA、2FA 的登入呢?

验证邮箱的 API 呢?

明明一个 资源名字 + 动词就能描述很清晰的东西,非得限定只用 5 个 verb 去套。。这是削足适履。

而且正规的 RESTful 还要区分单数复数的。。这个就是个笑话。章鱼有 3 种复数形式。做 log 统计的时候就想把 RESTful 作者砍死。

对了 RESTful 作者的发明其实就是 Adobe CodeFusion 没啥值得吹的。而且 RESTful *好的应用也就 WebDAV 了。协议来说其实设计出发点听起来不错,用起来各种问题。性能也不高。
mayne95 26
mayne95 2019-08-26 18:09:34 +08:00 via Android ❤️ 2
谢邀(并没有)
既然楼主用知乎的提问体,那么我就用知乎的回答体。

抛开业务场景谈 API 设计的都是耍流氓(加粗)

规则是个约定俗称的东西,能减少沟通成本,但规则本身也有学习成本。如果 rest 是有 RFC 支持,白纸黑字明文规定的规则。那非常好,大家都按这个来,不会出什么幺蛾子。V 站也不会有人隔三差五的出来讨论 rest 规范。

(不管对不对,先踩一番显得自己很高明的亚子)
像 REST 这种含糊不清的约定本来就是一坨 shit,restful ful ful 风格你懂吗,你的 API 有自己的 freestyle 嘛?真是滑天下之大稽!正如 5 楼所说,rest 不是标准,不是标准,不是标准。API 能在符合 HTTP 协议的情况下运行起来即可。

这个问题就像是,你觉得空格好还是 tab 好。又比如函数式之于面向对象。如果今后 graphql 普及,这个问题还有意义嘛?
拿前朝的剑斩本朝的官?(大雾)

在那个 API 风格混乱的年代,rest 的出现如同指路明灯。大家都按着这个来,减少了混乱,降低了沟通成本。这是值得肯定的。但是随着业务场景逐渐复杂,API 的设计已经没法完全符合 rest 的理念了。花心思去设计一个看起来美好的格式高度统一的 API,不如直接加个接口来的简单。

全用 post 是有缺陷的。举个例子,如果前端要上 service worker,这时候 API 全用 post,请求是没法被拦截并缓存的,也就谈不上什么离线应用。这种场景下用 rest 是保险的。

GitHub 的 API 堪称业界典范,程序员都喜欢。notion 获取数据全用的 post 请求,但这并不妨碍我喜欢它。重要的是产品。

好的 API 是自描述的,能够自洽的,符合直觉的。用户在使用某个接口后,能够推导出其它接口的用法。API 面向的用户群体是程序员,对于程序员来说文档*重要。文档是*好的约定,rest 不 rest 无所谓啦。
mcfog 27
mcfog 2019-08-26 21:25:29 +08:00 via Android
@est 我说 restful 能做,又没说建议用 restful 做。

如果你不懂怎么在一个 restful 风格的体系里设计符合 restful 风格的 2fa 也好 captcha 也罢我可以和你讨论一下我的想法,但我觉得你肯定没有兴趣

哦对了,我也不喜欢 restful,但喜不喜欢一门技术和是否理解这门技术的优缺点,还有能否理性地讨论一门技术是三件不一样的事情,希望你不会因此错过一些更有价值或是有趣的技术
artandlol 28
artandlol 2019-08-26 21:27:20 +08:00 via Android
建议用 grpc 吧
akira 29
akira 2019-08-26 22:13:13 +08:00
文档齐全的 API 就是好 API
dodo2012 30
dodo2012 2019-08-26 22:20:47 +08:00
@westoy rails 到现在也是按 rustful 来的,所以写习惯 rails 后,写所有其它语言的接口全会自学按 restful,
AngelCriss 31
AngelCriss 2019-08-26 23:08:43 +08:00 via Android
不用 http 不就行了
chocotan 32
chocotan 2019-08-26 23:13:02 +08:00
从上面的回复来看,不同的人对 restful 理解会出现偏差
那就别用了,全用 POST 吧
chocotan 33
chocotan 2019-08-26 23:14:17 +08:00
刚看到二楼…
我的客户连 content-type 都不懂,指望对方懂这些 http method ?
tedzhou1221 34
tedzhou1221 2019-08-27 08:13:00 +08:00 via Android
我司现状,强制 Post + json 也不知道好不好,但我知道拍板的人不懂技术。
liuxey 35
liuxey 2019-08-27 08:33:50 +08:00 ❤️ 1
能完全参照 RESTful 的有几个,所以也不能 50 笑百,

只要文档清晰, 沟通顺畅,工具好用,HTTP+XML 我也没意见
est 36
est 2019-08-27 10:07:54 +08:00
@mcfog 说得好。。。。
switch100 37
switch100 2019-08-27 13:01:46 +08:00 via iPhone
前端就是屁事多,给你 api 非得挑三拣四的,乖乖切页面不就可以了吗,还管到后端来了
StarkWhite 38
StarkWhite 2019-08-27 17:23:30 +08:00
GET, PUT, DELETE 等会对参数转义,调试麻烦,而且浏览器对字符长度限制也比较大,
GraphQL 就是只用 HTTP POST 了,参数内用 query 和 mutation 标识,多简单~
话说大家经常讨论的那个 APIJSON 也跟风全用 HTTP POST 了 /狗头

图片站服务器该怎么选择配置架构

*近正在写一个图片站,刚好*近各大云都有在搞活动,所以打算买一个服务器。虽然我会写代码,但是服务器配置真心不知道该怎么选择。

我的网站情况:主要就是图片浏览,网站以手机端网页为主,后期可能会考虑开发 APP,网站每张图片大概 200Kb 左右,总量大概 1TB。这也是我人生中*个为自己写的项目,以前都是为老板写项目。

求 V 站各位大神有空指点下,该怎么选择服务器配置,什么样配置适用什么样的访问量,是否需要单独图片的服务器和单独的网站服务器,(哦还有,网站有点点擦边球,嘿嘿嘿,可能应该也许是买大陆之外的区域的服务器)

qyvlik 2019-11-01 15:13:01 +08:00
图片 1TB 的话。阿里云的 OSS,aws 的 S3 做图床好过自建图床服务器。
然后你的站点主要是图片浏览,那么需要运行数据库和后端程序,在同台服务器上的,推荐 2 核 4G 起,这是乞丐版。
不过到时要是需要升级磁盘的话,还是麻烦一堆,我做的话,如下配置:
版本一:
– 阿里云的 OSS 或者 aws 的 S3
– 1 核 1G 跑后端服务器,带宽乞丐版 1M,标准版 5M 起,磁盘 40G 起。记得带公网 IP。
– 1 核 1G 的云数据库(云数据库升级容易),磁盘*低配置完事,可以单机规格,也可以一主一从。
——–
版本二:
– 阿里云的 OSS 或者 aws 的 S3
– 2 核 4G,服务器,跑后端和数据库,磁盘记得大一些,那就 50G 起,做好磁盘拓展规划吧。
——–
https://www.goclouds.cn/goclouds/page/datamagic/calculator/calculator.jsp 这个是 aws 的价格计算器。
阿里云自带的价格计算器还行。
其他腾讯云、华为云等没用过。
eason1874 2
eason1874 2019-11-01 15:18:42 +08:00
图片站,还擦边球,那当然是用国外厂商的机器啊,再套个 CF,牺牲个别用户的访问速度换取低成本大带宽。
ivanfjz 3
ivanfjz 2019-11-01 15:51:47 +08:00
@qyvlik 图片放 OSS 或者 S3 的成本似乎蛮高的和服务器差不多
ivanfjz 4
ivanfjz 2019-11-01 15:52:02 +08:00
@eason1874 是有这个打算呢
Rwing 5
Rwing 2019-11-01 15:53:04 +08:00
擦边球放国内不会请喝茶吗?
qyvlik 6
qyvlik 2019-11-01 16:03:27 +08:00
@ivanfjz #3 用 OSS 或者 S3 主要是图省事,费用也是用多少算多少。
在前期摸索的时候,可以节省费用。
例如 1TB 的资源,如果是弄服务器的话,一开始就得准备 1TB 的磁盘,然后把服务器的带宽临时调大,然后上传资源。搞完后,发现 1TB 的磁盘其实不够,得留一些余量什么的,或者磁盘某些指标都有问题,再去维护这个的话,我是觉得麻烦。
ivanfjz 7
ivanfjz 2019-11-01 17:12:45 +08:00
@Rwing 所以放国外
ivanfjz 8
ivanfjz 2019-11-01 17:13:48 +08:00
@qyvlik 也有道理
Rwing 9
Rwing 2019-11-01 17:21:54 +08:00
@ivanfjz 哦,确实应该放国外,老铁,盈利多少偷偷暴漏一下吧
ivanfjz 10
ivanfjz 2019-11-01 17:30:06 +08:00
@Rwing 老铁,代码还没写完,不求盈利,更重要的是写个自己的项目

准备建个人记录站 购买什么服务器好呢

非程序员,现在买了个.top 的域名,再买个服务器,套个 wordpress 模板就可以跑起来了对嘛 准备买腾讯云的云+校园*低版 这样可以吗

looseChen 2019-10-30 11:01:03 +08:00 ❤️ 1
建议买个配置低的,先把项目跑起来再说。
windyland 2
windyland 2019-10-30 11:04:39 +08:00 via Android ❤️ 1
国内服务器需要备案,否则 http 会被阻断并跳转到备案页面
Kilerd 3
Kilerd 2019-10-30 11:22:35 +08:00 ❤️ 1
GitHub 加静态博客 才是长久之道
xenme 4
xenme 2019-10-30 11:23:38 +08:00 ❤️ 1
想自己折腾就买虚拟主机*便宜,或者免费的 GitHub

服务器还是太贵了
kenanremix 5
kenanremix 2019-10-30 11:34:13 +08:00
@Kilerd 那我去折腾下
@looseChen 我看了下配置*低都要 120
@xenme 便宜服务器就行 通过一个网页跳转到其他链接 如 steam weibo ins 等
@windyland 有 vultr 的服务器 但是每次安装 lnmp 的时候就断开连接了
looseChen 6
looseChen 2019-10-30 17:22:43 +08:00
@kenanremix 不用吧,阿里云我记得有 86 一年 t5 的,你如果需要购买,可以进我的团,我把返现退给你
tianyu1234 7
tianyu1234 2019-10-31 07:51:31 +08:00 via iPhone
腾讯云去年 100 一年开车的服务器。1C2G1M50G,刚买的时候性能挺强的,速度也快。现在跑个 WP 都堪忧。
LiJie 8
LiJie 2019-11-02 14:20:31 +08:00
境外服务器吧,自在很多。性价比不必境内差。
ooobsidian 9
ooobsidian 2019-11-03 11:05:54 +08:00
就阿里云的学生机吧,10 元 /月
bzmoo 10
bzmoo 2019-11-04 15:11:24 +08:00
@looseChen 今天折腾大半天,还是决定买 3 年 T5 那个,就个人记录应该够用了,麻烦给个团链接吧,不需要返现~

looseChen 2019-11-04 21:57:32 +08:00 via iPhone
@bzmoo
v 站不让发这种链接,
vx: Y2hlbmppbnlhbmc4MzIyMDc=

这是 base64
chinesestudio 12
chinesestudio 2019-11-05 23:44:31 +08:00 via Android
还是买个虚拟机吧 别人又多了一个肉鸡
looseChen 13
looseChen 2019-11-06 09:42:38 +08:00
@bzmoo 老哥,你能收到我的回复吗,我怎么感觉我被降权了
leffz 14
leffz 306 天前
看你的服务器要求不高,选*低配的就行了

基于 Windows Server 2019 混合 Docker for windows 搭建 Nextcloud 简易攻略

环境:
物理主机系统:Windows server 2019 Datecenter (v1809, 17763.805)
Docker:Docker for windows 2.1.0.4 (Engine: 19.03.4, Compose: 1.24.1)
MySQL:MySQL for win64 8.0.18 Community Server
Nginx:Nginx for windows 1.16.1
Nextcloud:17.0.0 (hub.docker.com/_/nextcloud, nextcloud:latest, nextcloud:apache, OS:Linux/amd64)
可选附加:
Onlyoffice-document-server: https://hub.docker.com/r/onlyoffice/documentserver, tag:latest
redis: https://hub.docker.com/_/redis, tag:latest
总之除了 Nextcloud,附加的 onlyoffice-document-server 和 redis 之外,其余均为基于 windows 的软件

Nextcloud 镜像的选择:在官方 Docker 页面中主要版本有默认的 Apache 版和采用容器化 Nginx 的 FPM 版,在我个人实际搭建过程中 FPM 版的 Nginx 和宿主机 windows 之间隔着一层 NAT,配置调试起来显得十分麻烦,故选择运行起来更简单的 Apache 版

Docker for windows 安装是全自动创建 Docker Host 的 Hyper-V 虚拟机,网络使用 NAT 转发,Host IP 为 10.75.0.1,Container IP 为 10.0.75.0

MySQL Community 创建好供 Nextcloud 使用的 utf8mb4 编码的数据库(database),并设置好相关的用户名和密码,也可以直接使用默认的 root 账户,记得要修改密码

NextCloud 和 Nginx 的搭建后续重点讲述

重点讲述:
Nextcloud 容器:
这个其实百度和谷歌上有一大批的教程,只是个人在实际环境运行中出现了各种各样的小细节问题,还有更多的是这些教程大多数都过时了,当然接下来的所有讲述都是仅供参考,毕竟每个人的运行环境都不同

Compose 文本内包含了 redis 缓存容器和 onlyoffice-document-server 文档服务器容器配置,觉得有用请自取

我个人将一些比较重要的文件和 log 通过 volume 挂载到物理系统 windows server 的 D 盘中,Nextcloud 则是直接将整个 PHP 程序和数据文件夹 /var/www/html 转移到 D:/Docker/nextcloud 中,方便以后直接使用 windows 管理文档

nextcloud 容器用的 “wyxls/nextcloud:full” 镜像是我自建的,Nextcloud 的官方镜像默认不带 smbclient 和 crontab,会影响到外部存储挂载 APP 使用 (因为我主要 windows 的 smb 共享),于是我根据官方提供的 Dockerfile 自建了镜像并上传到 docker hub,不需要的话可以改成 nextcloud 官方的 image ( https://hub.docker.com/_/nextcloud)

Dockerfile example:( https://github.com/nextcloud/docker/blob/master/.examples/dockerfiles/full/apache/Dockerfile)

version: ‘3’
#初始化网络模块,为了让 Nextcloud 和 onlyoffice+redis 协作
networks:
nextcloud:
#services 以下都是容器
services:
#redis 容器,暴露 6379 端口供其他容器使用
redis:
image: redis
container_name: redis
hostname: redis
restart: always
networks:
– nextcloud
expose:
– 6379
#nextcloud 容器,宿主机 10000 端口转发 80 端口访问
nextcloud:
image: wyxls/nextcloud:full
container_name: nextcloud
restart: always
depends_on:
– redis
environment:
– UID=1000
– GID=1000
– UPLOAD_MAX_SIZE=5G
– APC_SHM_SIZE=128M
– OPCACHE_MEM_SIZE=128
– CRON_PERIOD=15m
– TZ=Aisa/Shanghai
– NEXTCLOUD_TABLE_PREFIX=oc_
volumes:
– D:/Docker/nextcloud:/var/www/html
ports:
– 10000:80
networks:
– nextcloud
#onlyoffice 容器,宿主机 10005 端口转发 443 端口访问,在 nextcloud 的 onlyoffice 设置里必须以 https+宿主端口访问
onlyoffice:
container_name: onlyoffice
image: onlyoffice/documentserver:latest
stdin_open: true
tty: true
restart: always
depends_on:
– nextcloud
volumes:
– D:/Docker/onlyoffice/document_data:/var/www/onlyoffice/Data
– D:/Docker/onlyoffice/document_log:/var/log/onlyoffice
– D:/Docker/onlyoffice/document_fonts:/usr/share/fonts/truetype/custom
– D:/Docker/onlyoffice/document_forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten
ports:
– 10005:443
networks:
– nextcloud
在 Docker 容器中运行的 Nextcloud 默认以 root 权限运行所有程序,所以访问时会提示设置权限 chmod 0770,但在我个人实践中无论是 chown 还是 chmod 都无法解决这个问题,后来还是强行忽略文件权限检查

在 /var/www/html/config/config.php 中加入以下一行:

‘check_data_directory_permissions’ => false, #检查数据目录权限
此外别忘了还要添加 Trusted_Domains,不然 Nextcloud 的 Web 端无法访问:

‘trusted_domains’ =>
array (
0 => ‘example.com’,
1 -> ‘localhost’,
),
Nginx:
由于 Docker for windows 是基于 Hyper-V 虚拟机模拟出的 Linux/amd64 系统,相当于物理 windows——Hyper-V 虚拟机( Docker Host 宿主机)——Docker Container (容器)两层 NAT 网络,所以需要使用 Nginx 当中间人进行反向代理,下面是我个人配置的 conf,仅供参考

因为我个人的 Windows Server 内网可以直接通过 SMB 访问管理文件,而 Nextcloud 只进行外网访问,所以我只做了 HTTPS 监听+反向代理,有内网 HTTP 访问需求的可以将 SSL 相关部分注释掉

原本在反向代理 proxy_pass 段有 connect, read, send 等 timeout 限制,但后来发现添加后网页访问和 windows 客户端同步变得异常缓慢,而且频繁报错,故删除

server {
listen 10002 ssl; #Nginx 监听端口
server_name example.com localhost 192.168.x.x; #域名, IP, 本地地址都可以填写
root D:/nextcloud; #nextcloud 目录
index index.php;

ssl_certificate D:/SSL-Certificates/fullchain.cer;
ssl_certificate_key D:/SSL-Certificates/private.key;
ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

#以下部分为隐藏 header, 为了解决 nextcloud 自检问题
proxy_hide_header Strict-Transport-Security;
proxy_hide_header X-Content-Type-Options;
proxy_hide_header X-Robots-Tag;
proxy_hide_header X-Frame-Options;
proxy_hide_header X-Download-Options;
proxy_hide_header X-Permitted-Cross-Domain-Policies;
proxy_hide_header Referrer-Policy;
proxy_hide_header X-XSS-Protection;

add_header Strict-Transport-Security “max-age=31536000; includeSubDomains; preload” always;
add_header X-Content-Type-Options nosniff;
add_header X-Robots-Tag “none”;
add_header X-Frame-Options “SAMEORIGIN”;
add_header X-Download-Options “noopen”;
add_header X-Permitted-Cross-Domain-Policies “none”;
add_header Referrer-Policy “no-referrer”;
add_header X-XSS-Protection “1; mode=block”;

client_max_body_size 10G;
fastcgi_buffers 64 4K;
fastcgi_hide_header X-Powered-By;

location / {
proxy_pass http://localhost:10000/; #反向代理地址
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location = /.well-known/carddav { #解决自检 carddav 未正常配置解析提示问题
return 301 $scheme://$http_host/remote.php/dav;
}

location = /.well-known/caldav { #解决自检 carddav 未正常配置解析提示问题
return 301 $scheme://$http_host/remote.php/dav;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
deny all;
}

location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}

}
在初步搭好 Nextcloud 后实际使用中经常出现访问超时,原因是 Nextcloud 在反向代理中可能会无法侦测正确的协议,需要强行覆写( Nextcloud 默认 latest 镜像用 Apache 作为 Web server 监听 HTTP 80 端口)

‘overwriteprotocol’ => ‘https’,
额外部分:
Onlyoffice-document-server:
Nextcloud 官方提供连接 onlyoffice 服务的 APP,与 onlyoffice 对接后能实现 Nextcloud 内通过 Web 访问直接打开并编辑 office 相关文档 (pptx, xlsx, docs 等),通过 Docker 可以一键配置

version: ‘3’
services:
onlyoffice:
container_name: onlyoffice
image: onlyoffice/documentserver:latest
stdin_open: true
tty: true
restart: always
depends_on:
– nextcloud
volumes:
– D:/Docker/onlyoffice/document_data:/var/www/onlyoffice/Data
– D:/Docker/onlyoffice/document_log:/var/log/onlyoffice
– D:/Docker/onlyoffice/document_fonts:/usr/share/fonts/truetype/custom
– D:/Docker/onlyoffice/document_forgotten:/var/lib/onlyoffice/documentserver/App_Data/cache/files/forgotten
ports:
– 10005:443
networks:
– nextcloud
证书安装:在 /var/www/onlyoffice/Data 中建立”certs”文件夹并将 SSL 证书及私钥以”onlyoffice.crt”和”onlyoffice.key”保存,或者直接在 yml 中 environment 环境参数添加,在 Docker-Settings-Shared Drives 设置共享后可以直接使用 windows 物理路径指定,比如:D:\SSL-certificates\onlyoffice.crt

environment:
– SSL_CERTIFICATE_PATH=证书路径
– SSL_KEY_PATH=私钥路径
通过访问 https://example.com:10005 可以查看 Document Server 运行状况,显示 Document Server is running 表示成功

*后在 Nextcloud 内设置 Document Editing Service address 为 https://example.com:10005,如果页面下方出现 settings 一类选项则表示已成功连接

Redis:
Nextcloud 官方推荐使用 Redis 缓存 Nextcloud,我自己也不太懂原理,但官方既然推荐了就一起部署上啦

version: ‘3’
services:
redis:
image: redis
container_name: redis
hostname: redis
restart: always
networks:
– nextcloud
expose:
– 6379
记得要在 Nextcloud 对应的 config/config.php 中添加相关内容

‘memcache.local’ => ‘\OC\Memcache\APCu’, #redis
‘memcache.distributed’ => ‘\OC\Memcache\Redis’, #redis
‘memcache.locking’ => ‘\OC\Memcache\Redis’, #redis
‘redis’ => array( #redis
‘host’ => ‘redis’, #如果 redis 部署在物理机上填 localhost,这里由于 redis 和 nextcloud 在同一网络 nextcloud 内,所以可用 redis 代替
‘port’ => 6379,
),
结语:
onlyoffice 目前我个人测试只能在 Docker 内部 Nextcloud 使用,详细原因猜测是 onlyoffice 内置的 Nginx 没正确配置监听或允许外部网络域名访问(反正我软路由的另一个 Nextcloud 对接时显示 Connetion refused )

我凭借着记忆将大致的搭建过程写了出来,难免会有所纰漏,烦请各位朋友查漏指正,有什么问题可以回复交流

此外如果对过程中任何一部分有修正改进的建议,请务必告诉我,我对 Nginx、PHP、MySQL 参数调优真的是一窍不通

牢骚话:

有人可能会问为什么不干脆用 Linux 物理系统来搭,没辙啊,老爸只会用 windows,老妈想着吃饭时间连上去看 iqiyi 的电视剧,家里其他人又想摆一台公用的共享 NAS,我自己对 centOS 又不是特别熟悉,*后翻了一大堆的论坛帖子、网站文章自己摸索,目前也就只能这样先用着了

其实*关键是没钱买群晖,而且家里人的要求比较杂,群晖不能很好地满足,于是这份攻略就诞生了

曾经想过 ESXi 6.7 组建 FreeNAS + centOS + Docker (Nextcloud)+ Windows 7 的大虚拟机,把路由 LEDE 也虚拟化,从此就可以把那台软路由也扔掉,但后来发现搞不定 N 卡直通后给 Windows,重启虚拟机就带着 ESXi 一起死机的问题。据谷歌搜索说是因为 ESXi 6.7 在显卡*次直通给虚拟机后关机时没能正常 reset 显卡状态,导致第二次虚拟机启动时显卡处于正在使用状态而带着宿主机一起 Boom,折腾了两天还是解决不了,随后我就放弃并滚回去用 windows 了

IntelliJ IDEA中 spring Initializr访问不到?github账号无法登录?提示网络超时?

随着IDEA的兴起,越来越多的人喜欢上了Jetbraints公司开发的软件。
确实IDAE的使用比Eclipse流畅很多,更人性化。

在使用IDEA中经常会用到Spring Initializr和登录github账号,但是经常会发现超时等一系列错误。

怎么解决呢。直接提供我的代理服务器地址

改了服务器域名

代理服务器地址: yumbo.top
端口: 8888
用户名: angel
密码: 123456
使用方式在设置中如下路径查找

%title插图%num

%title插图%num

如果检查连接成功则可以开心玩耍了!

%title插图%num

服务器&浏览器伪装的故事

今天要说的是伪装,为嘛要伪装呢?我想,首先是心虚,不够自信,比如你安全措施做的不够,你怕别人黑你的系统,所以就要伪装。其次呢,我想就是有不可告人的秘密了,比如你有竞争对手总是找你的茬,拦截你,那咋办呢,既要不失风度又要达到期望的目的,这不伪装是不错的选择。

一、对于大站点来说,只要安全做的好,当然可以正大光明的地展露自个的肌肉,所以伪装一词对他们来说根本不适用,首先来看下各大站点暴露服务器banner信息:
1.Google
%title插图%num
2.微软
%title插图%num
3.百度
%title插图%num
4.淘宝网
%title插图%num
5.京东
%title插图%num
6.新浪
%title插图%num
但是对于小点的网站,安全措施一般不够好,这样服务器信息那么暴露,曾经给一个国家单位**会做个小系统,他们的系统经常会受到攻击,当项目要上线的时候,他们的安全措施中有一项就是伪装服务器信息(把tomcat伪装成IIS),方法很简单(参看http://www.cnblogs.com/hsuchan/p/3976654.html),当然这是一种不得已的措施。但是伪装真的还挺有迷惑性的。
这样我就可以把
%title插图%num
直接改为
%title插图%num
当然我这.do的后缀也得去掉那才装更好些。

二、在很多情况下,我们需要在用户访问网站时获取他们的其他信息,比如他们的ip,操作系统,浏览器等等,当然可以从ip中粗略挖掘出用户的地理信息,其实我想说的是UserAgent,即UA信息,那么下面我们还是来看下各大浏览器的UA长的神马模样吧。

1.火狐(真命天子)
%title插图%num
2.Google
%title插图%num
3.IE11
%title插图%num
看了以后,只有一种感觉——头晕,为嘛总是抱Moilla的大腿呢?为嘛360也把自个伪装成谷歌苹果的呢?下面说下360的,至于为嘛UA里总有Mozilla,那又是一段传奇的历史,可以参看:http://www.cnblogs.com/hsuchan/p/3976888.html。 大伙都知道360和百度是个冤家,就我接触到的,在搜索,域名解析(百度有加速乐,360有网站卫士)等业务上都有竞争关系,尤其是国人在谷歌被强了以 后,使用百度的人就更多了,那么使用360浏览器的人使用baidu产品的话就有被拦截的风险,肿么办呢,上面都看到了——把自个伪装成chrome或者 Safari,那就是解决方法,算是之一吧。

以上是个人的一些浅见,欢迎交流。伪装在生活中也无处不在,从服务器的伪装上我们都知道伪装终究不是个办法,做人做事就得自信自强。从UA中,如果无法避免,那么换个方式也是不错的,总之,生活中有些事我们得变通,顺势而为。

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速