CentOS+Apache+PHP+MYSQL+Python+Trac

这个是我给公司配服务器时候做的记录, 先占个位置, 以后补全.

CentOS 4.5

操作系统用的是CentOS 4.5 , 主要是因为CentOS不会有版权问题.

MYSQL 5.0.5la

root@localhost

shell> groupadd mysql
shell> useradd -g mysql mysql

shell> ./configure –prefix=/usr/local/mysql
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> bin/mysql_install_db –user=mysql
shell> chown -R root .
shell> chown -R mysql var
shell> bin/mysqld_safe –user=mysql &

#echo '/usr/local/mysql/bin/mysqld_safe –user=mysql &' >> /etc/rc.local

Apache没有用2.2, 而是用了2.0, 比较稳定也足够用.

APACHE 2.0.63

DocumentRoot /usr/local/apache2/htdocs

shell> ./configure –prefix=/usr/local/apache2 –enable-dav –enable-dav-fs –enable-so –enable-rewrite
shell> make
shell> make install

PHP 5.2.5

shell> ./configure –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql=/usr/local/mysql –prefix=/usr/local/php5

shell> make
shell> make install
shell> cp php.ini-dist /usr/local/php5/lib/php.ini

shell> vim /usr/local/apache2/conf/httpd.conf

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

DirectoryIndex index.php index.html index.htm

AllowOverride All

/etc/rc.d/rc5.d/S97lamp

/usr/local/mysql/bin/mysqld_safe –user=mysql &
/usr/local/apache2/bin/apachectl start

下面这些东西是给php提供gd支持的.

zlib 1.2.3

freetype 2.1.10

libpng 1.2.25

jpeg-6b

gd 2.0.33

tar zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
make install

tar zxvf freetype-2.1.10.tar.gz
cd freetype-2.1.10
./configure –prefix=/usr/local/modules/freetype
make
make install

tar zxvf libpng-1.2.8-config.tar.gz
cd libpng-1.2.8-config
./configure
make
make install

tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure –prefix=/usr/local/modules/jpeg6 –enable-shared –enable-static
make
make install

tar zxvf gd-2.0.33.tar.gz
cd gd-2.0.33
./configure –prefix=/usr/local/modules/gd –with-jpeg=/usr/local/modules/jpeg6 –with-png –with-zlib –with-freetype=/usr/local/modules/freetype
make
make install

先把目录建了, 要不编译的时候会找不到文件夹.

mkdir jpeg6

mkdir jpeg6/include

mkdir jpeg6/lib

mkdir jpeg6/bin

mkdir jpeg6/man

mkdir jpeg6/man/man1

shell> ./configure –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql=/usr/local/mysql –prefix=/usr/local/php5 –with-iconv –with-mbstring –enable-mbstring –with-jpeg-dir=/usr/local/jpeg6/ –with-zlib –with-png –with-freetype-dir=/usr/local/freetype/ –with-gd=/usr/local/gd/

Subversion 1.4.6

shell>./configure –prefix=/usr/local/subversion

一开始打算用mysql来存放账号密码的, 建好了数据表但是没有用.

