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指定存放包及其依赖包的目录;




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee