
浙江卓见云解决方案工程师,负责为企业规划上云迁移方案和云上架构设计,在网站建设开发和云计算领域有多年经验,专注于Linux平台的系统维护以及应用部署。致力于以场景化的方式让云计算,用更加通俗易懂的方式让更多人体验云计算,让云端的计算更质朴的落地。
能力说明:
掌握计算机基础知识,初步了解Linux系统特性、安装步骤以及基本命令和操作;具备计算机基础网络知识与数据通信基础知识。
阿里云技能认证
详细说明前言 WordPress 可能是很多学习搭建云计算网站的第一课,写了篇 Hello World 就匆匆结束了对 WordPress 的体验。在全球前 1,000 万的网站中,三分之一都使用了 WordPress,像国外的白宫官网、纽约邮报、微软新闻中心、国内的爱范儿等等。因此开源社区的 WordPress 有着大量的开发者贡献代码和思路,帮助我们构建一个强大而成熟的网站。 我们要实现一个架构其实最重要的是三个目标,快、稳和省。 前端访问要快,后端运行要稳,但是实现前两者不能无节制的上升成本,我们要节省成本让利益最大化。。 拆解 那我们把 WordPress 简单拆解一下:WordPress 由 PHP、HTML、CSS、JS和SQL组成。 它的运行非常简单:WebServer —— PHP —— MySQL 因此可以很简单的运行在一台服务器上。 在前期运行它当然没有问题,但是当访问量、文章数上来之后便会力不从心了。 表现就是前后台打开慢,或者是用户频繁按F5就可以让网站出现500报错,因此我们就需要进行架构的优化。同样的,我们自行开发的系统可能也是前期小规模的通过单台服务器即可,但是通过运营人员一次次的努力宣传后,用户量一上来就不行了。 这里有一个很大的误区就是无限的堆叠单台服务器的配置,这在早期物理服务器托管时代比较流行,我买的服务器是双路CPU的,现在只用一颗CPU,后面性能不够了再新增CPU,然后再新增内存条和硬盘。 这样做先不谈架构,在运维上就会变成一场灾难。随着用户量的上升,服务器将越来越不能接受升级、重启等操作带来的业务中断,因为单一系统部署软件复杂,万一一个软件的升级带来的不兼容可能就导致业务崩溃,运维人员维护软件如履薄冰。 单机优化 首先我们需要将单台服务器的性能最大化再考虑后面的架构优化,这是一个环境上线的预先准备工作。 实例配置 操作系统的选择上,整体测试下来不同的系统在云服务器ECS上的表现不一样,我自己的测试是 AliyunLinux 2 和 RHEL/CentOS 是阿里云调教的最好的,可能是阿里用RHEL生态原因,在多核心上BenchMark更好看,同时 AliyunLinux 2 专门为云服务器场景优化,性能可以提升15%左右。 然后在实例类型的选择上,其实 WordPress 并不是很占用CPU(优化后),可以选择入门型这种CPU共享的实例,如t6 t5,有效降低成本。 我们以 WordPress 为例,它是一款 PHP 应用 ,PHP是一个I/O密集型应用,在服务器的选择上保障必要的CPU性能的同时,我们尽可能选择 ESSD云盘,它的时延和每G IOPS 都比SSD云盘和高效云盘表现更好。 在网络上,得益于云计算行业的网络都是BGP网络,各大运营商访问服务器网络都可以获得一致的延时和带宽体验。 但是网络的设计上,很多人都会犯的错误,就是对业务系统对公网IP、私网IP的依赖,一个系统如果无法接受公网、私网IP的变动,会导致系统启动失败、运行失败,这就很糟糕。这会导致你不敢轻易的更换服务器或者IP,轻则无法享受一些采购上的政策优惠,重则会遇到IP因为某些不可抗力不得不改时的束手无策。 Web Server 我们常见的 Web Server 软件有很多,比如说:Apache HTTPD、Nginx、lighttpd、tomcat、LiteSpeed,不同的 Web Server 有着不同的动静态处理性能。 最有名的就是 Nginx 了,它的静态文件处理性能是众所周知的,它有着非常优秀的生态,对于新技术的支持会比Apache HTTPD 好得多,像 Lua支持、Brotli、TLS1.3等都支持的更早更好。所以 Web Server 的选择上 Nginx 是非常不错的选择,还有一些社区的扩展分支如 OpenResty、Tengine 等等。 不过整体使用下来,我发现 LiteSpeedTech 公司的 LiteSpeed Enterprise Web Server (简称LSWS)和 OpenLiteSpeed(简称OLS)会更适合 PHP 应用,它的 LSAPI 运行 PHP 以及 LSCache 对 PHP 应用有着非常好的支持,特别是针对 WordPress、 Magento、Joomla、PrestaShop、Drupal、MediaWiki、Laravel 有着很好的支持。大家可以在 LLStack 体验 LiteSpeed 环境。 非 PHP 应用如 JAVA、Node.JS 还是推荐 Nginx 或它的扩展分支来作为 Web Server。 PHP PHP 的性能调优上尽量选择最新的稳定版,比如说截止发稿PHP最新版是 7.4,那么我们可以使用 PHP7.4 或者 7.3 这两个版本。 目前 PHP 的版本策略是 2+1 模式,即 2 年活跃支持,1年安全支持。PHP 版本越新性能越好,同时安全漏洞也会更少。 PHP 之外,其他语言也是,JAVA 的话很多程序还在 JAVA 1.6 上运行。今年年初 Python2 已经停止官方维护了,但是仍有大量的应用基于 Python 提速的关键是两个缓存机制:字节码缓存和对象缓存。 字节码缓存 当一个 PHP 文件被解释执行的时候,首先是被编译成名为 opcodes 的中间代码,然后才被底层的虚拟机执行。 如果PHP文件没有被修改过,opcode 始终是一样的。这就意味着编译步骤白白浪费了 CPU 的资源。 此时 opcode 缓存就派上用场了。通过将 opcode 缓存在内存中,它能防止冗余的编译步骤,并且在下次调用执行时得到重用。设置 opcode 缓存只需要几分钟的时间,应用便会因此大大加速,实在没有理由不用它。目前 Zend 官方提供的 zend_OPCache 是效率最高的字节码缓存扩展。 对象缓存 有时缓存代码中的单个对象会很有用,比如有些需要很大开销获取的数据或者一些结果集不怎么变化的数据库查询。你可以使用一些缓存软件将这些数据存放在内存中以便下次高速获取。如果你获得数据后把他们存起来,下次请求直接从缓存里面获取数据,在减少数据库负载的同时能极大提高性能。 这个的具体实现会在下面 内存缓存加速 讲到 计算存储分离 当业务系统到一定规模后,数据会变成越来越重要的企业数字化资产。数据的范围很宽泛,首先是最核心的数据库里的数据(结构化数据)这个我们在下个主题讨论数据库的优化,还有就是企业的非结构化数据比如说头像、配图、附件等等。 非结构化数据虽然说并没有数据库来的重要,但是如果数据一旦丢失也会产生严重的影响。试想一个企业OA系统,如果存储的附件全部丢失,意味着这个企业的内部资料全部丢失了。在 WordPress 中,附件最重要的作用就是阅读体验,如果一个网站图片全部丢失读者几乎是没有兴趣进行阅读的。 虽然云服务器的云盘已经有99.9999999%(九个九)的数据可靠性了,但是它的性价比并不高,同时读取附件也会耗费服务器I/O性能。这时候将存储转移到阿里云的对象存储OSS则是最好的选择。虽然云盘支持扩容,但是它的弹性是不够的,比如说我买了1T的云盘,当我用到800G~900G我就会考虑开始扩容了,那么其实我一直会浪费10~15%的容量,而且前期我的容量也不是有高使用率的 对象存储可以做到99.999999999%(十二个九)的数据可靠性,同时没有容量和性能的上限、瓶颈,它最大的特点是按量付费,我使用了851G那么我就支付851G的成本即可,而不是我使用了851G却要支付1T的费用,并且用不到1T我就会要进行扩容。 将存储存放到OSS后,不仅提升了非结构化数据的读取性能还降低了成本。 如何在 WordPress 中使用OSS将本地化存储搬上云端请参考: 《将 WordPress 图像媒体全部迁移至对象存储,降低服务器存储压力》 CDN加速 前面我们讲了将非结构化数据存储到OSS,提升了读取性能还降低了成本,两全其美。 这里 CDN 也可以实现两全其美的事情,那就是在提升访问速度的同时还能降低网络成本。 为什么天猫超市、苏宁、京东购买的自营商品到货会那么快?我可以上午买下午到,半夜买上午到,这样办公白领的购物体验还是提升很多的,这都得益于就近仓储的优势,比如说我要买的商品的制造地是甘肃兰州,本来我要买就得从兰州发货,但通过一些自营电商购买,我在杭州滨江区,那么物流仓储就会从杭州富阳的仓储中心快速分配到末端配送站,然后分配快递小哥帮助我们配送。 CDN 其实也是这个逻辑,将用户要访问的非结构化文件就近存放到CDN的缓存节点,这样用户访问的速度就更快了。我在新疆喀什要访问一个华东1杭州地域的网站,这个跳数和延时都会很大,但是使用CDN后,那我就可以从乌鲁木齐的某个电信机房获取缓存文件,这样我的访问速度和延迟都会降低了。 然后CDN为什么还可以在提速的同时节约成本呢?如果要玩外服的游戏,我购买网游加速器还要花不菲的包月成本,为什么CDN不经帮我加速了,同时还能节省成本呢?这个解释还是可以用快读的模式来,咱们将东西从杭州寄到杭州,和杭州寄到新疆,哪个更便宜?肯定是路径更短的更便宜,网络访问路径短了,自然也能省钱。 WordPress 上使用 CDN 有很多丰富的插件,在OSS中提到的插件也可以直接使用CDN。 CDN 一个是加速非结构化数据的好手,OSS 是存储非结构化数据的大师,所以OSS+CDN是强强联手,非常好的搭档。 在 WordPress 主题目录下的 functions.php 文件中,加入以下代码实现CDN替换功能: //静态文件CDN加速 if ( !is_admin() ) { add_action('wp_loaded','mf8biz_ob_start'); function mf8biz_ob_start() { ob_start('mf8biz_aliyun_cdn_replace'); } function mf8biz_aliyun_cdn_replace($html){ $local_host = 'www.mf8.biz'; //源站域名 $aliyun_host = 'statics.mf8.biz'; //CDN加速域名 $cdn_exts = 'css|js|png|jpg|jpeg|gif|ico'; //扩展名(使用|分隔) $cdn_dirs = 'wp-content|wp-includes'; //目录(使用|分隔) $cdn_dirs = str_replace('-', '\-', $cdn_dirs); if ($cdn_dirs) { $regex = '/' . str_replace('/', '\/', $local_host) . '\/((' . $cdn_dirs . ')\/[^\s\?\\\'\"\;\>\<]{1,}.(' . $cdn_exts . '))([\"\\\'\s\?]{1})/'; $html = preg_replace($regex, $aliyun_host . '/$1$4', $html); } else { $regex = '/' . str_replace('/', '\/', $local_host) . '\/([^\s\?\\\'\"\;\>\<]{1,}.(' . $cdn_exts . '))([\"\\\'\s\?]{1})/'; $html = preg_replace($regex, $aliyun_host . '/$1$3', $html); } return $html; } } 站库分离 早期我们可以将数据库和应用放在同一台服务器上运行,但是前面讲到一旦到了后期就会出现运维的灾难。 数据库是一个业务系统的重中之重,特别是针对一些金融、电商类的场景,如果数据库一旦出错轻则业务暂停,重则会导致业务崩快。例如移动支付场景肯定不能接受数据库损坏的瞬间,买家已经付款并银行卡已经扣费,但是卖家并没有收到款项,这就对业务造成过影响了,如果这个消费数值是几亿元的量级,就有很大的问题了。 站库分离是很重要的步骤,将数据库和应用程序的运维分离开来。但是云计算时代,有了云数据库,这个工作就会变的愉快很多。首先调试数据库其实是比较难的,现在很多开发同学都会担任一些DevOps,但也只是开发者和运维的结合,但很少有同学还会点亮DBA(数据库管理专家)的技能,比如说设计一个数据库,我们要规划备份方案、调优方案等等,规划多少的RTO(丢多少)和RPO(丢多久)等等,让一个非专业的同学头大,同时企业聘请一个专业的DBA也会增加用人成本。 而云数据库就是一个数据库开箱即用的方案了,我们不用担心数据库遇到高危漏洞时的安全风险,云数据库做出升级方案,和云监控搭配的监控图标也可以很直观的反馈数据情况,以及 CloudDBA 功能,基于专家的规则经验,自动判断数据库问题。 云数据库的优势还有很多,篇幅限制就不展开讲太多了,大家可以去了解一下云数据库和PolarDB。 后者在完美兼容 MySQL、PostgreSQL 和高度兼容 Oracle 的技术上实现了更高的性能,MySQL 最高可达到 600%的性能提升,但相较RDS成本仅提升10%。 扩展工具: DTS,DTS 是一款支持多种数据源的可视化数据迁移工具,可以帮助我们快捷直观的将自建数据库的数据迁移至云数据库,也可以做数据同步订阅使用。 DBS,DBS是一款专业型的数据库备份工具,可以快捷的将数据库备份至OSS中,实时增量备份实现秒级RPO。 在 WordPress 中实现站库分离很简单,将源站数据库上的数据通过 DTS 或者备份恢复的方式迁移到云数据库即可。然后修改 wp-config.php 文件,将define( 'DB_HOST', 'localhost' );中的 localhost修改成云数据库的连接地址即可。 内存缓存加速 WordPress 使用 MySQL 数据库来缓存内部应用程序对象(导航栏、菜单栏等),生成这些对象的资源成本成本很高。由于数据库还处理页面请求的查询,因此它可能是最常见的性能瓶颈,并且经常导致加载时间增加。 Redis 是一个开源的键值对存储数据库,既可以用作内存级存储,也可以用作缓存。Redis是一种数据结构服务器,可以单独作为 NoSQL 数据库服务,也可以与关系数据库(如MySQL)结合以加快访问处理速度。当涉及对象缓存时,在像WordPress这样的动态网站上使用,该对象缓存可缓存重复的访问内容。 因为 Redis 是基于内存的服务,内存访问的速度和效率比就算是给予 NVMe SSD 的磁盘也来的更快,所以使用 Redis 来做为 PHP 的对象缓存来加速 WordPress 的效率会更好,访问速度更快,这在文章数极大的场景下网站的使用体验会好很多。 Redis 我们可以自建也可以购买阿里云的云数据库,早期如果成本考虑是可以自建在自己的服务器上的。如果是本机的 Redis Server,建议使用 UNIX Socket 的方式效率会比 TCP 来的更高。 在 WordPress 使用 Redis 作为对象缓存,需要 PHP 安装实现 phpredis 这个 PECL 扩展,不然的话会基于 predis 方式实现,这个效率没有 PECL 扩展效率来的高,然后安装相关的 Redis 对象缓存插件即可。 相关教程推荐: 《WP 使用走 Unix Sockets 的 Redis 作为对象缓存》 《使用云数据库 Redis 版为 WP 做缓存》 还有将 Redis 缓存应用到 Web Server 的方式,减少对 php 的请求来进一步提速,这适合能接受静态页面的CMS类网站,不太适合动态内容多的网站: 《用 Nginx+Redis Cache 给 WordPress 提速》 《LiteSpeed Cache for WordPress – 免费的超性能企业级缓存插件》 《为 WordPress 开启 LS-Cache 缓存》 负载均衡 云服务器的特性主要就是体现在横向、纵向的弹性扩容上,纵向的话其实很好理解就是我们单台 ECS 配置不够用了马上升级一下配置,不过这种场景比较适合于一个网站稳健的发展状态,而且波动不大。或者说服务器有较长时间的资源占用而非短时间的,比如说台风网肯定是 5~10 月这段时间访问量较高,那么我们就可以在春末的时候升一段配置,夏天再升级一段配置,初秋稍微降一点,秋末降至平稳状态。 但是如果我们是一个电商网站突然运营想搞一个秒杀活动,一个游戏公司要组织一场在线PK大赛。 这种情况下呢,都是瞬时遭遇的流量高峰和应用高占用,过了这段时间突然就回到了平稳的状态。如果我们一直以能处理瞬时高峰的配置长时间运行势必会造成大量的资源浪费,这时候就需要一个按量的横向扩容了。 横向扩容也就是增加服务器数量而非升级配置,但是我们需要将数个服务器整合成一个服务器集群,通过均衡负载 SLB 让服务器集群看起来就像还是“一台”服务器在进行操作,当然了均衡负载也不一定需要使用 SLB,也可以自建或者采购其他的均衡负载产品。然后每一台服务器都应该做到无状态服务,不可以保存应用的状态信息(如 session)和相关数据(如数据库、日志等)。如果应用中有保存状态信息需求,可以考虑把状态信息保存到伸缩组之外的独立的状态服务器、数据库(如 云数据库)和集中日志存储(如 日志服务)中去。 很多教程可能一开始就是负载均衡一步到位,这样对运维是有一定要求的,不利于新手架构学习。在做好计算存储分离、站库分离、内存加速(Redis共享session)后再做负载均衡的难度会显著降低。 相关教程推荐: 《配置自动横向扩展的同城双中心服务集群》 《使用SLB+DNS轻松实现网站的IPV6双栈兼容》 搜索请求优化 WordPress 默认搜索方式是LIKE 和 %query% 等查询的组合。其不允许进行模糊搜索,如果有用户犯了简单的拼写错误,就获得有效的搜索。WordPress 的另一个限制是,它只能搜索和匹配标题和内容中的单词,而不能与类别和分类法进行匹配。 同时搜索是非常消耗数据库资源的一种方式,并且搜索结果不会进行缓存,如果你想攻击一个WordPress网站,只需要对一个搜索结果页频繁进行F5就可以让数据库资源消耗到瓶颈后停止服务,这样整个WordPress网站都将无法提供服务。 同理其他应用程序也会遇到这个问题,因此我们会选择使用专业的搜索引擎来进行索引,并提供给用户更专业的结果。目前第三方的搜索引擎方案有百度的站内搜索(很久没更新,不支持HTTPS)、谷歌的CSE(国内无法访问)。因此我们可以选择自定义性和功能更丰富的开源搜索引擎 Elasticsearch。 在 WordPress 上接入使用 Elasticsearch 是非常方便的,0 coding。只需要安装 ElasticPress 插件并编辑 wp-config.php 文件: /** ElasticPress */ define( 'EP_HOST', 'http://127.0.0.1:9200' ); 定义一下 ElasticSearch 的地址即可使用。 安全架构 安全也是服务器架构中非常重要的一点,只要是暴露在公网上的业务就有可能成为被攻击的对象,因此我们需要积极的构建云上安全体系进行防御常见的安全攻击,同时也要保障自己的云产品不被劫持为肉鸡对外发送攻击加重互联网安全态势。 其实攻击者视角是来自方方面面的,360°无死角的盯着咱们的业务进行攻击,而安全又是一个典型的木桶的短板模型,即便其他的安全措施做的再好,只要存在一个明显的安全短板,就会导致整个业务系统的不安全。而防守者视角往往是单一的,通常是见招拆招式的的,甚至有些时候当安全事件已经发生了,很多人都无法及时做出对安全事件的反应。 这是我根据阿里云安全团队安全三步走的基础上修改来的云上安全体系构建路线图,本文我们重点聚焦云上安全第0步——安全基础建设。因为很多云上用户在没有做好第0步的时候就开始购买一些第一二步云安全产品,就会出现木桶短板效应,花费了高昂的费用却没有起到响应的安全作用。 推荐相关阅读: 《不花一分钱构建阿里云上第零步安全体系》 当然了在 WordPress 上也有很多可以免费体验的PHP软件级的WAF插件,帮助防御一定的攻击,提升网站安全性,不过相比阿里云WAF这样的专业性WAF肯定是有所欠缺的。 插件: SiteGuard WP Plugin、NinjaFirewall、WordPress Security、Wordfence Security 备份机制 很多用户会认为租用的阿里云ECS云服务器的云盘有 99.9999999% 的数据可靠性,这个是不是就意味着我放在云上的数据不会丢。这时候客户还会意识到说数据的三盘副本,一些客户在文件误删的时候就会说:“你们阿里云有三盘副本,我现在这个云盘里的文件我不小心误删了,那另外两个盘上的副本快取出来帮我恢复一下。” 其实这时候就有必要澄清一下,三盘副本主要是为了防止系统错误导致的文件丢失的情况,并不能防止因为误删除或者病毒进程删除文件导致的逻辑错误,具体如下图: 我们需要积极的通过构建快照来解决因为逻辑错误导致的数据丢失的问题。 阿里云的快照操作很方便,是完全图形化的且是中文界面的,并且支持手动或者自动方式创建快照,并且支持快照制作成镜像后跨地域复制到其他地域进行多维度容灾。同时,快照备份是存储在更高可靠且更具性价比的对象存储OSS上的,这个成本是非常可观的。 我们还可以单独将网站文件备份到 OSS 和 NAS 这样的更廉价存储的地方,做增量或者全量的备份。在数据备份上还是和数据库的数据可用性一样,规划设计RTO(丢多少)和RPO(丢多久),在这个道路上还是一个很长的路。 推荐阅读: ECS快照帮助文档 | ECS快照使用视频教程 《使用 AliCloud Duplicity 将服务器文件备份至 OSS》 在 WordPress 也有很多备份插件,支持FTP和S3协议(兼容阿里云OSS),可以用作方便的备份方式: UpdraftPlus、BackWPUp、BackUpWordPress 等等 日志分析 服务器日志很多人可能都将它看作是“鸡肋”,食之无用、弃之可惜,觉得他很占地方。很多存储买的比较小的服务器,它的磁盘经常会以为存储大量日志被占用,导致I/O异常,然后人会选择关掉日志。 其实日志有很多游泳的信息,包括服务器的状态、相关软件的报错信息、访客数据、访客行为,以及一些安全审计等等。日志很多人可能直接通过编辑器甚至是记事本直接打开,那这样用处确实是不大,所以一个好的架构师一定要学会分析日志,利用好日志。 一般来说 WordPress 日志包括:Web Server日志(Nginx、Apache、LiteSpeed 的日志)、PHP日志、数据库日志、邮件日志(如果有)、操作系统日志、WordPress Debug 记录和相关插件日志等等。 我们可以用阿里云的日志服务或者ELK三剑客之一的Logstacsh来进行分析,WordPress 日志开启,还需要修改 wp-config.php 文件,加入下面语句: define( 'WP_DEBUG_LOG', true ); //开启debug日志 define( 'WP_DEBUG_DISPLAY', false ); //隐藏debug消息到页面输出 define( 'SAVEQUERIES', true ); //将数据库查询保存到数组中,可以用于帮助分析,选填 如果大家不想用更专业日志分析工具,也可以通过如下插件快速实现,只不过专业日志是存储到服务器的,这个成本会比存储到 OSS 高的多: WP Security Audit Log、Simple History、User Activity Log、WP Log Viewer、Log-Hero 结语 架构的学习是漫漫长路,很多新人在学习架构的时候都会反馈缺少实践的平台,得益于 WordPress 丰富的生态,我们可以很好的利用它来结合各大软件,我这里指出的也只是一些基础思路,也欢迎大家指正错误的地方。 架构也是不是一定要套用的,也不是一尘不变的。比如说 WordPress 作为 CMS 的场景下可能不太有必要应用大数据,但是当 WordPress 安装 WooCommerce 插件成为一个电商网站后,其实就有可能有大数据个性化推荐的需求了。 我也看到也有 WordPress 网站被改造成一个咖啡自助系统,在完成点单后传输到物联网咖啡机上自动作出咖啡来,那么就可能一些物联网架构的需求了。 布置两个小作业,相关的思路还可以套用在同样是PHP 的 Discuz 和 微擎 上,根据我的实践这两个软件都可以实现上述架构。 可以在阿里云大学的 30分钟学会搭建高可用网站 和 零基础云上搭建高可用网站
ICANN正在征集您对.COM域名涨价的意见 ICANN(互联网名称与数字地址分配机构)目前正在征集您对《关于.COM域名注册管理机构协议拟议修订3》的公开意见。 威瑞信(Verisign)是最高级别的.COM域名注册管理机构,也是唯一一个域名注册管理机构,从而威瑞信有效地垄断了.COM域名的注册。当您通过注册商(例如在阿里云、GoDaddy或聚名网)注册或续费.COM域名时,该注册商将支付7.85美元注册或续订费用给威瑞信。据估计,威瑞信基础设施和注册管理的实际成本为每个域名每年2.5至2.9美元之间,高于这个价格之上的部分都是威瑞信的纯利润。其他注册商表示,他们也可以以更低的价格提供相同的服务。 ICANN授予威瑞信永久运营.COM域名注册管理的权利,这意味着威瑞信无需与其他注册商价格竞争,就可以轻松控制.COM域名。任何涨价行为背后必定会让最终用户成本上涨。ICANN工作人员已确认威瑞信.COM域名在未来四年内的注册价格在7.85美元基础上每年上涨7%,至2024年.COM价格将会比当前提高31%。 ICANN应该为公众利益而行动,并对公众意见做出回应。无论您认为涨价是合理的还是不合理的,不管您支持涨价还是反对涨价,在此ICANN公开意见征集期,是您与ICANN分享意见的最佳机会。您可以在点击这里,这里和这里了解有关此问题的更多信息。 拜托各位填写表单生成邮件模版,然后复制邮件模版到您的邮箱发送给ICANN,让ICANN了解您关于.COM域名涨价的意见。 ICANN意见征集截止到北京时间2020年2月15日上午8点整,希望大家在此之前向ICANN表达意见。 我们可以做的行为是发出我们的意见邮件给 comments-com-amendment-3-03jan20@icann.org ICANN 官方公告:https://www.internetcommerce.org/comment-com/ 欢迎使用有邮件生成模板:https://www.mf8.biz/against-com-price-increases/
背景 7月17日,国家互联网应急中心发布的《2018年中国互联网网络安全报告》显示: 近年来,云作为互联网基础设施在我国迅速发展,越来越多的业务场景逐步向云端迁移。在当前云服务使用过程中,云服务商和云用户对云的安全性(即避免危害云的网络攻击)和可控性(即避免利用云发起网络攻击)关注较少。 根据CNCERT/CC监测数据显示: 2018年11-12月,在安全性方面,虽然境内云IP地址感染木马或僵尸网络的概率较低,但是由于云上承载的服务越来越多、越来越重要,在其他攻击方面境内云则成为攻击的重灾区;在可控性方面,由于云服务获得的便捷性和低成本,越来越多的黑客倾向于利用云主机进行网络攻击。因此,云服务商和云用户应加大对网络安全的重视和投入,分工协作构建网络安全纵深检测防御体系,保障云的安全性和可控性,共同维护网络空间安全。 中国最大的云计算平台不带之一的阿里云在IDC报告中2018年下半年,阿里云在国内基础设施及服务占比高达42.9%,由于基数很大,因此阿里云上的用户也承受了国内公有云一半以上的攻击,下图是根据 威胁猎人 的报告绘制的,2018年上半年黑灰产对公有云的攻击次数中阿里云占比超过了55.32%。 即便是比例并不大,但是阿里云上也存在部分服务器被劫持为肉鸡的情况对外发送攻击,因此也会出现如下图的情况: 甚至有客户还会怀疑是不是阿里云想让我购买高昂的云安全类产品因此主动攻击我?当然了其实这种论调在各个云平台都有发生。 介绍 只要是暴露在公网上的业务就有可能成为被攻击的对象,因此我们需要积极的构建云上安全体系进行防御常见的安全攻击,同时也要保障自己的云产品不被劫持为肉鸡对外发送攻击加重互联网安全态势。 其实攻击者视角是来自方方面面的,360°无死角的盯着咱们的业务进行攻击,而安全又是一个典型的木桶的短板模型,即便其他的安全措施做的再好,只要存在一个明显的安全短板,就会导致整个业务系统的不安全。而防守者视角往往是单一的,通常是见招拆招式的的,甚至有些时候当安全事件已经发生了,很多人都无法及时做出对安全事件的反应。 这是我根据阿里云安全团队安全三步走的基础上修改来的云上安全体系构建路线图,本文我们重点聚焦云上安全第0步——安全基础建设。因为很多云上用户在没有做好第0步的时候就开始购买一些第一二步云安全产品,就会出现木桶短板效应,花费了高昂的费用却没有起到响应的安全作用。 边界安全 专有网络 专有网络VPC(Virtual Private Cloud)是基于阿里云构建的一个隔离的网络环境。每个专有网络(也就是每个VPC)之间逻辑上彻底隔离。 专有网络是网络容器专有网络VPC是一个网络容器,用户可以免费开通,开通后再在这个容器中“放置”需要的云产品基本组件包含路由器和交换机。 专有网络是用户私有的专有网络VPC是用户私有的,和其它VPC默认都是隔离的,和经典网络也是隔离的。 专有网络是用户在云上具备网络管理能力的基础使用专有网络VPC,用户可以自主进行网络规划,比如自定义网段,划分子网,管理路由,管理公网出入等等。 相较于早期的经典网络,专有网络拥有更佳丰富的网络化产品和自定义性的同时,也更安全可靠,早期的经典网络是一张大内网,不用的阿里云用户同一地域即在同一内网内,隔离性极差。 同时在专有网络下可以使用EIP、NAT网关等产品,当服务器遇到攻击后,通过弹性公网IP(EIP)产品可以快速的变更服务器IP防止一些基于IP的定向攻击。一些用户遇到攻击后再购买高防IP、Web应用防火墙等产品会发现并不起作用,很大原因是因为服务器源站IP并没有进行及时修改,即便使用了安全产品,攻击者依旧知道最终的源站服务器IP是多少。 下面是VPC的宣传视频: 扩展阅读: VPC帮助文档 | VPC最佳实践 安全组 安全组是一种虚拟防火墙,具备状态检测和数据包过滤功能,用于在云端划分安全域。您可以通过配置安全组规则,允许或禁止安全组内的ECS实例对公网或私网的访问。 如果将咱们的服务器比作一个学校的话,这座学校一开始没有围墙,学校师生可以任意出入,其他人员也可以自由出入学校,这样学校就容易出现一些危险人员(病毒、攻击)进入学校进行破坏。因此我们就需要建立一个围墙,这就是我们的安全组开启后不开放任何端口的情况。 这时候我们需要开放一些出入口方便师生上下学,因此便会设立学校的大门,这就是我们对外开放的端口(80端口、443端口),一些重要的端口例如校长办公室(22端口),我们需要更严格的措施,即需要核对人员身份,及只有对应的IP才能访问该端口。 很多用户早期往往为了方便会开放全部协议并向全部端口即0.0.0.0/0开放,这严重违背了安全组的初衷。 安全组作为一个提供中文界面的图形化防火墙产品,已经大大降低了我们使用防火墙的成本,像 iptables、FireWallD 其实对新手来说命令行还是英文的就很难学。 例如在云上非常常见的例用 Redis 未授权访问漏洞进行加密勒索的事件,如果我们及时的通过安全组限制 Redis 被公网访问的情况就可以很好的避免相关安全事件的发生。 针对安全组,我们仅开启80、443这样的通用端口向用户进行开发,针对22、3389等端口应当仅面向自己或者公司网络的固定IP开放。 下面视频是安全组的宣传视频: 扩展阅读: 安全组帮助文档 | 安全组最佳实践 | 操作视频 访问控制 访问控制RAM提供非常丰富的阿里云上的服务和资源的管理能力: 使用RAM,您可以创建、管理RAM用户(比如员工、系统或应用程序),并可以控制这些RAM用户对资源的操作权限。当您的企业存在多用户协同操作资源时,使用RAM可以让您避免与其他用户共享云账号密钥,按需为用户分配最小权限,从而降低企业信息安全风险。 很多用户在使用RAM子账号的时候往往会创建一个子帐后拥有管理一整个大产品的权限,这样虽然方便却留下了非常大的隐患。 例如这里就为了图方便将整个OSS的访问管理能力开放给子账户,特别是一些代码解释型语言填写到 config 的AccessKey 和 AccessKeySecrt 就有可以会暴露,这样的话当我们OSS上部署了多个Bukcet后,就有可能会被非法利用,导致文件被删除或者被下载的情况。 同样的,还有部分云上用户会开放测试账号给一些外包的运维部署人员,为图方便会创建非常简单的密码对外提供,或者部署完成后没有及时的回收并删除账号。 我就遇到过一个朋友因为这样,导致了ECS服务器被充值系统盘并删除了所有快照。 扩展阅读: 访问控制帮助文档| 访问控制最佳实践 | 访问控制视频教程 操作审计 操作审计(ActionTrail)会记录您的云账户资源操作,提供操作记录查询,并可以将审计事件保存到您指定的日志服务Logstore或者OSS存储空间。利用ActionTrail保存的所有操作记录,您可以实现安全分析、资源变更追踪以及合规性审计。 操作审计是一款开箱即用的产品,在不创建追踪日志存储到OSS的情况下最多可以查看近30天的用户操作审计日志。 如上图可见,当我操作了更新 AccessKey 后就立马有了响应的日志,包括事件源、事件时间、源IP等信息,可以让我们很好的进行操作的溯源审计,满足安全合规的需求。 扩展阅读: 操作审计帮助文档 | 操作审计最佳实践 数据安全 很多用户都觉得上了云之后那么阿里云便会全权负责用户的数据和业务安全,因此我的很多销售阿里云的同事就会反馈说好多客户在中毒或者加密普遍都会说不应该阿里云这样的服务厂商来负责我们的服务器安全的吗?为什么我还是会中毒。 其实这时候我们就需要明确一下云上的这个责任构成了,针对像ECS云服务器这样的IaaS类产品,其实阿里云仅负责物理安全,网络控制和主机基础设施建设和用户共建,而这之上的责任都是需要用户自行承担的,具体的情况可以见下图: 然后还有很多用户会认为租用的阿里云ECS云服务器的云盘有 99.9999999% 的数据可靠性,这个是不是就意味着我放在云上的数据不会丢啊。这时候客户还会意识到说数据的三盘副本,一些客户在文件误删的时候就会说:“你们阿里云有三盘副本,我现在这个云盘里的文件我不小心误删了,那另外两个盘上的副本快取出来帮我恢复一下。” 其实这时候就有必要澄清一下,三盘副本主要是为了防止系统错误导致的文件丢失的i情况,并不能防止因为误删除或者病毒进程删除文件导致的逻辑错误,具体如下图: 我们需要积极的通过构建快照来解决因为逻辑错误导致的数据丢失的问题。 阿里云的快照操作很方便,是完全图形化的且是中文界面的,并且支持手动或者自动方式创建快照,并且支持快照制作成镜像后跨地域复制到其他地域进行多维度容灾。同时,快照备份是存储在更高可靠且更具性价比的对象存储OSS上的,这个成本是非常可观的。 推荐阅读: 快照帮助文档 | 快照使用视频教程 基础安全 基础安全这块我们主要依赖于云安全中心的基础版,即早期的基础版安骑士,现在安骑士同态势感知合并为云安全中心后提供了更加统一直观的安全监控控制台。 如下图,我们可以通过云安全中心很直观的看到我们云上资产的安全评分,并被告知相应的安全风险。感知安全风险的能力很重要,一些新手云上用户或者非运维、开发人员管理的云账号,往往攻击事件已经发生都不清楚,往往要到产生严重的后果了,例如被脱库放到网上,或者网页收到了篡改,服务器被加密勒索了才了解相关事件。 云安全中心只要我们的云服务器ECS在选择镜像的时候,勾选 安全加固 就会自动安装云安全中心的探针到服务器,对我们的云资产进行监控。 一些没有勾选 安全加固 的同学,也可以在 云安全中心——设置——安装/卸载插件 中手动安装探针,甚至云安全中心还可以保护非阿里云的服务器。 如下图所示,云安全中心可以帮助我扫描服务器上是否出现最新披露的漏洞。 下面是云安全中心的宣传视频,云安全中心高级版仅需612元/台/年即可非常适合作为第一个付款的云安全产品。 扩展阅读: 云安全中心帮助文档 | 云安全中心最佳实践 其他 最后的话就是管理者入口的安全性也很重要,如果我们连入口都无法保障安全,那么其他的安全措施其实都是白搭了: 一、服务器操作系统和管理者操作系统都应当拒绝使用不再提供安全更新的版本。例如近期微软的 2008 系类的操作系统和数据库都已经停止了扩展支持,意味着继续使用相关版本将不会再获得任何安全更新。 二、不使用盗版、第三方分发的Windows、Linux操作系统,下载使用最新版本的原版操作系统并核对 AES 值。特别是 Windows 千万别使用一些第三方PE工具安装。 三、微软建议每个Windows都应到及时修复系统漏洞,并安装杀毒软件。 Linux发行版则应当及时的修复和更新软件仓库中更新的软件。 四、不适用非官网下载的远程连接管理工具,Windows 的远程桌面软件一般都是系统自带或者在官方软件商城购买的都还好。 特别是 Linux 远程管理软件,如 Putty、XShell 都容易成为重灾区。 ![] 还想了解更多阿里云独家最新资讯,赶快钉钉扫码加入我们的组织,和志同道合的开发小伙伴一起探讨吧~
背景 中国是世界互联网大国,但是近年来,随着中国云计算、物联网、工业互联网和人工智能等产业的迅速布局,日益枯竭的 IPv4 地址资源已严重阻碍了中国互联网产业的蓬勃发展,但在早期中国一直没有普及 IPv6,而是继续让 IPv4 缝缝补补继续用了几年,因为 IPv6 的改造是一个涉及 “端、管、云” 三方面的系统性工程,但自2017年底,中办国办印发《推进互联网协议第六版(IPv6)规模部署行动计划》以来,IPv6 的普及开始进入了快车道。其中指出加快推进基于 IPv6 的下一代互联网规模部署,计划指出到 2018 年末国内 IPv6 活跃用户数要达到2亿,2020年末达到5亿,2025年末中国 IPv6 规模要达到世界第一。 又在近期,据工业和信息化部官网7月25日消息,2019年7月24日,工业和信息化部信息通信发展司组织召开部署推进IPv6网络就绪专项行动电视电话会议。如下是对广大互联网企业用户的要求: 各应用商店要对新上架APP开展IPv6支持度检测工作,支持度不好的APP要加快改造。 介绍 作为中国第一的云计算服务厂商阿里云对于IPv6的支持目前已经比较全面了。目前阿里云已经有如下产品支持 IPv6: 转换服务 转换类服务可以帮助纯 IPv4 服务无需做出大量的改造以最快的速度和效率获得 IPv6 的访问能力。 IPv6转换服务 业务部署在云下IDC机房,机房只具备IPv4网络。业务通过IPv6转换服务,可面向纯IPv6用户快速提供IPv6访问能力。主要解决了传统数据中心 IPv6 改造,代价大、成本高、周期长的问题。 产品特性: 1.周期短,IPv6转换服务实例实时开通,映射规则配置实时生效。 2.简单易用,控制台图形化界面2步操作即可实现地址转换功能。 3.高性能,实例超大转发能力和带宽峰值,提供性能SLA保障。 4.高可靠,服务本身就是跨可用去部署的,具备高可靠性。 负载均衡SLB 目前 SLB 在国内几个地域上线支持 IPV6 负载均衡服务,可以实现阿里云服务无痛支持 IPV6,因为一些历史性原因现有运行的 ECS 即便开启了 IPV6 网关也需要进行大量修改系统和Web程序才能提供双栈访问能力, 但是通过负载均衡 SLB 即可实现平滑兼容。 SLB IPv6 特点: 平滑迁移IPv6,业务无感知: IPv6 SLB后端可以直接挂载使用IPv4地址的ECS,无需对原有系统做改造,就可以平滑地将业务迁移到IPv6。 通过新增IPv6入口,对原有IPv4业务无任何影响,仅需要在业务总量增加的情况下,适量对后端ECS进行横向扩容即可。 IPv6访问控制让业务部署更加安全可靠: 阿里云负载均衡SLB支持IPv6访问控制,您可以根据业务需要灵活地配置访问控制策略。 访问控制黑名单可有效阻断恶意地址对负载均衡业务的访问。 访问控制白名单仅允许白名单中授权的地址访问负载均衡业务。 值得一提的是,SLB IPv6 实例是需要新开一个 IPv6 实例的,而不是原 IPv4 实例升级支持 IPv6 实例。 如果这时候大家可能已经看不懂 SLB IPv6实例 和 IPv6 转换服务 的区别,可以看一下这篇文章:《一张图看懂阿里云网络产品【十四】》。 其实主要的就是 SLB IPv6 实例用于内网转发ECS流量并拥有更好的负载均衡能力,IPv6 转换服务主要转发公网服务器流量。 v6/v4双栈 阿里云上也有很多产品已经升级成为 IPv6/IPv4 双栈协议,双栈模式下无需多余的协议转换,IPv4和IPv6分别走各自的双栈网络,且在未来可以平滑的过渡到纯IPv6的网络环境。在双栈网络下,双向支持IPv6则优先走IPv6协议,如果不支持双向则走IPv4协议。 VPC IPv6 网关 IPv6网关(IPv6 Gateway)是专有网络(VPC)的一个 IPv6 互联网流量网关。可以通过配置 IPv6 互联网带宽和仅主动出规则,灵活定义 IPv6 互联网出流量和入流量。IPv6 网关可以帮助专有网络下的云产品(截至发稿仅有云服务器ECS)获得公网IPv6能力并进行流量管理的能力,相当于还集成了NAT网关的网络出网流量管理功能。 使用 IPv6 网关可以让云服务器 ECS 在默认公网 IPv4 下获得 v6/v4 双栈的能力。IPv6 网关继承了 IPv6 的优异特性可以为服务器提供更大带宽的公网访问能力,从最大 200Mbps 的 IPv4 公网带宽上升到了 1Gbps 的 IPv6 公网带宽峰值。 DNS 双栈解析 阿里云云解析 DNS 系统支持 IPv6、IPv4 双栈。例如用户如用IPV6网路访问,当本地 DNS 向云解析 DNS 发起请求查询时,云解析 DNS 会将 IPv6、IPv4 的地址全部返回给本地 DNS,由本地 DNS 进行优选将 IPV6 地址返回给用户端。 DNS 作为反馈域名解析结果的产品是 IPv6 环境中非常重要的一环,如果 DNS 不存在 IPv6 节点或不支持 AAAA 记录解析那么网站将无法提供 IPv6-Only 的能力。阿里云 DNS 的免费版支持 IPv6 节点以及提供 AAAA 记录解析。 OSS 双栈访问 对象存储OSS的 Bucket 域名支持 IPv6、IPv4 双栈,使用默认域名即可支持,无需做出额外的改变。截至发稿目前杭州地域的对象存储已经支持 IPv6、IPv4 双栈后续会开放至全部地域。 目前很多应用、业务进行 IPv6 的改造都仅仅只是让服务器获得 IPv6 能力,而没有对应用的对象存储这样的做出该改变,目前 OSS 就可以很好的解决问题。 如果短期内需要让应用获得完整的 IPv6-Only 访问能力,可以考虑将其他地域的 OSS 复制到杭州地域。 或者其他的对象存储厂商迁移至对象存储OSS。 一、阿里云内对象存储OSS跨地域迁移可以使用 基础设置 —— 跨区域复制 进行复制。 二、非阿里云对象存储迁移至对象存储,可以使用 OSSimport2 工具。 CDN 双栈访问 目前,CDN 部分节点已支持 IPv6 进行访问。CDN 的 IPv6 加速也可以帮助业务几乎零成本实现 IPv6-Only 的改造。工单申请 CDN 开通 IPv6 后,即可体验。 不过由于 CDN 的作用是业务加速,部分地域如果没有就近的 IPv6 PoP 节点将不会返回 IPv6,所以部分地域通过 ping -6 将不会反馈得到 IPv6 的解析结果。 CDN IPv6 作用和 IPv6转换服务 类似,基本上只要业务套了它们都可以直接改造成支持 IPv6-Only 访问能力的网站。但是 CDN 的可用性是 99.9% 没有 IPv6转换服务 跨可用区的高可靠性。 安全产品双栈 随着IPv6协议的迅速普及,新的网络环境以及新兴领域均面临着新的安全挑战。目前包括 Web 应用防火墙、DDOS防护包 已经支持 IPv6 安全防护。更多的安全产品是否支持 IPv6 可以关注此页面:IPv6云安全解决方案 针对WAF值得注意的是:目前,仅中国大陆地区的企业版或旗舰版WAF实例支持IPv6安全防护功能。并且 WAF 不支持回源防护 IPv6-Only IP。 针对DDOS防护包值得注意的是:一个防护包实例只能对一种访问流量类型提供防护,不支持同时防护IPv6和IPv4两种类型的访问流量。如果您需要防护不同类型访问流量,请购买两个防护包实例并选择不同的IP类型。 这个机制类似 SLB 支持 IPv6 的模式。 方案 了解了相关拥有 IPv6 能力的产后,我们可以基于不同的业务场景构建不同的 IPv6 实践方案。一般来说,只要用户访问的第一层是支持 IPv6 的那么整个业务都可以支持。 如果第一层的产品不支持那么即便后面的业务都部署了双栈依旧无法提供 IPv6-Only 的访问支持。 例如云服务器ECS设置了 v6/v4 双栈,但是用户访问的第一层是一个仅支持 IPv4 的 SLB 那么还是无法提供 IPv6-Only 的访问支持。 现有业务 IPv6 改造方案 推荐使用产品: 负载均衡SLB IPv6实例、云解析 DNS、对象存储OSS 一、负载均衡SLB 的 IPv6 实例为现有 云服务器ECS 提供IPv6网络输出 二、云解析DNS提供解析支持,同解析名称在 A 记录解析到 IPv4 地址的基础上,添加 AAAA 记录解析到SLB的IPv6地址 三、如果用对象存储存放了非结构化数据,那么使用 OSS 的域名直接就获得了 IPv6 的能力 参考教程:[【云计算的1024种玩法】只要SLB+DNS,云上IPV6竟然如此简单 新建业务 IPv6 改造方案 推荐使用产品: 负载均衡SLB IPv6实例、云服务器ECS、IPv6网关、云解析 DNS、对象存储OSS 一、如果不会云服务器的IPv6双栈,可以直接使用负载均衡SLB 的 IPv6 实例为现有 云服务器ECS 提供IPv6网络输出。 二、使用云服务器设置 IPv6、IPv4 双栈,新建的云服务器可以通过 Cloud-init 初始化过程中运行脚本完成网络设置,这里涉及到的点会比较多,比如说比较老版本的Web软件默认是不开启 IPv6 支持的需要添加相关编译参数或者直接升级用新版。 同时一些防火墙的设置可能也需要额外熟悉一下。 三、云解析DNS提供解析支持,同解析名称在 A 记录解析到 IPv4 地址的基础上,添加 AAAA 记录解析到SLB的IPv6地址 四、如果用对象存储存放了非结构化数据,那么使用 OSS 的域名直接就获得了 IPv6 的能力。 参考教程:阿里云ECS部署 IPv4 IPv6 双栈实践 – 新建篇 线下物理机/多云 IPv6 解决方案 推荐使用产品:IPv6转换服务、云解析 DNS 针对已有线下物理机房的业务,IPv6 改造的成本高、周期长、可用性差的情况,就可以考虑直接使用 IPv6转换服务 进行转换。 同时一些其他云服务厂商可能短期内还无法提供 IPv6 服务,同样也可以使用阿里云的 IPv6转换服务 帮助实现 IPv6 访问能力,通过相关检查要求。 不过使用 IPv6转换服务 需要将备案接入阿里云,这个需要一些提前量去进行筹备,以避免因为备案审核的时间延误了相关上线时间点安排的节奏。 参考教程:使用IPV6转换服务实现网站的双栈访问 双栈ECS搭建IPv6反向代理 部分用户如果觉得 IPv6转换服务 比较贵的话,其实可以使用拥有 IPv6 的云服务器ECS搭建反向代理来实现类似 IPv6转换服务 的模式,不过这样自建就没有转换服务来的省心,同时也不具备高可用性的特征。 推荐软件:https://github.com/snail007/goproxy 云安全 IPv6 解决方案 推荐使用产品:DDOS防护包 IPv6版、WAF 企业版、云解析 DNS 上面的云产品都是不提供安全防护能力的,当然我们也可以通过 IPv6 转换服务将WAF的IP进行转换,但是这样成本会上升,而且这个方法就无法应用于DDOS攻击的防护。 云安全 IPv6 服务提供了进一步的安全防护能力,既可以防护云上业务也可以防御非阿里云或者云下物理机上的业务。针对包年包月安全产品会有对应的安全钉钉支持团队,如果大家不会配置 IPv6 是可以让支撑的同学来帮忙处理。 相关推荐解决方案: 一张图看懂阿里云 IPv6 解决方案 一张图看懂阿里云 IPv6 转换服务 双十一中的IPv6大规模应用实践 SLB IPv6搞定苹果AppStore审核 阿里云应用IPv6改造解决方案最佳实践 欢迎大家针对 IPv6 云上业务解决方案和我一起做沟通。我的钉钉是:huicute 还想了解更多阿里云独家最新资讯,赶快钉钉扫码加入我们的组织,和志同道合的开发小伙伴一起探讨吧~
前言 RHEL 8 系统已经发布了,很多小伙伴可能已经在本机服务器或者虚拟机上安装测试和学习了。因为我不太想安装本地虚拟机所以就制作了一个公有云的KVM镜像来跑 RHEL8 了,这样的测试也能更贴近生产环境,和测试网络情况。 但是阿里云默认也没有提供 RHEL8 的公共镜像,所以就自己动手做了一个。 介绍 Red Hat Enterprise Linux 8 是针对混合云时代重新设计的操作系统,旨在支持从企业数据中心到多个公共云的工作负载和操作。 Red Hat了解操作系统应该做的不仅仅是作为技术堆栈的一部分存在;它应该是创新的催化剂。从Linux容器和混合云到DevOps和人工智能(AI),Red Hat Enterprise Linux 8不仅可以支持混合云中的企业IT,还可以帮助这些新技术战略蓬勃发展。 镜像 目前基于 KVM 制作了 RHEL8 正式版的公有云镜像,经过测试可以在 AWS、阿里云、OpenStack、腾讯云等平台进行导入后成功运行。 使用须知 由于重置和定义 root 密码需要公有云平台专门针对 RHEL8 进行才有效,而 RHEL 8 才刚发布,所以无法通过控制台进行密码重置或者定义 支持公有云平台对 SSH 密钥进行定义 默认 root 密码: www.mf8.biz 未购买RHEL授权仅可用于测试、开发,不可用于任何商业或者生产场景 激活教程请看: 《免费注册 Redhat 开发者订阅和激活订阅教程》 导入镜像教程请看: 《在公有云上测试使用RHEL8镜像》 下载 请前往 米饭粑封装的 RHEL 8 KVM 公有云镜像下载 查看下载。 导入教程 一、把镜像上传到想要哪里用的ECS地域所对应的 OSS 下。 二、在和OSS对应地域下的ECS控制台页面,找到 镜像 然后点击右上角的 导入镜像 三、然后对应的填写就对了,然后 OSS Object地址 ,记得只能用 http:// 协议,然后用内网地址,一般就是后面带 internal。 四、然后我们等待导入完成 五、镜像创建完成后,我们就可以拿来创建实例了。 六、目前针对 阿里云 进行专项优化,优化阿里云上体验,Cloud-Init 优化支持为阿里云版本,但是不影响其他平台导入和使用,如果需要优化其他云的体验,请参考相关文档教程,将镜像优化至最符合公有云体验的模式: 阿里云 导入镜像必读https://help.aliyun.com/document_detail/48226.html 来自:https://www.mf8.biz/rhel8-kvm-on-the-cloud/
虽然自己的 WordPress 博客很早就云化了,用了云服务器、云数据库、OSS 和 CDN,不过在 WordPress 的附件的云化其实自己一直都是沿用的老思路就是 我爱水煮鱼 大佬之前发布的七牛云插件,用镜像的方式把源站的图片在七牛进行存储再加速,这样的好处就是兼容性比较广,但是WP网站的目录随着网站的成长会越来越大。 今天一看自己备份博客的Bukcet都已经10G那么大了,然后分析了一下网站果然大部分存储都是被多媒体附件占用了,所以需要通过将存储从服务器转移到对象存储降低服务器存储压力。 这一个操作在私有网盘网站、下载站等很高的利用率,将文件存储在更廉价却又更可靠的对象存储上而不是高昂的服务器存储上。 介绍 如果要降低备份的容量大小,很重要的就是不能把文件再存到本地了,必须存储到对象存储上面来降低存储成本。 这里推荐的插件是:aliyun-oss-support 插件特色 支持 Aliyun OSS 的图片服务(根据参数获得不同尺寸的图片) 自定义文件在 Bucket 上的存储位置 支持 HTTPS 站点 支持阿里云内网和 VPC 网络 全格式附件支持,不仅仅是图片 支持 wordpress 4.4+ 新功能 srcset,在不同分辨率设备上加载不同大小图片 支持在 WordPress 后台编辑图片 支持预设图片样式,图片保护,自定义分割符 中英文双语支持,方便使用英文为默认语言的同学 支持在其他插件/主题中通过系统钩子调用插件功能 代码遵循 PSR-4 规则编写 教程 注意: 部分操作不当会损失网站文件,一定要提前备份数据库和网站文件,建议关闭缓存插件以供调试使用。 一、该插件没有推送到 WP 插件库,但是是开源的所以不用担心安全问题。 在这里插件最新版:https://github.com/IvanChou/aliyun-oss-support/releases/tag/3.2.7 二、将插件解压上传到 /wp-content/plugins/ 或者通过 WordPress 插件中心上传安装 三、进行插件配置: AccessKey 和 AccessKeySecret 建议通过 RAM 子账号设置,后面我会出一份通俗的设置教程。 建议选择和ECS同一地域的OSS,可以内网传输图片节省流量费用。 内网 选项一定是同地域才能打勾。 Bukcet域名 可以输入cdn域名而无需是Bucket域名,因为SDK传输不依赖于Bucket域名进行传出。 存储路径 建议设置成和 uploads 不一样的目录,方便我们判断,例如我的 wp-store 就很不错。 四、再详细介绍一下这个图片服务: WordPress 在用户上传图片时,根据预设尺寸生成多份不同大小的缩略图,以供页面适配。这种方式虽然有效但很不灵活,如切换主题的时候,之前的图片尺寸便极可能与新主题不一致。而且也非常占用存储空间!!! OSS IMG 裁剪就是为了解决这类问题而出现的,它可以通过在图片 Url 后面传参来实时生成各种尺寸的图片,只需要存一张原图,就可以在任何时候满足任何需求。IMG 服务十分高效,加上 CDN 的配合,响应速度与直接访问静态资源并没有区别。 进阶使用请参考:如何使用阿里云 OSS 图片服务, 默认的我们光图片服务打勾就没问题了。 五、清理缓存,包括WP缓存插件,CDN缓存,对象缓存等等。 六、检测网站多媒体文件是否生效: 新上传一张图片,查看网站源代码检测图片文件是否变化: 我之前可能是CDN镜像的原站是:https://statics.mf8.biz/wp-content/uploads/2016/11/o6gepqxnqmy-mr-cup-fabien-barral.jpg?x-oss-process=image/resize,w_900,h_300,m_fill/sharpen,100 修改之后的地址就应该是:https://pics.mf8.biz/wp-store/2016/11/o6gepqxnqmy-mr-cup-fabien-barral.jpg?x-oss-process=image/resize,w_900,h_300,m_fill/sharpen,100 查看OSS的文件管理,是否有我们传上去的图片 通过OSS工具如 OSS Browser 、ossutil 将 wp-content/uploads/ 下的文件传到OSS对应的目录,根据我设置的图片,我的目录是 wp-store 七、我知道你手痒打算点 高级选项 很久了,那我们就点 ———— 接下来的步骤都有危险性,而且必须开启 图片服务 选项,然后要充分测试插件的兼容性,特别是一些老旧插件和功能非常多的插件。 勤做备份吧~ 八、没有备份慎点 点击 清理服务器存储 就所有旧的多媒体链接都会改成新的,所以第六步转移旧文件到OSS很重要,不做就不会显示。 九、没有备份慎点 ,如果测试了没有问题,wp-content/uploads/ 可以把里面的文件全部删除了。 总结 目前用的很开心的,备份文件大大减负了。 来自:https://www.mf8.biz/mv-wp-media-to-oss/ 欢迎查看更多云计算分享。
前言 继 AliyunLinux 15和17为代表的初代系统后,阿里云整合资源推出了 AliyunLinux 二代,这是一款基于云环境优化的操作系统,也带来了很多优异的新特性来赋能 RHEL7 系的操作系统,让其更加贴合云计算的虚拟化环境并提升更多性能。那就让我们来看一下 AliyunLinux 2 究竟带来了那些黑科技吧! 介绍 Aliyun Linux 2 是阿里云推出的下一代 Linux 发行版,它为云上应用程序环境提供 Linux 社区的最新增强功能,在提供云上最佳用户体验的同时,也针对阿里云基础设施做了深度的优化。Aliyun Linux 2 OS 镜像可以运行在阿里云全规格系列 VM 实例上,包括弹性裸金属服务器 (神龙)。 官网:https://www.aliyun.com/product/alinux 特性 新版云内核 Aliyun Linux 2默认搭载并启用最新版本阿里云云内核。新版云内核提供了以下特性: 基于内核社区长期支持的4.19.24版本定制而成,增加适用于云场景的新特性、改进性能并修复重大缺陷。 提供针对ECS实例环境定制优化的内核启动参数和系统配置参数。 提供操作系统崩溃后的内核转储(Kdump)能力,您可根据需要在线打开或者关闭该功能,无需重启操作系统。 提供内核热补丁升级(Live Patch)能力。 软件包 Aliyun Linux 2默认搭载阿里云命令行工具。软件包更新如下: 网络服务从network.service切换为systemd-networkd。 用户态软件包与CentOS 7.6.1810版本兼容,该版本的用户态软件包可直接在Aliyun Linux 2使用。 软件包安全漏洞(CVE)修复更新至截止2019年3月底。 性能优化 Aliyun Linux 2优化了开机启动速度并提升了运行时的系统性能,包括: 针对ECS实例环境大幅优化启动速度。 针对ECS实例环境优化多线程场景,提升大规格实例多线程性能。 针对MySQL数据库场景的全链路优化,与ESSD云盘配合,显著提升性能。 跑分 可以看到 AliyunLinux2 针对WEB和飞天虚拟化下的场景做了非常多的优化,让我们跑个分看看到底有没有效果吧! 为了避免偶然性,跑分分别以阿里云·华北3的三台机器进行测试,分别安装 AliyunLinux2、CentOS7和Ubuntu18.04,并以2核2G内存和4核4G内存分别跑两次。 分数左边是单核成绩,右边是多核(线程)成绩 AliyunLinux2 CentOS7 Ubuntu18.04 2C2G 第一次 1055.7/1751.8 930.4/1520.0 1052.5/1378.2 2C2G 第二次 1070.6/1749.1 926.2/1511.1 1050.9/1375.9 4C4G 第一次 1097.7/2624.0 929.8/2297.0 1065.0/2032.1 4C4G 第二次 1082.9/2609.2 930.0/2296.7 1066.2/2037.0 可见同样的配置,同样的地域,AliyunLinux2 得益于优良的调教,性能提升非常可观,约有15%的性能提升。相比之下的话,Ubuntu18.04 单核心跑分也有着很不错的表现,但是多核心一起跑分数就比 CentOS7 要低了。 在网络上,AliyunLinux2 是默认编译好并开启 BBR 了的,所以无需我们手动开启,且和 CentOS7 安装 ELRepo 内核开启 BBR 以及 Ubuntu 18.04 开启BBR后的效果一致,没有较大的差异出现,没有类似腾讯 TCPA 那样的 Web 网站黑科技出现。 不过值得一提的是,腾讯的TCPA仅仅是提供二进制包的免费使用且并没有开源,而集成了阿里云基于云环境的优化特性的 ALK 确是开源的,传送门:https://alibaba.github.io/cloud-kernel/zh/。当然也是希望腾讯能也开源一些黑科技出来,让云计算体验更胜一层楼呀! 安装 阿里云 选择 ECS 的时候公共镜像选择 AliyunLinux 即可。 其他 CentOS7/RHEL7 只能按照 ALK 以获得一些 ALK 内核的特性,一些系统层的优化目前还不能直接通过转化获得。 cd /etc/yum.repos.d/ wget https://gist.githubusercontent.com/ivmm/ff3190353321b647115331a11d00f7f5/raw/e72cdda09d95bf0d4af4573c467144204533335b/alinux-2.1903-plus.repo yum install -y kernel kernel-devel kernel-headers 总结 AliyunLinux2 是一款很不错的基于云环境优化的操作系统,为了 CentOS7 系列赋予了很强的 Web 和数据库能力,且使用用户可以通过工单对使用问题进行免费咨询,或者在钉钉群:23149462 直接咨询阿里云操作系统和虚拟化的专家,让免费的系统拥有了一比 RHEL7 的服务体验。 目前了解到 AliyunLinux2 主要是针对阿里云飞天虚拟化平台开发的,不适用于物理机环境,同时针对其他云计算厂商虚拟化下应用 ALK 内核没有做过稳定性测试,还需要更多的开发者贡献内核和提交BUG来优化ALK在更多虚拟化场景下的应用。我目前自己有测试 UCloud 的机器安装 ALK 貌似还没有遇到报错和不稳定的情况。 总而言之,如果你本来就是用的 CentOS7 在阿里云上,那么非常建议选择使用 AliyunLinux2,配置越高性能提高的就会越明显。 来自:https://www.mf8.biz/aliyunlinux2/
前言 HTTP/3 即 QUIC(发音同Quick),通过发音我们就知道 HTTP/3 又可以让网站的速度更上一层楼。 HTTP/2 提速很重要的一点是使用了多路复用,一般来说同一域名下只需要一个 TCP 连接。但是如果当这个连接中出现了丢包的情况,那就会导致 HTTP/2 的表现情况反倒不如 HTTP/1.1 了。 如果出现丢包的情况下,整个 TCP 便会要开始等待重传,导致了后面所有数据都阻塞了。但是对于 HTTP/1.1 来说,因为可以开启多个 TCP 连接,所以出现这种情况反到也就只影响其中你们一个连接而已,剩余的 TCP 连接还可以正常传输数据。 好嘛,有问题我们就解决问题,因为我们已经见识到了多路复用的好处,所以我们就去修改 TCP 协议,不过这已经是一件不可能完成的任务了。TCP 真的是太元老了,对 TCP 进行更新意味着要从操作系统上入手,那么整个协议将不会被所有的老系统所支持,新系统的推广何其艰难。 所以谷歌就更起炉灶搞了一个基于 UDP 协议的 QUIC 协议,因为 UDP 不需要三次握手,2016年,IETF开始致力于协议的标准化。 将QUIC拆分为基于传输层的和应用层的协议。应用层协议被称为 HTTP-over-QUIC 在2018年11月,IETF宣布 HTTP-over-QUIC 被正式命名为HTTP / 3。 如果上面大段背景介绍觉得烦,我们直接看下文即可: QUIC 协议有哪些优点,如何实现 0-RTT? QUIC 协议在传输层就支持多路复用,避免了队头阻塞问题。 QUIC 协议基于 UDP,更自由更高效 QUIC 协议借鉴了 TFO 的思想,支持会话上下文缓存,方便恢复,具备实现 0-RTT 的可能 传统的 HTTP2 + SSL + TCP 协议栈有哪些缺点? SSL 的会话恢复依然需要一个 RTT,而且难以合并到 TCP 层 TCP 的滑动窗口存在队头阻塞问题 TCP 的重传纠错会浪费一个 RTT 为什么 Google 要另起炉灶,基于 UDP 去做? TCP 由操作系统实现,很难更新 UDP 非常高效,几乎没有性能负担 将 QUIC 嵌入到 Chrome 中可以方便后续的升级迭代 QUIC的特性究竟有哪些? 利用缓存,显著减少连接建立时间 改善拥塞控制,拥塞控制从内核空间到用户空间 没有 head of line 阻塞的多路复用 前向纠错,减少重传 连接平滑迁移,网络状态的变更不会影响连接断线。 改编自 全栈养成计划 和 冰霜之地 实现 目前支持 QUIC 的 Web 服务软件主要是 LiteSpeed 和 Caddy,Nginx 尚不支持现有教程都是通过 Docker 结合 Nginx+Caddy 来实现,稳定性和可靠性都得打上问号。 所以我就比较推荐基于 LiteSpeed 的来实现了,LiteSpeed 是一款企业级商业 Web 服务,相比开源社区软件会有着更好的稳定性和可靠性。值得一提的是 HTTP/2 也是由 Lite Speed 率先实现的。 简单介绍: LiteSpeed 即 LiteSpeed Web Server(简称 LSWS),是一款企业级商用 Web 服务软件,可以完美的 Apache HTTPD 兼容体验,.htaccess 规则可以直接兼容而不像 Nginx 需要重写,并兼容常用的mod扩展。得益于基于事件的架构优势,静态内容比Apache Httpd 快 5 倍 ,动态内容更是快 40 倍,HTTPS 访问快 3 倍并可以应用硬件加速器。 更多介绍请看:https://www.llstack.com/zh/LiteSpeed/ 安装 这里我推荐通过 LLStack 一键包进行 Lite Speed 的安装。 安装教程:https://www.llstack.com/zh/install/ 一、篇幅限制,这里以安装简单的轻量版为例。在 SSH 终端中输入: sh -c "$(curl -fsSL https://raw.githubusercontent.com/ivmm/LLStack/master/install.sh)" 2>&1 | tee llstack-all.log 我们安装完成: 二、开始设置虚拟主机,运行脚本: sh -c "$(curl -fsSL https://raw.githubusercontent.com/ivmm/LLStack/master/vhost.sh)" 详细讲解请看文档:创建虚拟主机-步骤详解 三、在第五步确认是否要开启HTTPS,输入 y 无论是 HTTP/2 还是 HTTP/3 都依赖于 HTTPS。 四、第六步然后会让我们输入 密钥文件(.Key)和证书文件(.crt)的路径,不一定马上就要存在,我们可以后续等创建完虚拟主机后再放到对应的路径上(会有报错,但是可以忽略)。 五、第七步询问是否开启 HTTP/3 功能,输入 y 为开启 六、然后我们输入任意键即可开始自动配置,CTRL+C 为取消 七、然后就可以看到输出了。 八、因为 HTTP/3 依赖于 UDP,而我们往往只是会开启 TCP 协议,所以我们还需要打开防火墙和安全组(没有就忽略)的UDP 443 端口。 轻量版使用 Firewall 防火墙 在终端中运行: firewall-cmd --zone=public --add-port=443/udp --permanent firewall-cmd --reload 面板版在 防火墙 - 开放网络端口 中,端口输入 443 协议选择UDP,点击确定后点击重载。 更详细的防火墙设置教程请看:防火墙设置 服务器安全组以阿里云为例: 协议类型选择 自定义UDP,端口范围443/443 ,授权对象0.0.0./0 九、更详细的 QUIC 设置,可以在 LiteSpeed 图形化控制台中导航至 Configuare - Server - Tuning ,对 QUIC 进行配置,一般来说新手建议默认,打开 Enable QUIC 即可 调试 截至发稿浏览器仅有 Chrome 支持,Firefox 和 Safari 可能得等 HTTP/3 正式发稿后会获得支持。 一、Chrome 浏览器进入 chrome://flags/ 也没,将 Experimental QUIC protocol 设置 Enable 然后重启浏览器。 二、 打开网站,再打开开发者工具,在 Protocol 就可以看到了,HTTP/2 + QUIC 就是 HTTP/3: 来自:https://www.mf8.biz/use-http-3/
前言 自从 1 月 23 号接触了 LiteSpeed 来实现 HTTP/3(QUIC)后就一直想写个教程,结果自己不满足于写教程就去写了一个一键包也就是 LLStack,来帮助大家快速实现基于 LIteSpeed 的高性能 PHP 网站。 后面我会在云栖社区陆续更新基于 LLStack 的教程和玩法,帮助大家快速建设我们的高性能网站! 什么是 LLStack ? LLStack 全称是 “Linux LiteSpeed Stack”,即在 Linux 上安装 LiteSpeed + PHP + MySQL/MariaDB(可选)的高性能 Web 运行环境,特别适合运行 PHP 程序。 更多具体问题和安装教程请看:https://www.llstack.com/ LiteSpeed 介绍 LiteSpeed 即 LiteSpeed Web Server(简称 LSWS),是一款企业级商用 Web 服务软件,可以完美的 Apache HTTPD 兼容体验,.htaccess 规则可以直接兼容而不像 Nginx 需要重写,并兼容常用的mod扩展。得益于基于事件的架构优势,静态内容比Apache Httpd 快 5 倍 ,动态内容更是快 40 倍,HTTPS 访问快 3 倍并可以应用硬件加速器。 同时作为商业 Web 服务软件,也率先研究并落地最新的 Web 技术,在 HTTP/2 和 HTTP/3(QUIC) 上均是第一个应用的 Web 服务软件,可以直接无缝使用 Brotli、LSCahe 等新特性而无需像 Nginx 一样需要额外配置非官方的扩展并担心 API 兼容性问题。 LiteSpeed 特性 更高性能 LiteSpeed Web Server使用事件驱动的体系结构,Apache是基于流程的。LiteSpeed Web Server及其事件驱动架构,可为几乎没有进程的所有连接提供服务,从而节省资源。 更加安全 同时 LiteSpeed 也支持 mod_Security,可以轻松实现基础的 WAF 能力,在没有极高的防御需求的时候仅使用 LiteSpeed 则无需额外购买高昂的商业WAF。 同时针对一些 CC 和 DDOS 攻击,LiteSpeed 也有做好优化和应对策略,可以降低攻击造成的影响。 开箱即用 相比 Nginx、Apache 安装一些高性能扩展,如 PageSpeed,Brotli,或者和 Varnish 这样的内存级 Web 加速软件,一些协议的支持上如TLS 1.3、QUIC,搭配都需要一定的经验以及复杂的配置,而这些特性在 LiteSpeed 上都是开箱即用的。 可视化后台 不同于 Nginx、Apache HTTPD 黑底白字的配置文件,LiteSpeed 即可以通过编辑配置文件操作也可以通过可视化控制台进行操作,降低操作门槛。 Apache 兼容 不仅仅是兼容 Apache HTTPD 的特性和扩展,LiteSpeed 可以直接读取 Apache HTTPD 配置文件并转化,并且在不停机条件下直接从 Apache HTTPD 上完成无缝迁移。 更多特性和 LiteSpeed 介绍请看: LiteSpeed 介绍页 安装 注意 LLStack 仅适用于 RHEL 7 系操作系统及其衍生版,RHEL7、CentOS7、OracleLinux7、CloudLinux 7等。 RHEL 8 系正在测试中。 安全组/防火墙 安装前务必要根据教程开启服务器安全组和防火墙中LLStack所依赖的端口。 教程: 安全组设置 安装完 LLStack 后防火墙的设置请参考: 安全组设置 轻量版 LLStack 轻量版脚本只提供 LiteSpeed 的图形化面板,其他 PHP、MySQL(MariaDB)的管理全部使用软件默认的配置文件,配置较为复杂,适合有经验高手和不习惯面板的同学使用。当然,也会更加简洁高效,同时资源利用率和安全性也更高。 安装脚本: sh -c "$(curl -fsSL https://raw.githubusercontent.com/ivmm/LLStack/master/install.sh)" 2>&1 | tee llstack-all.log 轻量版详细教程 → 面板版 面板版是深度集成了非常好用且Web应用非强制性的 APPNode 面板而来的版本,常见的服务器组件如 PHP、MySQL、Redis、Memcached 都提供了图形化支持,同时也提供软件管家、防火墙、文件管理、备份管理等众多实用功能,适合新手使用,也适合有大量服务器运维的同学使用。 安装脚本: INSTALL_AGENT=1 INIT_SWAPFILE=1 INSTALL_PKGS='php73' bash -c "$(curl -sS http://dl.appnode.com/install.sh)" yum install appnode-app-mysqld appnode-app-php sh -c "$(curl -fsSL https://raw.githubusercontent.com/ivmm/LLStack/master/install-appnode.sh)" 2>&1 | tee llstack-all.log 面板版详细教程 →
前言 阿里云各项产品中 ECS 即云服务器是非常重要的一款 IaaS 产品,其实阿里云ECS产品也是借助了 KVM(早期XEN) 的虚拟化能力。。随着个人电脑性能的提升,越来越多的朋友应该都有体验过 VirtualBox、VMware、Parallels Desktop 这样的虚拟化软件,这些虚拟化软件可以安装非常多的操作系统,会比公有云上可选的公共镜像来的多得多,那为什么公有云上的镜像那么少呢? 首先就是为了稳定性和安全性的考量,公有云都会提供自制的公共镜像安装和调试好最适合该云计算环境的软件和配置。在个人用虚拟机软件上其实我们并不太会考虑说要 7 * 24 不关机并且持续高负载工作的情况,所以大可以体验一些新的发行版。 就像最近的 Windows 1809 内核发布的第一版有各种小问题一样,如果公有云第一时间运用岂不是要上天了。 还有就是通过 ISO 安装好的初始系统并不能满足云计算镜像的一些要求。 但随着技术的成熟和能力的开放,阿里云其实早就已经开放了虚拟化镜像导入的能力,这样可以帮助企业快速具备上云能力,以及满足一些较为复杂化上云的需求。 准备 下面我以客户需求较为广泛但是公有云又不提供的 OracleLinux 为例,而且 OracleLinux 是 RHEL 的变体,云上支持的效果会很好,所以新手第一次尝试的成功率会高很多。 相关参考文档 导入镜像必读 https://help.aliyun.com/document_detail/48226.html 虚拟化软件选型 所有主流的虚拟化软件都可以作为选项之一,但如果只是为了图方便,或者像我这样只是为了做一个云上的特殊镜像的,那么肯定是最方便的最好了。 如果开发机器是 Linux 的话,直接安装 KVM + KVM Manager 直接安装是最好的了。 Windows 的话那么推荐使用 VirtulBox。macOS 推荐使用 VirtualBox。 因为他们都可以选择使用 VirtIO 驱动,直接就会安装好,特别方便,同时镜像格式也是普遍收到支持的 QCOW2、RAW或者VHD,不需要额外转换。 因为使用 Windows 和 macOS 的用户比较多,所以这里以 VirtualBox 为例。 像使用 VMWare 的用户则可以使用 qemu-img 工具进行格式的转制。 教程 一、 我们开始新建虚拟机,输入 OracleLinux 的名字就会自动识别模式 二、创建一个小内存的实例即可,我这里选择2G 三、我们选择创建一个新的虚拟硬盘 四、虚拟硬盘我们选择 VHD 格式的,因为 VHD 受支持度比较广,基本上公有云都认不用转换。 五、大小选择动态分配,不然我们分配个40G,虚拟硬盘文件就有40G那么大不利于传输,而动态分配则是用多少占多大空间,比较有性价比。 六、磁盘容量我建议40G起步,因为公有云的系统盘都是40G起步的,直接40G比较省事儿,不然起步8G,后期不够用了还得自己扩容,很麻烦的。 七、创建完后我们点击 设置 八、 我一般会把 显示 中的,Graphics Controller 修改成 VBoxSVGA 以避免安装过程中无法出现鼠标,不过这个应该是因设备而异的。 九、半虚拟化接口,要选择 KVM ,这样会打相关驱动,然后硬件虚拟化两个都勾选。 十、然后是时候启动开始安装系统了,这里会跳过一些简单的安装步骤,只将重要的来做演示。 十一、 软件选择 我会设置成 基础设施服务器 以便一些基础性服务器组件的缺失 十二、选择 我要配置分区 ,然后点击左上角的 完成 十三、然后我们从 LVM 切换到 标准分区,如果使用 LVM 将会无法正常启动ECS实例 十四、然后我们点击左下角的 + 号,把 40GiB 全部分配给 / 十五、然后点两下 完成 十六、接受更改 十七、在网络和主机名哪里把网络打开,要不然不联网后续配置就很麻烦。 十八、然后其他的按默认或者按自己的习惯来配置就行,我们进入安装。 设置一下 root 密码,密码要符合阿里云的ECS密码配置策略,不能就一个 a 了事这样的(因为我本地测试环境就经常这么干)。 十九、然后我们输入 ip addr 看一下这机器的内网IP是啥。 然后拿常用的 SSH 工具连接一下。 不然你还打算真不用复制粘贴光手敲呀~~~~ 二十、然后我们拿阿里云的 镜像规范检测工具 来测一下,现在的环境能不能上云了。 wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/84961/cn_zh/1534906727238/image_check chmod +x image_check ./image_check ## 如果想让日志生成在自定义路径下: image_check –p [目标路径] 然后会输出想过结果,需要我们进行优化。 可以看到是大部分都是绿的,只有零星几个 Warning,可见用 VirtualBox 安装还是很省事儿的,至少不用打驱动。 二十一、针对 Check network 项目,云上能普遍都是关闭或删除Network Manager,并打开 network服务。以免服务有冲突。 systemctl stop NetworkManager systemctl disable NetworkManager 二十二、针对 Check firewall 项目,关闭防火墙能避免因为忘开端口导致 SSH 连不上总以为导入失败了,但是不开也不行,所以我推荐自己心里有数,开启有必要的端口就行,不用真停了,下面列举开启几个常见端口。 sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --zone=public --add-port=443/tcp --permanent sudo firewall-cmd --zone=public --add-port=22/tcp --permanent sudo firewall-cmd --reload 二十三、针对 Check disk size 项目,咱们不理他。 二十四、重新检测一遍以后,我们关机。去虚拟机目录里找文件去了 二十五、然后我们就可以把镜像上传到想要哪里用的ECS地域所对应的 OSS 下了。 可以在浏览器上直接传,如果镜像容量很大,我们可以压缩一下,节省容量然后 开一个按量的 ECS ,上传到 ECS ,然后ECS上解压并通过内网上传到 OSS 上就很爽了! 二十六、上传完成后,我们在对应地域下的ECS控制台页面,找到 镜像 然后点击右上角的 导入镜像 二十七、然后对应的填写就对了,然后 OSS Object地址 ,记得只能用 http:// 协议,然后用内网地址,一般就是后面带 internal。 二十八、然后我们等待导入完成 二十九、镜像创建完成后,我们就可以拿来创建实例了。 总结 至此,我们就完成了自制云上镜像的制作了。作为进阶大家可以试着将RHEL8、Ubuntu18.10 甚至 ArchLinux 进行上传。
前言 分享一个卓见云的较多客户遇到HTTPS优化案例。 随着相关浏览器对HTTP协议的“不安全”、红色页面警告等严格措施的出台,以及向 iOS 应用的 ATS 要求和微信、支付宝小程序强制 HTTPS 需求,以及在合规方面如等级保护对传输安全性的要求都在推动 HTTPS 的发展。 虽然 HTTPS 优化了网站访问体验(防劫持)以及让传输更加安全,但是很多网站主赶鸭子上架式的使用了 HTTPS 后往往都会遇到诸如:页面加载速度变慢、服务器负载过高以及证书过期不及时更新等问题。 所以本文就来探讨一下 HTTPS 的优化实践。 选型 其实像 Apache Httpd、LigHttpd、Canddy 等 Web 服务软件都可以设置 HTTPS,但是在相应的扩展生态和更新率上都不如 Nginx。 Nginx 作为大型互联网网站的 Web 入口软件有着广泛的支持率,例如阿里系的 Tengine、CloudFlare 的 cloudflare-nginx、又拍云用的 OpenResty 都是基于 Nginx 而来的,Nginx 是接受过大规模访问验证的。同时大家也将自己开发的组件回馈给 Nginx 社区,让 Nginx 有着非常良好的扩展生态。 图1-1 Nginx 在全网的使用情况 所以说 Nginx 是一款很好的 Web 服务软件,选择 Nginx 在提升性能的同时能极大的降低我们的扩展成本。 新功能 围绕 Web 服务已经有非常多的新功能需要我们关注并应用了,这里先罗列相关新功能。 HTTP/2 相比廉颇老矣的 HTTP/1.x,HTTP/2 在底层传输做了很大的改动和优化包括有: 每个服务器只用一个连接,节省多次建立连接的时间,在TLS上效果尤为明显 加速 TLS 交付,HTTP/2 只耗时一次 TLS 握手,通过一个连接上的多路利用实现最佳性能 更安全,通过减少 TLS 的性能损失,让更多应用使用 TLS,从而让用户信息更安全 在 Akamai 的 HTTP/2 DEMO中,加载300张图片,HTTP/2 的优越性极大的显现了出来,在 HTTP/1.X 需要 14.8s 的操作中,HTTP/2 仅需不到1s。 HTTP/2 现在已经获得了绝大多数的现代浏览器的支持。只要我们保证 Nginx 版本大于 1.9.5 即可。当然建议保持最新的 Nginx 稳定版本以便更新相关补丁。同时 HTTP/2 在现代浏览器的支持上还需要 OpenSSL 版本大于 1.0.2。 TLS 1.3 和 HTTP/1.x 一样,目前受到主流支持的 TLS 协议版本是 1.1 和 1.2,分别发布于 2006年和2008年,也都已经落后于时代的需求了。在2018年8月份,IETF终于宣布TLS 1.3规范正式发布了,标准规范(Standards Track)定义在 rfc8446。 TLS 1.3 相较之前版本的优化内容有: 握手时间:同等情况下,TLSv1.3 比 TLSv1.2 少一个 RTT 应用数据:在会话复用场景下,支持 0-RTT 发送应用数据 握手消息:从 ServerHello 之后都是密文。 会话复用机制:弃用了 Session ID 方式的会话复用,采用 PSK 机制的会话复用。 密钥算法:TLSv1.3 只支持 PFS (即完全前向安全)的密钥交换算法,禁用 RSA 这种密钥交换算法。对称密钥算法只采用 AEAD 类型的加密算法,禁用CBC 模式的 AES、RC4 算法。 密钥导出算法:TLSv1.3 使用新设计的叫做 HKDF 的算法,而 TLSv1.2 是使用PRF算法,稍后我们再来看看这两种算法的差别。 总结一下就是在更安全的基础上还做到了更快,目前 TLS 1.3 的重要实现是 OpenSSL 1.1.1 开始支持了,并且 1.1.1 还是一个 LTS 版本,未来的 RHEL8、Debian10 都将其作为主要支持版本。在 Nginx 上的实现需要 Nginx 1.13+。 Brotli Brotli 是由 Google 于 2015 年 9 月推出的无损压缩算法,它通过用变种的 LZ77 算法,Huffman 编码和二阶文本建模进行数据压缩,是一种压缩比很高的压缩方法。 根据Google 发布的研究报告,Brotli 具有如下特点: 针对常见的 Web 资源内容,Brotli 的性能要比 Gzip 好 17-25%; Brotli 压缩级别为 1 时,压缩速度是最快的,而且此时压缩率比 gzip 压缩等级为 9(最高)时还要高; 在处理不同 HTML 文档时,brotli 依然提供了非常高的压缩率; 在兼容 GZIP 的同时,相较 GZIP: JavaScript 上缩小 14% HTML上缩小 21% CSS上缩小 17% Brotli 的支持必须依赖 HTTPS,不过换句话说就是只有在 HTTPS 下才能实现 Brotli。 ECC 证书 椭圆曲线密码学(Elliptic curve cryptography,缩写为ECC),一种建立公开金钥加密的算法,基于椭圆曲线数学。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。 内置 ECDSA 公钥的证书一般被称之为 ECC 证书,内置 RSA 公钥的证书就是 RSA 证书。由于 256 位 ECC Key 在安全性上等同于 3072 位 RSA Key,加上 ECC 运算速度更快,ECDHE 密钥交换 + ECDSA 数字签名无疑是最好的选择。由于同等安全条件下,ECC 算法所需的 Key 更短,所以 ECC 证书文件体积比 RSA 证书要小一些。 ECC 证书不仅仅可以用于 HTTPS 场景当中,理论上可以代替所有 RSA 证书的应用场景,如 SSH 密钥登陆、SMTP 的 TLS 发件等。 不过使用 ECC 证书有两个点需要注意: 一、 并不是每一个证书类型都支持的,一般商业证书中带增强型字眼的才支持ECC证书的签发。 二、 ECC证书在一些场景中可能还不被支持,因为一些产品或者软件可能还不支持 ECC。 这时候就要虚线解决问题了,例如针对部分旧操作系统和浏览器不支持ECC,可以通过ECC+RSA双证书模式来解决问题。 安装 下载源码 综合上述我们要用到的新特性,我们整合一下需求: HTTP/2 要求 Nginx 1.9.5+,,OpenSSL 1.0.2+ TLS 1.3 要求 Nginx 1.13+,OpenSSL 1.1.1+ Brotli 要求 HTTPS,并在 Nginx 中添加扩展支持 ECC 双证书 要求 Nginx 1.11+ 这里 Nginx,我个人推荐 1.15+,因为 1.14 虽然已经能支持TLS1.3了,但是一些 TLS1.3 的进阶特性还只在 1.15+ 中提供。 然后我们定义一下版本号: # Version OpenSSLVersion='openssl-1.1.1a'; nginxVersion='nginx-1.14.1'; 建议去官网随时关注最新版: http://nginx.org/en/download.html https://www.openssl.org/source/ https://github.com/eustas/ngx_brotli/releases Nginx cd /opt wget http://nginx.org/download/$nginxVersion.tar.gz tar xzf $nginxVersion.tar.gz OpenSSL cd /opt wget https://www.openssl.org/source/$OpenSSLVersion.tar.gz tar xzf $OpenSSLVersion.tar.gz Brotli cd /opt git clone https://github.com/eustas/ngx_brotli.git cd ngx_brotli git submodule update --init --recursive 编译 cd /opt/$nginxVersion/ ./configure \ --prefix=/usr/local/nginx \ ## 编译后安装的目录位置 --with-openssl=/opt/$OpenSSLVersion \ ## 指定单独编译入 OpenSSL 的源码位置 --with-openssl-opt=enable-tls1_3 \ ## 开启 TLS 1.3 支持 --with-http_v2_module \ ## 开启 HTTP/2 --with-http_ssl_module \ ## 开启 HTTPS 支持 --with-http_gzip_static_module \ ## 开启 GZip 压缩 --add-module=/opt/ngx_brotli ## 编译入 ngx_BroTli 扩展 make && make install ## 编译并安装 后续还有相关变量设置和设置服务、开启启动等步骤,篇幅限制就省略了,这篇文章有介绍在 Ubuntu 下的 Nginx 编译:https://www.mf8.biz/ubuntu-nginx/ 。 配置 接下来我们需要修改配置文件。 HTTP2 listen 443 ssl http2; 只要在 server{} 下的lisen 443 ssl 后添加 http2 即可。而且从 1.15 开始,只要写了这一句话就不需要再写 ssl on 了,很多小伙伴可能用了 1.15+ 以后衍用原配置文件会报错,就是因为这一点。 TLS 1.3 ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; 如果不打算继续支持 IE8,或者一些合规的要求,可以去掉TLSv1。 然后我们再修改对应的加密算法,加入TLS1.3引入的新算法: ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5; 如果不打算继续支持 IE8,可以去掉包含 3DES 的 Cipher Suite。 默认情况下 Nginx 因为安全原因,没有开启 TLS 1.3 0-RTT,可以通过添加 ssl_early_data on; 指令开启 0-RTT的支持。 ———— 实验性尝试 众所周知,TLS1.3 由于更新了很久,很多浏览器的旧版本依旧只支持 Draft 版本,如 23 26 28 分别在 Chrome、FirFox 上有支持,反而正式版由于草案出来很久,导致TLS1.3在浏览器上兼容性不少太好。 可以使用 https://github.com/hakasenyang/openssl-patch/ 提供的 OpenSSL Patch 让 OpenSSL 1.1.1 同时支持草案23,26,28和正式版输出。 不过由于不是官方脚本,稳定性和安全性有待考量。 ECC双证书 双证书配置的很简单了,保证域名的证书有RSA和ECC各一份即可。 ##证书部分 ssl_certificate /usr/local/nginx/conf/ssl/www.mf8.biz-ecc.crt; #ECC证书 ssl_certificate_key /usr/local/nginx/conf/ssl/www.mf8.biz-ecc.key; #ECC密钥 ssl_certificate /usr/local/nginx/conf/ssl/www.mf8.biz.crt; #RSA证书 ssl_certificate_key /usr/local/nginx/conf/ssl/www.mf8.biz.key; #RSA密钥 Brotli 需要在对应配置文件中,添加下面代码即可: brotli on; brotli_comp_level 6; brotli_min_length 1k; brotli_types text/plain text/css text/xml text/javascript text/x-component application/json application/javascript application/x-javascript application/xml application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype; 为了防止大家看糊涂了,放一个完整的 server{}供大家参考: server { listen 443 ssl http2; # 开启 http/2 server_name mf8.biz www.mf8.biz; #证书部分 ssl_certificate /usr/local/nginx/conf/ssl/www.mf8.biz-ecc.crt; #ECC证书 ssl_certificate_key /usr/local/nginx/conf/ssl/www.mf8.biz-ecc.key; #ECC密钥 ssl_certificate /usr/local/nginx/conf/ssl/www.mf8.biz.crt; #RSA证书 sl_certificate_key /usr/local/nginx/conf/ssl/www.mf8.biz.key; #RSA密钥 #TLS 握手优化 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; keepalive_timeout 75s; keepalive_requests 100; #TLS 版本控制 ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5'; # 开启 1.3 o-RTT ssl_early_data on; # GZip 和 Brotli gzip on; gzip_comp_level 6; gzip_min_length 1k; gzip_types text/plain text/css text/xml text/javascript text/x-component application/json application/javascript application/x-javascript application/xml application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype; brotli on; brotli_comp_level 6; brotli_min_length 1k; brotli_types text/plain text/css text/xml text/javascript text/x-component application/json application/javascript application/x-javascript application/xml application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype; location / { root html; index index.html index.htm; } } 先验证一下配置文件是否有误: nginx -t 如果反馈的是: nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful 就可以重启 Nginx ,然后到对应网站中去查看效果了。 验证 HTTP/2 通过浏览器的开发者工具,我们可以在 Network 栏目中看到 Protocol 中显示 h2 有无来判断。 TLS 1.3 老地方,我们可以通过浏览器的开发者工具 中的 Security 栏目看到 Connection 栏目下是否有显示 TLS 1.3 ECC 双证书 ECC 双证书配置了以后无非就是在旧浏览器设别上的验证了。这里用足够老的上古XP虚拟机来给大家证明一波。 XP系统上: 现代操作系统上的: Brotli 通过浏览器的开发者工具,我们可以在 Network 栏目中,打开具体页面的头信息,看到 accept-encoding 中有 br 字眼就行。 总结 通过上述手段应该可以让 HTTPS 访问的体验优化不少,而且会比没做 HTTPS 的网站访问可能更快。 这样的模式比较适合云服务器单机或者简单集群上搭建,如果有应用 SLB 七层代理、WAF、CDN 这样的产品可能会让我们的这些操作都白费。 我们的这几项操作都是自建的 Web 七层服务,如果有设置 SLB 七层代理、WAF、CDN 这样设置在云服务器之前就会被覆盖掉。 由于 SLB 七层和CDN这样的产品会更加追求广泛的兼容性和稳定性并不会第一时间就用上上述的这些新特性(HTTP/2 是普遍有的),但是他们都配备了阿里云的 Tengine 的外部专用算法加速硬件如 Intel® QuickAssist Technology(QAT) 加速器可以显著提高SSL/TLS握手阶段性能。 所有 HTTPS 的加密解密都在 SLB 或 CDN 上完成,而不会落到ECS上,可以显著降低 ECS 的负载压力,并且提升访问体验。 目前云上的网络产品中能支持四层的都是可以继续兼容我们这套设计的,例如:SLB 的四层转发(TCP UDP)、DDOS高防的四层转发。 也欢迎大家有问题来找卓见云,聊骚也可以呀~。 我的钉钉号:huicute , 以及我的博客:https://www.mf8.biz
前言 前言和介绍部分的阅读不算在一小时里哟~~~ 区块链绝对是17 18年的热词,也是国家各种文件所重点支持的新型技术,几乎大家都会提区块链,企业也都很愿意基于区块链来解决的信任场景,但是苦于构建底层架构的复杂以及相关成本没有办法实施。而区块链服务就是为此而生的。 介绍 目前阿里云的区块链服务即 BlockChain as a Service,简称 BaaS,是一款 PaaS 层的产品,提供了基于阿里云构建的区块链平台服务,用户可以更专注于区块链服务的开发而不用将大量精力浪费在底层服务的部署上,我们不需要指导底层用了什么配置,什么机制,只要专注开发应用即可,因为区块链往往应用在一些金融、供应链等核心领域,如果没有一个安全稳定的运行环境,这将是一场灾难。 区块链也叫做分布式账本数据库,所以我们将 BaaS 理解为一款云数据库。相类似的阿里云提供的云数据库 MySQL 版提供了较社区版自建更好的服务、体验、稳定性和可靠性,但是用户的程序还是得自行开发以以来于云数据库 MySQL 版。同理区块链服务也仅仅是提供了一个分布式账本数据库,解决了信赖问题,但是针对其所映射的理念的实现则依旧需要进行开发。 目前阿里云的区块链服务主要是提供针对企业场景的联盟链,有两大底层平台 Hyperledger Fabric(超级账本) 和 蚂蚁区块链。 HyperledgerFabric是Linux基金会旗下的开源项目,起初是由 IBM 和 Digital Asset并赠送给 Hyperledger 项目的,在开源领域拥有非常高的声望,同时获得支持也更多,有非常多基于 Hyperledger Fabric 的区块链开源项目可以借鉴。蚂蚁区块链则是阿里集团主要是蚂蚁金服输出的联盟链项目,暂未开源,阿里作为区块链专利最多的企业,蚂蚁区块链的实力可见一斑,TPS可以高到250000,秒杀其他竞品,但是由于开放性不强等原因,其支持并不广泛,没有可以借鉴的开源项目。 教程 这里我们以开源生态比较完善的 Hyperledger Fabric 来写教程。这是创建环境的流程图,我们按这个流程走: 创建组织 个区块链网络是一个联盟,一个联盟由多个组织组成。组织是参与区块链网络的企业、政府机构、团体等实体。 创建组织其实很简单,输入名称和域名,然后就是选择地域和规格了。 创建联盟 一个区块链网络是一个联盟,一个联盟由多个组织组成。 一、这里创建策略是这样的: Any(任一组织同意):在该联盟中创建一个新的通道时,不需要该新通道内其他组织成员的同意。 All(所有组织同意):在该联盟中创建一个新的通道时,需要该新通道内所有组织成员的同意。 不过暂时只有一个 Any 可选。 二、组织,组织的话可以和联盟不在同一个的地域。 暂时不知道他们之间通信的流量会怎么收费。 三、共识机制,默认就是 Kafka,区块链Hyperledger Fabric基于Kafka提供CFT(Crash Fault Tolerence)类型的共识机制。 四、不同的规格意味着底层的服务器规格不同。 组织加入联盟 进入联盟中就能 邀请组织加入 了。 然后就有一个邀请链接,复制地址通过邮件或者其他途径邀请即可,是可以邀请其他阿里云用户的。理论上创建联盟收费,创建组织不收费。 打开链接后,会识别你名下的组织然后是否加入所对应的联盟。 然后再进入到联盟中,可以看到 待批准 处就有刚才申请加入的组织了,当然是批准。 创建通道 在联盟中点击 通道,添加通道,然后输入名称和组织即可。 通道 主要用于实现区块链网络中业务的隔离。一个联盟中可以有多个通道,每个通道可代表一项业务,并且对应一套账本。通道内的成员为业务参与方(即联盟内的组织),一个组织可以加入多个通道。 然后进行审批 自然是同意 创建码链 进入到对应用户处,进行码链的创建,上传码链。 码链需要通过开发工具打包对应的码链然后上传,码链开发指南可以参考 Chaincode for Developers,我们可以试着学习后面的 DEMO 部署章节,获取已经开发好的码链。 接着选择对应的部署通道 然后是背书策略,背书策略举例:OR ('Org1MSP.member','Org2MSP.member')表示此通道中的两个组织任何一方背书即可;AND (‘Org1MSP.member’,’Org2MSP.member’)表示需要此通道中的两个组织背书。 上传链码成功后,链码 标签页的列表中会出现该链码。其中 链码 列显示的链码名称以及 版本 列显示的链码版本号都是您在本地打包链码时指定的。 可以看到上传后,通道状态是 “未实例化” ,自然是点击 安装 然后再点击 实例化 然后会弹出一个背书策略,一般来说系统自动显示刚才上传链码时填写的背书策略。当然我们也可以保留该策略,也可以修改为新的策略。 然后就成功的部署完码链了。 有细心的朋友可能发现我的码链名称从 work1 变成了work2 因为之前拿 Work1 做测试,没有截图,然后要再做的时候,就必须新建一个码链了,因为码链不能被删除。 创建用户 这里的用户就有点类似于数据库里的用户了, 进入组织的 用户 菜单,然后 新增用户。 很简单数据账号密码即可。 部署好用户后就可以下载 SDK 用户开发部署了。 部署 DEMO Demo 我们拿 marbles 作为演示,因为这是一个 GUI 演示环境,比较直观。 为了再简化 DEMO 部署难度,这里拿阿里云提供编译好码链的版本。 我们需要准备一个支持 Node.JS 的环境,不一定要服务器,本地都可以。截至发文,marbles 仅支持 V6 和 V8,还不支持 V10。 准备 我们下载源码包并解压 wget https://baas-sdk.oss-cn-hangzhou.aliyuncs.com/node-sdk-demo-1.0.0.tar.gz tar xzf node-sdk-demo-1.0.0.tar.gz 部署SDK 这里下载了 5.0.0,会解压出一个 node-sdk-demo 目录,我们将 创建用户 后下的 SDK 压缩包中的 connection-profile-standard.json 文件上传到对应的 /path/to/node-sdk-demo/config 下 然后依旧是修改这个文件,先格式化一下,用相关代码编辑器的插件或者用 https://jsonlint.com/ 都可以: 在最后几行的 "certificateAuthorities": {} 代码块下添加: "registrar": [ { "enrollId": "账号", "enrollSecret": "密码" } ], 最终效果: 部署码链 将 /node-sdk-demo/chaincode 下的 marbles_v4.cc 根据之前的部署码链教程上传即可。 Node 安装 回到 node-sdk-demo 目录,我们开始安装。 一、安装 gulp 。 npm install --global gulp 二、安装 marbles 的依赖包 npm install 国内的话嫌速度慢可以安装 CNPM 如果结束后出现: run `npm audit fix` to fix them, or `npm audit` for details 建议不要修复,修复了会启动不了,先忽略吧。 启动 最后运行 gulp marbles_baas 最后输出: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - info: Detected that we have NOT launched successfully yet debug: Open your browser to http://localhost:3001 and login as "admin" to initiate startup - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 就可以打开 http://localhost:3001 (本地) http://你的公网ip:3001 (服务器上) 配置 然后我们可以看到夏目的引导页,选择 Guided , 然后在第三步: channel: 填写上传 marbles_v4 的通道名,如 work1,主要是区分业务用的,和我们之前创建的通道一致就行 chaincode_id: 填写 marbles chaincode_version: 填写 v4 然后我们创建角色: 然后我们就可以愉快的玩耍了: 可以看到每个弹珠的区块链信息。 我们可以在区块链服务的后台监控看到相关信息: 是不是玩耍区块链也还是满简单的?
前面有大段函数计算的概念介绍,为了避免看概念介绍占用我这个一小时,所以大家可以看后面的教程内容,操作完了再来回顾这里的内容。 前言 在像阿里云ECS这种 IaaS 类的产品大火前,有一种 PaaS 模式的云产品是非常火的,也就是各种 APP Engine,比如说最早做的谷歌GAE、新浪SAE,以及后期涌现的阿里云ACE和百度云BAE,但是现在来看我们都知道其结果,他们都已经不存在了,尽管在当时看来 App Engine 是对虚拟主机和物理服务器的一场革新,但是过分超前的理念和不切实际的体验葬送了各类 AE。 所以云计算的普及也是渐进式的,不是一蹴而就的,大家传统服务器用的好好就要一下次大跨步的使用 PaaS 类 SaaS 类服务。 ServerLess (无服务器化)是最近很火的一个概念,让我想起了曾经的 APP Engine,但是随着 ServerLess 的不断发展其实我们可以发现,ServerLess 已经变得和传统服务器一样好用了,受到的限制也随着版本的迭代服务的升级变得越来越少,就像阿里云的函数服务其实并没有太大的学习成本和变动。 上图是 ServerLess 发展的小简史,网站背后的运行技术服务的发展其实就像是我们对物质从分子到原子到电子、夸克的理解: 物理服务器时代,从大型机、小型机中脱离开来,1U、2U的服务器就可以支撑我们的服务,同时将服务器托管给IDC机构,不再考虑机房的建设维护问题,典型应用是 服务器租赁托管和虚拟主机。 虚拟化时代,我们使用 XEN、KVM等虚拟化技术,隔离了硬件以实现操作系统级别的隔离,让服务器的购买更加优惠同时粒度更细,我们以 CPU、内存计费并以月计费,不再考虑物理服务器采购和维护的问题,典型应用是 VPS。 云计算时代,我们使用云计算进一步地自动管理这些虚拟化的资源,更安全更便捷同时也更便宜,不仅仅可以将服务器拆的更细,也能将多台服务器整合成一台超性能服务器,同时计费粒度到了小时级别。 不仅仅是服务器,数据库、存储等等我们都不再考虑实施部署的问题,典型应用是各类云计算产品,特别是云数据库、云存储等。 容器化时代,我们使用 Docker、k8s 等容器技术,通过微服务的拆解将应用粒度变得更细腻,维护和实施变得更加方便。典型应用是各大企业开发能力、效率提升。 现在,我们有了 Serverless,一种粒度更细的形式出现了,我们以 计算 * 时间 的方式计费,同时又获得了将应用拆解的更加细腻的方式,让我们无需考虑任何后端的问题,随着请求的增长,ServerLess 会自动进行伸缩,而不像传统云服务一样要自行搭建负载均衡和配置可扩展的无状态环境,开发人员不用考虑服务器的安全问题,不用考虑Docker的部署问题,不用考虑 Runtime 调优、升级、安全等问题等等。 当然了,ServerLess 远不是那么简单的产品,我也只是浅浅的了解了一层。 介绍 ServerLess 在阿里云上是 函数计算(Function Compute)是一个事件驱动的全托管计算服务。这里是介绍: 通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码。更棒的是,您只需要为代码实际运行消耗的资源付费 - 代码未运行则不产生费用。 如果要搜索一些 ServerLess 的中文教程,或者阿里云函数计算的相关教程,个人建议就用 函数计算 代替 ServerLess 来避免大量搜到其他比不要的 ServerLess 教程的噪音。 下面是传统方式搭建服务和 ServerLess 的对比: 项目开发效率 传统方式搭建服务 函数计算方式 采购服务器等基础设施 需要 不需要 管理服务器等基础设施 需要 不需要 开发业务服务模块 需要 需要 部署业务服务模块 需要 需要,但是很简单,提供了很多工具 通过 nginx 搭建反向代理、https 和负载均衡 需要 不需要,通过阿里云 API 网关或函数 HTTP 触发器可以实现 搭建相关日志服务 需要 不需要,通过日志开关开启日志服务 配置安全访问规则 需要 不需要,自带基础安全访问配置,API 网关提供更多的配置 运维负担 重 轻 开发效率 低 高,通常几天就能完成 Serverless 传统方式搭建服务 维护成本 维护成本低,无需管理服务器等基础设施,只需编写代码并上传,程序员从底层设备维护中解放出来,只考虑实际业务逻辑即可。 维护成本高,自行维护服务器,需要处理服务器宕机、服务器扩容等一系列底层琐碎的事情 可用性 可用性高,函数计算为用户准备弹性、可靠的计算资源,具有根据流量自动scale特性,对有明显波峰波谷的运用效果奇佳 服务器故障会对应用服务产生严重影响 费用 按需付费,只为实际使用的计算资源付费,代码未运行则不产生费用 需要支付服务器的费用,代码运行与否都要收费 不足 当然了 ServerLess 是很诱人,但却不是万能的,有些场景还是不适合的。 ServerLess 不仅仅是一门技术也是一种理念和微服务一样,很多老系统不能直接上 ServerLess,得相应的进行升级和拆解才能更好的适应 ServerLess,这是一个门槛。 同时 ServerLess 针对开发语言的可定制性和可开放性,ServerLess 会选择处于稳定版的语言且更新具有一定的滞后性,特别是 Node.JS 这样的版本更新帝,最新稳定版是10,但是提供的却是8。同时如果对语言有底层的修改而无法通过 Plugin 实现同样也无法适应相关场景。 不适合长时间的进行计算处理的场景,ServerLess 是产生计算后按时间计费的,适合那些触发类短时间计算的,如果有长时间进行计算的场景就不适合。 教程 本次教程,我们将介绍如何在阿里云的 ServerLess 产品中部署 WordPress。 因为在博客这种计算量小的场景也是比较适合放在 ServerLess 中的,不过因为 WordPress 的插件库又很丰富用了不同的插件完全可以实现不同的场景功能,所以到底适不适合放还得评估一下。 如上图所示,函数计算代替了像 Apache Httpd、Nginx 之类的传统 Web 服务软件本身,用户函数代替了Web 服务软件的 .conf 配置文件。 PHP Runtime 代替 PHP 这个就很好理解了。然后 NAS 则作为存储文件并提供写入的地方,不然像 APP Engine 一样无法进行写入操作就很难操作了。 准备 一、 函数计算FaaS,可按量付费,有免费额度 二、 文件存储NAS,可按量付费 三、 云数据库RDS 四、 日志服务LOG(可选),可按量付费,有免费额度 每个产品都开设在同一个地域同一个 VPC 下。 动手吧 NAS 因为文件托管需要依赖 NAS,所以得开通 NAS。 一、进入 NAS 控制台 https://nas.console.aliyun.com/ 二、 选择好地域后,创建文件系统 三、存储类型建议还是用 SSD性能型,因为 NAS 的读写性能相比云盘还是有些低的,NAS 只要地域对任何可用区都可以挂载使用。 四、创建完之后 添加挂载点 五、选择专有网络,选择好对应的VPC网络和交换机,权限组选择 全部允许 函数计算 一、进入函数计算控制台 https://fc.console.aliyun.com 二、选择地域后创建新的函数服务 三、开启高级配置,开通公网访问,不然网站都打不开: 四、需要配置专有网络,在专有网络下才能更安全的使用函数计算并整合其他云产品。 五、配置NAS的用户(uid)和用户组(gid),例如我填的是 10005,这个用在到时候 chown 给予权限上,然后选择之前创建过的 NAS挂载点,本地目录选择挂载在 /mnt/www 六、日志配置建议就只是选择空白项目和空白仓库好了,日志服务是有一定免费的额度的。 当然不开也不影响服务运行。 七、相关服务间的调用需要进行授权,所以我们可以选择 新建角色 ,在系统模板授权中勾选服务所需要的系统授权,然后如图中搜索 AliyunECSNetworkInterfaceManagementAccess 权限,并选择。 八、然后会跳转到 角色快捷创建 的页面,也不用管太多,直接 同意授权 即可。 九、返回后就是授权成功了。 十、点击创建即可,成功了就直接成功了,如果返回说: VSwitch 'vsw-2zenbov6s8r8kwad6c0bd' is in unsupported zone 'cn-beijing-e' (allowed zones: cn-beijing-c) 意思就是说目前函数计算只支持创建在 cn-beijing-c 的专有网络·虚拟交换机。 不同的地域具体支持的可用区可能不同。 在专有网络哪里创建一个 allowed zones: xxxxx 可用区的虚拟交换器然后重新创建函数计算即可。 十一、然后新建函数 十二、选择创建一个空白函数 十三、选择创建 HTTP 触发器,认证方式选择 anoymous,请求方式全部勾选 十四、运行环境选择 PHP 7.2,不然怎么跑 WordPress 十五、代码配置这块,选择 在线编辑,贴入下面我提供的代码即可。 <?php use RingCentral\Psr7\Response; function endsWith($haystack, $needle) { $length = strlen($needle); return $length === 0 || (substr($haystack, -$length) === $needle); } function handler($request, $context): Response{ $uri = $request->getAttribute("requestURI"); $uriArr = explode("?", $uri); // default php / or /wp-admin/ if (preg_match('#/$#', $uriArr[0]) && !(strpos($uri, '.php'))) { $uriArr[0] .= "index.php"; $uri = implode($uriArr); } $proxy = $GLOBALS['fcPhpCgiProxy']; $root_dir = '/mnt/www'; //php script if (preg_match('#\.php.*#', $uri)) { $host = "pressless.mf8.biz"; // 此处填写你的域名 $resp = $proxy->requestPhpCgi($request, $root_dir, "index.php", ['HTTP_HOST' => $host, 'SERVER_NAME' => $host, 'SERVER_PORT' => '80'], ['debug_show_cgi_params' => false, 'readWriteTimeout' => 60000] ); return $resp; } else { // static files, js, css, jpg ... $filename = $root_dir . explode("?", $uri)[0]; $filename = rawurldecode($filename); $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); fclose($handle); $headers = [ 'Content-Type' => $proxy->getMimeType($filename), 'Cache-Control' => "max-age=8640000", 'Accept-Ranges' => 'bytes', ]; return new Response(200, $headers, $contents); } } 注意: 第25行需要修改为你自己的域名 $host = "pressless.mf8.biz"; // 此处填写你的域名 其他的环境配置,比如说内存大小、超时秒数都可以自行设置。 十六、授权这块因为一开始我们就创建过,所以可以直接下一步,如果应用比较复杂那么就再修改一下。 十七、在触发器中点击之前创建好的 wp-func 触发器 十八、可以看到这边又配置自定义域名的位置 十九、然后点击创建域名 二十、填写域名名称就是域名这个没毛病。 然后路由设置中,路径填写:/*,然后函数就选择之前创建的触发器的函数。 二十一、然后会提示你下面的: domain name 'pressless.mf8.biz' has not been resolved to your FC endpoint, the expected endpoint is '1572623648803837.cn-beijing.fc.aliyuncs.com.' 意思就是咱们得先把域名解析到提示的:1572623648803837.cn-beijing.fc.aliyuncs.com 上才行。 那我就把我要绑定的 pressless.mf8.biz域名CNAME解析到 1572623648803837.cn-beijing.fc.aliyuncs.com上就行。 二十二、接下来就是上传WordPress程序了,这时候需要就需要继续用到 NAS 了。鉴于新建一个转移函数迁移压缩包内容到NAS很多人不太会,所以我更建议开一台按量的 ECS 挂载NAS然后通过SFTP进行可视化操作。 当然还可以拿这台 ECS 来做数据库服务器在前期可以降低购买云数据库的成本。 例如我通过下面的命令将 NAS 通过 NFS 的方式挂载至 /mnt 目录下: mount -t nfs -o vers=4.0 16d3e4b609-cub21.cn-beijing.nas.aliyuncs.com:/ /mnt 二十三、访问我们绑定的域名,例如我是:http://pressless.mf8.biz 二十四、那我这里就通过 ECS 自建的 MySQL 数据库,然后内网地址连接是可以进行正常连接和安装的。 如果是通过云数据库的话,那么需要在白名单哪里添加 0.0.0.0/0,同样的ECS自建也要保证专有网络内网内可以被访问。 二十五、如果我们安装WP插件和升级WP遇到了需要填写FTP的要求的话,我们别忘了之前我们创建函数服务的时候有填写过 uid 和 gid。 那我们还得在 ECS 中进行操作。 chown -R 10005:10005 /mnt/* 因为我之前设置过的 uid 和 gid 是 10005,所以这里写的是 10005,大家可以自己顶一,然后NAS挂载在 /mnt 目录下,所以是 /mnt/* 总结 就这样我们完成了一个 WordPress 的 ServerLess 化,因为大家都是第一次接触所以教程写的很细步骤很多,自己踩的坑都写了一遍。 WordPress 的 ServerLess 化下一步应该是进行前后端分离通过 API 通信来减少动态请求减少函数的计算。 然后现在函数计算还不支持 Rewrite(伪静态),不过相关技术应该是可行的,大家可以给我的这条聆听点个赞:【功能建议】函数计算ServerLess添加对Rewrite(伪静态)的支持 再然后其实函数计算还需要一款按量计费的ServerLess化的关系型数据库,因为 TableStore 是支持按量的 NoSQL,同样这是聆听建议的链接:【功能建议】数据库体系中还需要一款能按量使用的关系型数据库,可以是 POLARDB ServerLess
前言 在空闲的时候刷抖音上刷到过一个程序员小哥因为错误操作将公司服务器全部删除然后各处查找备份,背后一身全是汗。混互联网的都知道天灾人祸在所难免,有一个备份就可以尽可能的减少损失,前借个月就有在某云计算厂商上出现过估值千万的创业公司因为将重要数据存在上面却因未做备份在面临“人祸”的时候丢失数据。 而且对于备份,尽量有有多个途径进行备份,往往出现事故后平时最倚重的备份途径救不了数据,反而是最不重视的哪一个或许挽救一场灾难。 同时呢,在等级保护中,三级等保就也有要求必须要有异地灾备,最基本的就是要有一个异地的数据库级备份。如何进行规划一个高效有意义的异地灾备也是一个很重要的问题。 那么说到备份就必须提两个概念:RPO 和 RTO。 RPO 即 Recovery Point Objective ,最多可能丢失的数据的时长。RTO 即 Recovery Time Objective ,指的是从灾难发生到整个系统恢复正常所需要的最大时长。 在企业生产级的场景中运维人员和DBA等都在追求者更短的 RPO 和 RTO,特别是在金融场景中因为涉及费用问题,即便是产生了 1s 的数据丢失,都可能意味着大量的资金未被记录会产生不可估量的后果。 但是随着云计算产品的出现,新的产品和技术让更低的 RPO 和 RTO 成为可能。 介绍 如果大家用过阿里云的云数据库的话,应该是对 任意时间点恢复 这个特性有着比较深刻的印象吧,即便没有数据库备份依旧可以对数据库恢复至任意时间点。 现在只要通过 DBS 产品即便不是 DBA 的新手也可以非常方便的自管理自建数据库,获得企业级灾备特性。 当然了 DBS 在备份上的能力远比 RDS 强。 数据库备份(Database Backup,简称DBS)是为数据库提供连续数据保护、低成本的备份服务。它可以为多种环境的数据提供强有力的保护,包括企业数据中心、其他云厂商及公有云。数据库备份拥有一套完整的数据备份和数据恢复解决方案,具备实时增量备份以及精确到秒级的数据恢复能力。 DBS 目前支持 MySQL 5.5~5.7 ,MongoDB 3.2~3.6,Oracle 9i~12c,SQL Server 2008 R2~ 2016 这几款关系型数据库以及指定版本的备份管理。 具体支持情况可以参考: 功能矩阵 特性 实时备份,RPO达到秒级 表级恢复,故障恢复时间大大缩短 长期归档,自动管理备份生命周期 异地灾备,构建数据库冷备中心 对比 那么 DBS 和 RDS 究竟有什么区别呢? 一、RDS 的数据库备份功能相对来说比较基础,因为影响到RDS高可用,所以是用户必选项的。而 DBS 的数据库备份属于高级备份功能。 二、 RDS 的数据备份空间和日志文件共享,免费额度为存储空间容量的一半,超出部分按 0.8/G/月 计算。 DBS 的数据备份空间存储在 OSS 上,价格为 0.12元/G/月,并且可以通过生命周期机制进一步降低存储费用。 三、 RDS 的备份存储和实例所在地域一致,DBS 可以将数据备份存放在其他地域的 OSS 上,实现异地备份。 四、 RDS 的备份恢复是全库恢复的,但是有些时候往往我们只可能错误操作了一个表,恢复全库过于麻烦代价也大。DBS提供单表恢复能力,实现分钟级数据恢复 五、 其他高级特性还包括,DBS提供长期归档能力,支持5年数据备份,DBS提供实时备份,RPO达到秒级,DBS提供备份数据生命周期管理,自动转存到性价比更好存储、过期清理等。 教程 这里以 MySQL 为例,进行设置。 由于特性的需求所以需要 MySQL 开启 BinLog,开启 Binlog 教程:为 MySQL/MariaDB 开启 Binlog 功能 一、首先我们得购买一个备份计划,https://common-buy.aliyun.com/?commodityCode=cbspre#/buy 大致要选三个参数, 地域 ,同最终存储备份数据的 OSS 保持一致即可,不是同数据库所在地域相同 数据库类型 ,这个很好选,我们的数据库是什么就选什么 规格 ,不同的规格有不同的数据传输的免费额度,具体规格怎么选,这张图还是比较清晰的。 开发者少量数据备份:推荐选择micro规格,适用于数据文件20GB以下数据库备份,用于网站、博客等后台数据库备份,当数据丢失时,可以恢复到任意时间点。 企业使用:推荐选择small规格,作为DBS主推规格,适用于数据文件100G数据库备份,可以根据实际运行情况,将规格升级到medium、large。 数据文件400GB以上大型数据库备份:推荐选择large规格,提供最高的全量备份性能、增量备份性能、恢复性能和备份数据量限额。 二、 然后我们就进入我们的备份计划,到这里使用过 DTS 的同学肯定能非常好的适应。如果是走公网不知道如何给账户放权和防火墙屏蔽端口的,可以参考这篇文章: 安装 MariaDB 并通过 DMS 管理 当都测试通过后 就可以下一步了 三、然后就是进入预检查了 如果是 Binlog 和 Server_id 的问题可以参考 为 MySQL/MariaDB 开启 Binlog 功能。 一般来说我们会遇到一个 “源库权限检查” 的问题,点击后面的“i“ 可以看到帮助,运行一下给出的语句就行。 然后我们重新启动一下预检查即可。 四、设置备份周期 注意点 如果是非云上VPC传输也就是说走公网的话,一定要设置数据库通过 SSL 方式连接,来保障安全性。 体验 DBS 唯一麻烦的地方就是刚才的步骤了,之后就完全在可视化的界面上操作即可。 比如说备份数据的生命周期 还可以查看全量数据备份和增量日志备份的信息 可以看到具体的文件都是存储在 OSS 上的。 总结 总的来说 DBS 是一款专注于数据库备份的产品,非常的专业,除了如果用户没有配置过 Binlog 可能会稍微麻烦点,其他操作的体验都非常的简单。 而且 DBS 是一款 SaaS 产品,意味着和阿里云平台本身绑定并不是太死,线下的IDC或者其他云都可以使用DBS获得备份体验的提升。
介绍 说到 Binlog 就不得不提一下 MySQL Server 的四种类型的日志:Error Log、General Query Log、Slow Query Log 和 Binary Log 。 Error Log 即 错误日志,记录 mysqld 发生的一些错误。 General Query Log 即 一般查询日志,记录 mysqld 正在做的事情,如客户端的连接和断开、来自客户端每条 Sql Statement 记录信息;如果你想准确知道客户端究竟传了什么内容给服务端,这个日志就非常管用了,当然了这货非常影响性能。 Slow Query Log 即 慢查询日志,记录一些查询执行较慢的 SQL 语句,这个日志非常常用,主要是给开发者调优用的。 Binary Log 简称 Binlog 即 二进制日志文件,这个文件记录了mysql所有的 DML 操作。通过 Binlog 日志我们可以做数据恢复,做主主复制和主从复制等等。对于开发者可能对 Binlog 并不怎么关注,但是对于运维或者架构人员来讲是非常重要的。 简而言之,Binlog 两个重要的用途——复制和恢复,很多十分好用的 MySQL 体验比如说增量备份,回滚至指定时间以及上面提到的主主和主从等等都依赖于 Binlog。 Binlog 有三种模式: STATEMENT:顾名思义,STATEMENT 格式的 Binlog 记录的是数据库上执行的原生SQL语句 ROW:这种格式的 Binlog 记录的是数据表的行是怎样被修改的。 MIXED:混合模式,如果设置了这种格式,MariaDB / MySQL 会在一些特定的情况下自动从 STATEMENT 格式切换到 ROW 格式。例如,包含 UUID 等不确定性函数的语句,引用了系统变量的语句等等。 开启 Binlog 像一些公有云上的云数据库一般都是默认开始 Binlog 的,不需要人为干涉,如果是自建的 MySQL 一般是不开启的。 检查是否开启 登录 MySQL ,执行 SQL : show global variables like 'log_bin'; 会返回一个如下的结果: +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | OFF | +---------------+-------+ 1 row in set (0.001 sec) 如果返回的是 log_bin | OFF 那么就是没有开启,ON 则是已经开启 设置开启 修改 my.cnf 文件,一般来说都位于 /etc/my.cnf 这边,部分像 MariaDB 可能是修改/etc/my.cnf.d/server.cnf 文件。 在 [mysqld] 下写入如下内容: log_bin = /var/lib/mysql/bin-log log_bin_index = /var/lib/mysql/mysql-bin.index expire_logs_days = 7 server_id = 0002 binlog_format = ROW 解释一下: log_bin = /var/lib/mysql/bin-log , 开启 Binlog 并写明存放日志的位置 log_bin_index = /var/lib/mysql/mysql-bin.index , 指定索引文件的位置。 expire_logs_days = 7 ,删除超出这个变量保留期之前的全部日志被删除 server_id = 0002 , 指定一个集群内的 MySQL 服务器 ID,如果做数据库集群那么必须全局唯一,一般来说不推荐 指定 server_id 等于 1。 binlog_format = ROW,设置方面提到过的三种 Binlog 的日志模式。 更多选项: max_binlog_size ,binary log 最大的大小 binlog_cache_size ,当前的多少事务cache在内存中 binlog_cache_disk_use ,当前有多少事务暂存在磁盘上的,如果这个值有数值的话,就应该要注意调优了。 max_binlog_cache_size ,最大能有多少事务cache在内存中 binlog_do_db和binlog_ingore_db ,是一对控制对哪些数据库进行收集的选项。 sync_binlog ,这个值控制cache的数据commit多少次才刷到磁盘上。默认是0,也就是让数据库自己决定同步的频率。如设置成1的话,则每commit一次就会将cache的数据同步到磁盘上,这样做最安全,但是性能最差。 最后就是重启一下数据库: service mysql restart 或者 service mysqld restart 继续检查一下是否开启 登录 MySQL ,执行 SQL : show global variables like 'log_bin'; 这下应该就是返回 ON 了 MariaDB [(none)]> show global variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | ON | +---------------+-------+ 1 row in set (0.001 sec) 来自我的博客:https://www.mf8.biz/enable-binlog/
前言 RocksDB是facebook基于LevelDB实现的一款可嵌入式的持久化键值(Key-Value)存储数据库,目前为facebook内部大量业务提供服务。由于其有高性能和高适配性的特点,所以被大量的应用于对传统数据库引擎的高性能改造,例如商业数据库引擎 TerarkDB 分布式关系型数据库 TIDB 等都是应用了 ROCKSDB 来实现高性能的。 介绍 经过 Facebook 大量工作,将 RocksDB 作为 MySQL 的一个存储引擎移植到 MySQL,称之为 MyRocks。 经过多年的发展,MyRocks 已经比较成熟,已进入了facebook MySQL的主分支了。其他 MySQL 分支包括 Percona Server for MySQL 和 MariaDB Server 都集成了 MyRocks。 MyRockS 跑分:http://jetware.io/blog/redmine-performance-on-myrocks、https://www.percona.com/blog/2018/04/30/a-look-at-myrocks-performance/, 本来还想翻译翻译贴图出来的,没想到那么多图 简单放个 QPS 对比吧: MySQL 8.0 InnoDB VS MariaDB 10.3 MyRocks RocksDB与innodb的比较 innodb空间浪费, B tree分裂导致page内有较多空闲,page利用率不高。innodb现有的压缩效率也不高,压缩以block为单位,也会造成浪费。 写入放大:innodb 更新以页为单位,最坏的情况更新N行会更新N个页。RocksDB append only方式 另外,innodb开启double write也会增加写入。 RocksDB对齐开销小:SST file (默认2MB)需要对齐,但远大于4k, RocksDB_block_size(默认4k) 不需要对齐,因此对齐浪费空间较少 RocksDB索引前缀相同值压缩存储,节省空间 RocksDB占总数据量90%的最底层数据,行内不需要存储系统列seqid (innodb聚簇索引列包含trxid,roll_ptr等信息) Percona MyRocks Percona MyRocks 是 MyRocks for Percona Server 的实现,安装了 Percona Server 的环境可以非常方便的集成 MyRocks 引擎,和 FaceBook 的 MyRocks 差异在于 事务隔离级别 的实现上。 安装 首先,我们需要安装有 Percona Server,安装教程:Percona Server 5.7 安装教程 安装 percona-server-rocksdb: RHELCentOS: yum install Percona-Server-rocksdb-57.x86_64 DeibanUbuntu: apt-get install percona-server-rocksdb-5.7 安装好后我们回看到这句话: * This release of Percona Server is distributed with RocksDB storage engine. * Run the following script to enable the RocksDB storage engine in Percona Server: ps-admin --enable-rocksdb -u <mysql_admin_user> -p[mysql_admin_pass] [-S <socket>] [-h <host> -P <port>] 也就是说我们需要运行相关语句: 运行: ps-admin --enable-rocksdb -u root -p密码 然后就成功激活插件并关闭 Transparent huge pages 了 mysql> SHOW ENGINES; +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+ | ROCKSDB | YES | RocksDB storage engine | YES | YES | YES | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | InnoDB | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+ 10 rows in set (0.00 sec) 使用 具体如何使用 ROCKSDB 引擎呢? 我们在创建表和修改表的时候,加入 ENGINE=RocksDB 就可以使用了。 例如: mysql> use mf8biz; mysql> CREATE TABLE `juncedup_usermeta` ( `umeta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `user_id` bigint(20) unsigned NOT NULL DEFAULT '0', `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, `meta_value` longtext COLLATE utf8mb4_unicode_520_ci, PRIMARY KEY (`umeta_id`), KEY `user_id` (`user_id`), KEY `meta_key` (`meta_key`(191)) ) ENGINE=RocksDB; 如果我们想激进一点可以把默认引擎设置为 ROCKSDB: 修改 /etc/my.cnf 文件,在 [mysqld] 下加入: default-storage-engine=ROCKSDB 然后重启 MySQL 服务即可。 来自我的个人博客:https://www.mf8.biz/percona-server-for-mysql/
前言 在数据库的选择上, MySQL成为中国开发者的最爱。相比 SQL Server相对保守的数据库特点,中国开发者更喜欢开放性的数据库,同时又考虑到价格问题,那么 Oracle不菲的价格也挡住了很大一批开发者。由于开源、价格等因素,在数据库选择上,要么是低价、开源的 MySQL,要么就是高大上的 Oracle。 —— 云栖社区《2017中国开发者调查报告》 根据云栖社区《2017中国开发者调查报告》我们可以了解到在全球范围内特别是国内 MySQL 都有着非常高的使用率,有大量的产品和项目是依赖于 MySQL 作为关系型数据库的,因此在 MySQL 上进行进一步的优化和改造是大有可为的,于是便有了 MySQL 的衍生版包括有:MariaDB、Percona、AliSQL、PhxSQL 等等,但 MySQL 本身其实是一款“轻量级”数据库,相较 SQL Server 和 Oracle 等商业数据库其实是有所不足的。因此各类兼容 MySQL 生态的新型数据库开始出现。 2017年是各类新型数据库的落地年,各种NewSQL纷纷结束蛰伏期并开始商业化输出,特别是各类基于 MySQL 生态和兼容 MySQL 协议的新数据库产品也开始不断发展并开始商业输出,有包括在 OLTP 上进一步优化的 POLARDB、Aurora、X-DB等等,还有兼容 OLTP 和 OLAP 场景的 HTAP 上优化的 HybridDB、TiDB、BaikalDB 等等。 本文要将的主角是 —— POLARDB ,POLARDB 是在2017年9月发布并进入公测阶段的,并在18年4月结束公测正式进入商业阶段并不断发布新功能完善体验。值得一提的是同样也在17年10月腾讯云联合 PingCAP 发布基于 TiDB 的 HTAP 数据库,但截至发文依旧停留在测试阶段。 介绍 POLARDB 是阿里云自研的全新一代云数据库,与 MySQL 100%兼容,性能最高提升至MySQL的6倍,满足企业级OLTP(在线事务处理)并兼顾结构化数据并发查询场景。既融合了商业数据库稳定可靠、高性能、可扩展的特征,又具有开源数据库简洁开放的优势,而成本只有商用数据库的 1/10。POLARDB采用存储和计算分离架构,能提供存储自动扩容、计算规格弹性升降、故障快速恢复和数据备份容灾服务。 POLARDB 对 MySQL 进行了一定改造,MySQL 其实至发布以来就是基于单机开发的数据库,但是单机单节点势必是会遭遇性能瓶颈。于是乎,对于 MySQL 有了两个方向的改造。 一种是读写分离方案,因为在很多网站常见下其实大家走的读请求更多,就女士逛淘宝,看了非常多的商品可能才下那么一单甚至单都不下就添加了一个收藏。 痛点举例 再介绍 POLARDB 的优越性之前,我们先看看已经是使用体验业内顶尖了的云数据库 MySQL 的一些痛点(友商的其他竞品痛点可能会更多~): 一、 当数据存储容量足够大的时候,备份成为了一件非常复杂的事情,费时费力。 二、 主备模式下,如果主库不出现问题并不会切换到备库,备库仅仅起到了一个以防万一的作用平时并不能分担压力,但是却不得不承担备库部分的成本。 三、 在读写分离场下,每添加一个只读库基本上就得购买一个一模一样的存储空间,如果是一个1T的主库,那么两个只读库的成本就是2个1T。 四、 还是读写分离场景,一个上TB的数据库容量加个只读副本就需要一到两天时间,非常的麻烦。 五、 传统模式下为了保障数据库不会到达 100% 都会预留10%~20% 的容量作为阈值,到了 80% 就进行升级或者扩容,其实这个时候那个预留的阈值是浪费了的,但是又不得不浪费。 六、 存储容量瓶颈,云计算厂商提供的关系型数据库基本上都有一个问题,那就是存储容量存在瓶颈,当数据量达到 2T 左右的时候就已经是瓶颈了无法进一步上升,而部分数据库应用场景恰恰就是需要大容量大存储的。 七、 性能瓶颈,当使用数据库遭遇性能瓶颈的时候其实是很糟心的,如果是能通过升级配置解决的那倒还行,如果是因为数据库软件本身的问题而更换数据库软件又意味着更高额的成本和风险。 产品特性 那么接下来介绍 POLARDB 的产品特性大家就会觉得舒服的多。 快照式备份 POLARDB 采用快照(Snapshot)形式的备份模式,并不是说将数据完完整整的备份一份,而是把备份数据的负载均分到创建Snapshot之后的实际数据写发生的时间窗口,以此实现备份、恢复的快速响应。 Snapshot是一种流行的基于存储块设备的备份方案。其本质是采用Copy-On-Write的机制,通过记录块设备的元数据变化,对于发生写操作的块设备进行写时复制,将写操作内容改动到新复制出的块设备上,来实现恢复到快照时间点的数据的目的。Snapshot是一个典型的基于时间以及写负载模型的后置处理机制。 POLARDB提供基于Snapshot以及Redo log的机制,在按时间点恢复用户数据的功能上,比传统的全量数据结合Binlog增量数据的恢复方式更加高效。 实测的话,POLARDB 的备份在分钟级,两三分钟就可以实现备份,相比云数据库小时级的等待可以说是体验非常棒了。在备份恢复的体验上 POLARDB 基本上和云数据库体验一致,按备份集和按时间点或者实例备份都可以 FailOver 多活 POLARDB 默认购买就是一个主实例+只读实例形成 Active-Active 模式,其 FailOver 多活机制 可以在主实例宕机后立马选择一个只读实例“赋予”其读写能力,成为一个新的主实例。这样的模式下每一个只读实例都是“备库”,但是这个备库是参与工作的,并不存在浪费的现象。 得益于数据共享(后面会提到)的模式,只读节点的增加无需再进行数据的完全复制,共用一份全量数据和 Redo log,只需要同步元数据信息,支持基本的 MVCC,保证数据读取的一致性即可。这使得系统在主节点发生故障进行 Failover 时候,切换到只读节点的故障恢复时间能缩短到 30 秒以内。 分布式共享存储架构 POLARDB使用了第三代分布式共享存储架构,实现了计算节点(主要做SQL解析以及存储引擎计算的服务器)与存储节点(主要做数据块存储,数据库快照的服务器)的分离,提供了即时生效的可扩展能力和运维能力。 由上图我们可以看到,POLARDB通过将数据库文件以及 Redolog 等存放在共享存储设备(POLATSTORE)上而不是一个库一个本地存储。由于数据共享,只读实例的添加就再也不需要对数据进行完全复制了,而是共用一份全量数据和 Redo log,只需要同步元数据信息,这使得系统在主节点发生故障进行Failover时候,切换到只读节点的故障恢复时间能缩短到30秒以内(有没有发现这一句话FailOver那边提过)。系统的高可用能力进一步得到增强。而且,只读节点和主节点之间的数据延迟也可以降低到毫秒级别。 存储费用按量付费 POLARDB 的存储计费是按量付费的模式,也就是用多少扣多少,而不是预付费的模式。 云计算方法论中很重要的两点就是 弹性和按量 。相对于 ECS 集群的后付费和流量的按量后付费,数据库的按量后付费其实更可控和可预估,并不会出现天价费用,而且在数据库容量的扩容上用户也的确会遇到不好的体验(痛点那里有提到)。 所以用户会很愿意接受 POLARDB 的按量付费模式。再也不需要为那10%的扩容阈值浪费成本了。 大容量存储 POLARDB 支持高达 100TB 的存储容量,是云数据库 2T 容量上限的 50 倍。如果数据库的使用场景中的确需要超大存储再也无须担心了。 超高性能 POLARDB 作为一款 云原生 的数据库,在软件设计、产品架构、基础设施上都是顶尖的(如果用最顶尖的可能会违反广告法~)。 在性能上 POLARDB 远超 MySQL ,在特殊场景下最高可以实现6倍于 MySQL。 软件设计上的删繁就简,仅能更进一步。 下面那张图上门出现过,可以看到传统的MySQL下读写分离其实非常的繁琐,而且要写入大量的逻辑日志。POLARDB 在 MySQL 上进行了大量的修改包括有:使用共享存储物理复制、锁优化、日志提交优化、复制性能优化、读节点性能 等等。 同时 POLARDB 是基于 Docker 来隔离资源的,免去了一次虚拟化带来不必要的性能损耗。 超规格底层硬件提供更高性能。3D Xpoint、NVMe、RDMA网卡这些名词都是在极客玩家中经常有听到的,它们都意味着超高的性能,同时也意味着高昂的价格。前文中有提到的 POLARSTORE 存储,就是基于这些极致的硬件设备而来的,但是阿里云将他们集成到 POLARSTORE 并以云计算的形式普惠输出,让大家可以用低廉的价格享受最前沿的技术和产品。 软硬件一体化设计,但是软件、硬件单方面的提升都无法成就 600% 于 MySQL 的性能表现,POLARDB 将全新的软件针对最酷的硬件进行优化实现软硬件一体,所以也是非常推荐大家可以阅读一下关于 PolarFS VLDB2018 的 Paper。 我是传送门 (猜测)未来的 多主进群(Multi-Master) 机制,这个纯属我瞎猜,但是 POLARDB 大概率是会做的,那就是在多个可用区中创建多个读取主实例。这样一来,应用程序就可以在集群的多个数据库实例中读取和写入数据,极大的扩展分布式写的性能,这简直就是抢 DRDS 的饭碗嘛! 多主集群还会进一步提高高可用性,如果其中的一个主实例发生故障,集群中的其他实例将立即接替该实例,从而在发生实例故障甚至完全 AZ 故障时保持读写可用性,应该是可以做到将应用程序停机时间降到零。 100% MySQL 兼容 POLARDB 针对 MySQL 生态 100% 兼容。 为什么这个都要拿出来说呢? 举两个例子: 一是在本文的第一张图中可以看到 Oracle 在中国有不小的份额并占据第二的位置,为什么?根据我对客户上云的一些经验来看,使用 Oracle 的客户大多都是政企客户,系统依赖 Oracle 有历史包袱,贸然迁出要面临不小的工作量而且出问题了势必会背锅,所以尽管有什么高度兼容 Oracle 的方案,95%也好 99% 也好,势必意味着不可预知的风险。 二是像谷歌的 CLOUD SPANNER 就不兼容已有的数据库生态,这就导致用户必须针对其全新开发而且未来势必对GCP有非常强的依赖,难以脱身。 因此 POLARDB 的 100% 兼容 MySQL 生态绝对是一大特性,让客户可以无痛的就使用高性能的数据库产品来解决现有遭遇的数据库性能、功能瓶颈或者说是使用期新特性来提高业务可靠性和稳定性。 性能测试 这里使用 SysBench 1.0.15 进行小规格版本的测试。 测试准备 ECS 自建: 自建 MariaDB 10.1 (基于 MySQL 5.6), 底层服务器:计算型C5 2C4G 150G SSD云盘 RDS 主实例: 云数据库 MySQL 版 5.6 高可用,2C4G 版 RDS 读写分离: 云数据库 MySQL 版 5.6 高可用,2C4G 版,主实例 + 1个 只读实例 POLARDB 主实例: POLARDB 2C4G ,主实例,不使用只读实例 POLARDB 读写分离: POLARDB 2C4G ,主实例 + 1个只读实例 由于 ECS 自建读写分离场景太费时费力了,就不创建了。 测试命令 sysbench --test=./tests/include/oltp_legacy/oltp.lua --mysql-host=`云数据库链接地址` --mysql-port=3306 --mysql-user=mf8press --mysql-password=sbtest --oltp-tables-count=250 --db-driver=mysql --oltp-tablesize=25000 --mysql-db=sbtest --max-requests=0 --oltp_simple_ranges=0 --oltp-distinct-ranges=0 --oltp-sum-ranges=0 --oltp-order-ranges=0 --max-time=600 --oltp-read-only=on --num-threads=500 run sysbench --test=./tests/include/oltp_legacy/oltp.lua --mysql-host=`云数据库链接地址` --mysql-port=3306 --mysql-user=mf8press --mysql-password=A123456a --oltp-tables-count=250 --db-driver=mysql --oltp-tablesize=25000 --mysql-db=sbtest --max-requests=0 --max-time=600 --oltp_simple_ranges=0 --oltp-distinct-ranges=0 --oltp-sum-ranges=0 --oltporder-ranges=0 --oltp-point-selects=0 --num-threads=128 --randtype=uniform run 测试结果 SysBench 读场景结果(越大越好) SysBench 写场景结果(越大越好) SysBench 超过95%平均耗时场景结果(越小越好) 无论是 POLARDB 还是 RDS 都是配置越高实例越多性能越好的,这里测试的都是入门款,所以评测效果并不是怪兽级的。 不过我们依然可以看到这是 POLARDB 的碾压局,同配置下 POLARDB 较 RDS 有近一倍的性能提升,和自建 ECS 并且是我的“弱鸡”调参比几乎是碾压。 值得一提的是,我貌似读写场景都没有把读写分离和单主实例的性能差异测出来,如果有测试方式有问题欢迎大家斧正。 横向“云评测” 在科技产品界有一种说法较“云评测”,那就是明明某小编产品实际没摸过,但是小编还是能一本正经的能来波横向测评。 这次我也来一波云测评~ 目前阿里云平台上的 MySQL 兼容产品就有: 云数据库 MySQL 版(RDS)、分布式关系型数据库(DRDS)、云数据库POLARDB、HybridDB for MySQL (原PetaData)。 那么有人就会问,四款 MySQL 怎么选怎么用呢? 首先,我们可以看一下一张加入了 POLARDB 的阿里云数据库家族上云指导图: 大致的我们就可以知道,HybridDB for MySQL (原PetaData) 是专门用于 HTAP 场景的,有强 OLAP 需求还是得考虑 HybridDB,不过其为了 OLAP 兼容还是丧失了一些 MySQL 特性的,比如说不支持约束和一些高级特性。 接下来三个数据库当中,都是常见的 MySQL OLTP 场景,而且都可以添加只读实例,同质化很严重。 云数据库 MySQL 版依旧是最简单的 MySQL 目前支持的功能最多,但是性能略有不足,而且所有升级操作都是小时级的操作体验相对不太好。未来的话我认为更适合小规格数据库的入门级使用。 DRDS 和 POLARDB 都有分布式的属性,DRDS 的分布式是实例级的,POLARDB 是共享分布式存储。 DRDS 是集合多台 RDS 的性能来提升性能避免单台数据库的性能瓶颈,适合非常大规模的业务,但是分库分表等操作对操作人员要求较高,必须得需要有一定的数据库功底,要对数据库进行更改,对使用者来说有一定学习成本。DRDS 本身是一款中间件产品(尽管已经划分到数据库分类下了),底层还是依赖于 RDS 实例的,所以 DRDS 离不开 RDS,因此在大规模存储的情况下,我觉得超过2T的存储,DRDS 也吃力,其亮点还是分布式的性能表现优异。 POLARDB 则是一款全新的类型,对 MySQL 有了内核级的改造,在读的能力上大大提升并且性能优异,但是相对来说 写 还是依赖于主实例,DRDS 的分布式可以提升写的能力。 如果 POLARDB 完成了 多主进群(Multi-Master) 的支持的话,写的能力也会大大提升。 并且 POLARDB 不需要修改数据库,使用者可以无痛的切换,而且先进的分布式存储可以让其实现百T级的存储能力。 所以未来 POLARDB 和 DRDS 的竞争也是大有看头。 展望 POLARDB 的特性使得 MySQL 性能有了极大的提高,POLARDB 是一个分布式的理念,POLARDB 的 POLARSOTRE 架构其实是可以延伸到其他开源数据库上的。 未来 POLARDB for PostgreSQL、POLARDB for MongoDB、POLARDB for PPAS 都是非常可期的,未来更高性能的 PG、MongoDB 也是令人向往。
前言 近期公司内部搞新员工的入职赋能培训,然后就迎来一个非常严峻的问题,考试太浪费纸了,作为一个生性节俭的人,我怎么能容忍大量的纸张被浪费呢!这时候就想着是否可以有姿势来弄一个无纸化考场呢?用云计算推动先进生产力带来全新的考试体验也是很正常的嘛! 其实在线考试系统有纯软件模式的,录入试题用软件给员工考试,不过这个软件的授权成本不低,不划算。 如果是通过 Word 这样的形式进行考试,体验也不太好。 这时候有一个网站形式的在线考试系统就非常棒了。 目前中文软件比较适合的就是 phpems 这款开源在线考试系统了,从2013年一直更新到现在,可能前端和后台设计的还并不是非常的完美,不过这并不妨碍这是一款好用的考试系统,甚至可以说是一个很不错的在线教育系统了。 介绍 PHPEMS(PHP Exam Management System)在线模拟考试系统基于PHP+Mysql开发,主要用于搭建模拟考试平台,支持多种题型和展现方式,是国内首款支持题冒题和自动评分与教师评分相结合的PHP开源在线模拟考试系统。使用本系统,您可以快速搭建用于模拟考试的网站平台,实现无纸化考试、真实考场模拟、知识强化练习等功能。可满足培训机构、学校、公司等机构各种考试需求。 软件要求: PHP 5.3~7.0 MYSQL:5.0+ 实测支持 HTTPS 环境,由于不涉及伪静态所以 Nginx 也可以非常完美的兼容。 要求 & 收获 需要使用到的产品: 搭建了 LNMP 环境的任意(包括非阿里云)服务器/轻量应用服务器/ECS 通过本文你将讲学到: 构建一个在线无纸化考场 教程 由于篇幅限制,不过多介绍 LNMP 环境介绍和虚拟主机搭建,具体教程请看:【云计算的1024种玩法】手把手学会配置安装 LNMP 建站环境 安装 下载地址:http://www.phpems.net/download/phpems4.2.zip 一、上传网站程序,下载安装包后将其解压至网站运行目录即可,例如我的网站目录是 /data/mf8/www/ ,直接上传即可。这时候大家可能会发现我们的网站为什么会无法访问? 因为这个程序暂时没有做好初始化安装的交互,所以我们会需要手动导入数据库。 二、导入数据库,在网站目录有一个 pechina.sql文件,我们需要将其通过 MySQL 命令行或者像 phpMyAdmin 这样的图形化工具进行手动导入。 如果是通过 DMS 的话,则是通过上方的 数据方案 —— 导入 然后点击 新增任务 选择目录下的 SQL 文件即可。 三、修改配置文件 /lib/config.inc.php : 将一下内容修改为实际的数据库信息: define('DB','777');//MYSQL数据库名 define('DH','127.0.0.1');//MYSQL主机名,不用改 define('DU','root');//MYSQL数据库用户名 define('DP','root');//MYSQL数据库用户密码 define('DTH','x2_');//系统表前缀,不用改 总体来说安装非常方便,不需要只需要上传文件和导入数据库即可,相对其他的开发版程序不可谓不方便。 四、打开网站,这时候我们就可以成功的访问我们的网站了!打开我们的网址: 点击右上角的 登录按钮即可登录,账号和密码都是 peadmin 五、点击用户名哪里,就可以进入 用户中心 可以修改密码,进入 后台管理 就可以对系统进行修改了。 六、例如如何添加试题,我们在 考试模块 —— 试题管理 —— 添加普通试题 中就可以添加试题,还可以指定不同的科目应用说明题型等等,非常的方便。 七、如何修改超级管理员用户名? 这就是一个学问了,因为后台是无法进行修改的,单独修改 x2_user 表又会出错,所以我们如果要修改的话,得在导入数据库之前修改 SQL 文件。 替换里面所有的 peadmin为你的管理员用户名。
前言 在2017年的尾声,中办国办印发《推进互联网协议第六版(IPv6)规模部署行动计划》(以下简称《计划》),加快推进基于 IPv6 的下一代互联网规模部署,计划指出到 2018 年末国内 IPv6 活跃用户数要达到2亿,2020年末达到5亿,2025年末中国 IPv6 规模要达到世界第一。 具体落实下来的指标和要求是这样的: 时间只有一年任务也是非常紧迫,作为国内第一的云服务商,阿里云也是不负众望,在国内公共云中率先推出了 IPV6 解决方案的第一期也就是 SLB、DNS 以及 IPV6 转换服务,第二期的话还会推出 IPV6 网管等产品。 介绍 阿里云在第二季度上线的第一波 IPV6 解决方案产品如下: 一、负载均衡 SLB 支持 IPV6,目前 SLB 在国内几个地域内的性能保障型(slb.s1.small)开始上线支持 IPV6了,这样做呢,就可以实现阿里云服务无痛支持 IPV6,因为一些历史性原因现有运行的 ECS 即便支持了 原生 IPV6 也需要进行大量修改, 反而是 SLB 可以实现无痛支持。 相比之前的曲线解决方案,比使用 HE.NET 提供的 Tunnel Broker 隧道和 CloudFlare 这样的 CDN 提供 IPV6 能力相比,SLB方案是内网传输的网络性能无损耗,而且服务跨多可用区可靠性和稳定性也高许多。 申请方式:提交工单申请开通 二、云解析 DNS 提供IPV6 IP 和双栈解析能力,现有的阿里云云解析的NameServer服务器暂时还没提供 IPV6 IP,需要申请带有IPv6 IPV4双栈解析能力的NameServer,预计后期可能会无缝升级。 申请方式:提交工单申请开通 三、IPV6 转换服务(7月上线),这个主要是为线下无法部署IPV6的机房或者其他无法提供 IPV6 能力的公共云提供的方案,看了架构图原理大致类似 Tunnel Broker 隧道,由于走了公网所以性能会有损耗,但是相比其他 HE 由于线路在国内所以体验会好得多。 教程 一、提交工单申请 IPV6 权限,然后进入购买 https://common-buy.aliyun.com/?&commodityCode=slb#/buy 二、然后进入控制台,我们就可以看到一个带IPV6地址的 SLB 三、然后我们点击管理后,在监听处点击 添加监听 四、添加监听端口 一般来说推荐新手使用四层的 TCP 协议,这样就不需要去设置转发日志,使用HTTPS的网站也不需要做任何的更改就可以无痛使用。 七层 HTTP 和 HTTPS 适合有特定需求的用户。 不过值得一提的是,通过SLB七层的HTTPS功能,由于HTTPS解析都在SLB进行处理,得益于SLB专门的解析设备和方案,HTTPS网页可以打开的更快而且不占用后端ECS的性能。不过HTTPS的话后端必须是HTTP80才行,不能是HTTPS。 如果SLB后面有多台ECS的记得打开会话保持,这样可以再服务器上保持用户的登陆状态。 五、然后点击 后端服务器 的未添加的服务器 选择需要添加的服务器添加即可。 六、进入云解析,双栈云解析可能需要DNS支持IPV6,目前权限需要申请。 记录类型,选择 AAAA 是IPv6解析用的 记录值,填写IPv6地址 然后咱们静等解析生效即可。 然后咱们静等解析生效即可。 检验 这里提供几个检测方式: 命令行检测 一、dig 我们可以通过 dig 命令来查看是否域名已经添加 AAAA 记录并能成功解析: 用法: dig www.mf8.biz AAAA [root@MF8-BIZ-PC ~]# dig www.mf8.biz AAAA ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> www.mf8.biz AAAA ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6376 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.mf8.biz. IN AAAA ;; ANSWER SECTION: www.mf8.biz. 600 IN AAAA 2400:3200:1500::93 ;; Query time: 428 msec ;; SERVER: 67.207.67.3#53(67.207.67.3) ;; WHEN: Thu Jun 28 07:28:24 UTC 2018 ;; MSG SIZE rcvd: 68 二、Ping Ping 检测延时,查看是否互通 用法: ping -6 www.mf8.biz [root@MF8-BIZ-PC ~]# ping -6 www.mf8.biz PING www.mf8.biz(2400:3200:1500::93 (2400:3200:1500::93)) 56 data bytes 64 bytes from 2400:3200:1500::93 (2400:3200:1500::93): icmp_seq=1 ttl=232 time=356 ms 64 bytes from 2400:3200:1500::93 (2400:3200:1500::93): icmp_seq=2 ttl=232 time=341 ms 64 bytes from 2400:3200:1500::93 (2400:3200:1500::93): icmp_seq=3 ttl=232 time=373 ms 64 bytes from 2400:3200:1500::93 (2400:3200:1500::93): icmp_seq=4 ttl=232 time=384 ms 64 bytes from 2400:3200:1500::93 (2400:3200:1500::93): icmp_seq=5 ttl=232 time=387 ms 三、curl 即便解析成功,也能成功互联,也要看看网站是否额能够被访问。 curl -6 https://www.mf8.biz/ [root@MF8-BIZ-PC ~]# curl https://www.mf8.biz <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /><meta name="wap-font-scale" content="no"><meta http-equiv="X-UA-Compatible" content="IE=9, IE=8;IE=7, IE=EDGE, chrome=1"><title>米饭粑 &#8211; 稻粢穱麦,挐黄梁些。</title><link rel="shortcut icon" type="image/x-icon" href="https://statics.mf8.biz/wp-content/uploads/2018/04/2018040215465239.ico" /><link rel="bookmark" type="image/x-icon" href="https://statics.mf8.biz/wp-content/uploads/2018/04/2018040215465239.ico" /><meta name="twitter:card" content="summary" /><meta property="article:published_time" content="2018-05-25T16:29:40+08:00"/><meta property="article:author" content="妙正灰" /><meta property="og:url" content="https://www.mf8.biz" /><meta property="og:type" content="article" /><meta property="og:title" content="米饭粑" /><meta property="og:description" content="稻粢穱麦,挐黄梁些,折腾云计算的经验分享和总结。" /><meta property="og:image" content="https://statics.mf8.biz/wp-content/uploads/2018/04/2018040215512131.png" /><link rel="amphtml" href="https://www.mf8.biz/amp/" /><link rel='dns-prefetch' href='//www.mf8.biz' /><link rel='dns-prefetch' href='//statics.mf8.biz' /><link rel='dns-prefetch' href='//cdn.bootcss.com' /><link rel='dns-prefetch' href='//s.w.org' /> <script type="text/javascript">window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.4\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.4\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/statics.mf8.biz\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.9.6"}}; 以下省略 图形化检测 一、IPV6 机器 用有IPV6地址的机器访问自然是最好的验证方式,例如米饭就用的 IPV6 机器用 FireFox 访问: 由于网站是开了 V4 V6 双栈,那么需要设置以下 FireFox 仅访问 IPV6 来进行验证。 流程如下: 在地址栏输入:about:config network.dns.disableIPv6 设置成 false network.http.fast-fallback-to-IPv4 设置成 false 二、网页工具 http://ipv6-test.com/validate.php 用于检测 IPV6 是否支持 IPV6-Only 环境。 http://www.ipv6scanner.com/cgi-bin/main.py 用于检测 IPV6 端口 http://ready.chair6.net/ 较全面的网站 IPV6 分析工具,不过很不精准 https://centralops.net/co/Ping.aspx IPV6 Ping 工具,节点很少 https://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-ping.php IPV6 Ping 工具,老是ping不通国内IP 摊手
概述 随着 10.3.7 版本的发布,MariaDB 10.3 系列终于走出测试可以进行生产使用了,MariaDB 10.3 是 MariaDB 10.2 的演进版,带来了几个全新功能,并且具有 MySQL 的后端和重新实现的功能。 MariaDB 兼容的依旧还是 MySQL 5.7 并没有带来 8.0 的特性,不过现在 MySQL 8.0 虽然正式了但是由于变动较大很多细节都并不兼容,MariaDB 10.3 盲目的跟进反而越带来不小的影响。 比较大的更新就是两大全新引擎 MyRocks 和 Spider 都进入稳定生产阶段了,MyRocks 有着非常优异的特性:更高的压缩效率、更快的写入效率、更快加载数据和更快的复制性能。Spider存储引擎是具有内置分片功能的存储引擎。它支持分区和xa事务,可以像处理同一个实例上的表一样处理不同MariaDB实例的表。 当然还有引入AliSQL 的新特性。 介绍 这里我们用 MariaDB 代替 MySQL,MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可 MariaDB 的目的是完全兼容 MySQL,包括 API 和命令行,使之能轻松成为 MySQL 的代替品。 上面的都是书面语,我觉得 MariaDB 哪里好呢,首先 MySQL 分 CE(开发版)和 EE(企业版)区分了一部分用户,而且毕竟是 Orcale 的软件了,后期发展难免会有更大的区分。MariaDB 是完全由开源社区维护的,而且在功能开发上也更开放,光说国内,阿里云就有为其赞助了一位开发者——彭立勋,帮助完善复制功能并将 AliSQL 的优良特性合并入 MariaDB,最近腾讯云也赞助了一位开发者 —— 程斌(音译),帮助完善InnoDB 功能,并合并 TXSQL。可见 MariaDB 的开发生态其实非常棒,很活跃,一片生机勃勃。 MariaDB、MySQL 这样的数据库编译非常耗时而且编译很容易出错,所以使用编译好的版本无疑是最好的,设置页非常的方便。 安装 MariaDB 的软件源由官方提供,程序的质量和安全绝对是毋庸置疑的。 本教程适用于: Ubuntu 14.04 LTS (trusty) 支持安装 5.5~最新 Ubuntu 16.04 LTS (xenial) 支持安装 10.0~最新 Ubuntu 18.04 LTS (bionic) 支持安装 10.1~最新 教程以 10.3 版本为例,其他版本只需将下面的 10.3 修改为 10.2 10.1 10.0 5.5 即可 apt install software-properties-common -y apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 add-apt-repository 'deb [arch=amd64] http://mirrors.tuna.tsinghua.edu.cn/mariadb/repo/10.3/ubuntu bionic main' apt update apt install mariadb-server -y 安装过程中,这里会提示设置数据库 Root 密码,需要连续输入两次。 设置 输入下面的命令,关闭一些不安全的设置: mysql_secure_installation 首先输入密码,提出修改米啊嘛不修改,然后一路 y 即可。 动图演示: 基本介绍:Enter current password for root (enter for none): 解释:输入当前 root 用户密码,默认为空,直接回车。Set root password? [Y/n] y > > 解释:要设置 root 密码吗?输入 y 表示愿意。 Remove anonymous users? [Y/n] y 解释:要移除掉匿名用户吗?输入 y 表示愿意。 Disallow root login remotely? [Y/n] y 解释:不想让 root 远程登陆吗?输入 y 表示愿意。Remove test database and access to it? [Y/n] y 解释:要去掉 test 数据库吗?输入 y 表示愿意。Reload privilege tables now? [Y/n] y 解释:想要重新加载权限吗?输入 y 表示愿意。 管理 systemctl restart mysql #重启 systemctl start mysql #启动 systemctl stop mysql #关闭 systemctl status mysql #检查状态 更新 运行下面的命令系统就会更新所有可以更新的软件包括 MariaDB apt update apt upgrade -y 文章来自:https://blog.juncdt.com/446/
前言 随着互联网的不断发展,互联网上的攻击威胁也越来越多,例如电商行业的交易数据被篡改,网站被篡改发表跑路内容导致信任危机,数据库被攻击导致客户信息泄露,相关客户福利措施被薅羊毛等等,即便是很小的过失都可能带来极大的负面效应。 而 Web应用防火墙 (以下或简称 WAF)就是这样一款解决上述安全问题的产品,可以提供保障网站、APP等Web应用的数据安全、业务安全及可用性等服务。 介绍 Web应用防火墙 支持包括但不限于:防护OWASP常见威胁、0day漏洞快速防护、网站隐身、缓解恶意CC攻击、过滤恶意的Bot流量、IP访问控制、URL访问控制、恶意CC变种攻击、恶意爬虫防护、管理后台保护、盗链防护、拦截黑客针对不存在的URL地址、基于地理区域的封禁、企业版提供针对指定地区的IP访问封禁、日志管理 等功能。 相比于市面上常见的开源 WAF 产品,Web应用防火墙 更加专业,其集聚了安全大数据实时智能引擎、海量恶意IP库/IDC机器IP封禁、黑客威胁情报、Web攻击&CC智能算法、精准访问控制&业务安全等服务。 可以说 WAF 是一款用的人越多越聪明越好用的产品。 要求 & 收获 需要使用到的产品: 任意(包括非阿里云)服务器/ECS /轻量应用服务器/万网云虚拟主机 Web应用防火墙 通过本文你将讲学到: 配置使用 Web应用防火墙 常见 Web 攻击的防护 说明 同高防 DDOS 和 SLB 这样的产品不同而是 WAF 只提供七层防护,无四层转发,只有默认的2G-5G的防护能力,并不能抵御大规模DDoS攻击,但是提供更加精准的CC防护 接入 WAF 的域名必须在阿里云备案或者备案接入阿里云,而且不支持纯IP WAF 不区分电信联通线路,全线BGP线路,不需要分线路 接入 由于阿里云的网络产品有很多,比如说 SLB、CDN、WAF、DDOS 高防等等,所以在配置的时候一定要按照一定的顺序进行接入,不然可能很多产品使用了不仅不会起效果反而还会引起负面效果。 经典的糖葫芦结构: WAF —— SLB —— ECS DDOS 高防 —— WAF —— SLB —— ECS 接入 CDN: CDN —— WAF —— SLB —— ECS 有 CDN 和高防的场景: 但是如果有 DDOS高防 套在 CDN 后面就不会起作用,套在 CDN 之前 CDN 也会失去作用,这时候就要考虑阿里云的 DDOS高防 和 CDN 结合的产品: SCDN SCDN —— WAF —— SLB —— ECS 接入配置 一、 选择防护的地域,是中国大陆还是海外地区,然后 添加网站 二、 然后会自动列出在阿里云 DNS 中存在的网站,如果里面没有需要防御的域名可以选择 防护其他网站 ,记得勾选是否防御 HTTPS 三、 在 管理 —— 网站配置 中,我们就可以看到我们添加的域名了,我们可以继续进行编辑。 防护其他网站 的设置和 编辑网站配置 的内容一致: WAF 可以为本地为 HTTP 的网站自动配置 HTTPS 非常的方便,适合不会配置 HTTPS 的新手,当然也支持 HTTPS 回源的全加密链路。 放行回源 IP 接入WAF后,WAF作为一个反向代理存在于客户端和服务器之间,服务器的真实IP被隐藏起来,客户端只能看到WAF,而看不到源站。如下图所示(origin为源站): 在源站(真实服务器)看来,所有的请求源IP都会变成WAF的回源IP段。由于来源的IP变得更加“集中”,频率会变得更快,服务器上的防火墙或安全软件很容易认为这些IP在发起攻击,从而将其拉黑。一旦拉黑,WAF的请求将无法得到源站的正常响应,故务必要确保回源IP在源站上没有被拦截。 进入 网站管理 在顶部可以看到有 Web应用防火墙回源IP网段列表 就是 WAF 的回源 IP 了,在服务器的相关安全软件中添加 IP 即可。 本地验证 在把业务流量切到WAF上之前,建议先通过本地验证的方式确保一切配置正常、WAF转发正常。 我们 Ping 一下 WAF 提供的 CNAME 地址,复制解析到的 IP,然后修改 hosts 来测试: 然后我们模拟一个攻击行为看看会不会被拦截,例如在域名后加入 ?id=../etc/passwd 例如访问: https://links.mf8.biz/share/1?id=../etc/passwd 那么测试就成功了! 修改DNS解析 如果域名 DNS 使用的是阿里云 DNS 那么会自动进行 CNAME 配置,如果DNS为其他厂商需要手动复制 CNAME 地址,将受防护域名的记录改 CNAME 记录到分配的 CNAME 值上。 我们将类型选择 CNAME,然后线路选择 默认 ,再将记录值改为 CNAME 值即可 值得一提的是 TTL 值一般建议设置为600秒(即10分钟)。TTL值越大,意味着记录的同步和更新越慢。 全网生效大致需要 10粉最 到最长 48 小时左右。 使用 安全报表 WAF 有着非常好的安全报表,我们可以详细的了解发生的攻击行为以及攻击者信息 并获得相关风险预警: 防护配置 在 网站配置 处我们还可以选择具体的 防护配置 例如我们可以在正在遭受大规模 CC攻击 的时候调整为 攻击紧急 模式 总结 Web 防火墙是一款开箱即用的安全产品,可以帮助解决不少安全问题,在资金充裕的情况下不失为一种很好的常备选择!
前言 如何高效的完成企业内部的协同办公是很多企业一直在解决的问题,或许像微软的 Office 365、谷歌的 G suit 甚至最近炒的火热的腾讯文档。但是他们都有一个问题那就是数据存放在第三方不可控以及自定义性的一些问题。 DzzOffice 正是这样一款不错的解决方案,我们可以方便的将其部署在阿里云甚至是企业内部的网络中。 介绍 DzzOffice是一套开源办公套件,适用于企业、团队搭建自己的企业应用套件、企业协同办公平台,产品由多款开源办公应用组成,安装 DzzOffice 后,可根据需要从内部的应用市场进行选择和安装。应用能够单独使用,也能与其他多款应用组合使用。并且能够结合企业微信、钉钉来进一步扩展移动办公与沟通协同能力,无论身处何地都能轻松协作。功能包含但不限于: 网盘: 企业、团队文件集中管理。主要体现的功能是支持企业部门的组织架构建立共享目录,也支持组的方式灵活建立共享目录。支持文件标签,多版本,评论,详细的目录权限等协作功能。文档: 在线 Word 文档协作工具。前端做了一套模板管理,用于企业添加自己的常用文档模板,如空白合同。后端支持 office online server,onlyoffice,collaboraoffice 来实现文档预览与协同编辑。表格: 在线 Excel 协作工具。同上演示文稿: 在线 PPT 文档浏览、编辑工具。同上记录: 多人参与协作的记录本,主要体现协作记录内容。新闻: 文章系统,可用于企业新闻,通知等用途通讯录: 企业人员联系方式查询文集: 通过树形目录有序管理文档。支持 Markdown 编辑,支持导入导出 txt,epub、mobi、azw3相册: 企业,团队图片管理任务板: 任务管理、团队协作讨论板: 内部论坛设置表单: 表单,问卷工具 要求 & 收获 需要使用到的产品: 搭建了 PHP 环境的任意(包括非阿里云)服务器/ECS /轻量应用服务器/万网云虚拟主机 通过本文你将讲学到: 安装并使用 DzzOffice php.ini 开启禁用函数 教程 由于篇幅限制,教程中涉及的 LNMP 环境介绍和虚拟主机搭建,具体教程请看:【云计算的1024种玩法】手把手学会配置安装 LNMP 建站环境 由于 DzzOffice 的推荐 PHP 版本为:5.6,所以建议大家用安装 php5.6 的环境。 安装 DzzOffice DzzOffice 的下载地址在: https://github.com/zyx0814/dzzoffice/releases 一、创建好网盘用的虚拟主机和数据库后,进入虚拟主机网站的目录,例如我的是 /data/wwwroot/office,然后开始下载安装: cd /data/wwwroot/office wget https://github.com/zyx0814/dzzoffice/archive/2.0beta.tar.gz tar xzf 2.0beta.tar.gz mv ./2.0beta.tar.gz/* ./ 二、我们直接打开我们的网站就行,例如我绑定的域名是 :http://office.mf8.biz 可以看到程序所依赖的 php 函数已经被禁用了: 那么我们需要在修改 php.ini 文件,不同版本位置不同,例如 5.6 的在 /etc/php/5.6/fpm/php.ini 然后搜索 pfsockopen 和 fsockopen 函数,如果出现在 disable_functions 中就删掉他们,并且让 allow_url_fopen 后的参数设置为 On 然后重启一下 php 进程,例如: service php5.6-fpm restart 三、给予目录所有者权限: chown -R www-data:www-data /data/wwwroot/office/ 四、填写数据库相关选项即可: 五、最后填写管理员信息就可以安装完后了: 六、删除 ./install/index.php 文件 使用 进入域名后,我们就可以看到一个登陆窗口了,输入管理员账号密码: 刚开始只能看到一些管理员的选项,包括后台管理、开放注册等等,那么具体应用我们需要点击进入 引用市场 再点击做的 应用市场 安装我们所需的应用即可: 然后安装完成以后不要忘记在 已安装 列表中启用改应用: 总体来说 DzzOffice 的可玩性很强,特别适合企业协同办公和管理。
前言 很多时候如何将服务器迁移到阿里云的ECS成了很多用户上云之路的拦路虎,特别是在本地操作系统中已经有了非常复杂的软件部署这时候迁移上云或者在不同公有云之间迁移就让不少人犹豫不决了。 阿里云提供的 迁云工具 就是为这个迁移痛点而生的,特别好用! 介绍 迁云工具 直接使用公网迁移用户的系统,无需占用额外的本地存储空间,大大减轻了迁移的负担和迁移成本;同时本工具在易用性方面做了很多努力,相比以前的版本工具极大的简化了使用条件、降低了使用门槛,使用户的系统一键迁移到阿里云成为可能。 当然了瓶颈也是有的,那是带宽了,但是很多物理服务器本身带宽就不小,云服务器的话也都可以开按流量计费,可以说瓶颈也是可以解决的。 总而言之它的特性就是: 操作复杂度 低 ,迁移速度 块 ,系统还原度 高。 迁云工具 支持的镜像包括:Windows Server 和常见的主流 Linux 发型版,支持P2V(物理机迁云)、V2V(虚拟机/公有云迁云)。 系统平台 版本号 支持状态 Windows 2003/2008/2012/2016 支持 CentOS 5/6/7 支持 Red Hat 5/6/7 支持 Ubuntu 10/12/14/16/17 支持 Debian 7/8/9 支持 SUSE Linux 11.4/12.1/12.2 支持 OpenSUSE 13.1 支持 Gentoo 13.0 支持 要求 & 收获 需要使用到的产品: 阿里云账户余额大于等于 100 元(开通按量的要求) 可连接公网的 物理机、虚拟机、公有云 服务器 通过本文你将讲学到: 使用迁云工具实现镜像迁移至阿里云 教程 教程中以腾讯云 CVM 为例介绍 Linux 发型版的迁移,将 腾讯云·上海 地域的镜像迁移至阿里云上。 建议带宽较小的实例可以考虑制作一个自定义镜像并用此镜像创建一个按流量计费100M带宽的按量实例,如果是物理机传输量非常大还可以考虑使用阿里云的 高速通道 服务建立传输专线。 然后我创建了一个纯 Nginx 的环境,并放了一个默认首页和 /root/qianyun.txt 的两个验证迁移准确性的文件。 准备 安装基础库 一、 安装基础必备软件 Rsync 库: CentOS、RHEL: yum install epel-release -y yum install rsync git python python-pip –y Debian、Ubuntu: apt install rsync git python python-pip –y 编译安装 cloud-init 一、 下载 cloud-init 源码: git clone https://git.launchpad.net/cloud-init cd cloud-init 二、 安装 Python 库依赖: pip install -r requirements.txt 三、 编译安装: python setup.py install 四、 修改配置文件: mv /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg.bak cd /etc/cloud/ wget https://gitee.com/yunvy/codes/p0omxzqs8ecaj5iwtu9b175/raw?blob_name=cloud.cfg -O cloud.cfg 创建权限子账户 由于期间操作是自动通过命令行实现的,所以需要用到一个 Access Key 的过程,但是默认的 Access Key 是全局全权限的,所以我们应该使用 访问控制 RAM 来创建一个只有 ECS 管理权限的子账户。 不过由于篇幅限制不适合再展开讲访问控制了,可以参考 《使用阿里云短信服务曲线实现 WP 评论实名》 ,查看第四步 四、 在开通 访问控制 服务 中的步骤。 下载迁云工具 一、 下载源码包 cd /root/ wget http://p2v-tools.oss-cn-hangzhou.aliyuncs.com/Alibaba_Cloud_Migration_Tool.zip unzip Alibaba_Cloud_Migration_Tool.zip 二、 解压后会有两个压缩包,一个是 Linux 一个是 Windows 的,很清楚,我们当然是 Linux。 [root@VM_199_173_centos ~]# unzip Alibaba_Cloud_Migration_Tool.zip Archive: Alibaba_Cloud_Migration_Tool.zip inflating: go2aliyun_client1.2.5_linux.zip inflating: go2aliyun_client1.2.5_windows.zip 三、 解压 Linux 工具包: unzip go2aliyun_client1.2.5_linux.zip cd go2aliyun_client1.2.5_linux/ 四、 目录中有两个目录: [root@VM_199_173_centos go2aliyun_client1.2.5_linux]# ls go2aliyun_client1.2.5_linux_i386 go2aliyun_client1.2.5_linux_x86_64 i386 即 32位系统的,x86_64 即 64 位系统的,不过服务器默认都用 64 位的,所以我们进 go2aliyun_client1.2.5_linux_x86_64 目录。 cd o2aliyun_client1.2.5_linux_x86_64 配置 一、 修改 user_config.json 文件,这个一个 json 配置文件 { "access_id": "", "secret_key": "", "region_id": "", "image_name": "", "system_disk_size": 40, "platform": "", "architecture": "", "data_disks": [], "bandwidth_limit": 0 } 具体参数介绍: 参数名 类型 是否必填 说明 access_id String 是 您的阿里云账号的 API 访问密钥 AccessKeyID。更多详情,参阅 创建 Access Key。 secret_key String 是 您的阿里云账号的 API 访问密钥 AccessKeySecret。更多详情,参阅 创建 Access Key。 region_id String 是 您的服务器迁移入阿里云的地域 ID,如 cn-hangzhou(华东1),取值参阅 https://help.aliyun.com/document_detail/53289.html" data-spm-anchor-id="a2c4g.11186623.2.28">地域与可用区。 image_name String 是 为您的服务器镜像设定一个镜像名称,该名称不能与同一地域下现有镜像名重复。 长度为 [2, 128] 个英文或中文字符,必须以大小字母或中文开头,可包含数字,点号(.),下划线(_)或短横线(-)。 镜像名称会显示在 ECS 控制台。 不能以 http:// 和 https:// 开头。 system_disk_size int 是 为系统盘指定大小,单位为 GB。取值范围: [40, 500] 该参数取值需要大于源服务器系统盘实际占用大小,例如,源系统盘大小为 500 GB,实际占用 100 GB,那该参数取值只要大于 100 GB 即可。 platform String 否 源服务器的操作系统。取值范围: CentOS Ubuntu SUSE OpenSUSE Debian RedHat Others Linux Windows Server 2003 Windows Server 2008 Windows Server 2012 Windows Server 2016 参数 platform 的取值需要与以上列表保持一致,必须区分大小写,并保持空格一致。 architecture String 否 系统架构。取值范围: i386:32 位系统架构 x86_64:64 位系统架构 bandwidth_limit int 否 数据传输的带宽上限限制,单位为 KB/s。默认值:0 data_disks Array 否 数据盘列表,最多支持 16 块数据盘。具体参数参阅 数据盘配置参数说明。该参数可以置为缩容数据盘的预期数值,单位为 GB,该值不能小于数据盘实际使用空间大小。 关于数据盘的内容请参考: https://help.aliyun.com/document_detail/62394.html#Table2 所以,我就可以创建出一个配置文件为: { "access_id": "LTAIXeadwww.mf8.biz", "secret_key": "VHVQ1Tzwww.mf8.bizvH8pIMoMSA", "region_id": "cn-shanghai", "image_name": "MF8-BIZ-QIANYUN-IMAGE-001", "system_disk_size": 50, "platform": "CentOS", "architecture": "x86_64", "data_disks": [], "bandwidth_limit": 0 } 特别注意的是 platform 一定要注意大小写! 二、 rsync_excludes_linux.txt 中的目录是不进行迁移的目录,以避免不必要的空间浪费,我们可以在里面自行添加不必要的目录。 迁移 cd /root/go2aliyun_client1.2.5_linux/go2aliyun_client1.2.5_linux_x86_64 chmod +x ./go2aliyun_client ./go2aliyun_client 然后就会自动创建一个所选地域的临时按量 ECS 进行同步,同步完成后就会自动创建一个快照并创建为自定义镜像。 这时候我们就啥都不用管了,冲一杯咖啡,小憩一会儿就是了~。 出现 Enter any key to Exit... 就表示我们迁移已经完成了。 然后在快照列表就可以看到,创建的这个快照: 当然最终我们还是要用这个快照创建的自定义镜像来进行ECS的创建。 检测 我这个架构本身就很简单,基本上只要能打得开 Nginx 就行,其他的复杂架构可能需要详细检测一下是否可以运行。
前言 云服务器的特性主要就是体现在横向、纵向的弹性扩容上,纵向的话其实很好理解就是我们单台 ECS 配置不够用了马上升级一下配置,不过这种场景比较适合于一个网站稳健的发展状态,而且波动不大。或者说服务器有较长时间的资源占用而非短时间的,比如说台风网肯定是 5~10 月这段时间访问量较高,那么我们就可以在春末的时候升一段配置,夏天再升级一段配置,初秋稍微降一点,秋末降至平稳状态。 但是如果我们是一个电商网站突然运营想搞一个秒杀活动,一个游戏公司要组织一场在线PK大赛。 这种情况下呢,都是瞬时遭遇的流量高峰和应用高占用,过了这段时间突然就回到了平稳的状态。如果我们一直以能处理瞬时高峰的配置长时间运行势必会造成大量的资源浪费,这时候就需要一个按量的横向扩容了。 介绍 横向扩容也就是增加服务器数量而非升级配置,但是我们需要将数个服务器整合成一个服务器集群,通过均衡负载 SLB 让服务器集群看起来就像还是“一台”服务器在进行操作,当然了均衡负载也不一定需要使用 SLB,也可以自建或者采购其他的均衡负载产品。然后每一台服务器都应该做到无状态服务,不可以保存应用的状态信息(如 session)和相关数据(如数据库、日志等)。如果应用中有保存状态信息需求,可以考虑把状态信息保存到伸缩组之外的独立的状态服务器、数据库(如 云数据库)和集中日志存储(如 日志服务)中去。 要求 & 收获 需要使用到的产品: 均衡负载(SLB)服务 弹性伸缩(ESS)服务 通过本文你将讲学到: 学习使用均衡负载服务 学习使用弹性伸缩服务 配置同城双中心服务灾备 应对瞬时流量高峰 教程 设置 SLB 一、 开通 SLB 服务,https://common-buy.aliyun.com/?&commodityCode=slb#/buy ,一般来说前期使用,只需要选择 性能共享实例 和 按使用流量计费 这样的基础规格就行。 二、添加监听 一般来说如果我们是 HTTP 的话走 TCP 监听更方便可以直接反馈到访客信息。 如果需要实现 HTTPS 的话,后端依旧只应该走 HTTP 80 而不能也是 HTTPS,再开通 会话保持 保持用户的 session。 调度算法 用 加权最小连接数(WLC)我觉得更科学一点,当然了具体因场景而异。 三、配置健康检查 选择健康检查方式,一般来说 HTTP 检查更直观点 四、添加后端服务器,然后我们添加我们后端的服务器集群即可,后端服务器保持配置和环境一致并且无状态,例如只安装 Nginx、PHP 7.2,数据库用 RDS,文件储存用 OSS。 权重方面的话,配置越高性能越好的 ECS 权重分配越高,如果配置相同权重设置为一致。 同城双中心服务灾备 阿里云同地域(Region)下不同可用区(Zone)的网络、电力、设备等都是物理隔离的,但是通过内网连接。由于单一 ECS 默认是在一个可用区下的,如果这台 ECS 出现了问题那么整个网络服务都将不可用。如果我们的服务在可用区A和可用区B都有部署那么如果 A 出现了问题,B 依旧可以提供服务。 在阿里云实现同城双中心,就非常方便只需要通过 SLB 就行,我们购买在同一地域不同可用区的 ECS 在 SLB 添加后端服务器就可以了,同样 RDS 也要选择主库和备库分布在不同可用区。 设置 ESS SLB 的横向扩展其实还是需要手动进行操作,而且也只适合计划中的配置升级,例如运营人员策划的秒杀活动是可以预见的有计划的,但是像之前鹿晗的恋情曝光引起的微博宕机事件,是毫无预见性的,这时候就需要自动检测CPU使用率然后自动添加新服务器并在 SLB 中添加后端服务器和设置 RDS 白名单。 弹性伸缩就是这样一款帮助自动完成高峰期服务器添加和平稳期服务器释放的服务。 一、创建伸缩组 ,其实里面的介绍都还挺清晰的,为了防止收到恶意攻击而盲目的服务器数量增长,我们可以设置服务器数量的上限,我们在专有网络是可以设置多个可用区的路由器的,同城双中心不是问题。 然后我们再添加对应的 SLB 和 RDS,以后增加的云服务器都会自动添加到后端服务器监听和 RDS 的白名单。 二、创建伸缩配置 ,也就是自动添加的云服务器的配置,这个过程和购买 ECS 的流程一致。 注意镜像要选择自定义的无状态的服务镜像。 三、添加已有实例 ,把已经创建好的服务器加入进去,一般来说平稳期的云服务器走包年包月的购买,瞬时的添加走按量的购买。 四、手动配置策略 , 如果觉得自动配置策略有一定不合理的地方,我们还可以手动配置相关策略,例如增加、减少和调整数量。
前言 网站监控是网站管理中非常重要的一个环节,很多小微企业的时候网站无法打开、服务宕机的时候基本上都不是访客因为无法访问网站发的邮件或者通过即时通信找的,这就显得很尴尬了。 所以我们需要使用一款企业级的监控工具来检测我们的网站,而阿里云·云监控就是这么一款非常好用的企业级监控服务工具,而且还是免费的哦! 介绍 云监控是一款阿里云的老牌产品了,是一款非常好用的企业级监控产品,可以监控基于 HTTP/HTTPS、ICMP、TCP、UDP、POP3、SMTP、DNS、FTP 8种标准网络协议的互联网服务可用性,当前服务可限量免费使用。支持多项阿里云服务的文档状况检测,还支持包括邮件、短信、钉钉机器人等多样化的报警功能。 要求 & 收获 需要使用到的产品: 学习使用 阿里云·云监控 通过本文你将讲学到: 使用云监控查看阿里云服务状况 使用云监控监控网站可用性 创建云监控钉钉机器人 教程 使用云监控查看阿里云服务状况 首先,我们进入到 云监控 的 管理控制台 ,就会看到所有已开通支持云监控的云服务的概览。 进入 Dashboard 默认是一个 ECS 服务监控的大盘,ECS 对云监控的集成度很高,基本上就开一个开箱机用的状态。当然我们也可以创建一个自己的大盘,点击右上角的 创建监控大盘 即可。 然后我们选择需要的 图表类型、监控产品、监控项和监控资源 即可,基本上分分钟就可以制作出一个图表信息丰富的云服务数据大盘来了。 具体单项产品的详细监控数据可以在 云服务监控 列表下查看到:![] 使用云监控监控网站可用性 进入 站点管理 选择 创建监控点 选择需要监控的类型,包括有 HTTP/HTTPS、ICMP、TCP、UDP、POP3、SMTP、DNS、FTP 等八种监控协议,不同的协议注意监控地址的协议。 像 FTP、SMTP、DNS 等监控可能需要一些更高级的监控设置,点击高级设置,还可以进行账号密码等内容的交互设置。 既然是监控,那么报警自然是一个非常重要的步骤,如何设置报警规则呢? 点击列表进入 报警规则 —— 设置报警规则 设置报警的监控参数,比如说当丢包率达到 50% 的时候进行报警 再进行报警阈值、报警方式和联系人通知组的选择。不过别忘记设置报警人的联系方式,比如说手机、邮箱和钉钉机器人。 创建云监控钉钉机器人 选择很多的运维群组都是使用钉钉进行 5*8 进行沟通交流的,如果有一个可以对服务状态进行报警的钉钉机器人就可以更加的高效,用户和运维者都可以做到及时的获得通知。那么我们就来创建一个钉钉机器人吧。 在 群设置 选择 群机器人 ,然后 添加机器人 选择 自定义。 然后发挥想象力想一个名字出来,接着复制 hook 地址就行。 然后我们到 报警联系人 —— 新建联系人 那里添加联系人名称和钉钉机器人即可。 接着我们可以让服务器关机一下测试一下监控是否正常: 果然很自动的就发来监控了:
前言 短链接和二维码是企业进行营销中非常重要的工具,不仅仅是冗长的链接缩短了,而且应用得当还可以获得非常多有效的数据,诸如点击数、来源、时间等等,相比大家也都看多 click.aliyun.com 的链接吧,虽然它不短,但它就是拿来缩短链接计数用的,使用像 t.cn url.cn 等第三方短链接的话就无法获得任何反馈数据,因此也有一些针对企业级的短链接服务,不过是收费的,而其他的免费短链接也会有种种限制。 介绍 Polr 是一款开源的 PHP 短链接软件,支持包括: 已生产短链接的地址修改(营销支持) 统计点记着信息(来源、时间等) 二维码生成(移动营销支持) API 支持(开发支持) 不过由于 Polr 是一款歪果仁开发的软件而且也没提供中文支持,还好有 skywalker 为我们带来了中文优化支持和一些改进。也就是 Polr 中文优化版 了。 题外话,其实自从微博SNS火了起来以后短链接软件就层出不穷,但是每个开发者都是开发完了事的,不会提供更多的升级也不会有漏洞的修补,推荐 Polr 呢,主要还是因为它一直在升级和修复。 要求 & 收获 需要使用到的产品: 搭建了 LNMP 环境的任意(包括非阿里云)服务器/ECS 通过本文你将讲学到: 使用 Composer 安装 PHP 程序 安装短链接好吃呢个徐 教程 由于篇幅限制,不过多介绍 LNMP 环境介绍和虚拟主机搭建,具体教程请看:【云计算的1024种玩法】手把手学会配置安装 LNMP 建站环境 安装 Composer 由于目前 Cloudreve 处于开发状态,所以我们需要通过 Composer 进行安装。 一、运行下面代码即可全局安装 Composer: curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer 二、使用国内镜像 因为默认源在海外,国内服务器下载可能会很慢,海外服务器可以跳过: composer config -g repo.packagist composer https://packagist.phpcomposer.com 安装 Polr 一、创建好网盘用的虚拟主机和数据库后,进入虚拟主机网站的目录,例如我的是 /data/wwwroot/polr,然后开始下载安装: cd /data/wwwroot/ git clone https://github.com/skywalker512/polr.git cd polr 二、那么我们网站的运行目录就是 /data/wwwroot/polr/public root /data/wwwroot/polr/public; 然后在虚拟主机的配置 conf 中加入伪静态规则: location / { try_files $uri $uri/ /index.php$is_args$args; } 三、接下来会进入一段时间的等来下载相关依赖库,进行耐心等待: 出现下面语句就是成功了: Generating optimized autoload files 四、复制一个 .env 文件副本,在网站目录下运行下面语句: cp .env.setup .env 如果 .env.setup 文件不存在,那么我们就重新下载一个: wget https://raw.githubusercontent.com/skywalker512/polr/master/.env.setup 进入 http://url.mf8.biz/setup 进行安装,设置一些相关选项即可 网站管理 然后进入用户登录页:http://url.mf8.biz/login ,输入你的管理员账号和密码 OK,我们就可以开始愉快的使用了,Polr 有着很好的用户控制功能,实属是非常好用的企业级应用了。
前言 之前其实在云计算的1024中玩法中其实也有介绍过在 ECS 搭建一个 NextCloud 的网盘(),不过其实 ECS 云盘的价格还是比较贵的,在高并发下载的时候也容易遇到 I/O 瓶颈,特别是当云盘储存到一定容量以后如何扩容云盘也会是一个比较麻烦的事情。 像 OSS 这样的对象储存才是附件储存的第一选择,在国内外许多网盘公司都是选择购买对象储存的云服务来降低成本和运维压力的。那么我们搭建一个私人网盘自然也要选择 OSS 作为储存。 介绍 Cloudreve 就是这样一款出色的国产网盘,是一款基于 ThinkPHP 构建的网盘系统,能够助您以较低成本快速搭建起公私兼备的网盘。在功能上,可限制单文件最大大小、MIMEType、文件后缀、用户可用容量,图片、音频、视频、文本、Markdown、Ofiice文档 在线预览,拖拽上传、分片上传、断点续传、下载限速等等。 要求 & 收获 需要使用到的产品: 搭建了 LNMP 环境的任意(包括非阿里云)服务器/ECS (阿里云服务器可以不计推送到 OSS 的流量) 阿里云 OSS 通过本文你将讲学到: 使用 Composer 安装 PHP 程序 使用 OSS 作为网盘储存 教程 由于篇幅限制,不过多介绍 LNMP 环境介绍和虚拟主机搭建,具体教程请看:【云计算的1024种玩法】手把手学会配置安装 LNMP 建站环境 安装 Composer 由于目前 Cloudreve 处于开发状态,所以我们需要通过 Composer 进行安装。 一、运行下面代码即可全局安装 Composer: curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer 二、使用国内镜像 因为默认源在海外,国内服务器下载可能会很慢,海外服务器可以跳过: composer config -g repo.packagist composer https://packagist.phpcomposer.com 安装 Cloudreve 创建好网盘用的虚拟主机和数据库后,进入虚拟主机网站的目录,例如我的是 /data/wwwroot/pan,然后开始下载安装: cd /data/wwwroot/ composer create-project hfo4/cloudreve:dev-master 然后再虚拟主机的配置 conf 中加入伪静态规则: location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; break; } } 进行等待后,然后会开始命令行的交互: Do you want to remove the existing VCS (.git, .svn..) history? [Y,n]? 是否移除一些不必要的版本控制文件历史? 输入 y Input the hostname of your MySQL server (Default:127.0.0.1): 接下来是数据库库设置的交互: Input the hostname of your MySQL server (Default:127.0.0.1): //数据库连接地址,本的话默认回车 The database name:pan //数据库名称 The username of your MySQL server (Default:root):root //数据库用户名 The password of your MySQL server:mf8.biz //数据库用户密码 The hostport of your MySQL server (Default:3306): //数据库端口,默认回车 The full-url to access to your Cloudreve (e.g. https://pan.aoaoao.me/ , 'http' must be included in the front and '/' must be included at the end): //网站域名, 必须 http:// 或者 https:// 开头, / 结尾! 然后就安装成功了,会提示你: Congratulations! Cloudreve has been installed successfully. Here's some informatioin about yor Cloudreve: Homepage: http://pan.mf8.biz/ //首页地址 Admin Panel: http://pan.mf8.biz/Admin //后台地址 Default username: admin@cloudreve.org //管理员账号 Default password: admin //管理员密码 然后把 cloudreve/ 目录重命名为 pan/,这里的 pan/ 和你的虚拟主机绑定的目录所对应不是唯一的,只是我这里这样做。 cd /data/wwwroot/ mv cloudreve/pan/ 网站管理 然后进入你的网站首页: 登录管理员账号就进入 http://pan.mf8.biz/Admin 页面,网址替换成你的。 然后找到 上传策略 —— 添加 然后参考 《使用 AliCloud Duplicity 将服务器文件备份至 OSS》 ,设置 OSS 的子账户,因为涉及 Access Key 安全起见使用子账户。 然后点击 阿里云 OSS 下面添加: 然后邮件推送可以使用阿里云的邮件推送服务来做支持: 然后回到首页我们就可以正常的使用一个储存在 OSS 的网盘了!测试一下上传下载预览是否可用哦!
元宵将过,想必大家对于新一年的规划都是启动状态了,而阿里云为大家准备了开年采购季活动,提供了超多优惠,本次优惠同双11大促同规格。为了让大家不错过本次活动,博主本人特别整理出关键的优惠时间点,供大家关注。 2月27日-3月31日 百款云产品,新购年付低至5折 阿里云百余款云产品,新购年付低至5折优惠,只要是阿里云官网注册会员用户均可参加,无论新老用户哟!像 云服务器、云数据库、网络、储存等大分类的产品均有非常大的优惠力度。 云产品分会场 云服务器、云数据库、网络、储存、CDN、大数据等云产品均提供新购年付优惠,像突发性能云服务器低至 352.2 元/年,其他规格云服务器也有6折优惠,优惠力度非常大。 活动地址: 云产品分会场 云安全分会场 云安全分会场进场就送安骑士100元和Web应用防火墙200元无门槛代金券,同时云安全产品还有采购季促销,同时应用优惠力度非常大,如果觉得云安全服务较贵,这时候购买绝对是最佳优惠时期。 活动地址: 云安全分会场 云通信分会场 年付短信套餐包低至2.8分起,对于尚未使用过云产品的新用户,云通信分会场赠送 50元 云通信通用代金券,对于有短信实名、短信找回密码等有丰富短信业务需求的用户,年付套餐包不容错过! 同时还有物联网无线连接服务优惠,提供订单金额满2000减100,订单金额满10000减600,订单金额满20000减1400,订单金额满50000减4000 代金券,以及高额度促销优惠,联合使用优惠力度极大。 活动地址: 云通信分会场 2月27日-3月18日 活动一:新购满额返券,最高6000元 2018年2月27日-3月18日期间,累计新购1年及以内时长的预付费云产品(域名、虚机、云市场除外),满1000元再返代金券,最高返6000元! 无论新老用户均可参加新购满额返券活动,在活动时间内,用户在阿里云官网新购时长1年及以内的预付费云产品(云市场、域名、虚拟主机、专有云产品除外),累计新购金额满1000元,即可获得对应金额的阿里云云产品代金券的领取资格。 活动地址: 新购满额返券 活动二:移动端扫码领取新年红包 2018年2月27日-3月18日期间,通过移动端扫码领取阿里云开年红包,红包有 “满100减50”、“满1000减100” 和 “满2000减200” 可选,由于两个红包只能三选一,所以在购买之前需要慎重选择。 其中“满100减50”仅限没有购买过阿里云产品的新用户首次购买云产品使用。 虽然领取红包时间是3月18日截止,但是代金券的过期时间是截止3月31日,如果不确定采购具体日期,不放先领取新年红包。 活动地址: 移动端扫描上图中二维码即可 3月19日-3月31日 活动一:建站体验1元购,严选商品先走起 活动地址: 敬请期待 活动二:域名、虚拟主机、企业邮箱半价购 活动地址: 敬请期待 参加聚能聊 查看更多云栖社区用户分享的超值攻略,分享自己的攻略还能获得社区礼品:https://yq.aliyun.com/roundtable/65660
前言 新年伊始,新年第一个计划从阿里云的开年采购季省钱开始。捡到便宜就等于赚到,那么废话不多说,以下攻略错过了一定后悔! 云服务器 突发性能实例的云服务器最低配置仅需352.2元一年,这个必须屯一个啊,如果企业官网、个人博客等网站初期的日均访问量比较小,CPU占用率不高就可以选择使用突发性能实例,以避免买过大配置的云服务器产品了资源和成本的浪费。 不过我个人更推荐买 2G 的,毕竟突发性能都是半价优惠,因为可用内存更加多,更多的内存可以用于缓存为网站加速访问体验。 而如果有高 IO 性能的需求的话,本地 NVMe SSD实例是最佳选择,但是该实例的价格其实是比较贵的,但是放到采购季大促中有6折优惠,价格一下子就降几千,价格就可接受了起来。 云数据库 以云数据库产品为代表的PaaS云产品,作为提升运维人员幸福感的最佳产品,不仅接入服务非常方便,而且棉运维免维护,各种 DBA 操作点击鼠标就是轻松完成。 像云数据库 MySQL 产品提升最大连接数和最大IOPS后就没有小规格的实例了,所以云数据库的购买门槛一下子就高上去了,但是云数据库无论是 MySQL 还是 Redis 版等等都是一用了就回不来的好产品,这次的采购季提供了年付6折的优惠,如果价格可以接受一定要购买一台! 储存 对象储存OSS 对象储存OSS 包年资源包全都提供半价优惠,作为网站附件储存的最佳选择,OSS是很多网站功能的一部分,可能很多网站的OSS都是走的按量付款,这时候有一个资源包的优惠不妨折算一下当前数据量和增长规模然后就买一个储存包,再也不要看着数据增长量而肉痛了。 文件储存 如果怕云盘一下子买大了会有资源浪费,但是云盘买小了吧以后扩容操作又非常的麻烦,这时候不妨考虑一下文件储存服务,采购季的文件储存优惠比较适合已经有一定储存规模的用户进行迁移或者预计前期数据增量量极快而后期较慢的场景。 短信资源包 随着实名认证、密码找回、快捷注册等短信依赖场景的陆续上线,短信越来越成为网站、应用的刚需,尽管看起来这次采购季中短信资源包年的打折力度貌似不大,但是考虑短信的刚性需求和额外的短信包代金券优惠,实际上短信资源成了目前开发者群体讨论中觉得优惠最大的产品了,大家都抢着买。 物联网卡 其实最省的藏得还是最深,由于物联网设备势必是要上传数据的,那么就依赖移动网卡了,如果仔细看图片你会发现,省的金额 比 出售金额 还要高!如果团队有大量的物联网网卡需求那么这次活动错过了真的是非常非常亏了~ 当然了参加本次促销的产品有百余款,我也是列举了一些我觉得比较心动的产品,可能还有不少没列举的产品会更加适合你!为了避免有优惠被遗漏,大家最好把各个分会场都逛一逛,看看没有自己需求比较高的产品。 活动地址: 采购季主会场 云产品分会场 云安全分会场 云通信分会场 还有 域名与网站分会场 和 云生态分会场 将在3月中旬开放,尽请期待! 参加聚能聊 查看更多云栖社区用户分享的超值攻略,分享自己的攻略还能获得社区礼品:https://yq.aliyun.com/roundtable/65660
前言 自己用 WordPress 作为个人博客的 Web 程序差不多也有七八年了,中间也是积攒了非常多的使用经验,不过网站在搜索引擎收录这一个问题上差不多到 2017年 才摸索明白,这里也就分享几个自己觉得使用 WordPress 应该注意的几个关于 SEO 的点。 不要过分优化网站 我的博客:米饭粑 呢,是一个分享自己原创教程的一个网站,随着自己 Linux 相关经验的不断丰富,也在不断的探索一些新的 Linux 和 云计算的玩法,所以会产出大量的原创技术类教程。 可以看到这是百度搜索引擎对于 MF8.biz 这一年来的收录表现反馈,可以看到基本上有那么一长段的平稳期,但是这期间其实我是有一只更新文章的,但是百度就是不收录,当然了旧的文章收录也没掉。同样的情况也出现在360搜索上,由于360搜索的站长平台看不到一年的索引量趋势所以也就没图了。这就很困扰我了。 但是在谷歌上这个情况就不存在,尽管图片看起来很平稳,但其实文章收录一直是在增多的,差不多文章发布半天后就可以查询到收录,因为谷歌一年来一直在收录文章,而且我一个月也就写10篇的样子,所以按一年的趋势看真的是非常的平稳了。 那这个原因是为什么呢? 在我咨询了云栖社区上的好朋友 —— 怀英后,分析得出的是因为网站优化过分了,为了追求 PageSpeed、GT Metrix 等跑分的时候,把 JS、CSS 文件的大段内容直接放在了 HTML 页面内,这就导致了爬虫读了大量的内容后,都没有读取到实际有营养的文章内容。 就以为这个页面是一个 CSS 或者 JS 文件。 所以我通过站长工具各种检测是不是 Nginx 屏蔽了爬虫 User-Agent 啊,是不是防火墙屏蔽了爬虫 IP 啊,等等。由于网站主要的优化软件是谷歌出品的 PageSpeed for Nginx,所以谷歌的爬虫抓取这些页面倒是没什么问题,但是这可苦了国内的爬虫。 建议 网站做到首次打开首页 2s 以内,页面 1s 以内打开就够了,不要太过分的追求高跑分,不然写一篇文章可能更多的时间会花在速度的有划伤了,而不是内容了。可以考虑把优化的内容考虑到图像、多媒体内容上去,而且优化的太过分,搜索引擎反而不太领情,哈哈。 由于本身网站的速度和文章的质量都是非常高的,所以在解决这个问题后,一下子就从 600+ 的页面收录,彪掉了 1600+ 的页面收录。 SEO 插件很没必要 WordPress 一直是被人诟病这是一个臃肿的博客程序,但是其实如果拿一个新安装好的 WP 网站和一个新安装好的 TypeCho 博客相比较,你会发现其实两者差不多快,而慢主要是因为第三方主题设计的不好,以及过分多的插件拖慢了速度。 WP 插件一装多对直观的反应就是 WP 后台首页打开极度缓慢,TTFB(首字节加载时间)达到30s甚至更长。由于米饭粑一直以来都很少安装插件,所以我之前拍错一直都没考虑插件,后来是在想不通了,吃的空就停了所有插件一个一个启动进行拍错,结果就是 All in One SEO Pack 拖慢了后台速度。 All in One SEO Pack 是很多所谓的 ”WordPress 必装的10个插件“ ”WP站长必备插件推荐“ 中的长居客。的确在早期(2012年之前吧) WP Core 以及第三方模板都没有考虑为模板加入 TKD(标题、关键词、描述) 等功能,安装一个 SEO 插件的确可以有效的提升 SEO 表现。但是现在随着越来越多的 WP 第三方开发者越来越专业,主题一般都已经设置好了 TKD 功能,安装一个插件反而多一个漏洞风险。 建议 卸载你的 SEO 插件,你会发现你的网站排名、收录不仅不会掉,反而会让你的 WP 加载更快,码字体验也更上一层楼! 从用户体验角度出发 如果你有研究过百度、谷歌的搜索引擎算法更新,例如百度近期的:惊雷算法、闪电算法、清风算法,谷歌近期的:马加比更新、移动优先索更新、猫头鹰更新。 其实这些更新的内容基本上都是针对一些误导访客、令访客不愉悦、虚假内容做出的更新。 其实搜索引擎不断发展的目的就是让用户搜索关键词后得到的结果正确、有效。访问过程愉快、轻松。如果你的网站有大量的广告,引用了大量代码却没有高亮,复制抄袭其他人的原创文章,放了令人不是的东西,对移动化访问不友好。那么自然不会有很好的收录,甚至会被搜索引擎标记为黑站。 建议 如果你的网站足够优秀,搜索引擎不收录这就是搜索引擎的问题,努力提升网站的用户体验,而不是为了收录而做SEO。
前言 当使用了像 OSS、S3 这样的开放对象储存的 PaaS 产品后,一面上体验到了网站核心同附件库分离的安全性、高性能以及免维护的便利性,一面上却又怕在一个厂家的对象储存上扎根了就无法迁移,会被厂家绑架。 如果你的网站大量应用了其他厂家的云服务像 云服务器、云数据库、对象存储要迁移到阿里云的上的话,像云服务器可以通过压缩、解压或者rysnc等同步方式传输,云数据库可以通过 DTS 迁移,那么对象储存,就可以使用阿里云的 OSSImport 工具。 介绍 OssImport 工具可以将本地、其它云存储的数据迁移到OSS,它有以下特点: 支持的丰富的数据源,有本地、七牛、百度BOS、AWS S3、Azure Blob、又拍云、腾讯云COS、金山KS3、HTTP、OSS等,并可根据需要扩展; 支持断点续传; 支持流量控制; 支持迁移指定时间后的文件、特定前缀的文件; 支持并行数据下载、上传; 支持单机模式和分布式模式,单机模式部署简单使用方便,分布式模式适合大规模数据迁移。 阿里集团内部像淘宝、优酷都已经完成了向阿里云的迁移工作,而存储数据的传输就是应用的 OssImport,所以 OssImport 是经历过大量数据迁移考验的,是一款非常成熟的迁移工具。 要求 & 收获 需要使用到的产品: 任意(包括非阿里云)服务器/ECS (阿里云服务器可以不计推送到 OSS 的流量) 阿里云 OSS 其他非阿里云的对象储存产品 通过本文你将讲学到: 安装 Java 环境 使用 OSSImport 迁移对象存储文件 教程 安装 Java OSSImport 的运行需要 Java 1.7 以上版本,所以我们需要在服务器中安装 Java 运行环境。 这里以 Ubuntu 16.04 LTS 为例。 OSSImport 的单机模式支持 Windows 和 Linux 发行版,所以只要安装好了 Java 环境都可以使用 OSSImport。 一、安装依赖 apt-get install python-software-properties software-properties-common 二、添加PPA源,由 webupd8team 团队制作的快速命令行安装 Java 的工具 add-apt-repository ppa:webupd8team/java 三、刷新软件源缓存并安装 apt-get update apt-get install oracle-java9-installer 四、查看安装后版本 java version 例如: root@MF8.biz:~/ossimport# java version Error: Could not find or load main class version Caused by: java.lang.ClassNotFoundException: version root@iZuf60ssdog3u50holkx23Z:~/ossimport# java -version java version "9.0.4" Java(TM) SE Runtime Environment (build 9.0.4+11) Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode) 下载 OSSImport 上图是迁移架构的图解,OssImport 有 单机模式 和 分布式模式 两种部署方式。对于小于 30TB 的小规模数据迁移,单机模式即可完成。对于大规模的数据迁移,请使用分布式模式。 这里介绍的是 单机模式 的部署,毕竟我暂时也接触不到大于 30TB 的数据迁移嘛。 一、下载 OSSImport wget http://gosspublic.alicdn.com/ossimport/standalone/ossimport-2.3.1.zip 二、修改配置文件 配置文件有 conf/sys.properties 和 conf/local_job.cfg ,前者主要是运行环境的参数,如果数据迁移量特别大建议把内存改大点。 后者是我们迁移的重点。 不同对象储存产品迁移的配置文件模板可以在下面选择: 迁移类型 配置文件 说明 从本地迁移到OSS job.cfg srcPrefix 是以 / 结尾的绝对路径,如 D:/work/oss/data/, /home/user/work/oss/data/ 从七牛云存储迁移到OSS job.cfg srcPrefix 和 destPrefix 可以配置为空;如果不为空,请以 / 结尾,如 destPrefix=docs/ 从百度bos迁移到OSS job.cfg srcPrefix 和 destPrefix 可以配置为空;如果不为空,请以 / 结尾,如 destPrefix=docs/ 从AWS S3迁移到OSS job.cfg S3的 域名列表 从又拍云存储迁移到OSS job.cfg srcAccessKey/srcSecretKey填操作员账号及密码 从腾讯cos迁移到OSS job.cfg srcDomain请按照V4版本填写,如srcDomain=sh ; srcPrefix可以为空,当不为空时候,请以 / 开头和结尾,如 srcPrefix=/docs/ 从Azure blob迁移到OSS job.cfg srcAccessKey/srcSecretKey填存储存储账号及密钥;srcDomain填连接字符串中的 EndpointSuffix,如 core.chinacloudapi.cn 从OSS迁移到OSS job.cfg 适用于不同区域之间、不同存储类型之间、不同前缀之间的数据迁移;推荐在ECS上部署,并使用带internal的域名,可以节省流量费用 使用高速通道迁移数据到OSS job.cfg 适用于所有数据源,如果您有高速迁移需求,请提交工单或联系OSS支持人员 1 配置 OSSImport 这里以腾讯云的 COS 的迁移为例来介绍,如何配置。 一、复制模板文件内容,将上面下载的 job.cfg 文件内容复制替换 conf/local_job.cfg 的内容,或者干脆删掉重命名也没问题。 二、是否开启增量传输(可选),如果像论坛、门户这样多用户的网站想不关站迁移以做到用户无感知的话,就需要进行增量传输,也就是传输一遍以后扫描列表看看有没有新增的文件再进行传输。把第 2 行的 isIncremental=false 改为 isIncremental=true,像博客、CMS这种单管理员用户的默认的话不用增量就行。 三、腾讯云的源access key,在 COS 的控制台左侧列表中就有 密钥管理 点击前往 API密钥管理 查看,如果没有就新建一个: 然后修改对应在第 20 和 23 行的内容,改为自己对应的 srcAccessKey 和 srcSecretKey #源access key,同步本地文件以及通过http地址同步的不需要填,大部分云平台填写控制台获取的acceess key/accss key id,又拍云填写操作员账号 srcAccessKey=AKID******6ZEBKUn6D3mSJFMZ******GA1g #源secrect key,同步本地文件以及通过http地址同步的不需要填,大部分云平台填写控制台获取的secret key/access key secret,又拍云填写操作员密码 srcSecretKey=dQ8g******bWn6jInD7vYz******341m 四、修改所在地域 第 34 行的的内容,其实配置文件中默认有介绍: #7.腾讯云: cos v3版本不需要填写;cos v4版本需要填上bucket所在的区域,比如华南园区填写:gz,华北园区:tj,华东园区:sh srcDomain=sh 例如我的 Bucket 是在 华东 的,那就是 sh 不变了。 五、srcBucket 也就是要迁移的 Bucket 的名称,例如我这个是 qcloud-demo 那就填 qcloud-demo 六、修改源前缀 是不是要迁移 Bucket 下的某个目录了,一般来说还是留空的好,第40行的内容: #源前缀,默认为空,如果srcType=local,则此目录是本地目录,如果是其他类型,则是源Bucket里需要同步的Object的前缀,注意如果是本地目录,需要完整目录路径(以'/'进行分割并且以'/'结尾,例: c:/example/) srcPrefix= 像我这样,等号后面啥都不要,留空即可。 七、阿里云的Accesskey 第 44 和 47 行,也就是,建议使用 RAM 实现,可以参考 《使用 AliCloud Duplicity 将服务器文件备份至 OSS》 中设置 RAM 的教程 #目的 access key destAccessKey=Jwd1******nMnZBs #目的 secret key destSecretKey=ir8Qt*****jwh5b0eF******xM5QE 八、修改目的endpoint 注意是只要 EndPoint 就行而不是 访问域名,这时候 ECS 的优越性就来了,上传的时候走内网带宽不计流量而且带宽够大。 destDomain=http://oss-cn-hangzhou-internal.aliyuncs.com 九、目的bucket 这个不用多说,就是 OSS 的 Bucket 名称了。 十、destPrefix 和上面第六步的前缀名称对应,如果是空的那么这一步也留空,如果是有目录的那也留目录。 十一、腾讯云 APPID,第 63 行的 APPID 在 https://console.cloud.tencent.com/developer 可以看到 十二、数据校验(可选) ,最后一行,对数据进行校验,防止数据传输发生错误。个人建议用第三种 MD5 校验的方式更可靠一点,不过时间也更长,修改为: auditMode=detailed 使用 OSSImport 修改好上述文件以后进行保存,然后在解压后的文件夹中运行: bash import.sh 如果是 Windows Server 就在 cmd.exe 中执行: console.bat start 注: Job运行信息,可以查看log/ossimport2.log;Task的失败原因,可以查看master/jobs/${JobName}/failed_tasks/${TaskName}/audit.log;Task的失败文件,可以查看master/jobs/${JobName}/failed_tasks/${TaskName}/error.list 如果运行出错可以参考:https://help.aliyun.com/knowledge_detail/57110.html 针对反馈结果进行拍错。 可以看到我的文件都已经成功的完成了迁移:
国内 CDN 发展历史 国外 CloudFlare 进入站长视野 自己第一次接触 CDN 差不多是 2010年 左右,那时候是 CloudFlare 国内比较辉煌的时候,因为那时候 CloudFlare 的速度真的还是蛮快的,用那时候比较流行的 000webhosting 套上 CloudFlare,网站一下子就嗖嗖嗖的了。 不过产品向来都是小而美的,一旦大众化就蛋疼了。使用 CloudFlare 的网站越来越多,很多本来应该是被 Wa11 的网站通过 CloudFlare 都起死回生了,也有人拿 CloudFlare 的缓存加速来做下载站、图片站来节省流量开销。于是,很成功的,CloudFlare 就收到了神秘的重视,速度从原先的 150ms 到了 300ms 并且时常打不开。 这时候 CloudFlare 也算是走向边缘了。 功能性套餐付费 CDN 崛起 然后视线自然是专向国内的同类产品了,不过国内起步还是稍微晚了点,首先起来的 CDN 是李开复先生创新工场下的产品 安全宝(后加入了与 CloudFlare 合作的百度云加速旗下),接着是知道创宇旗下的 加速乐,那时候国内的 CDN 使用还是需要一定门槛的需要有邀请码被邀请。不过这时候的国内 CDN 一直在做类似 CloudFlare 这样主打功能性和安全性的 CDN,然后都是有免费套餐的,但是如果想要更进阶的功能就得花不小的成本。 同期老牌的 CDN 有蓝汛的 Webluker,是按流量计费的,并且要买断几百元这样的额度,我自以为老牌的 Webluker 淡出了现在的 CDN 视野和其运营收费思路不无关系。 然后还有网宿,网宿是做高端企业级 CDN 的也就近期才有推出低门槛的 CDN 产品,就不提网宿了。 又拍、七牛 按量付费双杰 接着差不多是 2012 年左右了,国内的盛大云起来了,其实盛大云和阿里云还是前者更早让我知道,因为那时候盛大云开始了站长领域的推广,我的小博客 mf8.biz 也获得赞助(挂一个盛大云的广告有 30元 的奖励,那时候我读初中,一星期零花钱也就30~)。 貌似有点跑偏,那时候 盛大云·云分发 是差不多第一款按流量付费的云计算类型的 CDN 了。 这时候,其实阿里云已经开始发力推广 ECS 云服务器了,很多服务器推荐网站都再推荐阿里云的优惠,不过 CDN 还没发力。 差不多同期又拍云和七牛云这两个激烈竞争的 CDN 就开始出现了!早先是又拍云最先出来的,不过那时候貌似主推的是云储存,那时候是可以通过 FTP 来实现云储存的管理的,但是管理还是很麻烦的,我花了100多买了 100G 还是多少流量来着,然后还是退款了用不好,不过又拍云还是再一直发展和壮大中。 七牛云在 CDN 中推出算是迟的了,推出的七牛云储存,没记错应该是第一款通过镜像缓存文件来加速的产品了,要划重点的是,七牛云通过免费 10G 流量和储存的额度以及邀请注册再获得流量的方式,在站长届互传开来。当然最强的推手还得是 WPJAM(我爱水煮鱼)推出了一款 WordPress 的七牛云储存插件,在 WP 站长街通过加速教程传开后,基本上是让七牛云站到了 CDN 亲民最让站长熟知的地步了。 然后又拍云也推出了站长计划,为挂广告的站长提供一定额度的 CDN 流量支持。 由于又拍和七牛都是按量付费的 CDN,有一个好处就是如果你的流量比较少只要花一点点的钱甚至通过免费额度不花钱都可以体验到非常好的商业 CDN 的基础设施服务,这是按套餐CDN中免费套餐的用户体验的不到,当觉得按量的 CDN 那么好用以后,自然用户很自觉地就转战正营了。 以阿里云为代表的降价型云计算 CDN 出现 如果说七牛云的运营思路很好的话,那么阿里云的运营真的是神了,通过一系列的活动最主要的估计得是14、15年的时候,免费虚拟主机、免费半年的 ECS、RDS、OCS 活动,让很多人开始使用起了阿里云。阿里云是一个完整的云计算生态,当用户认可了 ECS 了以后就会开始尝试使用更多的阿里云产品,阿里云 CDN 的节点众多以及不俗的加速效果收货了不小的口碑吧。 当然这都不算什么(我感觉上面的都是废话啊,不过写都写了我也懒得删了),最强的还是阿里云 CDN 差不多一年一次的降价了,具体价格我也忘记了,反正就是让其他的七牛云、又拍云、网速等按量计费的都很被动的都降价了。降价可并不是什么容易的事情,说明阿里云打通了内容分发网络的很多瓶颈可以实现降价,当然了这也是营销思路。不过阿里云一直在坚持带动着 CDN 的降价,差不多是上半年的的云栖大会中的有一场阿里云可能就会宣布降价。 由于按流量计费的 CDN,流量大了以后,每 TB 的差价都是肉啊!所以阿里云带动了降价以后,自然由于费用问题大家都会转向费用更低的产品。 后 CDN 时代 后 CDN 时代,差不多是围绕几个痛点开始的: HTTPS 支持、天价账单、更多的功能。 HTTPS 支持 2015 年是 HTTPS 的“战略转折年”,主流浏览器均只支持基于 HTTPS 的 HTTP/2 协议,因此想用 HTTP/2 就得 HTTPS。同年,谷歌也宣布了对 HTTPS 的 SEO 加权扶持,使用 HTTPS 的网站将获得更好的网页收录。 再后来就是苹果要推行 ATS,也就是 APP 的应用连接网络必须走 HTTPS 协议不然就连不上呗,把很多站长都吓得不轻。 服务器使用 HTTPS 协议其实会一定程度上增加 Web 服务器软件的负担的,而很多 CDN 的 HTTPS 可能都会应用专用的 SSL 加速硬件来实现加速,反而在 HTTPS 上使用 CDN 会比源站解析更快,还能为服务器的 Web 软件减负 不过在刚开始基本上很少有 CDN 支持 HTTPS,然后像 VeryCloud 的 CDN 是国内率先支持 HTTPS 的,开始走入了视野。然后很多 CDN 开始支持 HTTPS 后,但是又没有同步的去支持 HTTP/2 这就有操蛋了, 又得找一个支持 HTTP/2 或者至少是支持 SPDY 的吧~ 不过发展到现在,除了像百度云加速、加速乐这样的套餐型收费的 CDN 的免费套餐不支持 HTTPS 之外,基本上其他 CDN 都支持了完整的 HTTPS 和 HTTP/2。 天价账单 添加账单是按量付费这样后付费类型的 CDN 的弊端了,如果突然遭遇大量的流量攻击而计费系统的持续扣费过快而没有被欠费系统给拦截,那么这一段没有被拦截的时间就容易产生添加账单。 不过尽管道理是这么一说吧,目前普遍关注到的天价账单新闻貌似都是指向七牛云,不过后续貌似还是七牛给免去了天价账单。 更多的功能 CDN 发展到现代应该是很多前端绕不过去的一块了,云储存可以配合进行智能图片裁剪再配合 CDN 进行边缘缓存加速,但是 CDN 毕竟不是自己编译和设置的 Web 服务软件那么自由,比如说我想应用 Brotli 压缩,像通过 UA 判断实现 WebP 自适应等等。 在这点上目前又拍云是做的比较好的,有很多的新特性加入到 CDN 中,支持了 TLS1.3、边缘规则、WebP 自适应等等,功能非常的丰富。 而同 CloudFlare 这个功能丰富、生态强大的 CDN 合作的百度云加速只能说打烂了一手好牌,如果愿意放下身段将 HTTPS 加入免费套餐并引入更多的 CloudFlare 的功能理论上可以获得非常好的口碑和宣传。 而阿里云 CDN 则是走了一个企业级的安全道路,推出了 SCDN 这个企业安全 CDN 产品,可以防御套餐内额度的 DDOS、CC 等攻击并且依旧有阿里云 CDN 丰富的特性,但毕竟是企业级产品价格居高不下真的是比较蛋疼了。
前言 很多阿里云用户经常在开发者论坛反应服务器的 25 端口被封无法发件。但其实这是阿里云的一定保护措施,由于一些散播垃圾邮件的用户会通过 ECS、轻量 等服务搭建一个建议的 SMTP 服务器进行垃圾邮件滥发,这就可能导致很多邮件服务商会把阿里云的IP判断为垃圾邮件的IP源,就会导致下一个使用这个公网IP甚至是整个IP段都会收到波及。所以也不仅仅是阿里云,大多数的虚拟化服务器的提供商都会默认封禁 25 端口。 但是用户自己搭建基于 SSL、TLS 加密的 SMTP 服务器,技术难度太高。用第三方 SMTP 服务,又需要额外设置或者安装插件扩展什么的,这里将介绍使用 MSMTP 实现在服务器使用第三方 SMTP 服务并完美兼容 SendMail 的规则。 介绍 MSMTP 是一个非常简单易用的 SMTP 客户端软件,基于GPL发布,支持TLS/SSL、DNS模式、IPv6、服务器端认证、多用户等特性,实现对 SendMail 的完整兼容。主要分两个包:MSMTP 和 MSMTP-MTA,前者实现了邮件转发代理,后者实现了对 SendMail 的完整兼容。 针对 SMTP 呢,主要还是推荐使用像 阿里云·邮件推送 这样的专业邮件推送服务,如果使用 Gmail、FoxMail、Aliyun Mail 这样的个人邮箱服务,如果发送邮件过多会被禁止发送邮件。 而 邮件推送 每日 200 封的发件额度基本上可以应对不小的服务场景了。 要求 & 收获 需要使用到的产品: 任意(包括非阿里云)服务器/ECS/轻量应用服务器 (安装 CentOS 操作系统) 阿里云·邮件推送 通过本文你将讲学到: 开通设置 阿里云·邮件推送 使用 MSMTP 实现邮件转发代理 开通邮件推送 进入 邮件推送,点击 申请开通 并进行管理。 一、进入控制台,左侧列表中进入点击 发信域名 ,再点击 新建域名 ,设置你的发件域名,例如我的是:mail.mf8.biz ,那么效果就是 xxxx@mail.mf8.biz 二、点击 配置 将每一个配置添加到域名 DNS 中,返回后再点击 验证 三,左侧列表中进入点击 发信地址,再点击 新建发信地址 , 账号 一栏推荐填写 noreply 提示不可回复,如果接受回复的话可以在 回信地址 中填写收件的邮箱 然后 发件类型 填写 触发邮件, 触发类邮件指注册激活、密码找回等;批量邮件指营销推广、订阅期刊等。不同类型邮件的发送限制不同,请根据邮件类型选择。 四、在对应账号中点击 设置SMTP密码 设置 MSMTP 安装 RHEL/CentOS: 首先需要安装 EPEL,已经安装完成跳过即可: yum install epel-release 然后安装两个软件: yum install msmtp msmtp-mta ca-certificates Debian/Ubuntu apt install msmtp msmtp-mta ca-certificates 设置 新建 /etc/msmtprc 文件,内容如下: account default host smtpdm.aliyun.com port 465 timeout 30 auth login # 下面填写发件账户 user no-reply@mails.mf8.biz # 账户密码 password Passw0rd auto_from off # 下面填写发件账户 from no-reply@mails.mf8.biz tls on tls_starttls off tls_certcheck off logfile /var/log/msmtp.log 这是阿里云邮件推送的设置模板,其他的邮件推送和设置请参考官方教程:http://msmtp.sourceforge.net/doc/msmtp.html 权限 由于这里文件储存了明文的密码所以要权限要设置的低! chown www-data:www-data /etc/msmtprc chmod 0666 /etc/msmtprc 这里的 www-data:wwww-data 要和 PHP 的用户组一致,如果是 www 就改成 www,apache 也是一样。 测试 一、在终端中输入: msmtp <你的邮箱> 如果没有任何反应那么就 ok 了,如果有反馈就根据反馈信息对配置文件进行修改。 二、通过探针或者 WordPress、Discuz 这样的程序的忘记密码进行测试是否可行即可! 完成后,所有依赖 SendMail 进行邮件发送的二进制软件这样的服务基本上都可以支持获得发件功能了~
前言 最近 OpenLiteSpeed 推出 1.5.0RC1 版本,1.4.X 版本从 2014 年发布以来持续到 2018 年,而这次终于开始了跨越大版本的更新,不过虽然感觉更新的内容并不是非常的劲爆。 这是更更新内容: 服务器核心 • [新]多线程API。 • [新]模块开发指南。 • [更新]添加了更多的多线程示例模块。 • [错误修复]所有已知的错误已被修复。 ModLSPHP模块 • [新]更好性能的ModLSPHP模块,适应多线程支持 安装 由于 OpenLiteSpeed 在 1.4.27 版本中增加了 Brotli 的支持(这是兼容 Gzip 但是压缩率更高的压缩格式),但是默认不编译安装的,而且需要 brotli-devel,这里就介绍如何编译安装支持 Brotli 的 OpenLitespeed。 教程适合 CentOS、RHEL、Oracle Linux、CloudLinux 操作系统 安装依赖 yum install epel-release yum install gcc gcc-c++ make autoconf glibc rcs yum install pcre-devel openssl-devel expat-devel geoip-devel zlib-devel udns-devel ok,安装 Brotli 这里用的 Fedora 测试版的 Brotli,由于 Brotli 并不依赖其他组件,所以可以直接用 Fedora 的。 yum install http://mirrors.aliyun.com/fedora/development/rawhide/Everything/x86_64/os/Packages/b/brotli-1.0.1-2.fc28.x86_64.rpm yum install http://mirrors.aliyun.com/fedora/development/rawhide/Everything/x86_64/os/Packages/b/brotli-devel-1.0.1-2.fc28.x86_64.rpm 如果地址失效了,就在 http://rpmfind.net/linux/rpm2html/search.php?query=brotli&submit=Search+... 查看新的版本号 下载源码 mkdir -p /root/src/ cd /root/src/ wget http://open.litespeedtech.com/packages/openlitespeed-1.5.0rc1.tgz tar xzf openlitespeed-1.5.0rc1.tgz cd openlitespeed-1.5.0 编译 ./configure --with-brotli=/usr 操作 启动 OpenLiteSpeed: /usr/local/lsws/bin/lswsctrl start 关闭 OpenLiteSpeed: /usr/local/lsws/bin/lswsctrl stop 然后进入 https://<你的公网ip>:7080 输入默认账户:admin 和 默认密码 1234567 就可以进行操作了。
前言 备份是网站正常运作的重中之重,其实之前也有写过一篇比较入门级的服务器备份教程 —— 【云计算的1024种玩法】轻松将服务器文件备份至 OSS,不过还是有很多的读者说纯命令行的操作还是不够直观,这次就给大家带来一个通过图形化面板实现的网站备份操作。 介绍 其实我们主要的使用的是国产面板 —— APPNODE 提供的 备份管理 功能,如果不安装面板提供的网站管理环境的话,其实 APPNODE 可以兼容几乎所有的一键包或者面板。 这里我们就以国内用的比较多的 OneinStack 一键包环境配合 APPNODE 为例,来介绍一下如何实现图形化的储存云端备份! 要求 & 收获 需要使用到的产品: 任意(包括非阿里云)服务器/ECS/轻量应用服务器 (安装 CentOS 操作系统) 阿里云 OSS 产品 通过本文你将讲学到: 使用 OSS 图形化的 OSS 服务器备份操作 阿里云访问控制(RAM) 的操作 教程 推荐操作系统: CentOS、RHEL 7 这里以一个已经安装好 Oneinstack 的环境为例, 一、 安装 AppNode 控制中心和受控端,直接在 SSH 中运行: INSTALL_AGENT=1 bash -c "$(curl -sS http://dl.appnode.com/install.sh)" 二、 由于是图形界面嘛,所以就要有个登录端口已经账户密码的输入,最后同意相关协议 最后会显示一下登录地址和账密 三、 然后就是通过地址登录了呗,选择使用备份管理 四、 ok,选择我们暂时搁置 APPNODE 界面的操作,去开通一下 OSS 并设置安全权限: 五、 首先我们要开通 OSS 六、 然后创建一个和阿里云 ECS 同地域的 OSS Bucket, 七、 储存类型选择 低频访问 ,读写权限为 私有 。因为备份并不会频繁访问,所以可以选择成本更低 低频访问,我们的别分肯定也不要别人访问,自然是 私有 八、 然后进入 访问控制(RAM) 创建一个专门为 OSS 准备的用户,一定要记录好 AccessKeyID 和 AccessKeySecret 九、 点击 策略管理,然后点击 新建授权策略 十、 直接点击 空白模板,然后输入 授权策略名称 后,输入策略内容如下面: { "Statement": [ { "Action": "oss:*", "Effect": "Allow", "Resource": [ "acs:oss:*:*:mf8-oss-back", "acs:oss:*:*:mf8-oss-back/*" ] } ], "Version": "1" } 由于我的 OSS Bucket 是 mf8-oss-back,所以 acs:oss:*:*:mf8-oss-back", 和 "acs:oss:*:*:mf8-oss-back/*" 后面是 mf8-oss-back 你可以改成自己的 OSS Bucket 名称 然后点击 新建授权策略 保存 十一、 为该用户进行授权 十二、 选择我我们刚才创建的授权策略就行 十三、 经过一番复杂的操作后,我们回到 APPNODE来, 十四、 进入 备份管理 —— 远程储存管理 —— 添加远程储存 十五、 自然是选择 云储存 ,然后就根据内容填写之前我们获得的 AccessKeyID 和 AccessKeySecret 就行,记得进行连接测试: 远程备份路径 不建议在根目录,最好设置一个 backup 这样的目录上传速度限制 这一点的话,像阿里云用 OSS 走内网就完全不用担心网络速率影响访客体验的问题,而且速度也快,上限可以调的很高。 十六、 连接成功后自然是点击 创建 十七、 然后我们进入 文件管理 ,例如 Oneinstack 的默认网站目录是 /data/wwwroot/default 那就进入 /data/wwwroot/,然后勾选后点击 备份 十八、 然后就是进行备份的喜好了,比如说每周备份这样。 压缩选项 这边,我们可以使用压缩率超高的 .tar.xz 不过就是压缩略费 CPU 十九、然后就开始进行压缩备份了: 二十、 前往 备份管理 - 应用备份管理 就可以看到我们的备份记录了,然后我们再设置一下远程备份 二十一、 然后就会自动将本地备份同步到 OSS 了。
前言 随着跨境贸易的发展以及一带一路倡议的铺开,越来越多的中国企业需要走出去,去开拓海外用户。由于线下的生产厂家在国内,所以海外用户能看到的门面也就一个企业官网网站了,但是很多官网的服务器可能是位于国内的,在海外打开就会像我们打开一个海外网站一样,速度慢到绝望啊! 借着虽然不是一带一路成员国但却毗邻大量一带一路沿线国家的印度-孟买地域开通之际,我们就来试试如何实现企业官网的海外加速吧。 介绍 这里介绍的海外加速就是开通一个临近海外消费者的服务器,然后选择同步数据或者进行镜像缓存,同步数据和附件的话其实费用还是蛮高昂的,一般来说选择镜像缓存也就是反向代理就可以。 如果针对的是海外的华人消费者,那么中文网站直接反代就行,如果是歪果仁的花,可以考虑在新加坡地域建立一个英文版源站(毕竟英文再全球还是蛮通行的),然后在南美洲、欧洲、中东等地域建立服务器进行反代就行。 要求 & 收获 需要使用到的产品: 阿里云ECS 海外地域 通过本文你将讲学到: Nginx、OpenResty 的反向代理、全静态缓存、缓存清理、内容替换、CC防御解决方案 教程 如果按标准的来建一个海外站点,那就得搭建一个一模一样的环境,然后实时同步数据库和附件,不过这样做成本太高了。一般的话,我们可以考虑使用反向代理,将网站的内容做一个镜像到海外服务器。这个做法也应用于很多的地方门户,比如可以将客户提供的一个广告专题通过反代到网站目录中,看起来就像是网站自己做的专题,搜索引擎也会优先收录这个专题页面。 为了保障这个反代教程的可用性,我们还需要额外的几个模块,如果参考上述教程已经安装过 OpenResty 的朋友,可以编译升级 OpenResty 来增加模块。参考:【云计算的1024种玩法】手把手教你如何编译升级 OpenResty 没有安装 Nginx 可以参考:《【云计算的1024种玩法】手把手教你如何编译一个高性能 OpenResty》 直接按下面的增加模块进去就行: 地域选择 关于地域的选择,阿里云的16个节点最适合服务哪些地域还可以参考我的专题:阿里云全球十六个节点评测分析 参与聚能聊: 由新开的第16个数据中心,来评价阿里云的全球化部署,一起讨论阿里云的全球战略赢得丰厚奖品! 添加模块 需要添加的是:(如果不参考后面的进阶教程,其实可以跳过添加模块) ngx_cache_purge - 缓存刷新扩展,值得一提的是现在由 nginx-modules 继续维护的新版本,原作者FRiCKLE 从14年提供 2.3 版本后就不再进行更新,国内很多教程都是用的 FRiCKLE 旧版。 replace-filter-nginx-module - Nginx替换过滤文本模块,OpenResty 提供的模块,不过由于尚处于 RC 阶段所以没有纳入 OpenResty 主线。 一、添加版本变量 NgxCachePurgeVersion='2.4.2'; 二、下载源码 cd /root/src wget https://github.com/nginx-modules/ngx_cache_purge/archive/$NgxCachePurgeVersion.tar.gz tar xzf $NgxCachePurgeVersion.tar.gz git clone https://github.com/openresty/replace-filter-nginx-module.git 三、编译依赖 git clone https://github.com/openresty/sregex.git cd sregex make && makeinstall 四、编译 OpenResty 参考全新安装教程或者编译升级教程,在 ./configure 参数中中的 --add-module=../ngx_pagespeed-$PageSpeedVersion-beta \ 后添加: --add-module=../ngx_cache_purge-$NgxCachePurgeVersion \ --add-module=../replace-filter-nginx-module \ 升级的花稍微麻烦点,需要杀进程然后安装替换二进制文件 设置教程 一、创建缓存目录,用以加速静态资源的访问 mkdir /data/cache/path -p mkdir /data/cache/temp chmod -R www-data /data/cache 二、修改 /usr/local/openresty/nginx/conf/nginx.conf 文件,在 http{} 最后加入: proxy_temp_path /data/cache/path; proxy_cache_path /data/cache/temp levels=1:2 keys_zone=cache_one:500m inactive=7d max_size=10g; # 500m为最大内存占用,10g为最大磁盘占用,7d是7天无访问删除 三、创建虚拟主机配置文件,如下: yourdomian.conf 是虚拟主机配置文件名称,改为域名就行,例如:www.mf8.biz.confserver_name yourdomian; 中的 yourdomian 改为和反向代理的原网站一样的域名就行,例如原网站是 https://www.mf8.bi 那就是 www.mf8.bizroot /data/wwwroot/yourdir; 中的 yourdir 也改成网站域名就行,都是可以自定义的 重要: proxy_pass http://反代域名; 将 http://反代域名 换成自己需要反代的域名即可 如果需要考虑 HTTPS,请参考:《【云计算的1024种玩法】10分钟轻松设置出 A+ 评分的 HTTP/2 网站》 cat >> /usr/local/openresty/nginx/conf/vhost/yourdomian.conf << EOF server { ##运行端口 listen 80; ##这里需要改成你的域名 server_name yourdomian; index index.html index.htm index.php; #首页文件优先级 access_log /data/wwwlogs/access_nginx.log combined; #日志目录 location / { proxy_cache_key "$scheme://$host$request_uri"; #缓存key规则,用于自动清除缓存。 proxy_cache cache_one; #缓存区名称,与前面定义的相同 proxy_cache_valid 200 304 4h; #正常状态缓存 4 小时 proxy_cache_valid 301 3d; # 301状态缓存3天 proxy_cache_valid any 10s; #其他状态缓存(如502 404)10秒 proxy_pass http://反代域名; #指定后端ip或者网址,可以加端口 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #向后端传递访客真实ip proxy_set_header Referer http://example.com; #强制定义Referer,程序验证判断会用到,修改为反代域名 proxy_set_header Host $host; #定义主机头 #proxy_cache_use_stale invalid_header error timeout http_502; #当后端出现错误、超时、502状态时启用过期缓存,谨慎用。 } EOF 通过这一个方法可以制作出一个完全静态的网站来,从而避免了动态请求,如果网站突然遭遇 CC 攻击可以考虑通过这个方式来应对,攻击者就无法请求动态内容了。 进阶教程 刷新缓存 之前我们设置的是全静态的缓存,如果被反代的网站修改了内容并不会在这个反代的网站是显示的,因为有缓存。那么我们就要刷新缓存,在虚拟主机配置文件中添加这一段: location ~ /purge(/.*) { allow 127.0.0.1; #允许访问刷新缓存的 IP proxy_cache_purge cache_one $host$1$is_args$args; } 这样访问 https://www.mf8.biz/logo.png,OpenResty 就会去请求 https://www.mf8.biz/logo.png,保存存在就输出。如果源站的 logo.png 我们进行了更新,则需要刷新缓存,访问海外的 https://www.mf8.biz/logo.png,就会提示 Successful purge,如果这个文件没有被缓存过,则提示404 Not Found 内容替换 很多教程用的是 ngx_http_substitutions_filter_module 不过 replace-filter-nginx-module 更好用,而且和 OpenResty 更配,等稳定了就会融入主线都不需要重新添加这个模块了。 在虚拟主机配置文件的反代 location{} 中添加: replace_filter 米饭粑 云栖社区 ig; 意思是将 米饭粑 全文替换为 云栖社区,后面的 i 表示 不区分大小写,g 表示 全文搜索并替换 更多用法:https://github.com/openresty/replace-filter-nginx-module#replace_filter 这样我们就打造好了一个功能完备的 OpenResty 反向代理了。
2020年02月
2020年01月
可以的,需要工单申请相关权限后将镜像导出到指定OSS,然后通过OSS下载raw文件即可。
这个是VitroIO的驱动,在虚拟化环境下让系统识别云盘
首先咱们得有一个商城,先不考虑自建就淘宝吧, 然后遇到问题搜方案。 千万不要在装修上浪费太长时间
-------------------------
-------------------------