CREATE DATABASE svn;
CREATE TABLE user (
username varchar(25) collate utf8_unicode_ci NOT NULL default ‘’,
passwd varchar(25) collate utf8_unicode_ci NOT NULL default ‘’,
groups varchar(25) collate utf8_unicode_ci NOT NULL default ‘’,
PRIMARY KEY (username),
KEY groups (groups)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

mod_python 3.3.1

./configure –with-apxs=/usr/local/apache2/bin/apx
make
make install

clearsilver-0.10.5

shell>./configure –disable-apache –disable-csharp –disable-ruby –prefix=/usr/local/clearsliver –with-python

shell>make

shell>make install

shell>cd python/

PYTHON_SITE='python -C
“import sys; print [path for path in sys.path if path.find('site-packages') != -1][0]”'

shell>python setup.py install

mysql-python 1.2.2

set.cfg
修改mysql_config绝对路径
安全线程->false
shell>python setup.py build
shell>puthon setup.py install

trac 0.11b2

tar zxvf trac-0.10.4.tar.gz

python ./setup.py install

trac-admin /usr/local/trac/order initenv    (/usr/loca/trac 目录会自动创建)

#Project Name [My Project]> test
#Database connection string [sqlite:db/trac.db]> mysql://trac:trac@localhost/trac  //前面创建数据库所用的到信息
#Repository type [svn]>     //这里为空,直接回车
#Path to repository [/path/to/repos]> /var/svn/order   //SVN仓库地址

<Location /trac>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /usr/local/trac
SetEnv PYTHON_EGG_CACHE /tmp
PythonOption TracUriRoot /trac
AuthType Basic
AuthName “test's trac”
AuthUserFile /var/svn/passwd
Require valid-user

说说现在的办公环境

以前都是自己写东西, 没有注意到团队上的问题, 上班之后发现团队合作和工具的使用是很重要的.

硬件不说, 公司没有很大财力, 我觉得比较理想的是一个人有两台以上的办公电脑, 那样工作效率会比较高, 现在一台电脑用起来很吃力, 特别是最近的项目都用windows 2007 的onenote来写开发文档, 不能跑到linux下写代码了.

版本控制公司用的是svn, 版本控制, 好处不多说, 用起来的确很方便, 只是配的时候不太方便, 现在用的服务器是我配的, 当时配了svn+apache, 还配了trac(一款python的项目管理系统, 可以在web下查看svn记录, 还有bug跟踪等等功能), 但是很少用.

写开发文档目前在用office 2007 的onenote, 这个东西很不错, 可以多人同时修改同一个文档, 而且功能也很强大, 以后准备架设一个office的服务器, 因为onenote使用时必须有一台电脑开共享, 不是很方便.

开发工具大家都用ZDE, 后来有用ZDE for Eclipse的, 功能的确很强大, 还架设了Zend Server, 用来调试php, 功能非常棒, 只是我不喜欢IDE, 所以一直在用EditPlus, 不过用EditPlus的确是有好处的, 因为用ZDE的人普遍反映会记不住很多东西, 因为ZDE太强大了,同事特别推荐我用Emeditor,也很不错, 感觉比EditPlus更强大, 更通用, 只是两款软件都有通病,就是都是收费软件, 其实ZDE也是.

服务器用的是CentOS, 因为不会有版权问题, 公司的打卡系统是自己开发的, 用起来不是很舒服.

我和同事之间经常用用VNC, 就是远程桌面, 这样就免得来回跑了, 公司内部聊天室用IPMSG的, 很小很强大, 开源免费.

同事设计数据库和程序结构的时候用 Enterprice Architect, 这个东西我不太用, 只是用来看别人的设计, 不过这个东西功能还是很好的, 结构关系一目了然, 设计完毕可以直接生成程序代码和sql.

我的电脑上装的东西比较少, 开发环境是Xampp, 以前是AMPXE, 但是后来感觉的确太精简了…

因为经常要测试网页兼容性, 所以IE, Firefox2, Firefox3, Opera都有装, 我应该算装的比较少的, 以前比较喜欢Opera, 因为opera有同步收藏夹功能, 不过后来又回到firefox下了, 现在firefox3出道beta5了, 的确很不错.

ftp软件装了filezilla,  , 管理服务器用的是putty, 还装了pidgin,这个很方便, 开机自启动, QQ,MSN,G-Talk全都齐全了, QQ音乐, 基本上这是工作时候唯一的娱乐,只要一开机, 音乐一定会响起.

桌面是google日历, 平时把计划都写在上面,还有个鱼鱼桌面秀的天气预报放在桌面上.

还有就是我从来不装杀毒软件, 后来装了个安全卫士360, 感觉还不错, 防火墙也够用, 可以做一些清理和防护, 还有简单的杀毒. 前一阵子和磁碟机干上了, 又装了一个usb Cleaner的usb监控.

就写这些, 想起其他的再补上.

debian下编译pidgin2.4.0

edited on March 7, 2008 3:50 PM, 这篇文章是在服务器down掉的日子里写在google doc里的.

终于在debian下成功编译了pidgin2.4.0,简单记录一下.

多数情况下编译不成功或者不能编译都是因为缺少库文件, 下面是编译pidgin2.4.0用到的库,我的debian版本是4.*

  • gcc

  • autoconf

  • gdb

  • automake1.9

  • libgtk2.0-dev

  • libxml2-dev

  • gettext

  • libnss3-dev

  • libnspr4-dev

  • build-essential

  • libxml-parser-perl

  • libglib2.0-dev

  • libglib2.0-dev

  • libgstreamer0.10-dev

  • libnss-dev(用来解决msn的ssl支持问题)

然后
./configure   make make install

后记: 刚刚用linux的时候在网上找编译相关的教程, 一个网友说解决编译失败最简单的方法是把光盘中全部的库都装上… 不过由于我比较懒, 并没有那么长时间来试.

关于错误消息的跳转

下午在做项目的后期测试, 发现错误消息那里会出现一些问题.

为了能保存用户出错之前输入的数据,错误页使用了javascrtp中的history.go(-1)返回出错的页面. 但今天发现在ie下返回页面显示页面已过期,火狐3.0下要求重新发送请求.

在网上找了一下,用

1
session_cache_limiter('private');

可以解决, 但是究竟为什么还没有看明白, 这个函数没有中文版的讲解.

大概这么用:

1
2
3
session_cache_limiter('nocache');  // 清空表单
session_cache_limiter('private');   //不清空表单,只在session生效期间
session_cache_limiter('public');   //不清空表单,如同没使用session一般

不过这样做有一点不妥, 就是原页刷新表单也不会被清空, 验证码在ie下会被缓存.

还有就是错误跳转那里

1
2
3
<script>
window.onload = setTimeout('history.go(-1)',3000);
</script>

这样写ie下会有一个错误, 没深究, 因为opera不支持onload方法,所以一般用下面这样.

1
2
3
4
<script>
jumpto = function(){setTimeout('history.go(-1)',3000);};
window.onload = jumpto;
</script>

还好没有什么错误, 只是不标准而已.

清除了该死的dtajxne.exe!

昨天早上在公司的电脑上感觉不太对劲, ie打开个新链接就自动关掉了, 试了好多次都不行, 感觉象是中毒了, 因为我从来不装杀毒软件的, 所以就在公司的服务器上拉过来一个安全卫士, 没想到安全卫士也一打开就关上了, 研究了半天也没研究明白是怎么回事, 后来公司陈哥发现我的电脑中毒了, 一种叫dtajxne.exe的病毒, 一种非常顽强的病毒, 最要命的是没有专杀工具.

于是我和陈哥开始研究手动杀, 大概半个小时之后被陈哥清除掉了 .

晚上下班去了网吧,  因为清除病毒的时候发现有autorun.inf, 我怀疑这个东西已经传到我的手机和笔记本里了,  去网吧一看果然有.  回寝室之后发现果然笔记本也中了,今天休息, 抽点时间研究了下.

dtajxne.exe的症状如下:

  • 每个分区下都有隐藏文件”xiwiiuy.exe”和”autorun.inf”.
  • 通过任务管理器查看进程有dtajxne.exe和akpfhtq.exe
  • 很多程序, 比如杀毒软件和ie的窗口打开会被自动关闭
  • 使用msconfig命令查看系统启动时发现两项自启动项:”C:\Program Files\Common Files\System\akpfhtq.exe”与”C:\Program Files\Common Files\Microsoft Shared\dtajxne.exe”

解决方法:

在msconfig中禁用 dtajxne.exe和akpfhtq.exe无效, 在注册表中删除相关键值也无效, 病毒主程序meex.exe在windows下看不到.

在网上看了很多帖子都要进入ntfsdos下进行查杀, 但不知道为什么我用光盘进入ntfsdos下还是无法访问ntfs的目录, 所以放弃了这个方法.

没办法只能尝试用安装盘中的windows xpe, 在xpe下删除了”C:\Program Files\Common Files\System\”和”C:\Program Files\Common Files\Microsoft Shared\”目录中的dtajxne.exe和akpfhtq.exe,在”C:\Program Files\”下删除了meex.exe,然后进入每个分区删除隐藏文件”xiwiiuy.exe”和”autorun.inf”,接下来启动windows xp, 在注册表中搜索dtajxne.exe,akpfhtq.exe和xiwiiuy.exe,将相关键值全部清理掉,最后运行msconfig,禁用”C:\Program Files\Common Files\System\akpfhtq.exe”和”C:\Program Files\Common Files\Microsoft Shared\dtajxne.exe”,退出msconfig重启电脑,病毒清除.