centos6 vncserver配置

 

1.安装桌面环境所需软件包:
yum grouplist | more
yum groupinstall   “Desktop”   “Desktop Platform”   “Desktop Platform Development””Fonts” “General Purpose Desktop” “Graphical Administration Tools” “Graphics Creation Tools” “Input Methods” “X Window System” “Chinese Support [zh]” “Internet Browser”

yum install tigervnc tigervnc-server

5.配置VNC的登录账号、桌面分辨率和连接方式:

vim /etc/sysconfig/vncservers
添加:
VNCSERVERS=”1:root”
VNCSERVERARGS[1]=”-geometry 1024×768″

6.配置VNC的远程登录密码:
vncpasswd

7.配置VNC防黑屏,并重启服务:
vim /root/.vnc/xstartup
注释:
# xterm -geometry 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &
# twm &
添加:
gnome-session &

service vncserver restart

9.客户端连接:

打开vnc viewer
VNC Server:   IP:5901
(密码不是登陆账号的密码,而是VNC设置的密码)

 

11.防火墙开放5901端口:
iptables -A INPUT -p tcp –dport 5901 -j ACCEPT

卸载Xwindows

代码如下:

#yum groupremove ‘X Window System’ -y

卸载GNOME桌面环境

代码如下:

#yum groupremove “GNOME Desktop Environment”

卸载KDE桌面环境

代码如下:

#yum groupremove “KDE (K Desktop Environment)”

 

memcacheDB install 主从复制

memcachedb是 一个开源项目,给memcached分布式缓存服务器添加了Berkeley DB的持久化存储机制和异步主辅复制机制,让memcached具备了事务恢复能力、持久化能力和分布式复制能力,非常适合于需要超高性能读写速度,但是 不需要严格事务约束,能够被持久化保存的应用场景。

自从用了redis,估计现在这个技术用的不多了,切当留档了吧,部署如下:

系统初始化:

主:10.0.0.167

 

tar zxvf libevent-2.0.16-stable.tar.gz

cd libevent-2.0.16-stable

./configure –prefix=/usr/local/

Make

Make install

 

tar zxvf db-4.7.25.tar.gz

cd db-4.7.25

cd build_unix/

../dist/configure –prefix=/usr/local/

Make

Make install

 

tar zxvf memcachedb-1.2.0.tar.gz

cd memcachedb-1.2.0

./configure prefix=/home/app/memcachedb –enable-threads

Make

Make install

 

find / -name libevent-2.0.so.5

ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5

 

mkdir –p /home/data/db

chown –R  webadmin.webadmin /home/data/

 

启动:

/home/app/memcachedb/bin/memcachedb -p 11211 -d -r -H /home/data/db -u webadmin -N -R 10.0.0.167:21210 –M

 

从机:10.0.0.72

 

安装步骤一样,安装完,启动:

/home/app/memcachedb/bin/memcachedb -p 11211 -d -r -H /home/data/db -u webadmin -N -R 10.0.0.72:21210 -O 10.0.0.167:21210 -S

memcachedb-1-2-0-tar

libevent-2-0-16-stable-tar

还有一个db-4.7.25.tar的包。

 

win2008r2_远程桌面授权

首先你得是正版激活系统,如果不是想办法激活,这个方法解决windows 120天终端到期问题:

 

 

在“输入协议号码”界面中的“协议号码”文本框内输入协议号:4954438,然后单击“下一步”

 

如果操作系统里没有RD授权管理器:

rd

 

需要去安装:右键“远程桌面服务”—添加服务器角色,选中:

rd2

 

 

 

安装完就可以了。

rd3

 

 

然后指定服务器:

 

rd4

 

rd5

参考文档:

http://www.codingwhy.com/view/803.html

 

 

 

Tengine geoip模块动态加载和配置

老功能了,不多说,直接来步骤:

下载需要的文件:

wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz

 

tar -zxvf GeoIP.tar.gz

cd GeoIP-1.4.8/

./configure

Make

Make install

echo ‘/usr/local/lib’ > /etc/ld.so.conf.d/geoip.conf

ldconfig

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

gzip -d GeoIP.dat.gz

gzip -d GeoLiteCity.dat.gz

mv GeoIP.dat GeoLiteCity.dat /usr/local/nginx/conf/

如果改完配置后哟与如下报错就需要加载geo模块,下面有介绍:

