Home

机器学习笔记1 – Hello World In Machine Learning

机器学习笔记1 – Hello World In Machine Learning

前言 Alpha Go在16年以4:1的战绩打败了李世石,17年又以3:0的战绩战胜了中国围棋天才柯洁,这真是科技界振奋人心的进步。伴随着媒体的大量宣传,此事变成了妇孺皆知的大事件。大家又开始激烈的讨论机器人什么时候会取代人类统治世界的问题。 其实人工智能在上世纪5、60年代就开始进入了理论研究阶段,人们在不断探索人工智能技术的同时,也担忧起机器人会不会替代人类。然而现实比理想残酷的多,由于当时各种条件的限制(理论基础、技术基础、数据基础、硬件性能等),人工智能相关的项目进度缓慢,也缺少实际成效,研发资金、社会关注度也越来越低,人工智能进入第一次低谷期。 到了80年代,卡内基梅隆大学为数字设备公司设计了一套名为XCON的“专家系统”。这是一种,采用人工智能程序的系统,可以简单的理解为“知识库+推理机”的组合,XCON是一套具有完整专业知识和经验的计算机智能系统。人工智能再一次被各国政府和科研机构看好,大量的资金投入到研发中,但是好景不长,几年后随着苹果和IBM公司研发出了性能强劲的PC机,导致“专家系统”变得没有竞争力,人工智能发展又一次进入寒冬。 随后若干年,人工智能的发展趋于平稳和低调。时间来到21世纪,随着互联网的普及,大量数据被积累下来;摩尔定律一次又一次的被证实,计算机硬件性能以极快的速度在增长;“云”的普及,让普通大众也能轻松拥有调度大量算力的机会,人工智能不再是科学家和专业人员在实验室才能研究的东西了。数据+算力+易得这几方面的因素结合之后,将人工智能再一次推向了高潮。 可能这一波热潮又是人工智能发展史上的一个波峰,未来人工智能还有很长的路要走。但目前的人工智能发展已经惠及到商业领域,在这样一种技术+商业的结合中,我个人还是很看好这次浪潮的。尤其是在看过《最强大脑》中,百度在图像、音频方面的人工智能技术发展到这样一个水平之后(图像识别已经超超越了人类大脑对图像的识别能力,声音识别也几乎和人类最高水平持平),很希望自己也可以有机会涉足到这个领域中。 机器学习基础入门知识 机器学习是人工智能的一个分支,主要是通过数据+算法来训练得出模型,再用模型来预测数据的一种技术。 刚开始接触机器学习,发现基础理论中好多都是大学里学过的数理知识(一直以来困扰我的“大学为什么要学这些东西”的谜团总算被解开了:)。我个人做了Web开发近十载,大部分是应用级的,很少涉及数理算法,看来今后还要慢慢拾起这些知识。不过刚开始入门可以循序渐进,先弄懂机器学习是怎么回事,动手做一个“Hello world”,然后再逐步深入原理层面的知识。 要涉足机器学习,最好会一种编程语言,这点上我们程序员有先天优势。目前用于机器学习的主流语言是Python和R,R我个人还没研究过,个人觉得Python是一个比较好的选择,流行度高、上手难度低、科学计算类库丰富、语法精简,如果本身就有其他面向对象的编程语言基础,不到一周就可以基本掌握Python了。 机器学习从从业分布来看,可以分成基础算法研究(设计师)和应(ban)用(zhuan)两个领域,其中大部分人都是在应(ban)用(zhuan)这个领域。 如果从技术层面来看,机器学习分成监督学习、无监督学习以及半监督学习。如何来区分呢?首先解释下机器学习中的几个名词。 特性(Features) – 其实就是数据 分类器(Classifier) – 其实就是算法 标签(Labels) – 其实就是种类 模型(Models) – 其实就是最终输出的分类公式 监督学习,就是在有标签的前提下,找到一种最合适的分类器,分析特性和标签之间的关系。 无监督学习,就是没有标签的前提下,将数据进行聚类(Clusting)。 半监督学习,就是部分特性有标签,部分则没有的状况(大部分特性可能是没有标签的情况)下进行分类。 监督学习相对来说最简单,由已知特性和标签,利用合适的分类器训练出模型,再以模型套用到数据中来预测出数据的标签。当然,分类器并不需要我们自己来发明创造,我们大部分人也没这个能力做这些事情,所有的理论研究、科学论证、代码实现都是现成的。Python中有很多相关类库,比如scikit-learn。应用层面的机器学习,其实就是通过不停的调参(收集更多的数据、变换算法、选取合适的特征数据等工作)来找到一种更精准的预测模型的工作。 Hello World In Machine Learning 假设我们现在需要区分皮球(以直径15cm-25cm之间的球为例)和甜瓜的图片,如果是传统的硬编码的方式来写代码的话,可能需要写几百上千个if–else才能完成一个基本的算法,而且可扩展性特别差,比如如果图片是黑白的或者图片中有干扰物品,那可能需要修改源代码,添加更多的if–else来增加准确度。更糟的是,真正执行的时候会遇到很多事先没有预料到的特殊情况。 但如果通过机器学习,这个事情可能就会变得很简单。大致步骤如下: 将图片转换成特征向量(这个进阶知识不在本篇中涉及) 决定一种合适当前场景的分类器 结合1中得到的特征和2中得到的分类器训练出模型 用模型中的公式预测数据,估算出其属于某个标签的可能性,最大可能性的那个即模型推算出的结果 数据准备 转换过程略,假设共N条数据,转换得到的特性如下: 直径(厘米) 形状 颜色 标签 24 round white […]

