graybull's Blog
构建Apache+Tomcat+memcache集群服务器
- 前言
- 安装Apache
- 安装mod_jk.so模块(Tomcat-connectors)
- 配置jk
- 安装Tomcat
- 配置Tomcat
- 安装memcache
前言
Apache目前是世界使用量第一的Web服务器。本文将介绍如何构建一个基础的集群Web服务器。
基本功能部件
Apache -- 请求分发器,静态资源处理
Tomcat -- Java Web应用服务器
memcache -- 分布式缓存服务器
|------------->[Tomcat1] ---------------------|
Request--- [Apache] mcache1] ------ [Memcache2]
|------------->[Tomcat2]----------------------|
安装Apache
安装Apache httpd的具体过程参考: http://graybull.is-programmer.com/posts/37857.html
总之,结果是将httpd安装在目录/usr/local/apache2下。
安装mod_jk.so模块
下载tomcat-connectors: http://tomcat.apache.org/download-connectors.cgi
$ ./configuare --with-apxs=/usr/local/apache2/bin/apxs
$ make
在Apache-2.0目录下生成动态库mod_jk.so
拷贝mod_jk.so到/usr/local/apache2/modules目录;拷贝conf目录下的httpd-jk.conf 和workers.properties到/usr/local/apache2/conf目录。
apachectl -t -D DUMP_MODULES
ps -ef | grep tomcat
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211,n2:localhost:11212"
failoverNodes="n2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
memcache下载地址: http://memcached.org/
安装libevent
$ sudo ./configure -prefix=/usr
$sudo make
$sudo make install
$sudo ./configure -with-libevent=/usr
$sudo make
$sudo make install
未完。
Linux搭建SVN服务器 -- 简单方案
本文将介绍Linux下搭建SVN服务器的简单解决方案,即安装基本的服务器端和客户端,提供SVN的基本服务。
而更高阶的解决方案的内容,将会包含:SVN与Apache结合提供HTTP支持,邮件配置,备份方案,使用svnstat分析SVN数据,to name a few.
- SVN简介
- 安装SVN服务器
- 配置和使用SVN
- 客户端连接SVN
SVN简介
SVN是一个代码版本管理工具,较为流行。详情请看http://subversion.apache.org/或者google之。
类似的工具有CVS,TFS和眼下热起来的Git。
C++跨平台开发 -- 影响跨平台的因素有哪些
跨平台是在应用程序开发当中时常遇到而又内涵丰富的话题。有幸拜读Syd Logan的《Cross-Platform Development in C++》,这里将随手写写读书心得和总结。
子话题 -- 影响跨平台的因素有哪些
- 语言 -language
- 编译器 - compiler
- 二进制数据 - binary data
- 标准库 - standard library
- 操作系统接口 - operation system interface
- 用户接口 - user interface
- 生成系统 - build system
- 配置管理 - configuration management
C语言声明的优先级规则--如何看懂复杂的声明语句
- C语言声明的优先级规则
- 解读一个复杂例子char* const *(*next)();
- 使用typedef
C语言复杂的声明语句,总是让人很头痛。这里,我摘录了《C专家编程》的一段内容,来简要地阐述以下如何看懂这些复杂的东东。
举例:char * const * (*next) (); //请问这是神马意思?
如果你对此还有疑问,请看下文。
跨平台C++单元测试框架GTest -- Linux下试用
GTest是Google开发的跨平台而且开源的C++单元测试框架,很好很强大。首先奉上下载地址:https://code.google.com/p/googletest/ 。关于GTest在Windows下使用,CoderZh给出了十分详尽的使用指南:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 。
这里,是我在Linux下初尝GTest 1.6.0。
- 生成gtest库
- 编写简单功能函数
- 编写单元测试代码
- 编译与运行测试
Linux安装Apache Web Server
嗯,我想构建个高性能Web站点来玩玩。就从这里开始吧。
- 安装APR和APR-util
- 安装PCRE
- 安装httpd
- 启动web server
OS是rhel6.1 x64。在httpd源代码目录下,执行./configure会出错,提示需要apr等包。这是因为httpd依赖于APR、APR-util和PCRE,需要先安装它们,后添加路径入configure的选项中。使用以下命令可获得帮助:
$./configure -help | grep apr
输出:
--with-included-apr Use bundled copies of APR/APR-Util
--with-apr=PATH prefix for installed APR or the full path to apr-config
--with-apr-util=PATH prefix for installed APU or the full path to
它告诉我需要加上apr和apr-util的路径。
Linux与Windows间共享资源 - 使用Samba
我的情景:我有一台Redhat Linux服务器和多台windows个人计算机,用来进行C++开发。想用windows上Visual studio编辑代码,而在Linux上编译和运行代码。这样既可以让代码的目标平台为Linux,也可使用VS的强大功能来编辑代码。
使用Samba,可以实现在Windows下共享Linux的代码文件,并直接用VS编辑这些代码。
- 说在前面
- 安装Samba
- 配置Samba
- Windows使用Linux的共享资源
- ...
1. 前言
1.1 OS
服务器:redhat enterprise linux 6.1 x64;个人计算机: windows 7
1.2 Samba介绍
为了使Windows 主机间的资源能够共享,微软于1980年开发了SMB(Server Message Block)通信协议,并通过SMB通信协议,使网络上各台主机之间能够共享文件、打印机等资源。目前类似这种资源共享的通信协议还有NFS、 Appletalk、Netware等。
后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件 共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。
Linux下Emacs -- 安装与配置
我的情景:在Redhat Linux 6.1 x64下搭建C++开发环境。
- 安装emacs
- 配置emacs
安装emacs
首先yum源可用:http://graybull.is-programmer.com/posts/37702.html
安装方法很简单:
查看emacs的包:$ yum list | grep emacs
安装:$sudo yum install emacs.x86_64
安装完成后,在terminal输入emacs即可启动它了。
printf与scanf在处理double时的不同
1. 在windows下,下面语句是正常执行的:
double var=0.618;
printf("%Lf\n",var);
然而,在Linux下该printf执行异常。故处理printf和scanf时避免使用 %Lf (大写L)。
2.
- scanf 读取float: scanf("%f",&var);
- scanf 读取double: scanf("%lf",&var);
3. printf 与scanf 的情况有些不同。
float var1=1.0;
double var2=1.0;
printf("%f", var1); //都是 %f
printf("%f",var2); //都是 %f
%f 在printf 看来是输出double变量(不是float);而float变量在传给printf时,编译器将它变成double类型。
至于%lf, printf也能正常输出。
建议统一在 printf 中使用 %f 。
参考:
printf 的%f说明符的确既可以输出float型又可以输出double型。根据“默认参数提升”规则(在printf这样的函数的可变参数列表中,不论作用域内 有没有原型,都适用这一规则)float型会被提升为double型。因此printf()只会看到双精度数。
(严 格地讲,%lf在printf下是未定义的,但是很多系统可能会接受它。要确 保可移植性,就要坚持使用%f。)。对于scanf,情况就完全不同了,它接受指针,这里没有类似的类型提升。(通过指针)向float存储和向 double存储大不一样,因此,scanf区别%f和%lf。
使用yum下载包及其依赖包
有时候,我们仅仅想下载安装包及其依赖包,而暂时不安装它们。嗯,你太无聊了吧。
我目前能想到的情景是:我想建立一个自己的yum服务器,上边放着很多包,供内部网络的多台机器使用。所以首先得下载包。
- 安装yum-downloadonly
- 使用yum-downloadonly
安装yum-downloadonly
首先,要有一个可用的yum源。参考:http://graybull.is-programmer.com/posts/37702.html
安装yum-downloadonly
$ sudo yum install yum-downloadonly
使用yum-downloadonly
$ sudo yum install --downloadonly --downloaddir=<diretory> <package name>
若软件包已安装,则可用reinstall代替install。
--downloadonly指明只下载,不安装;
--downloaddir指定存放包及其依赖包的目录;