存档

2012年4月 的存档

为ubuntu服务器安装gnome图形桌面

2012年4月29日 没有评论

Ubuntu服务器安装图形界面最简单的就是用下面的命令安装整个桌面版的ubuntu,但不建议在服务器上使用此方法,因为安装桌面相关软件太多。当然也可以安装后再删除。我是个人测试PC上安装server版ubuntu,然后再装个桌面。

sudo aptitude install ubuntu-desktop

sudo apt-get install ubuntu-desktop

安装过程中间会让你选择桌面类型,gmd 和 lightdm,我选择的lightdm。

LightDM是什么?

 

LightDM,即:Light Display Manager,是一个全新的、轻量的Linux桌面的桌面显示管理器,而传统的Ubuntu用的是GNOME桌面标准的GDM。那么LightDM相对于GDM有什么不同?

  • 轻量:LightDM是2010年开始的新项目,一开始就设计为轻量、小巧,没有GDM那样的历史代码负担,因此不仅完整支持标准,而且轻量、快速。
  • 支持各种界面:相较于GDM-GTK,KDM-Qt,LightDM实际上是界面无关性的,因为它设计上就是支持本地图形界面以获得最好的兼容性。因此LightDM现在已经具备了GTK、Qt甚至WebKit的界面,也就是用HTML来做登陆界面。
  • 可配置性:Linux最大的优势就是定制性强了,LightDM也继承了这一优点,除了可以定制上面提到的界面以外,LightDM还可以定制其他丰富的选项,如自动登录、禁止特定用户登录等等

普通用户实际上不关心这些,只要登录界面漂亮、直观、方便操作就OK了,而事实上LightDM也做到了这一点。默认情况下,Ubuntu 11.10使用的界面组件是:Unity Greeter,如下图:

LightDM/Unity Greeter

静态的图片表达能力有限,实际上Unity Greeter这个界面带有一点动画效果(在选择用户名的时候),效果不错。

我不是专业的设计人员,对这个界面,我的第一感觉是:为什么登录框在左边?然而用了一段时间后也习惯了,并不觉得什么不适。

在这个界面中,左上是「机器名」,右上是一些指示器,可以关机、看时间、电源、声音等。

左下是「Ubuntu 11.10」的Logo,壁纸上有一点一点,登录框设计的很简洁,可以通过按齿轮来选择会话。整体来说比GDM要优雅的多——而且少了一个不必要的语言选择,简洁了一些。

一个很细微的用户体验改进:GDM做的很差的一点是,即使只有一个用户,也需要点击或输入用户名,再输入密码。而LightDM则默认选择了第一个用户名,每当登录时,只需要输入密码即可,不需要再选择用户名——这点跟Mac OS X一样。让用户少做一个不必要的动作,这种改进是非常值得一提的!

下面说的是自定义安装GNOME桌面的步骤:

1.安装x-windows的基础(必须):

sudo apt-get install x-window-system-core

 

2.安装gnome基础(必须):

sudo apt-get install gnome-core

 

3.安装中文显示(这里是ubuntu11.04的中文相关软件包的名称,其它版本的好像有点不同,可以安装新立得软件管理器后,在VNC连接上后搜索相关的language软件包):

sudo apt-get install language-pack-gnome-zh-hans

sudo apt-get install language-pack-gnome-zh-hans-base

sudo apt-get install language-pack-zh-hans

sudo apt-get install language-pack-zh-hans-base

sudo apt-get install language-support-zh-hans

 

4.安装登录管理器:

sudo apt-get install gdm

说明: gdm(gnome display manager)即gnome图形界面显示管理器,还有kdm/xdm等,它将使您可以在启动时直接进入GUI桌面环境,而勿需通过 startx 来启动GUI。

5.安装新立得软件管理器(这个东西很方便,有时不记得一些软件名称,直接用这个搜索更好用):

sudo apt-get install synaptic

 

这样基本上OK了,当然安装了桌面后再安装VNC服务了,要不然安装桌面有什么用

sudo apt-get install vnc4server

通过为ubuntu服务器安装gnome图形桌面 | 冬寒博客.

分类: ubuntu 标签:

[转]安装php时报gd相关的错误gd_ctx.c

2012年4月29日 没有评论

转自:http://blog.csdn.net/hzcyclone/article/details/7493051

在安装php时,报如下错误

In file included from /kk/php-5.4.0/ext/gd/gd.c:103:

/kk/php-5.4.0/ext/gd/gd_ctx.c: In function ‘_php_image_stream_putc’:

/kk/php-5.4.0/ext/gd/gd_ctx.c:51: 错误:‘struct gdIOCtx’ 没有名为 ‘data’ 的成员

/kk/php-5.4.0/ext/gd/gd_ctx.c: In function ‘_php_image_stream_putbuf’:

/kk/php-5.4.0/ext/gd/gd_ctx.c:58: 错误:‘struct gdIOCtx’ 没有名为 ‘data’ 的成员