nginx: [emerg] unknown directive “geoip_country” in /etc/nginx/nginx.conf:67

 

动态安装geo模块, 整个过程不影响现在的Nginx访问,安装完reload nginx就可以生效了:

进入Nginx安装包目录,我的在/usr/local/src/tengine-2.1.2/下

./configure –with-http_geoip_module=shared

Make

make dso_install

然后在nginx.conf里加入:

dso {

load ngx_http_geoip_module.so;

}

#geo

geoip_country  /usr/local/nginx/conf/GeoIP.dat;

geoip_city  /usr/local/nginx/conf/GeoLiteCity.dat;

 

加入日志中:

log_format  main  ‘$remote_addr – $remote_user [$time_local] “$request” ‘

‘$status $body_bytes_sent “$http_referer” ‘

‘”$http_user_agent” “$http_x_forwarded_for” ‘

‘”$upstream_addr” “$upstream_cache_status” ‘

‘”$upstream_status” “$upstream_response_time” “$cookie_jsessionid” “$request_time” “$

host” “–$geoip_country_name–$geoip_city–$geoip_postal_code”‘;

查看访问日志确认可以。

其它有用配置:

禁止国家访问:

if ($geoip_country_code = CN) {
  deny all;
}
GeoIP 中跟国家相关的变量:

GeoIP 中跟国家下级区域相关的变量:

网上有用来做负载均衡的例子:

另一个用法:

在 php 中测试 GeoIP

首先需要在 fastcgi_params 或 fastcgi.conf 中引入 GeoIP 的属性,

如需Nginx传递变量给PHP,编辑fastcgi_params添加:

php代码:

或者:

官方介绍:http://nginx.org/en/docs/http/ngx_http_geoip_module.html

 

python基础15-面向对象编程(2)

上篇我们介绍了Python面向对象编程的基本理论知识,这篇我们开始看如何实际定义类和如何调用类方法,在Python中定义类的关键字是class,我们就拿周边的事物说起,这样大家也比较容易理解,比如我们定义一个汽车类,如下:

以上代码我们定义了一个简单的汽车类,我们来逐行说明解释下代码, 大家知道def是用来定义一个函数的,那如果在类里定义一个函数,这个函数就称为方法,除了名字不同之外,我们之前学的关于函数的内容都适用于方法,所以在这里__init__()我们理解是一个函数,因为是在类中,所以我们叫它__init__()方法,如果是第一次接触,可能看着有点不习惯,因为这个方法前后都有二个下划线,跟我们平时看到的名称不大一样, 这种写法主要是避免Python默认方法跟自定义的方法发生冲突,所以我们可以不用管它形式,知道它本质就可以了,在Python中还有很多这种形式的特殊方法,另外__init__()方法也被称为构造器,它用于根据类的定义创建实例。

这里__init__()定义中包含四个形参,其它参数都容易理解,我们着重看第一个参数self,在Pythonl类中,self不可缺少,并且它必须放在其它参数前面,因为python在调用__init__()方法创建实例时,将自动传入实参self, self是类实例方法中引用方法所绑定的实例,它是指向实例本身的引用,让实例能够访问类中的属性和方法,当我们创建car实例时,我们只需要给后面三个参数就可以了,self因为会自动传递,所以我们不需要再传递。

接下来我们创建一个实例,看如何调用:

打印出:

我们创建一个实例my_car,  我们传递公司,品牌,时间参数, self我们并没有传递, 然后实例调用方法get_car_info()打印出了汽车实例的信息。

这个类基本是最简单的类了,大家看到在类中的方法都需要self参数,这种方法叫实例方法,在类中除了实例方法,还有一种叫静态方法,静态类方法无需传入self函数,但需要@staticmethod修饰,类和实例都可以访问静态方法。

以上我们拿生活的汽车来举例说明,在运维中的应用基本也是这个思路去实现,比如数据库类,我们可以在__init__()方法里把数据库的名称,IP,端口,数据库用户,密码等放到这个方法里,再定义一个方法根据这些去连接db,然后返回连接对象来对数据库进行操作,这个就是实现一个DB类的基本思路。

这篇我们就简单说一下类和实例内容,另外类会有父类、子类区分,那么关于子类和父类继承关系以及子类重写父类方法内容我们会放到下篇去介绍, 下篇见~