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

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

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

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

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

1. 安装CLI来控制CoreOS

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

2. 安装本地集群

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

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

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

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

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

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

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

下面就是做好的效果图:

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

 

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

PHP中魔术方法的声明属性public visibility

在调试一段程序,学习封装的过程中,会出现
Warning: The magic method __get() must have public visibility and cannot be static in E:XAMPPhtdocsstutest1fengzhuang.php on line 8

Warning: The magic method __set() must have public visibility and cannot be static in E:XAMPPhtdocsstutest1fengzhuang.php on line 21
在直接设置私有属性的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性的时候,自动调用了这个__set()方法为私有属性赋值
在直接设置私有属性的时候,自动调用了这个__set()方法为私有属性赋值
在直接获取私有属性的时候,自动调用了这个__get方法
姓名:张三
在直接获取私有属性的时候,自动调用了这个__get方法
性别:男
在直接获取私有属性的时候,自动调用了这个__get方法
年龄:20

[php]

<?php
class Person
{
private $name;
private $sex;
private $age;
//__get()方法来获取私有属性
private function __get($property_name)
{
echo "在直接获取私有属性的时候,自动调用了这个__get方法<br>";
if (isset($this->$property_name))
{
return ($this->$property_name);
}
else
{
return (NULL);
}
}
//__set方法设置私有属性
private function __set($property_name,$value)
{
echo "在直接设置私有属性的时候,自动调用了这个__set()方法为私有属性赋值<br>";
$this->$property_name = $value;
}
}

$p1=new Person();
$p1->name="张三";
$p1->sex="男";
$p1->age=20;
//直接获取私有属性的值,会自动调用__get()方法,返回成员的属性值
echo "姓名:".$p1->name."<br>";
echo "性别:".$p1->sex."<br>";
echo "年龄:".$p1->age."<br>";
?>

[/php]

对于PHP中的魔术对象中的__get() 和__set(),很多教程中出现类似的问题。主要原因为function __get()方法设置为了private私有属性。PHP中能识别并正确处理,但是它会警告我们function __get()和function  __set()必须具备公有属性。即默认的不加private或者增加public,即不再出现该提示。

Php类中构造函数__construct的双下划线之谜

折腾了很久,写一个类实例化后,总是出现无法实例化的情况。对照源码了N次,总觉得没差错。后来直接拷贝源码进去看,才发现__construct竟然要双下划线。切记切记。

[php]

<?php
class Person
{
var $name;
var $sex;
var $age;

function __construct($name, $sex, $age)
{
//通过构造方法传进来$给成员属性$this->name赋初始值
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
function say()
{
echo "我的名字叫:".$this->name."性别:".$this->sex."我的年龄是:".$this->age.'<br>’;
}
}
//创建三个对象,传入不同实参

$p1=new Person("张三","男",20);
$p2=new Person("李四","女",30);
$p3=new Person("王五","男",40);

//访问对象的说话方法
$p1->say();
$p2->say();
$p3->say();
?>

[/php]