/kk/php-5.4.0/ext/gd/gd_ctx.c: In function ‘_php_image_stream_ctxfree’:

/kk/php-5.4.0/ext/gd/gd_ctx.c:67: 错误:‘struct gdIOCtx’ 没有名为 ‘data’ 的成员

/kk/php-5.4.0/ext/gd/gd_ctx.c:68: 错误:‘struct gdIOCtx’ 没有名为 ‘data’ 的成员

/kk/php-5.4.0/ext/gd/gd_ctx.c:69: 错误:‘struct gdIOCtx’ 没有名为 ‘data’ 的成员

/kk/php-5.4.0/ext/gd/gd_ctx.c: In function ‘_php_image_output_ctx’:

/kk/php-5.4.0/ext/gd/gd_ctx.c:153: 错误:‘gdIOCtx’ 没有名为 ‘data’ 的成员

make: *** [ext/gd/gd.lo] 错误 1

好像说这个错误算是php5.4的bug,下面对应的两篇文章有对应的说明:
https://bugs.php.net/bug.php?id=55224
https://bugs.php.net/bug.php?id=60108

解决方法     亲测成功 :)

vi <gd_dir>/include/gd_io.h

gdIOCtx结构中增加void *data;

格式如下

typedef struct gdIOCtx

{

int (*getC) (struct gdIOCtx *);

int (*getBuf) (struct gdIOCtx *, void *, int);

 

void (*putC) (struct gdIOCtx *, int);

int (*putBuf) (struct gdIOCtx *, const void *, int);

 

/* seek must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek! */

int (*seek) (struct gdIOCtx *, const int);

 

long (*tell) (struct gdIOCtx *);

 

void (*gd_free) (struct gdIOCtx *);

void (*data);

}

gdIOCtx;

rsync参数详解

2012年4月28日 没有评论

转自:« 运维日志  http://yunwei.org/107/

rsync什么情况下会同步文件呢?

这里假设A机同步到B机上,并且rsync同步参数为:vazu,这个参数对做网站镜像的来说完全可以的了。

对这组参数的解释如下:

-v, –verbose 详细模式输出

-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-r, –recursive 对子目录以递归模式处理

-l, –links 保留软链结

-p, –perms 保持文件权限

-t, –times 保持文件时间信息

-g, –group 保持文件属组信息

-o, –owner 保持文件属主信息

-D, –devices 保持设备文件信息

-z, –compress 对备份的文件在传输时进行压缩处理

-u, –update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)

 

下面对以下几种不同步情况进行测试:

1,如果A机文件时间比B机文件时间新,则A会同步文件到B。

2,如果A杋文件时间比B机文件时间旧,则A不同步文件到B。

3,如果B机文件属主,属组不同于A机,并且A机文件时间不比B机文件时间旧,则会更新B机文件的属主,属组,但不重新同步文件。

4,如果B机文件属主,属组不同于A机,并且A机文件时间比B机文件时间旧,则不会更新B机文件的属主,属组,也不重新同步文件。

5,如果B机文件权限不同于A机,并且A机文件时间不比B机文件时间旧,则会更新B机文件的权限,但不重新同步文件。

6,如果B机文件权限不同于A机,并且A机文件时间比B机文件时间旧,则不会更新B机文件的权限,也不重新同步文件。

7,即使A机与B机文件内容(大小)不一样,如果B机文件比A机文件新,也不会同步。

 

综上可以看出,以vazu这组参数运行rsync时,是以时间为最优先,只有更新的文件才同步文件;如果只是属主属组,权限的不同,

则不重新同步文件,而是仅更新这些属性,前提是A机的时间不比B机的时间旧。

分类: linux 标签:

TCP Close 流程

2012年4月28日 没有评论

TCP CLOSE流程

特征

u       发送一个FIN报文表示结束本端数据的发送,但是还可以接收数据,称之为半关闭

u       TCP是一个全双工的协议,两端全部close才完成了一个连接的关闭;

u       首先发起close(发送FIN),我们称之为主动关闭,对端的close我们称为被动关闭;

u       同时关闭;

 

半关闭

发送一个FIN报文表示结束本端数据的发送,继续接收对端发送的数据的状态,我们称之为半关闭。通过调用shutdown可以实现这个目的。

 

主动关闭

前提

应用层知道连接的存在:1、客户端已经发起connect2、服务器已经accept一个连接

 

初品

TCP各状态下,主动关闭时状态迁移分析:

1、  本端还没有收到对端的SYN报文报文(状态为CLOSED, LISTEN, SYN_SENT),直接释放TCP连接和SOCKET资源;

2、  本端已经接收到对端的SYN报文,但是之前没有关闭连接的动作(SYN_RCVD, ESTABLISHED状态),发送FIN报文给对端,状态转为FIN_WAIT_1