Python3学习笔记2:简易Web爬虫

Python3学习笔记2:简易Web爬虫

开发环境 基础语法那章的内容我是在Docker容器中玩的,但是真正做项目的时候,没有IDE的强大辅助功能来协助的话是很累人的一件事。因此本文中,我选择使用Jetbrain的Pycharm这个IDE来开发、调试代码。IDE的好处多多,比如: 强大的智能提示 强大的断点调试 性能追踪 方便好用的各种插件 各种自定义配置 需求 为了实践Python,最先想到的就是要完成一个爬虫程序,大概需求如下: 实施 可配置化我本身是计划通过DI(Dependency Injection)这个技术来完成,不过查了下资料,由于Python和其他语言不太一样,Python是可以多父类继承,并且遵循Duck Typing原则,因此DI在Python中并不实用(Python也是没有Interface概念的)。但可以通过如下方式实现类似的逻辑: # 假设a-class-name这个类包含在xxx.py文件中,首先引入这个文件中的内容 from xxx import * # 然后执行以下这行代码,这将初始化一个a-class-name类的实例 (lambda x: globals()[x])(‘a-class-name’) 入口程序文件main.py main.py主要有几个功能: 通过交互让用户输入:项目名称、网站首页、线程数三个初始化变量 初始化数据库访问对象 初始化爬虫对象 初始化线程池 执行程序 核心代码如下: from db_queue import * … def execute(): … (lambda x: globals()[x])(project_settings.DB_CLASS_NAME)(home_page, project_name + ‘_pages’) Spider(project_name, home_page, DomainHelpers.get_domain_name(home_page), project_settings.HTML_RESOLVER_NAME) […]

Python3学习笔记 – day1

Python3学习笔记 – day1

前言 本文不是一篇系统的从零开始学习Python的教程,如果你需要从零开始学习Python,廖雪峰的官方网站中Python教程这部分将是比较好的一种选择,如果你英语比较好,也可以在国外的一些网站上找到优质的教学视频(比如某油管视频网站)。 阅读本文的前提可能需要你有一定的编程基础,并最好了解一种以上其他主流的面向对象的编程语言,比如Java、C#、PHP等。 首先需要了解的是,Python与PHP类似,是一种解释型的编程语言,与之对应的是Java、C#这类编译型的语言。我自己有比较丰富的C#和PHP方面的经验,两种类型的语言(指解释型和编译型)各有各的优缺点。随着各种语言的发展,现在各种语言之间也会互相借鉴一些好的特性,因此语言之间的差异也开始越来越模糊。所以我认为语言并没有好坏之分,而是某种语言会更适合在某些场景下使用,如果你会多种语言,可以根据需求选用不同的语言开发,从而达到事半功倍的效果。 基本语法 这里只说三点,与其他语言相同或者相似之处就不做解释了。 注释 单行注释符号: # # This is one line comment 多行注释: 以”’(三个单引号)起始,并以”’结束的 ”’ These lines are comments. You can write multiple lines here. xxxxxxx ”’ 行末 : 符号 在if, elif, else, for, def, class等关键字行的行末应加上:, 否则会报语法错误。 缩进 Python用的是4个空格作为缩进,作用域也不用花括号括起来,而是通过缩进来判断: class TestClass(): def test_func(): # 4个空格缩进,表示在TestClass范围内 if True: […]

