作者: zach

  • configure: error: cannot find Boost headers version >= 1.35.0

    当 configure出现configure: error: cannot find Boost headers version >= 1.35.0错误时,意味着安装boost-devel出现问题。

    解决方案:

    UBUNTUN/DEBIAN

    #  sudo apt-get -y install libboost-all-dev

     

    CENTOS:

    #  yum install boost-devel

  • 在线更新Ubuntu

    1、终端下执行命令

    $ sudo apt-get update && sudo apt-get dist-upgrade
    

    2、重启系统以完成更新的安装

    $ sudo init 6
    

    3、用命令安装更新管理器核心update-manager-core,如果服务器已安装则可以跳过

    $ sudo apt-get install update-manager-core
    

    4、编辑/etc/update-manager/release-upgrades配置文件,设置Prompt=lts

    $ sudo vi /etc/update-manager/release-upgrades

    5、启动升级进程

    $ sudo do-release-upgrade -d
    
    

    6、按下“Y”,点击回车,开始升级过程

    7、随着升级的系统,必须重启某些服务,选择Yes并继续

    8、系统会提示删除过时的包,输入“Y”,并在升级过程完成后,使用以下命令重新启动服务器:

    $ sudo init 6
    

    现在Server已经升级到Ubuntu Server 16.04(Xenial Xerus)LTS。

  • Debian或Ubuntun wget下载证书无法验证

    Debian或Ubuntun wget下载证书无法验证,出现如下类似错误:

    ERROR: cannot verify URL’s certificate, issued …….’: Unable to locally verify the issuer’s authority.

    解决方案:1.增加下载附件参数 –no-check-certificate

    2.更新安装根证书

    $ sudo apt-get install ca-certificates

     

  • 手把手教你在CoreOS部署一个WordPress程序

    手把手教你在CoreOS部署一个WordPress程序

    摘要:你可能听过服务器操作系统CoreOS的名字,那你试过在上面建立个小程序么?今天,我们就来手把手地教你建立一个简单的WordPress程序。

    CoreOS是一个专门为大规模服务器部署定制的Linux精简系统,它将操作系统和应用程序完全分离,从而降低操作系统和应用程序的耦合度,同时解决了现有Linux服务器在容器资源、权限管理方面出现的问题。就目前来说,CoreOS会是未来操作系统的发展趋势。

    那你有没有亲自在CoreOS上部署一个应用程序呢?相信大多数人都没有过这样的经验,在CoreOS上建立一个应用程序可以说是非常辛苦及沮丧的。因为在开始建立程序之前你首先必须了解所有不同的技术。

    下面,我们将手把手地教你来创建一个简单的WordPress应用程序,采用MySQL作为服务器,在CoreOS上运行。

    1. 安装CLI来控制CoreOS

    如果你的电脑是Mac,可以在本机安装fleetctl和etcdctl来控制CoreOS集群:

    $ brew install go etcdctl
    $ git clone https://github.com/coreos/fleet.git
    $ cd fleet
    $ ./build
    $ mv bin/fleetctl /usr/local/bin/

    2. 安装本地集群

    使用部署虚拟化开发环境Vagrant来安装本地集群很容易:

    $ git clone https://github.com/CenturyLinkLabs/coreos-vagrant
    $ cd coreos-vagrant/cluster
    $ vagrant up --provision

    现在集群就安装好了,简单吧!下面就让我们来检查一下本地fleetctl:

    $ fleetctl list-machines
    MACHINE	IP	METADATA
    09fd0a88...	10.0.2.15	-
    77763947...	10.0.2.15	-
    f31c383c...	10.0.2.15	-

    真棒,它起作用了!3. 使用fleet部署一个应用程序

    fleetctl命令可把应用程序部署到CoreOS集群的节点中,但要为fleet写服务文件真的是太糟糕了。幸运的是,你不必自己编写,你可以使用yaml format来生成服务文件:

    $ sudo gem install bundler fig2coreos
    
    $ cat fig.yml
    web:
      image: ctlc/wordpress
      ports:
        - 80:80
      environment:
        DB_USER: root
        DB_PASSWORD: qa1N76pWAri9
      links:
        - db
    db:
      image: ctlc/mysql
      ports:
        - 3306:3306
      environment:
        MYSQL_DATABASE: wordpress
        MYSQL_ROOT_PASSWORD: qa1N76pWAri9
    
    $ fig2coreos myapp fig.yml coreos-files
    
    $ cd coreos-files
    
    $ ls
    db-discovery.1.service
    db.1.service
    web-discovery.1.service
    web.1.service

    fleetctl客户端工具使用的是etcd系统的Key/Value存储形式,以分享配置和服务发现。下面教大家如何把程序部署到集群中:

    $ fleetctl start db.1.service
    
    $ fleetctl list-units
    UNIT		LOAD	ACTIVE	SUB	DESC		MACHINE
    db.1.service	loaded	active	running	Run db_1	9c008961.../10.0.2.15
    
    $ fleetctl start web.1.service
    
    $ fleetctl list-units
    UNIT		LOAD	ACTIVE	SUB	DESC		MACHINE
    db.1.service	loaded	active	running	Run db_1	9c008961.../10.0.2.15
    web.1.service	loaded	active	running	Run web_1	9c008961.../10.0.2.15

    现在程序就运行了,但是还没有注册etcd的服务,幸运的是fig2coreos生成的服务发现文件可以帮助我们:

    $ fleetctl start db-discovery.1.service
    $ fleetctl start web-discovery.1.service
    
    $ fleetctl list-units
    UNIT			LOAD	ACTIVE	SUB	DESC		MACHINE
    db-discovery.1.service	loaded	active	running	Announce db_1	9c008961.../10.0.2.15
    db.1.service		loaded	active	running	Run db_1	9c008961.../10.0.2.15
    web-discovery.1.service	loaded	active	running	Announce web_1	9c008961.../10.0.2.15
    web.1.service		loaded	active	running	Run web_1	9c008961.../10.0.2.15
    
    $ etcdctl ls --recursive
    /services
    /services/web
    /services/web/web_1
    /services/db
    /services/db/db_1
    
    $ etcdctl get /services/web/web_1
    { "host": "core-03", "port": 80, "version": "52c7248a14" }
    
    $ etcdctl get /services/db/db_1
    { "host": "core-03", "port": 3306, "version": "52c7248a14" }

    这样就完成了!如果你使用的是Vagrant 1.5及Vagrant Cloud,那么你就可以实现 WordPress程序并看到它可以实行了:

    $ cd ~/coreos-vagrant/cluster/
    
    # find out which box is hosting your port 80
    $ etcdctl get /services/web/web_1
    { "host": "core-03", "port": 80, "version": "52c7248a14" }
    
    $ vagrant share core-03 --http 80
    ==> core-03: Detecting network information for machine...
        core-03: Local machine address: 192.168.65.2
        core-03: Local HTTP port: 80
        core-03: Local HTTPS port: disabled
    ==> core-03: Checking authentication and authorization...
    ==> core-03: Creating Vagrant Share session...
        core-03: Share will be at: quick-iguana-4689
    ==> core-03: Your Vagrant Share is running! Name: quick-iguana-4689
    ==> core-03: URL: http://quick-iguana-4689.vagrantshare.com

    下面就是做好的效果图:

    其实我们可以在CoreOS上能做很多事,今天这个只是基础,感兴趣的你可以动手试一试

     

    原文链接:http://www.csdn.net/article/2014-03-26/2818984

  • 服务器操作系统 CoreOS

    服务器操作系统 CoreOS

    传统的服务器操作系统,包括大多数Linux发行版,每隔几年都会更换。在这期间,开发者会不断用安全补丁和更新完善这个系统,但是不会进行特别大的改动,最终这个操作系统以及其上的软件会慢慢僵化。但是CoreOS的思想是成为一个随时可被替换的操作系统,甚至在这个替换的过程中,应用程序的运行不会被打断。

    CoreOS有两个root分区,我们暂且称其为root A和root B。CoreOS会与更新服务进行交互,查找更新并自动下载可用的更新,如果初始状态下,系统在root A下启动,更新就会被安装到root B,重新在root B下启动系统就可以完成更新。这个个过程中,被更新的机器不需要从负载集群中移除。同时,为了保证其它应用程序不被打断,CoreOS会通过Linux cgroups限制更新过程中的硬盘和网络I/O。

    CoreOS为现代网络的服务器量身定做,Polvi团队对这个服务器操作系统做了最大的精简,所有附加的功能都被剔除了,并将操作系统和应用程序做了完全的分离。CoreOS核心思想是降低操作系统和应用程序的耦合度,使运行这些服务器的公司可以更快速、更廉价地更新自己的线上业务。

    在CoreOS中,所有应用程序都被装在一个个“集装箱(Container)”中,这些集装箱就像一个个软件代码的小气泡,通过最简单的接口运行在操作系统之上。这意味着你可以很轻松得将应用程序在操作系统和计算机之间转移,就像是在轮船和火车上搬运箱子一样,同时也意味着可以在不中断应用程序的情况下更新操作系统。Polvi说:“我们之所以能够持续、快速地更新操作系统就在于我们能够保证应用程序的持续运行。”

    开发一个这样的系统比想象中要复杂的多,但是Google已经在ChromeOS上做了很多基础性的工作,并且一个现有的“集装箱”项目Docker也解决了很多软件构建的问题。CoreOS和ChromeOS一样,都基于Linux内核,运行container的方式也类似于其它Linux操作系统。

  • What’s the love?

    在爱情面前,只要你付出了,不管你的没得到汇报,你都是快乐的、幸福的。

    其实结婚这事不难,挺容易的,但是爱情好像就不太容易,遭遇到爱情是一挺大的事,有时候在爱情面前,你投入再多不一定会有回报,你付出得够多呢,也不一定能有结果。两情相悦,最后劳燕分飞的也不在少数。

    碰到爱情的时候,自信心、自尊心统统都不见了,这个说话生怕说多了,言多语失,又怕这个话说得不够,心里千言万语的,掏心窝子的话没说出来,有时候后你觉得吧,你愿意为她付出更多,为她每天刷六回牙,洗八个澡,你愿意为她付出,不求回报,觉得心里高兴、踏实。不管她需要不需要,她在你身边的时候呢,你不知所措,不在你身边的时候,你更不知所措,有时候人家不一定需要你照顾,可是你就觉得吧,你觉得吧,还是想多做点什么,你做点什么你就觉得踏实、高兴,心里边舒服,当这不重要。

    –《我爱男闺蜜》 第19集

  • LibreSSL 替代OPENSSL

    LibreSSL

    开发者 OpenBSD计划
    稳定版本 2.0.3 / 2014年7月21日;3天前
    开发状态 进行中
    编程语言 C,汇编语言
    操作系统 OpenBSD、FreeBSD、Linux、Mac OS X、Solaris
    类型 安全库
    许可协议 Apache许可证1.0、4句BSD许可证、ISC许可证,部份为公有领域
    网站 http://www.libressl.org
    LibreSSL是OpenSSL加密软件库的一个分支,为一个安全套接层(SSL)和传输层安全(TLS)协议的开源实现。在OpenSSL爆出心脏出血安全漏洞之后,一些OpenBSD开发者于2014年4月创立了LibreSSL,[1][2][3]目标是重构OpenSSL的代码,以提供一个更安全的替代品。[4]LibreSSL复刻自OpenSSL库的1.0.1g分支,它将遵循其他OpenBSD项目所使用的安全指导原则。[5]

    历史编辑

    在裁剪代码的第一周,分支中删除了超过90,000行的C代码。[6][7]旧的或无用的代码已被删除,对较老或目前罕见操作系统的支持也一并被卸载。LibreSSL的最初开发目的是作为OpenBSD 5.6中的OpenSSL预期替代品,一旦库的精简版稳定下来,它还有望移植至其他平台。[8]截至2014年4月,该项目仍在寻求“稳定的”外部资金承诺。[7]

    变化编辑

    更详细地说,迄今为止,一些较显着和重要的变化包括更换自定义的内存调用为标准函数(例如strlcpy、calloc、asprintf、reallocarray等)。[9][10]这有助于将来用更先进的内存分析工具,或仅通过观察程序的崩溃来发现缓存溢出错误。CVS提交日志中也记录了潜在双重释放内存的修复(包括空指针值的显式分配)。[11]不安全的种子生成方法(借助于内核自己原生提供的功能)被替换掉,以确保基于随机数生成器的方法使用了正确的随机数种子。额外的完整性检查也被加入进来,以检查长度参数、无符号到有符号变量的赋值、指针值/方法返回值等数据的有效性。一些使之更加安全的编译器选项和标志也有助于发现潜在问题,以使其能被及早修复(-Wuninitialized,-Werror等)。

    为符合良好的编程风格,项目也增强了代码可读性及清理空白字符(KNF)。卸载对不需要平台的支持(MacOS、Netware、OS/2、VMS、Microsoft Windows等),以消除潜在的安全隐患。卸载不必要或不安全的#define语句和变量。卸载未使用的或旧的程序集、应用程序、演示及文档文件/代码(Perl脚本、C语言文件等)。卸载对FIPS支持、不安全的算法(Dual_EC_DRBG)及旧的协议/加密器(SSLv2)。对不必要的方法包装和宏的修改也有助于增强可读性(Error & BIO(I/O抽象)库)。

    最后并同样重要的,复刻的一个主要原因是OpenSSL团队的不合作态度,之前几年提交的漏洞补丁不是没注意到就是被忽略了。提交日志显示LibreSSL修复了这些较旧的漏洞。[12]

    开发者 OpenBSD计划
    稳定版本 2.0.3 / 2014年7月21日;3天前
    开发状态 进行中
    编程语言 C,汇编语言
    操作系统 OpenBSD、FreeBSD、Linux、Mac OS X、Solaris
    类型 安全库
    许可协议 Apache许可证1.0、4句BSD许可证、ISC许可证,部份为公有领域
    网站 http://www.libressl.org
    LibreSSL是OpenSSL加密软件库的一个分支,为一个安全套接层(SSL)和传输层安全(TLS)协议的开源实现。在OpenSSL爆出心脏出血安全漏洞之后,一些OpenBSD开发者于2014年4月创立了LibreSSL,[1][2][3]目标是重构OpenSSL的代码,以提供一个更安全的替代品。[4]LibreSSL复刻自OpenSSL库的1.0.1g分支,它将遵循其他OpenBSD项目所使用的安全指导原则。[5]

    历史编辑

    在裁剪代码的第一周,分支中删除了超过90,000行的C代码。[6][7]旧的或无用的代码已被删除,对较老或目前罕见操作系统的支持也一并被卸载。LibreSSL的最初开发目的是作为OpenBSD 5.6中的OpenSSL预期替代品,一旦库的精简版稳定下来,它还有望移植至其他平台。[8]截至2014年4月,该项目仍在寻求“稳定的”外部资金承诺。[7]

    变化编辑

    更详细地说,迄今为止,一些较显着和重要的变化包括更换自定义的内存调用为标准函数(例如strlcpy、calloc、asprintf、reallocarray等)。[9][10]这有助于将来用更先进的内存分析工具,或仅通过观察程序的崩溃来发现缓存溢出错误。CVS提交日志中也记录了潜在双重释放内存的修复(包括空指针值的显式分配)。[11]不安全的种子生成方法(借助于内核自己原生提供的功能)被替换掉,以确保基于随机数生成器的方法使用了正确的随机数种子。额外的完整性检查也被加入进来,以检查长度参数、无符号到有符号变量的赋值、指针值/方法返回值等数据的有效性。一些使之更加安全的编译器选项和标志也有助于发现潜在问题,以使其能被及早修复(-Wuninitialized,-Werror等)。

    为符合良好的编程风格,项目也增强了代码可读性及清理空白字符(KNF)。卸载对不需要平台的支持(MacOS、Netware、OS/2、VMS、Microsoft Windows等),以消除潜在的安全隐患。卸载不必要或不安全的#define语句和变量。卸载未使用的或旧的程序集、应用程序、演示及文档文件/代码(Perl脚本、C语言文件等)。卸载对FIPS支持、不安全的算法(Dual_EC_DRBG)及旧的协议/加密器(SSLv2)。对不必要的方法包装和宏的修改也有助于增强可读性(Error & BIO(I/O抽象)库)。

    最后并同样重要的,复刻的一个主要原因是OpenSSL团队的不合作态度,之前几年提交的漏洞补丁不是没注意到就是被忽略了。提交日志显示LibreSSL修复了这些较旧的漏洞。[12]

  • 我的雨伞

    每次下雨,打着一把单人小伞,总觉得很潇洒。

    直到最近连续一个月的下雨,发现大雨来的时候,根本挡不住。

    于是,我买了一把巨大的雨伞。

    我终于不再怕大雨淋湿了。

    可是,我发现,一个人的打伞,还是有点孤单!

     

    有伞不盼天阴,有心待一人!

  • 越成熟

    越成熟,

    越是不再相信信任;

    越是成熟,

    越是不再相信自己年轻;

    越是成熟,

    越是不再相信激情月梦想。

     

    戒了信任,

    戒了年轻,

    戒了激情的梦想,

    也行,哪天,

    我该戒了这成熟!

  • 智能时代的安全

    安全市场的不透明导致了人们本身对隐私问题的担忧。软件技术智能化发展的同时,很多软件省掉了和用户打招呼就开始自作主张动用客户隐私数据。随着云技术的发展,本地安全和隐私越来越界限模糊。不只是360,我们的智能输入法,搜索引擎,广告供应商,邮箱,即使通讯软件以及电子商务系统等等,都在收集用户相关或不相关的隐私。进行云端统计和分析,然后针对性的优化服务或者针对性的窃取隐私。包括智能手机系统,要放弃智能和保证安全付出的代价就是不安全和复杂的操作。我们需要适当的智能化和个性化服务,但是我们不能容忍我们隐私的泄露与非法入侵。我们需要明确所谓的智能带给我们普通用户方便的同时,我们会付出哪些个人数据的代价并且有权申请不进行监控以及删除这些数据的权利

  • Hello,World! Hello,2013

    又要过去了一年。再过半个小时,2013年就来到。

    每当在这个时刻,许多人回想着过去的一年,憧憬着新的一年。过去的一天一天,无论我是个开心快乐。也许都不再重要,很多东西仿佛不再重要,有些东西让我去思索,有些东西开始让我牵挂,有些东西让我割舍不下。不断的探索,彷徨与否定与改善。有些安逸让我不敢放开,有些颓废让我后悔。

    人嘛,就如启动的VPS,不可预测的宕机,起起伏伏的带宽。什么东西都给予别人,写进心里的只有硬盘自己心里明白这些是苦是甜。也许在崩溃才会想起BBU的重要。在数据丢失的时候才想起RAID。

    不想说太多。好好过自己的日子。放弃该放弃的,做好该做的。

    最后,写给这个2013的世界:echo “Hello,World! Hello,2013”;

  • VPS虚拟化架构

    现在国内外的VPS服务商非常多,每个服务商使用的VPS架构都不同。VPS属于虚拟化服务器,中文名:虚拟专用服务器。

    常见的VPS虚拟化架构有多种:OpenVZ、Xen、Hyper-V、KVM、VMWare。

    1、OpenVZ

    OpenVZ(简称OVZ)采用SWsoft的Virutozzo虚拟化服务器软件产品的内核,是基于Linux平台的操作系统级服务器虚拟化架构。这个架构直接调用母服务器(母机)中的内核,模拟生成出子服务器(VPS,小机),所以,它经过虚拟化后相对于母服务器,性能损失大概只有的1-3%。

    当然OpenVZ可以超售,意思味着一台服务器总共16G内存,他可以开出配置为1G内存×17台以上的子服务器。因为他的虚拟架构关系属于:客户用多少,就扣除母服务器多少,所以OpenVZ架构的VPS较为便宜。但由于存在超售因素,如果服务商毫无休止的超售会导致服务器的性能急剧下降。

    OpenVZ另一个特点是,它是直接调用母服务器的内核,所以会导致部分软件无法使用,以及部分内核文件是无法修改。

    OpenVZ适用人群:新手、低预算客户
    OpenVZ注意事项:资源不是自己独有的,安装VPN服务需要注意《检测虚拟网卡支持》。
    OpenVZ可用系统:Linux(不支持Windows)
    OpenVZ代表商家:Buyvm.net

    2、Xen

    Xen 由剑桥大学开发,它是基于硬件的完全分割,物理上有多少的资源就只能分配多少资源,因此很难超售。可分为Xen-PV(半虚拟化),和Xen-HVM(全虚拟化)。

    Xen是不能超售的,当母服务器只有16G内存以及100G硬盘时,当开Xen架构(任意一个虚拟化)的1G内存、25G硬盘的子机时,会直接占用服务器1G内存,以及25G硬盘,所以Xen的性能,相比OpenVZ在超售的情况下要好。

    Xen-PV:半虚拟化,所以它仅仅适用于linux系列VPS,但它的性能损失比较少,大概相对于母机的4%-8%左右。
    Xen-HVM:全虚拟化,可以安装windows或自由挂载ISO文件安装任意系统,由于是全虚拟化,所以性能损失较大,大概相对于母机性能损失8%-20%左右。

    Xen适用人群:预算较为充足,且希望VPS有较高性能的客户
    Xen注意事项:注意Xen-PV和Xen-HVM的区别。
    Xen可用系统:Xen-PV:纯Linux,Xen-HVM:支持Windows、Linux等。
    Xen代表商家:LOCVPS.COM

    3、Hyper-V

    Hyper-V是微软的一款虚拟化产品,大部分国内的VPS服务商使用这个架构,主要是因为其转为Windows定制,管理起来较为方便。目前的Hyper-V也支持Linux,只不过性能损失比较严重。

    Hyper-V完美支持Windows系统,包括32位和64位。如果大家选购Hyper-V架构的VPS,强烈建议使用Windows。

    Hyper-V目前不能超售内存,但可超售硬盘,硬盘是根据客户使用情况扣除。一般来说,服务器的硬盘不会100%用完,这点不用担心。

    Hyper-V适用人群:Windows系统爱好者
    Hyper-V注意事项:Linux操作系统性能较低
    Hyper-V可用系统:Windows、Linux

    4、KVM

    KVM是Linux下的全功能虚拟化架构,基于KVM架构的VPS,默认是没有系统的,可自己上传ISO或调用服务商自带的ISO手动安装系统。这个非常适合热爱DIY自己VPS的客户。

    由于KVM架构全功能虚拟化架构,甚至拥有独立的BIOS控制,所以对母服务器性能影响较大,所以基于KVM的VPS较贵,但KVM VPS相对其它架构的VPS较为自由。

    KVM适用人群:折腾帝
    KVM注意事项:虚拟化性能比Xen略低
    KVM可用系统:Windows、Linux系列
    KVM代表商家:hostgation.com

    5、VMWare

    VMWare是全球桌面到数据中心虚拟化解决方案的领导厂商开发的一款全功能完全虚拟化的软件。但由于VMWare用于开设类似VPS(含独立面板)的系列产品授权费用非常昂贵,所以大部分使用VMWare服务商会使用 VMware工作站(VMware Workstation)提供VPS。

    使用VMware工作站(VMware Workstation)开设的VPS是无控制面板的,操作系统需要服务商手动安装,但现在网上寻找VMware Workstation的神KEY非常容易,对于VPS服务商来说节省不少成本。一般用于新创业的VPS服务商。

    使用VMWare Workstation实质上的VPS可以超售,因为其和OpenVZ架构一样,子机用多少内存,就扣除系统多少内存,但如果物理内存不足时可能导致母服务器使用Windows虚拟内存。

    VMWare适用人群:认真建站或挂机的客户
    VMWare注意事项:无控制面板
    VMWare可用系统:Windows、Linux系列