Linux
1
其实基本都是make && make install
只是配置需要注意一下,参考了 回忆未来 张宴兄的文章
http://blog.s135.com/post/366/
另外,熟悉了一下 imagemagick库和Imagick Image Library
中代码摘录如下:
其他详见帮助。
考虑大型图片服务器的假设可以采用该模式。
使用rsync进行图片推送备份,加上memcache + mysql master/slave
如果前端nginx压力过大,可以考虑采用lvs做一次均衡。
相关的参数如下:
上面weight是权重。具体参考文档。
另外需要提到的是多台fast-cgi会导致session出现问题,参考文献六提出了解决方案。
项目背景基本上就是上面说的那些,下面大概说说相关的网络环境,然后进入具体的配置、实现过程:
1、nginx服务器一台,IP地址:172.16.236.208
2、php fastcgi服务器两台,IP分别为:172.16.236.210,172.16.236.211
3、memcached服务器一台,IP为:172.16.236.220
为了简化操作过程,上面的环境仅仅是达到项目需求的假设,实际项目中还有许多额外的处理。
首先,修改nginx虚拟主机配置,将php的请求分发到各个php fastcgi服务器去,
大致的配置过程可以参加我之前的文章:使用nginx配置多个php fastcgi负载均衡
第二步,为php fastcgi服务器安装php-memcache扩展,参见:memcached、php-memcache安装笔记
啰嗦一句,这一步其实只需在一台服务器上进行,其他php fastcgi的配置其实可以偷懒,就是将之前编译好的memcache.so拷贝到需要配置的服务器中,然后修改php.ini可以加载这个扩展即可。
第三步,修改项目php源代码,使php的session存取使用memcached。
之前没有认真去读php的手册,先是自己写session的handler,然后又碰到一些奇怪的问题。最后在php官方的memcache说明中找到了最简单的办法,其实只要在调用session_start()之前执行如下代码:
$host = '172.16.236.220' ;
$port = '11211' ;
$session_save_path = "tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10, ,tcp://$host:$port ";
ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', $session_save_path);
其中$host是memcached服务器的ip地址,$port是memcached监听的端口。
执行了如下代码以后,所有php fastcgi服务器的session操作都同步到了memcached服务器,而对于项目的php代码来说,以前该怎么用还是怎么用,完全可以不用像这篇博客开头那样,以为要改写php的session处理函数了。
参考文章:
http://www.imagemagick.org
http://www.phpx.com/man/php-zh/ref.imagick.html
http://hi.baidu.com/%D3%A9%BB%F0%B3%E6candy/blog/item/3efd1e803c3bbbd19123d9ea.html
http://www.neatcn.com/show-274-1.shtml
http://ipbfans.org/2009/02/nginx-php-fcgi-load-balance
http://ipbfans.org/2009/02/memcached-php-session-load-balance
只是配置需要注意一下,参考了 回忆未来 张宴兄的文章
http://blog.s135.com/post/366/
另外,熟悉了一下 imagemagick库和Imagick Image Library
中代码摘录如下:
其他详见帮助。
考虑大型图片服务器的假设可以采用该模式。
使用rsync进行图片推送备份,加上memcache + mysql master/slave
如果前端nginx压力过大,可以考虑采用lvs做一次均衡。
相关的参数如下:
上面weight是权重。具体参考文档。
另外需要提到的是多台fast-cgi会导致session出现问题,参考文献六提出了解决方案。
引用
项目背景基本上就是上面说的那些,下面大概说说相关的网络环境,然后进入具体的配置、实现过程:
1、nginx服务器一台,IP地址:172.16.236.208
2、php fastcgi服务器两台,IP分别为:172.16.236.210,172.16.236.211
3、memcached服务器一台,IP为:172.16.236.220
为了简化操作过程,上面的环境仅仅是达到项目需求的假设,实际项目中还有许多额外的处理。
首先,修改nginx虚拟主机配置,将php的请求分发到各个php fastcgi服务器去,
大致的配置过程可以参加我之前的文章:使用nginx配置多个php fastcgi负载均衡
第二步,为php fastcgi服务器安装php-memcache扩展,参见:memcached、php-memcache安装笔记
啰嗦一句,这一步其实只需在一台服务器上进行,其他php fastcgi的配置其实可以偷懒,就是将之前编译好的memcache.so拷贝到需要配置的服务器中,然后修改php.ini可以加载这个扩展即可。
第三步,修改项目php源代码,使php的session存取使用memcached。
之前没有认真去读php的手册,先是自己写session的handler,然后又碰到一些奇怪的问题。最后在php官方的memcache说明中找到了最简单的办法,其实只要在调用session_start()之前执行如下代码:
$host = '172.16.236.220' ;
$port = '11211' ;
$session_save_path = "tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10, ,tcp://$host:$port ";
ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', $session_save_path);
其中$host是memcached服务器的ip地址,$port是memcached监听的端口。
执行了如下代码以后,所有php fastcgi服务器的session操作都同步到了memcached服务器,而对于项目的php代码来说,以前该怎么用还是怎么用,完全可以不用像这篇博客开头那样,以为要改写php的session处理函数了。
参考文章:
http://www.imagemagick.org
http://www.phpx.com/man/php-zh/ref.imagick.html
http://hi.baidu.com/%D3%A9%BB%F0%B3%E6candy/blog/item/3efd1e803c3bbbd19123d9ea.html
http://www.neatcn.com/show-274-1.shtml
http://ipbfans.org/2009/02/nginx-php-fcgi-load-balance
http://ipbfans.org/2009/02/memcached-php-session-load-balance
通常的安装 都比较简单,点击安装之后,在系统中会弹出VMWare Tools光盘,然后只需要点击RPM安装即可,而CentOS下面,必须使用.gz安装。
具体可以参考文章:
如何在CentOS安裝VMWare Tools? (OS) (Linux) (CentOS) (VMWare)
具体可以参考文章:
如何在CentOS安裝VMWare Tools? (OS) (Linux) (CentOS) (VMWare)
| 引用(0)
进程间共享数据技术是每个操作系统都具有的特性,而每个操作系统都会略有不同,而思路方面都是一致的。经过整理,各操作系统进程间共享数据技术存在以下四种方法
1:管道数据
2:Socket数据
3:共享内存
4:文件方式
之前广州某项目曾经考虑过使用管道实现,当然后来考虑到压力并不是很大,就改用文件方式处理了。Socket数据就比较直接了,同正常的网络socket一致。共享内存技术是本文的一个重点介绍的内容。文件方式不外乎直接性质的文件写读操作,或者通过数据库的方式进行读写。
1:管道数据
2:Socket数据
3:共享内存
4:文件方式
之前广州某项目曾经考虑过使用管道实现,当然后来考虑到压力并不是很大,就改用文件方式处理了。Socket数据就比较直接了,同正常的网络socket一致。共享内存技术是本文的一个重点介绍的内容。文件方式不外乎直接性质的文件写读操作,或者通过数据库的方式进行读写。
在开发BT客户端时候,考虑获取TrackerServer的Peers信息时,使用自己之前开发的HTTPDownload类,偶尔失败。究其原因,无时间追踪。开始考虑封装使用Curl来实现。
等有时间,再来分析一下Curl的功能,的确很强大,对HTTP,FTP,SSL等协议都封装的非常好。他日定可以派上大用场。
等有时间,再来分析一下Curl的功能,的确很强大,对HTTP,FTP,SSL等协议都封装的非常好。他日定可以派上大用场。
包含支持 UDP Tracker Server + HTTP Tracker Server.
正常P2P数据解决方案。
联系: 13596#1990#43
胡章优
长春优狐科技开发有限公司
mail: huzhangyou2002gmail.com
正常P2P数据解决方案。
联系: 13596#1990#43
胡章优
长春优狐科技开发有限公司
mail: huzhangyou2002
支持的新特性:
Virtualization enhancements
Next-generation hardware enablement
OpenJDK
Systemtap
Power management
Disk encryption
原文地址:http://www.press.redhat.com/2009/01/20/red-hat-enterprise-linux-53-offers-customers-new-features-and-capabilities
Virtualization enhancements
Next-generation hardware enablement
OpenJDK
Systemtap
Power management
Disk encryption
原文地址:http://www.press.redhat.com/2009/01/20/red-hat-enterprise-linux-53-offers-customers-new-features-and-capabilities
喜欢这种大气的东西。E5和netbeans
最早的一个Linux C++项目是基于Linux AS4 + KDE3,那时候,感觉Linux下面开发实在太痛苦了,或许是技术也的确不够到家,对Linux始终好感不够,同时IDE以及Linux的确做的还不够人性化。
第二个Linux平台的C++项目是基于Linux AS4 + Netbeans 5,发现了Linux下面开发以及Linux的API封装的确要比windows好的多,尤其是在Linux下面高效率的IO封装,简直让我震惊,相对而言,windows平台的API封装不够人性化,也不够好。无论是最初的设计思想还是使用方式。
第三个类Linux平台C++项目也就是FreeBSD + VI 完成,同样是高效的Kqueue性能以及可操作性,当然由于在VI下面完成,自然感觉不到舒服那里去,只是感觉到了FreeBSD的安全性实在强大,简直让我无语。
第四个Linux平台项目是基于Linux E5 + Netbean6.5,才真正体会到了windows下面C++Builder或者Delphi或者VS2005的那种感觉。虽然没有达到VS2005的那种智能,但是起码和C++Builder绝对有的一拼。
在Linux下面基本没有开发过界面程序,都是那种Server模式的项目。同样,总听人提起Eclipse,但是使用它开发C++项目还没有尝试过,下一个项目,试试是否会比Netbeans更加智能。
当然,或许瞄准3G市场的自己,会跟随Google Android的脚步,进入Linux下面Eclipse的Android移动平台项目的开发。拭目以待。
第二个Linux平台的C++项目是基于Linux AS4 + Netbeans 5,发现了Linux下面开发以及Linux的API封装的确要比windows好的多,尤其是在Linux下面高效率的IO封装,简直让我震惊,相对而言,windows平台的API封装不够人性化,也不够好。无论是最初的设计思想还是使用方式。
第三个类Linux平台C++项目也就是FreeBSD + VI 完成,同样是高效的Kqueue性能以及可操作性,当然由于在VI下面完成,自然感觉不到舒服那里去,只是感觉到了FreeBSD的安全性实在强大,简直让我无语。
第四个Linux平台项目是基于Linux E5 + Netbean6.5,才真正体会到了windows下面C++Builder或者Delphi或者VS2005的那种感觉。虽然没有达到VS2005的那种智能,但是起码和C++Builder绝对有的一拼。
在Linux下面基本没有开发过界面程序,都是那种Server模式的项目。同样,总听人提起Eclipse,但是使用它开发C++项目还没有尝试过,下一个项目,试试是否会比Netbeans更加智能。
当然,或许瞄准3G市场的自己,会跟随Google Android的脚步,进入Linux下面Eclipse的Android移动平台项目的开发。拭目以待。
执行
时候,并不能将真实的日志写入到文件。开始找方法,感谢王哥告诉无法直接重定向,开始修改代码。其实办法倒是比较简单,只是记忆中Linux中和Windows中几个格式化函数并不一致。后来参考Linux / Unix Command: vsprintf,知道可以使用简单方法:
时候,并不能将真实的日志写入到文件。开始找方法,感谢王哥告诉无法直接重定向,开始修改代码。其实办法倒是比较简单,只是记忆中Linux中和Windows中几个格式化函数并不一致。后来参考Linux / Unix Command: vsprintf,知道可以使用简单方法:
| 引用(0)
Linux has built-in support for keepalive. You need to enable TCP/IP networking in order to use it. You also need procfs support and sysctl support to be able to configure the kernel parameters at runtime.
原文地址:http://www.aka.org.cn/Lectures/002/Lecture-2.1.8/Lecture-2.1.8/new_page_22.htm
如何将程序以Daemon方式运行?
以Daemon方式运行的程序,在运行过程中与控制台无关,即不受控制台信号影响,在控制台退出后也继续保持运行,而其他非Daemon程序会受控制台操作影响,并在控制台退出时被强行退出。因此网络服务程序绝大多数都是以Daemon方式运行。
如何将程序以Daemon方式运行?
以Daemon方式运行的程序,在运行过程中与控制台无关,即不受控制台信号影响,在控制台退出后也继续保持运行,而其他非Daemon程序会受控制台操作影响,并在控制台退出时被强行退出。因此网络服务程序绝大多数都是以Daemon方式运行。
开发需要,粗糙的封装了一下并加上测试代码:
////////////////////////////////////////////
/*
=============版权信息=============
author:胡章优
blog: http://www.libing.net.cn
mail: huzhangyou2002(AT)gmail.com
msn:huzhangyou2002(AT)gmail.com
QQ: 3803308
=============版权信息=============
*/
本代码属于作者原创,但欢迎转载,并欢迎在项目中使用,转载请保留版权,使用就不必了。若修改过bug,麻烦通知一下本人即可。
源代码下载:
下载文件 (已下载 182 次)
////////////////////////////////////////////
/*
=============版权信息=============
author:胡章优
blog: http://www.libing.net.cn
mail: huzhangyou2002(AT)gmail.com
msn:huzhangyou2002(AT)gmail.com
QQ: 3803308
=============版权信息=============
*/
本代码属于作者原创,但欢迎转载,并欢迎在项目中使用,转载请保留版权,使用就不必了。若修改过bug,麻烦通知一下本人即可。
源代码下载:
下载文件 (已下载 182 次)
开发需要,粗糙的封装了一下并加上测试代码:
////////////////////////////////////////////
/*
=============版权信息=============
author:胡章优
blog: http://www.libing.net.cn
mail: huzhangyou2002(AT)gmail.com
msn:huzhangyou2002(AT)gmail.com
QQ: 3803308
=============版权信息=============
*/
本代码属于作者原创,但欢迎转载,并欢迎在项目中使用,转载请保留版权,使用就不必了。若修改过bug,麻烦通知一下本人即可。
源代码下载:
下载文件 (已下载 170 次)
////////////////////////////////////////////
/*
=============版权信息=============
author:胡章优
blog: http://www.libing.net.cn
mail: huzhangyou2002(AT)gmail.com
msn:huzhangyou2002(AT)gmail.com
QQ: 3803308
=============版权信息=============
*/
本代码属于作者原创,但欢迎转载,并欢迎在项目中使用,转载请保留版权,使用就不必了。若修改过bug,麻烦通知一下本人即可。
源代码下载:
下载文件 (已下载 170 次)


2009/04/22
19:51
2059




