Recently in LJAMP Category

Linux下Tomcat & JVM 优化[实测]

| | Comments (0) | TrackBacks (0)
在/etc/profile下添加
PATH=$PATH:$HOME/bin
JAVA_HOME=/usr/local/unioncast/jdk
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=/usr/local/unioncast/jdk/lib/tools.jar
JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m "
export PATH
export JAVA_HOME
export CLASSPATH
export JAVA_OPTS

在Tomcat的conf/server.xml中
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="125" minSpareThreads="25" maxSpareThreads="75"
 enableLookups="false" redirectPort="8443" acceptCount="100"
 connectionTimeout="20000" disableUploadTimeout="true" />

修改默认的maxThreads为较大数值即可

site-python-install howto

| | Comments (0) | TrackBacks (0)
在使用RRDTool的Python Lib库的时候, 每次都要import rrdtool-python-lib的绝对路径

import sys
sys.path.append('/usr/local/rrdtool-1.2.27/lib64/python2.4/site-packages/')
import rrdtool
import tempfile

rrdpython文档中说只要运行site-python-install这个命令就可以不用append那么长了囧, 作为一个python初心者我只能updatedb然后locate site-python-install. 然后CentOS告诉我没有...
G, 在rrdtool 1.3.1的Makefile中发现了这么一段.
site-perl-inst: site-perl-install
site-perl-install: all bindings/perl-piped/Makefile bindings/perl-shared/Makefile
cd bindings/perl-piped && $(MAKE) install
cd bindings/perl-shared && $(MAKE) install
site-tcl-install: all
cd bindings/tcl && $(MAKE) tcl-install
site-python-install: all
cd bindings/python && $(PYTHON) setup.py install


OK, 在安装完之后,进入/PATH/TO/RRDTOOL-VERSION-SRC/bindings/python目录
执行
python2.4  setup.py  install

即可, perl和tcl以此类推即可, 这才是真正的site-python-install, 恩


另: CentOS5.1 下which出来的python是2.5.2版本的, whereis才能把所有版本的python都列出来

部署环境: CentOS 5.1 x64  MySQL3.23.58 + GCC
这里下载pam_mysql的源代码包
下载之后

#>tar zxf pam_mysql-version.tar.gz
#>cd pam_mysql-version
#>./configure --with-mysql=/path/to/mysql --with-openssl=/usr
#>make
#>make install

以下按照实际情况修改斜体字段
在MySQL服务器上执行创建sysauth数据库