基于docker+reveal.js搭建一个属于自己的在线ppt网站

基于docker+reveal.js搭建一个属于自己的在线ppt网站

前言 最近热衷于Docker,由于这段时间使用Docker来折腾自己的服务器,越来越感觉这是一种极其被应该推广的技术,因此想在公司内部也做一次技术分享。当然,如果只是做的PPT,我就不写这文章了。既然把Docker说这么好,那就想办法用Docker来搭建一个在线的PPT展示网站吧。 寻找合适的工具 在网上搜了一下,发现reveal.js这个工具的展示效果非常好,它基于HTML即可完成在线PPT的制作,而且在移动设备上也有非常好的兼容性,同时也支持直接用markdown语法来写,毫无疑问,这个就是我要找的工具,在Docker hub上搜索了一下,果然已经有现成的镜像,对比了一下,最后决定选用nbrown/revealjs。当然如果你完全不懂HTML,官方也提供了一个在线版的可视化编辑器:https://slides.com/ 开始搭建 还记得之前写的这篇:Centos7.4下用Docker-Compose部署WordPress(续)-服务器端用Nginx作为反向代理并添加SSL证书(阿里云免费DV证书) 的文章吗? 基于之前的环境,我们已经有了: – 安装好的docker和docker compose环境 – Docker network nginx-proxy – ssl证书存放的目录:wp_certs – 从阿里云申请免费DV的方法 假设上面这些都已经完成,搭建一个基于HTTPS的在线PPT演示网站就是分分钟的事?确实,我们仅需要再写一个docker-compose.yml配置文件即可: version: ‘3’ services: revealjs: #image: nbrown/revealjs:latest image: nbrown/revealjs:3.5.0-onbuild container_name: myppt restart: always expose: – 8000 # 这个是镜像默认的端口 volumes: – $PWD/content/index.html:/reveal.js/index.html # 首页 – $PWD/content/tutorial/docker/index.html:/reveal.js/tutorial/docker/index.html # Docker教程作为一个独立的页面 environment: VIRTUAL_HOST: ppt.fujiabin.com […]

读后感-乔布斯传

读后感-乔布斯传

阅读时间:2017年11月 阅读方式:微信读书 最近花了整整两周读完了《史蒂夫·乔布斯传》这本书,在这位传说中的领袖人物逝世整整6年后,通过他的人物传记再次重新认识了一次乔布斯。这本传记中,不仅讲述了乔布斯的成就和对世界的影响,也描述了乔布斯各种令人发指的负面性格和缺点。想到一句话叫:上帝关上一扇门的同时,也会为你开打一扇窗。联想到乔布斯,他在人际关系方面的这个大“缺陷”,可能就是上帝给他关掉的那扇门,但是他在对艺术、工业设计、产品设计等等方面的非凡的理解,就是上帝再为他打开的那扇门。 书中不断肯定了乔布斯的成就,也把乔布斯的“缺陷”暴露在全世界的读者面前,这是乔布斯和他的妻子劳伦想告诉世界的,无论你心目中的乔布斯是什么形象,真实的他就是这样一个不完美的人,他是“凡人”并不是“神”。 乔布斯就像这个世界上很多天才一样,是个极端的人。 他是个极端的素食主义者,并在内心有一套完整的对素食主义的理解。他觉得因为他坚持素食,就算不洗澡也不会有难闻的体味。甚至在癌症化疗之后急需补充蛋白质等营养物质的时候,也坚持自己的饮食习惯而导致了身体日渐消瘦。 他是个极端有信仰的人,亲赴印度这个佛教圣地,去感受纯正的佛教文化,充实自己信仰的“精神圣殿”。他的信仰还表现在产品上,产品必须是简单易用,必须是有工业设计感的,不能是“垃圾”、“废物”。 他是个极端追求完美的人,这个是从他父亲保罗·乔布斯那里继承的完美主义精神,面对产品也必须做到:“即便是别人看不到的地方,对其工艺也必须尽心尽力”。在Next公司极大的债务压力之下,还把大量的资金用在如何让电脑的外壳颜色和内部工艺更迷人。 他是个极端情绪化的人,他可以发挥自己强大口才和精神力量来产生“现实扭曲力场”,但也会经常情绪崩溃而在大庭广众之下大哭。他会当面骂别人是傻瓜、笨蛋,指责他们的点子、产品是垃圾,但转眼又认可了这些“垃圾”,并到处告诉别人这个是自己的金点子、杰作。 乔布斯一生成就无数,他不断的改变行业现状,创造出个人电脑、动画电影、音乐、手机、平板电脑以及数字出版等6大产业的颠覆性变革,推进行业向前发展,甚至是推动人类社会向前发展。这就是他的伟大之处,唯一遗憾的是,他看到了教育行业的不足,但还没有涉足就已英年早逝。不管怎么样,他的成就都是他留给这个世界最美好、最宝贵的财富! 乔布斯是这个世界的伟大践行者,感谢乔布斯留给世界的一切。 名句 过程就是奖励。 你想用卖糖水来度过余生,还是要抓住机会来改变世界? 好的艺术家复制,伟大的艺术家盗窃。 一家好的公司要学会“灌输”-它必须竭尽所能传递它的价值和重要性,从包装到营销。 在我们的一生中,至少有这么一次,我们会拥有一家公司。 追求完美意味着:即便是别人看不到的地方,对其工艺也必须尽心尽力。 你永远不该怀着赚钱的目的去创办一家公司。你的目标应该是做出让你自己深信不疑的产品,创办一家生命力很强的公司。 与其被别人取代,不如自己取代自己。