3、  对端已经关闭连接(half-close),本端还没有关闭(CLOSE_WAIT状态),发送FIN报文给对端,状态转为LAST_ACK

4、  本端已经发送FIN报文,连接还没有完全关闭(其他状态),保持状态不变,不做任何操作。

 

细尝

 

情况1已经完成了关闭TCP连接的过程,情况3属于被动关闭,在后续章节再仔细分析,情况4没有改变状态,因此就情况2后的细节进行分析。

现在连接已经处于FIN_WAIT_1状态,那么:

1、  接收到FINACK报文,进入FIN_WAIT_2状态,等待对端关闭连接;

2、  接收对端的FIN/ACK报文, 发送ACK,进入TIME_WAIT状态,2MSL时间后丢弃连接(先处理ACK,再处理FIN);

3、  接收到对端的FIN,回ACK,进入CLOSING状态(同时关闭,后续章节分析);

4、  FIN发送超时,连续若干次发送失败,丢弃连接;

5、  接收到对端的RST报文,丢弃连接。

 


概念:
TIME_WAIT状态又成为  2MSL状态,一个主动关闭的连接在进入TIME_WAIT状态后,必须等待2MSL的时间后再关闭,防止最后发送的ACK丢失。

深究

Ø      FIN_WAIT_2状态

FIN_WAIT_2是一个等待状态,可能:

1、  对端仍有数据需要发送,等待接收对端的数据;

2、  对端发送FIN报文,回ACK,进入TIME_WAIT状态;

3、  对端因意外崩溃导致不能发送FIN报文过来,连接一直僵死到inactive超时为止;

如果在一个系统资源紧张的系统中,出现情况2是不可饶恕的问题。如何解决?启动2MSL定时器,在这段时间还没有接收到对端的FIN报文直接丢弃连接。

Ø      2MSL等待状态

 

注意点:

12MSL是基于IP报文的跳数,而不是时间;

2、当TCP处于2MSL状态,不可以创建同一连接;

 

 

被动关闭

 

这里研究接收到对端发送过来的FIN报文处理的情况,包括但不限于被动关闭:

1、  本端没有发送和接收过FIN报文(SYN_RCVDESTABLISHED状态),回ACK,进入CLOSE_WAIT状态,等待应用程序关闭;

2、  本端已经发送过FIN报文但没有被确认(FIN_WAIT_1状态),进入CLOSING状态(同时关闭);

3、  本端已经发送过FIN报文并被确认(FIN_WAIT_2状态),进入TIME_WAIT状态;

4、  连接已主动关闭但没有丢弃(TIME_WAIT状态),说明对端没有收到ACK,重传ACK,并重启2MSL定时器;

5、  其他状态下不处理。

 

总结

为了方便理解状态的变迁,不妨认为SYN报文表明发送者想发送数据,FIN报文表明发送者停止发送报文。所以SYN_SENT状态只能主动发送FIN,而SYN_RCVD状态下即可发送FIN,也可以接收FIN

 


分类: network 标签:

rsync 只比较不同步文件

2012年4月28日 没有评论

rsync同步前,先了解下即将被同步的文件,这是个比较安全的做法。否则有问题被误同步,回档操作比提前检查要痛苦些。

rsync -arvc –dry-run dir1/* dir2

 

 

分类: linux 标签: ,

某网游公司招聘运维工程师

2012年4月12日 没有评论

职位描述:

  1. 负责生产网络、服务器、数据库与支撑系统的建设、运维和监控,保证各业务系统正常运营;
  2. 负责公司门户网站与webgame服务器的搭建、运维、监控
  3. 负责对突发事件的快速响应和处理,排除故障;
  4. 负责对现有业务系统的架构与性能改善
  5. 改进自动化运维系统,提高工程师工作效率

职位要求:

  1. 计算机或相关理工科专业专科或以上学历,为人真诚正直;
  2. 精通Linux/Unix操作系统管理及优化
  3. 熟悉LNMP、LAMP、tomcat、BIND、squid、Redis、Postfix、memcached、rysnc常见应用的配置与优化
  4. 熟悉Python、Bash Shell、Perl等至少一种脚本语言,要求有实际的,成熟的工具和产品开发经验;
  5. 熟悉常见的开源负载均衡及高可用应用(LVS、nginx、haproxy、Keepalived、Heatbeat),有实际的实施经验者优先
  6. 熟悉cacti/zabbix监控系统安装使用
  7. 熟悉常用的自动化运维应用及实现方式(puppet,Func等)
  8. 有一定的数据库原理知识,熟悉mysql配置、主从搭建;
  9. 熟悉虚拟化应用,了解Openstack和Hadoop
  10. 2年以上Linux/Unix系统运维经验,具有互联网Web应用运维、游戏运维经验者优先;
  11. 热爱运维技术,高度的责任心、良好的沟通技巧和团队合作精神,有上进心。

请将简历发送到 ldtrain@163.com