create database if not exists `sysauth`;
USE `sysauth`;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*Table structure for table `logs` */
DROP TABLE IF EXISTS `logs`;
CREATE TABLE `logs` (
`messages` varchar(500) NOT NULL,
`pid` varchar(50) NOT NULL,
`user` varchar(20) NOT NULL,
`host` varchar(50) NOT NULL,
`rhost` varchar(50) NOT NULL,
`time` varchar(50) NOT NULL,
`id` int(11) NOT NULL auto_increment,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*Table structure for table `users` */
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`username` varchar(50) NOT NULL default '',
`password` varchar(50) NOT NULL default '',
`id` int(11) NOT NULL auto_increment,
`state` bit(1) NOT NULL,
`active` tinyint(1) NOT NULL,
`temperory` tinyint(1) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

在/etc/security/下创建sshd_pam_mysql.conf

users.host=MySQLDataBaseHost
users.database=sysauth
users.db_user=MySQLDBUser
users.db_passwd=MySQLDBPassword
users.table=users
users.user_column=username
users.password_column=password
users.status_column=state
users.password_crypt=3
users.where_clause=users.active=1
verbose=0
log.enabled=true
log.table=logs
log.message_column=messages
log.pid_column=pid
log.user_column=user
log.host_column=host
log.rhost_column=rhost
log.time_column=time
以上users.password_crypt是选择用户密码加密方式
0 ->明文密码
1 -> MySQL的crypt加密
2 -> MySQL的password加密
3 -> md5加密
4 -> sha1加密(0.61和0.71pre2及以后)
其他参数可以参见pam_mysql的FAQ和README

在向MySQL数据库的users表添加用户(示例,注意)之后, 可以去修改/etc/security/sshd
sshd默认内容为:
#%PAM-1.0
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
session optional pam_keyinit.so force revoke
session include system-auth
session required pam_loginuid.so

应该修改为:
#%PAM-1.0
auth required /lib/security/pam_mysql.so config_file=/etc/security/sshd_pam_mysql.conf
account required /lib/security/pam_mysql.so config_file=/etc/security.sshd_pam_mysql.conf
account required pam_nologin.so
session optional pam_keyinit.so force revoke
session include system-auth
session required pam_loginuid.so

最后/etc/init.d/sshd reload, 开启新的终端进行测试即可

添加用户示例:
insert  into `users`(`username`,`password`,`state`,`active`,`temperory`) values ('root',md5('123456'),'\0',1,0),('suchasplus',md5('654321'),'\0',1,0);
添加用户的注意事项:
用户名一定要是系统中真实存在的用户, 即/etc/passwd必须存在用户, useradd username即可
pam_mysql只是更换验证方式, 并不是LDAP
采用MD5加密验证出错的可能原因:
很多版本的Linux都会出现采用0/1/2加密方式可以通过,但是MD5加密后会报错的情况,RH9上经测试不会报错, 但是CentOS 51. x64会报错.
设置verbose = 1
tail -F /var/log/secure可以看到
non-crypt()ish MD5 hash is not supported in this build.
解决方法是
ln -s /usr/include/openssl/md5.h /usr/include/md5.h
然后重新编译就好, 虽然编译的时候还是会报死都找不到md5.h -_-#!
lighttpdNginx结合使用, Nginx在前端作为反向代理, 由Apache和Lighttpd处理请求,并且记录access_log
Nginx和Lighttpd及Apache是通过lo进行数据交换的,lo中过滤出来的数据是有真实IP的。
Nginx设置
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
Squid也可以设置相应的HTTP Header
但是,access_log中,Apache可以得到Real Remote IP, 但是Lighttpd只能得到127.0.0.1.  lvs使用Lighttpd没有这个问题
原因(来源)是:
Lighttpd开发人员认为, 所有通过X-Forwarded-For的来的IP不一定是真实的,有些可以Trust,有些不能,所以出去安全的考虑, Lighttpd在1.4.13之后添加了一个名为mod_extforward的module,并且在版本1.4.18的时候释出了一个稳定版本. mod_extforward是Apache mod_extract_forwarded的Lighttpd实现,功能雷同, 通过extforward.forwarder = ("10.0.0.232" => "trust")的表达式来标定来源安全的主机。
mod_extforward在默认的lighttpd.conf中没有写入。
mod_extforward必须在mod_accesslog之后加载。

ps:之前rinetd测试端口转发的时候发现sina后端主机严格限定了请求来源, 对非前端主机的请求报错。

[CPAN]perl module install memo

| | Comments (0) | TrackBacks (0)
Life with CPAN
CPAN on Mac OS X
Configuring Mac OS X to Install Perl Modules

MacOSX上通过CPAN安装Perl Module的关键在于..
你必须先安装一个C编译器,比如
XCode Tools,或者Inter C++ Compiler

ImageMagick在RHEL上需要先卸载原有的rpm,然后下载一份最新的source包
./configure
make
make install之后
在/path/tp/ImageMagick/src下的PerlMagick下执行
perl Makefile.PL
make
make test
make install
--EOF--

[python]当IT民工遇上女人

| | Comments (0) | TrackBacks (0)
Django,这家公司维护着一个基于Python编程语言的的web敏捷开发框架,他们可能因一次例行的月度技术碰头会而名声远扬。

这种技术交流会通常是很有趣的,Python开发社区的精英们在Lawrence碰面,交流他们的项目,炫耀他们的代码。

如果用一个词来形容最近的一轮聚会,那就应该是"搞笑",如果再加一个字,那就是"囧"

晚8点,当越来越多的IT民工开始在房间中夸夸其谈的时候,大约二三十名穿着皮大衣的女子开始包围办公室,

大约8点一刻,那群女子开始脱掉她们的皮衣,并且打出标语牌
"要多少生命换取一件皮大衣?"
"蛇是动物,动物也是人!"

困惑的程序员们跑出大门看着外面发生的事情

a.t.t
ExtJS莫名的小错误有时候令人很恼火
原因就是在items下的项目属性中,最后一个属性和后面加了逗号的话,很有可能导致IE不执行,但是FF正常
ps:Spket IDE还是很好用的,虽然有些小bug

恩. 增补一下, openLaszlo我没机会, 从Flex下手吧
最近在使用CACTI配置SNMP字符串的时候,出现了一个错误Error: Passwords do not match, please retype. 此问题出现的次数不多,但是基本每人都遇到过..
CACTI的版本是 0.87
原因很简单
你肯定的使用是Windows XP SP2(sp3未测试)上的IE7或者FF3, FF2也有可能出现此情况
可能的原因是开启了自动密码存储
Camino在MacOSX上也有可能出现此情况
Opera和Safari还没有听说过报此错误, 但是Safari的keychain可能会引发类似的问题
最终我是在Windows XP SP2上运行safari搞定此事的

lighttpd快速性能优化

| | Comments (2) | TrackBacks (0)

在lighttpd.conf中添加

server.max-keep-alive-requests = 0
server.event-handler = "linux-sysepoll"
server.max-fds = 8192
server.stat-cache-engine = "simple"

先解决高负载+Too many open files+out of fds的问题~

ps:默认编译厄stat-cache-engine不支持fam?

明天接着研究官方性能文档

Tomcat宕机分析

| | Comments (0) | TrackBacks (0)

Lighttpd + Tomcat@Linux经常宕机, html正常,Tomcat经常挂掉.

网上搜索的Tomcat加速方法都找了,BEA推荐ulimit fod为4096,俺们设置成8192照样挂

lsof -p pid.of.Tomcat.Instance | wc -l 发现已经超过了8200

为啥呢?

lsof 一条一条的看~

发现都是lecene的索引文件的open~

同开发者交流了一下发现是索引文件打开没有关闭之故....

so~

让vsftpd支持FXP

| | Comments (0) | TrackBacks (0)
vsftpd & fxp
默认情况下vsftpd不支持fxp功能
启用方法如下:
修改/etc/vsftpd/vsftpd.conf
添加:

关于Tomcat5.5的server.xml的localhost配置

| | Comments (0) | TrackBacks (0)

一般来说,给tomcat添加虚拟主机是需要域名的,但是在测试过程或者特殊情况下,是没有配置域名解析的。
那么,想通过域名访问的话怎么办呢?
首先要在host下创建相关的context条目,比如uc3和uc3client。

<Context path="/uc3" reloadable="true" docBase="/usr/local/Apps/htdocs/uc3" />
<Context path="/uc3client" reloadable="true" docBase="/usr/local/Apps/htdocs/uc3client/uc3client" />

但是如果想把uc3放置在"/'下的话,直接修改path为"/'是不行的,默认情况下会转向到webapps的ROOT下
此时,把webapps的ROOT移除或者改名即可....

subversion和TortoiseSVN配置笔记

| | Comments (0) | TrackBacks (0)

subversion 1.4.3
运行于RHEL4U3上
在subversion.tigris.org上下载1.4.3版X86_64.rpm安装
部分附加软件需要gcc3.4.6版本
本机器上gcc为3.4.5,不升级

安装
apr-0.9.12-2.x86_64.rpm           
mod_dav_svn-1.4.3-1.rhel4.x86_64.rpm
apr-debuginfo-0.9.12-2.x86_64.rpm 
subversion-1.4.3-1.rhel4.x86_64.rpm
apr-util-0.9.12-1.x86_64.rpm      
subversion-perl-1.4.3-1.rhel4.x86_64.rpm

安装后svnserve  --version 测试显示为ver1.4.3
安装成功

$: svnadmin create --fs-type fsfs /svn
$: chown -R svn:svn /svn
$: su svn
$: cd /svn; vi conf/svnserve.conf

 添加
 anon-access = none #匿名用户无访问权限
 auth-access = write #认证用户写权限
 password-db = passwd #认证db指向,默认为同目录下passwd文件
$: :wq #保存并退出vi
$: vi passwd
 添加用户名密码,格式为 username = password
 示例: unioncaster = unioncaster
$: :wq
$: killall svnserve
$: svnadmin --version #查看svnserve是否启动
$: lsof -i :3690 #查看svnserve是否正常监听

TortoiseSVN 1.4.3 Build 8645
安装于windows上,加装中文语言包
采用默认设置
具体请参考TortoiseSVN手册

RHEL4.3 x86_64下bugzilla简略配置指南

| | Comments (0) | TrackBacks (0)

系统为RHEL4 Update3 X86_64
Apache和MySQL都是系统默认安装
Apache 2.0.52
MySQL 4.1.12
bugzilla版本2.20
中文包2.20-cn
在bugzilla.sf.net下载
解压缩到/var/www/cgi-bin/
运行./checksetup.pl
验证perl环境
按照提示来下载所需要的包
方式有两种:
perl -MCPAN -e 'install "MODULE:NAME"'
这种方式第一次安装需要设定下载地点
第二种:
http://search.cpan.org下载相应的包
然后
perl Makefile.PL
make
make test
make install

然后成功完成./checksetup.pl
编辑./localconfig
设定
server'host 
database name 
MySQL username 
Password for MySQL

保存退出

因为cgi-bin目录的权限问题,需要在Apache conf中设置Alias /bugzilla /var/www/cgi-bin/bugzilla
否则css和js无法调用,同时显式声明

<Directory "/bugzilla">
Options Indexes FollowSylinks
Options +ExecCGI
AllowOverride Limit
Allow from from all
</Directory>

同时添加AddHandler cgi-script .cgi .pl
将Directory修改DirectoryIndex index.html index.htm index.php index.cgi
保存退出
apachectl -t测试Syntax
然后apachectl restart

测试http://localhost/bugzilla即可

中文化问题:
没有启用中文包的时候,MySQL编码是utf8-general-ci,浏览器编码为utf-8,插入中文偶有乱码,但是基本正常
按照中文包中manual设定,将Bugzilla/CGI.pm中第55行更改为:$self->charset('UTF-8')
结果为启用cn-utf8包时,界面正常,新建中文bug显示为乱码
启用cn-gb2312包时,界面乱码,新建中文bug显示正常
解决办法:
将CGI.pm中第55行更改为:$self->charset('GB2312')

/**
更改输出编码为GB2312
*/
更改MySQL数据库编码为:gb2312-general-ci
在bugzilla目录下执行: perl -pi -e "s/Content-Type\: text\/html/Content-Type\: text\/html\; charset=gb2312/i" *.cgi

*.pl
/***


/var/www/bugzilla目录下执行,它的作用是对当前目录下的所有cgi,perl程序中的
Content-Type: text/html
都替换为:
Content-Type: text/html; charset=gb2312
在bugzilla系统设置(parameters)中设定语言(languages)为cn_gb2312

About this Archive

This page is a archive of recent entries in the LJAMP category.

资本市场 is the previous category.

Plus Vision is the next category.

Find recent content on the main index or look in the archives to find all content.