Python3学习笔记 – 准备环境

Python3学习笔记 – 准备环境

前言 最近乘着项目不忙想赶一波时髦学习一下Python3。由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境。Python3的中文教程是参考了廖雪峰的官方网站,教程非常详细,一步步照着学习就行了,我在自己的文章中就尽量不重复了。我会在自己后续的文章中会结合一些实例来学习Python3。 环境介绍 系统:Centos 7.4 编辑器:Vim 工具:Docker CE v17.09.0 & Docker Compose v1.17.0 Python版本:Docker官方Python3镜像 关于Docker CE和Docker Compose的部署,可以参考我另外一篇博客Centos7.4下用Docker-Compose部署WordPress中相关部分 安装Python3容器 创建文件夹和Docker Compose脚本 先创建以下用作测试的文件夹: $ cd /usr/ && sudo mkdir python-test && cd python-test/ 创建名为docker-compose.yml的配置文件: $ sudo vim docker-compose.yml 以下是docker-compose.yml中的内容: version: ‘3’ services: python3: image: python:3 container_name: python3 volumes: – /usr/python-test/my-test-scripts:/usr/src/myapp working_dir: /usr/src/myapp […]

SSL证书简介

SSL证书简介

前言 之前写了一篇本站点如何部署SSL证书的文章《Centos7.4下用Docker-Compose部署WordPress(续)-服务器端用Nginx作为反向代理并添加SSL证书(阿里云免费DV证书)》,里面提及了DV证书(Domain Valicated Certificate),其实证书主要分为三种,分别为DV、OV和EV,我们如何根据不同的应用场景来购买证书呢?本文就来简单介绍下。 文中出现的CA,都是Certificate Authority(证书授权中心)的缩写。 DV证书(Domain Valicated Certificate) DV证书是用来验证网站域名所有权的简易型SSL证书,DV证书仅能起到网站机密信息加密的作用,无法向用户证明网站的真实身份。也就是DV证书仅能从数据传输层保障信息安全,避免中间人攻击,但并不能保障网站安全(如果一个钓鱼网站也绑定了DV证书,仅能说明用户在访问该网站的时候,数据的传输过程是安全的,但不保证网站是安全的)。因此,如果是企业级的站点,尤其是电子商务公司的站点,必须选用更高级别的SSL证书。 优点 相比HTTP,绑定了SSL证书走HTTPS协议之后,浏览器中将会出现安全网站提示的图标 只要拥有域名管理权即可申请,无需提供额外申请资料 现在很多CA提供免费的DV证书,像个人网站这种非企业网站可以不花钱就增加安全性 CA系统自动签发,无需人工干预,因此可以几分钟甚至几秒钟就能拿到证书 缺点 不对网站及网站所有者的真实性、合法性进行验证 OV证书(Organization Validated Certificate) OV证书是比DV更高级的证书,申请OV证书是需要以公司名义向CA提交书面的申请,然后由CA指派其所属的Vetting Team(审查团队、部门)来验证真实性。一般来说需要提供企业营业执照、企业固定电话、网站业务类型及用途、网站负责人姓名及联系方式等内容,并签署一份申请文件。提供这些信息后,对方会通过第三方数据库验证所提供资料的真实性。通过审核后,CA将签发OV证书。 优点 包含了DV的优点 确保了网站及其公司的真实有效性 浏览器证书中会包含企业相关信息,客户端用户可以通过查看证书信息查看相关内容 缺点 收费且不便宜(虽然只是多了一个人工审核的过程,但是单域名OV每年就要人民币3-5k,如果是通配符域名证书,可能是单域名证书的2-N倍的价格,当然,OV是针对企业的,这点钱对企业来说也完全可以接受) 整个签发过程需要1-3个工作日 EV证书 安全最高级别的证书,用该种证书的网站比较少,其申请流程也更为复杂严格。一般需要在OV证书验证流程的基础上,额外再签署一份用户协议书(一般会包含承诺使用者遵守CA行业规范,不能用以违法用途等),另外还可能按照不同CA的要求,需要额外签署一些协议或者申请表。当然,除了贵以外,这种证书会在主流浏览器的地址栏附近直接显示公司名称,让用户一目了然是该公司所属的域名。输入URL地址并按回车之后就能看到,看起来就一副很牛的样子,如图: 优点 包含OV的优点 直接在浏览器的地址栏中显示企业名称 缺点 贼贵,要比同类的OV证书还要贵1-2倍的样子 其他证书 有些CA可能还提供一些其他类型的CA,但是极其小众,本文也不做介绍了。 后话 通过以上的介绍,相信在实际场景中,各位已经知道需要选用哪种类型的证书了。那为什么我们需要用SSL加密我们的网站呢?首先,有SSL的站点会增加专业用户的信任和好感。其次,不管是什么类型的网站,通过SSL加密之后,能避免中间人攻击,防止网站内容被劫持并篡改。比较著名的是很久以前,百度还没有SSL加密之前(当然,没有加密的所有网站都有这个问题,百度只是比较有名,所以用它来作为例子:》),用户的搜索结果中,经常被插入乱七八糟的广告内容(不是现在的百度推广,百度推广是百度自己的付费广告服务)。当然,某些企业会选用最贵最高级的EV证书来展示其实力、形象及安全性。 参考文档 https://www.ssl.com/article/dv-ov-and-ev-certificates/ 中间人攻击(MIM/MITM)

Centos7.4下用Docker-Compose部署WordPress(续)-服务器端用Nginx作为反向代理并添加SSL证书(阿里云免费DV证书)

Centos7.4下用Docker-Compose部署WordPress(续)-服务器端用Nginx作为反向代理并添加SSL证书(阿里云免费DV证书)

前言 在我写完Centos7.4下用Docker-Compose部署WordPress这篇文章后,我的个人博客已经正式的开始运作。但考虑到网站访问的安全性以及今后可能会重复利用服务器来部署其他网站的可能,因此我决定在原有基础上来加上Nginx用作反向代理,并添加SSL 证书使博客运行在HTTPS协议上。 本文中统一使用www.fujiabin.com这个域名,在实际操作中,你应该全部替换成自己的域名。 准备SSL证书 现在有很多免费的DV(Domain Valicated Certificate)证书提供商,比如比较火的Let’s encrypt,然而我并没有使用它:)。我用的都是阿里云的服务,所以证书也用了阿里云提供的。以下是用screentogif生成的一个申请阿里云免费DV的动图: 阿里云后台地址:https://home.console.aliyun.com/new#/(需要注册才能访问)。 如果你的域名也是在阿里云上申请的话,域名的验证将会变得特别简单,在补全域名信息的时候,将选项证书绑定的域名在【阿里云的云解析】产品中,授权系统自动添加一条记录以完成域名授权验证。勾上即可,阿里云将自动在你的域名管理中添加一条用以验证的解析记录。 CSR你可以选自己生成CSR,或者直接选用系统生成CSR,两个并没有区别,但是如果你觉得系统生成的不够安全,可以自己手动生成。 如果选用的是系统生成CSR选项,在域名审核通过后(因为DV是系统自动审核的,所以也就几分钟时间状态就会变成已签发状态),可以在我的证书菜单中,找到对应的域名,并点击下载按钮下载你的证书和秘钥文件包(里面将包含一个xxx.key的秘钥文件和一个xxx.pem的证书文件)。 配置 添加一个Docker Network $ docker network create nginx-proxy 手动创建Docker Network,这样就可以将所有yml中的容器连接到这个网络上来互相联通。 docker-compose.yml 这个配置文件是在前一片文章的基础上修改的,只有修改部分我添加了注释,其他部分的说明可参考:Centos7.4下用Docker-Compose部署WordPress中相关部分。 version: ‘3’ services: db: image: mysql:5.7 volumes: – db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: xxxx MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: – db image: […]

读后感-货币战争

读后感-货币战争

阅读时间:2017年10月 阅读方式:微信读书 《货币战争》应该是我完整读完的第一本经济类的书籍,文中用非常大的篇幅描述了神秘的罗斯柴尔德家族,以及这个家族如何通过金融手段掌控的全球的重要经济命脉、国家政治,以及决定了美国总统的选举甚至生死等。书中称罗斯柴尔德家族的财富如果按照每年6%的增幅增长,其家族现在应该掌握着世界1/4的财富。当然事实是否如此不得所知(个人觉得不太可能),在网上找到的资料中,大部分说罗斯柴尔德家族经过百年沉浮,家族势力和影响力已经远远没有书中所说的这么夸张,甚至网友还戏称这部《货币战争》是经济类玄幻小说。 网上有经济学背景的网友大篇幅的“怒骂”此书,说作者宋鸿兵是妖言惑众,用“大阴谋论”吸引读者,很多内容都是在胡说八道。但作为一个理科生,平时很少接触专业的金融知识,看这类带有“玄幻”色彩的经融书籍不累人,也可以很容易对金融世界有一个基本的认知。因此我觉得这本书总体上来说,对于没有金融背景的普通人来说,当金融类书籍也好,当“玄幻”小说也好,还是值得一读的。这可能也是为什么这本书畅销的原因之一吧,毕竟大多数人没有掌握太深奥的金融知识,而这类所谓的“阴谋”、“内幕”又是大家在茶余饭后可以作为谈资吹上一阵的东西。 当然通过本书,我也对货币的发行方式也有了一些基本的了解,以前我一度认为发行货币纯粹是政府行为(当然有些国家可能确实是这样)。但是一个良好的经济体,货币的发行是跟其经济息息相关的,通胀和通缩都是有其自身规律的。 书中有一个说法大概是这样的:货币刚发行的时候的实际购买力是最强的。因为随着货币发行、流通以及通货膨胀这一系列过程,货币的实际购买力是在不断下降的,所以像房地产商这样第一手能从银行拿到大量贷款的机构,他们拿到的货币是最值钱的。而最终货币流通损失部分的价值,其实最后都是由千千万万的老百姓去稀释的。所以只要在这个世界运作中,只要你是有使用货币的需求的人,就算你不参与任何金融活动,你的财富永远在无形中被不断剥削。但对于个人来说,每年几个百分点的贬值,可能并不影响生活质量,但是从宏观的角度来讲,这个总量是相当惊人的。 这也就是为什么该书称之为《货币战争》,以前战争都是为了掠夺财富、土地和资源等而被发起的,有了货币和金融体系之后,掠夺的手段变得隐蔽而看起来不那么残暴了(虽然性质还是掠夺财富),普罗大众就像温水里的青蛙一样,缓慢而无形地被剥削和掠夺。所以这也可能是这个时代相对和平的原因之一? 以上读后感均为个人之见,限于个人知识和认知有限,可能有很多理解不透彻或者错误的地方,还望斧正。

Centos7.4下用Docker-Compose部署WordPress

Centos7.4下用Docker-Compose部署WordPress

前言 最近在学习Docker相关知识,通过阅读第一本Docker书后,正想着手实战用一下这个技术,但又不太敢直接在项目环境下动手。考虑足足三秒钟之后决定买个阿里云ECS搭建一个属于自己的基于Docker的WordPress博客(也就是当前各位看官在访问的这个博客网站)。 搭建环境 阿里云ECS Centos 7.4 (阿里云ECS的购买与基本的安全组配置等工作在文中省略,各位看官可自行研究) 部署工具 Docker Docker Compose(Compose工具比起单纯的Dockerfile来更为便利、更易管理) WordPress和MySql5.7(运行在Docker容器中) 现在逐个讲解下如何安装: Docker 根据官方文档,Docker分为Community Edition (CE)和Enterprise Edition (EE)两个版本,我们作为学习和个人使用,当然选择的是Community Edition (CE),安装步骤如下: // 步骤1 – 为了确保没有安装过老的Docker版本,先将已经安装的Docker从宿主机上删除(如果是在使用中的正式服务器,请谨慎执行此步): $ sudo yum remove docker \ docker-common \ docker-selinux \ docker-engine // 步骤2 – 安装Docker所需的包: $ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 […]