一、    系统要求

            Freebsd6.2

二、    安装软件

     将以下所需要的软件放在/usr/src/software目录下,没有就自己新建

            httpd-2.0.58.tar.bz2

            php-5.2.0.tar.bz2

            perl-5.8.8

            mysql-5.0.41.tar.gz

            libxml2-2.6.13.tar.gz

            Libconv

            Iconv
阅读全文
我现在是自己做,但我此前有多年在从事软件开发工作,当回过头来想一想自己,觉得特别想对那些初学JAVA/DOT。NET技术的朋友说点心里话,希望你们能从我们的体会中,多少受点启发(也许我说的不好,你不赞同但看在我真心的份上别扔砖头啊).

  一。 在中国你千万不要因为学习技术就可以换来稳定的生活和高的薪水待遇,你千万更不要认为哪些从事 市场开发,跑腿的人,没有前途。

  不知道你是不是知道,咱们中国有相当大的一部分软件公司,他们的软件开发团队都小的可怜,甚至只有1-3个人,连一个项目小组都算不上,而这样的团队却要承担一个软件公司所有的软件开发任务,在软件上线和开发的关键阶段需要团队的成员没日没夜的加班,还需要为测试出的BUG和不能按时提交的软件模块功能而心怀忐忑,有的时候如果你不幸加入现场开发的团队你则需要背井离乡告别你的女友,进行封闭开发,你平时除了编码之外就是吃饭和睡觉(有钱的公司甚至请个保姆为你做饭,以让你节省出更多的时间来投入到工作中,让你一直在那种累了就休息,不累就立即工作的状态)

  更可怕的是,会让你接触的人际关系非常单一,除了有限的技术人员之外你几乎见不到做其他行业工作和职位的人,你的朋友圈子小且单一,甚至破坏你原有的爱情(想象一下,你在外地做现场开发2个月以上,却从没跟女友见过一面的话,你的女友是不是会对你呲牙裂嘴)。

  也许你拿到了所谓的白领的工资,但你却从此失去享受生活的自由,如果你想做技术人员尤其是开发人员,我想你很快就会理解,你多么想在一个地方长期待一段时间,认识一些朋友,多一些生活时间的愿望。阅读全文
http://hi.baidu.com/jinxinxin163/blog/item/6ebce5cbf5bc051bbf09e613.html
http://hi.baidu.com/lifei_cqu/blog/item/60afbbb04a8cfd5208230273.html
http://www.lslnet.com/linux/dosc1/63/linux-413954.htm
http://bbs.chinaunix.net/viewthread.php?tid=976765
原文是Multiple column index vs multiple indexes

对于要经常查询的含量大量数据的数据库,建立索引是非常重要的,建立索引一般都是在where语句用得较多的列上。现在有个问题,如果一个表有多个列需要建立索引,是把所有列建成一个索引,还是对每一个列建一个索引,上篇文章做了一个介绍,这是作者得出的结论,Conclusion: For benchmarked queries we can see Multiple Column index beats Index Merge in all cases when such index can be used. It is also worth to watchout a MySQL may decide not to do Index merge (either intersection or union) but instead do full table scan or access table picking only one index on the pair.意思应该是说对多个列建索引比对每个列分别建索引更有优势,而且要知道索引建立得越多就越占磁盘空间,在更新数据的时候速度会更慢。

这是一个多列索引的问题,这个问题是如何安排列的顺序是至关重要的,比如需要对一个表里面的两个字段uid, rstatus建一个索引,那么索引的顺序是(uid, rstatus)还是(rstatus, uid)呢。在搞清楚如何安排顺序之前先了解一个概念,cardinality:金山的翻译是"集的势",比如,Mytest表有1700条记录,rstatus字段有750个不同的记录,那么就可以说We have a cardinality of 750 for rstatus。总的规则可以说是cardinality越大的字段应该排在索引的第一位就是说索引的位置是(rstatus, uid),因为cardinality越大那么第一次取出来的记录集就越小,再进行第二次查询的次数就越少了。不过这只是对于建两个索引的规则,如果是三个以上就没有那么简单了,具体地看原文,有比较详细的例子。还需要提出的是即使我们建了一个很有效的索引,但是查询优化器也许会选择不用它,如果它会考虑更多因素以决定这个索引是否有足够的效率。

It was also pointed out to me, that even if an efficient multi-column index is created, the query optimizer may choose to never use it. This is
because the optimizer looks at further statistics to determine if the index would be efficient enough or not.



官方文档:http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html

老外的博客:

http://blog.decaresystems.ie/index.php/2007/05/21/how-to-create-a-successful-multi-column-index-from-first-principals/ 也有比较详细的介绍mysql如何使用联合索引的!

我试了一下将建立联合索引的顺序变化为KEY `u_r` (rstatus,`uid`) 出现:ref  key_len 都有变化,如下:

mysql> explain select * from mytest where uid in (1,2) and rstatus = 1;
+----+-------------+--------+-------+---------------+------+---------+------+------+-------------+
| id | select_type | table  | type  | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+--------+-------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | mytest | range | u_r           | u_r  | 8       | NULL |    2 | Using where |
+----+-------------+--------+-------+---------------+------+---------+------+------+-------------+
1 row in set (0.03 sec)

mysql> INSERT INTO `mytest` (`id`, `uid`, `rstatus`) VALUES(null, 3, 1);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO `mytest` (`id`, `uid`, `rstatus`) VALUES(null, 4, 1);
Query OK, 1 row affected (0.00 sec)

mysql> explain select * from mytest where uid in (1,2) and rstatus = 1;
+----+-------------+--------+-------+---------------+------+---------+------+------+-------------+
| id | select_type | table  | type  | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+--------+-------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | mytest | range | u_r           | u_r  | 8       | NULL |    2 | Using where |
+----+-------------+--------+-------+---------------+------+---------+------+------+-------------+
1 row in set (0.00 sec)

mysql> explain select * from mytest where uid in (3,4) and rstatus = 1;
+----+-------------+--------+------+---------------+------+---------+-------+------+-------------+
| id | select_type | table  | type | possible_keys | key  | key_len | ref   | rows | Extra       |
+----+-------------+--------+------+---------------+------+---------+-------+------+-------------+
|  1 | SIMPLE      | mytest | ref  | u_r           | u_r  | 4       | const |    1 | Using where |
+----+-------------+--------+------+---------------+------+---------+-------+------+-------------+
1 row in set (0.00 sec)

老外原文:

Conclusion: For benchmarked queries we can see Multiple Column index beats Index Merge in all cases when such index can be used. It is also worth to watchout a MySQL may decide not to do Index merge (either intersection or union) but instead do full table scan or access table picking only one index on the pair.



   我估计是对多个列建索引比对每个列分别建索引更有优势,mysql会根据最好的平均效率选取需不需要索引,如Mysql分析发现不用索引更快那就不必用到索引了!

in适用于外表大内表小的情况!与数据的多少也很有关系的!

传说中FreeBSD比linux稳定,大型网站几乎都建立在FreeBSD系统上,我一直疑惑难道linux是否真的不能做大型网站。于是用netcraft网站做了个测试:

http://toolbar.netcraft.com/site_report?url=www.phpchina.com
按照上面的链接你就可以查询任何一个网站的服务器架构,当然,可信度和准确度我不能保证。下面是我测试的案例:

www.phpchina.com清一色linux;
www.tencent.com清一色linux;
www.qq.com清一色linux;
www.taobao.com linux;
www.ebay.com.cn 查询显示OS清一色linux,WebServer清一色IIS,令人费解;
www.alibaba.com 清一色linux;
www.bokee.com清一色的linux;
www.google.com清一色linux;
www.pconline.com.cn linux;
www.yninfo.com清一色的linux;
www.tom.com 清一色Debian;
www.cctv.com linux+sun的服务器;
www.126.com 清一色linux
www.163.com清一色linux,大家或许都认为网易是使用FreeBSD的,

但163/126就全部用上了linux,令人费解。

   看来用linux做大站的也不少啊!!!谁说linux不能做大站呢?

  另外又发现两个奇怪的东东:
www.ebay.com 居然清一色的win2000!!!
http://www.myspace.com 全美访问量第一,居然也清一色的win2003;

    在我印象中,大型网站是压根不能用windos系统的。但这两个案例给我的理论一个有力的回击:系统稳定与否,关键还是在人!
    无论是Windows还是FreeBSD还是Linux都可以做大型网站,只要人足够牛X就行。这里不谈windows了,还是从大家口水仗打得最厉害的linux和freebsd分析分析吧。
    首先说明一点:为什么不拿linux和windows比较,而只是和freebsd比较呢?答案在于linux或是freebsd都感觉到了对方带来的压力,都认定对方是自己的竞争对手。既然称得上是对手,自然是各有所长,难分轩轾,谁也不能把谁压倒罢了。

    论坛里争论FreeBSD和linux谁谁更好,其实是从一个静态的角度来看的,在某个特定时间里,FreeBSD或许比linux更稳定,linux或许比FreeBSD更快捷,但两家都在动态发展,没有谁永远领先,没有谁永远落后,FreeBSD稳定的特性,Linux2.6可以超越它;而linux 快捷的优势,FreeBSD也会迅速居上。我就不信,linus和他的黑客团队在技术上会输给学院派的FreeBSD团队?或者FreeBSD的高手们比不上一群黑客,?他们谁都可以暂时领先,谁都可以暂时落后,但谁都不是吃干饭的!

    目前流行这么一种传说:linux和freebsd内核性能上相比:linux2.2比freebsd要差,linux2.4和freebsd难分伯仲,而linux2.6比freebsd好得多。这里freebsd被静态化了,以一个动态发展的linux去比较某个固定版本的freebsd,显然是有失公平的。有道是:士别三日,即更刮目相看,更何况是技术日新月异的IT行业!
    又有这么一种说法:LINUX被黑的多而FreeBSD被黑的少,盖出于安全性较逊?这也是无稽之谈,用liunx的人基数比freebsd大,菜鸟自然也就更多了。系统安不安全关键在人,如果你不信,可以尝试去黑一下www.ebay.com或www.myspace.com,他们的服务器可都是windows哟。

    其实两家最根本的差别不在技术,而在于设计理念:linux不求最稳,但求最新;FreeBSD不求最新,只求最稳——这样说也许不对,但也能反映一些问题。
    我对FreeBSD与Linux比较的最终结论是:谁好谁稳定都只是暂时的,两家的存在状态,是一个“既生瑜何生亮”的问题,在长久的发展过程中,技术上的常胜将军并不存在,双方只有此消彼长,各领风骚。至于大家为什么非要证明FreeBSD比Linux好或Linux比FreeBSD好,我想程序员普遍都喜欢追求完美,非要用最好最完美的系统才甘心吧!
   FreeBSD和Linux我都用过,不在超大型应用中,很难感受两者的差别。个人选择的linux,考虑到使用linux的人比较多,商机自然也就更多吧,钱在哪眼光就看哪,至少linux的就业机会比FreeBSD多。当然,这是非技术因素的考虑了。

------------------------------------------------------------------------------------------------------
51NET以太网开发板(豪华版):http://www.hificat.com/net_2/net_photo.asp
我看了一下产品介绍提问如下(6个):


1.继电器的电流低了点(10A/250VAC),能否做成(15A/250VAC)的?

2.cpu是40M赫兹的w78E58bp-40,能匹配稍微大点吗?

3.32k源程序编译空间的代码,大体靠谱估算了一下有1200行的代码量,能否扩展为64k?

4.偶然出现忽然断电,会不会冲击板子的电器元件,如果无给个好的解决方案也行!

5.Ds18B20是一个在温度液晶显示一个温度,可否做一个demo程序为:ds18B20多个(16个),在液晶并排显示为16个的温度,并结合16路控制继电器的来通段,如果这个不好回答,回答能否在该板实现也可.

6.板子的维修问题?保修多长时间,过保修后,可否返修?付费问题!












GNOME 是一个用户界面友好的桌面环境,能够使用户很容易地使用和配置他们的计算机。 GNOME 包括一个面板(用来启动应用程序和显示状态),一个桌面(存放数据和应用程序的地方),一套标准的桌面工具和应用程序, 和一套与其他人相互协同工作的协议集。其他操作系统的用户在使用 GNOME提供的强大的图形驱动环境时会觉得很好。
安装 GNOME的最简单的方法是在FreeBSD安装过程中通过 “Desktop Configuration”菜单来进行。它们也可以很容易地从一个package或Ports Collection安装:要从网络安装GNOME,只要键入: # pkg_add -r gnome2 从源代码编译GNOME,可以使用 ports树: # cd /usr/ports/x11/gnome2 # make install clean 一旦GNOME被安装好, X Server必须被告知启动 GNOME以代替默认的窗口管理器。 如果在适当的位置已经定制好了文件.xinitrc, 简单地将启动当前窗口管理器的那行替换为 /usr/X11R6/bin/gnome-session。如果没有对配置文件做过什么特殊的改动, 只需简单地键入: % echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrc 接着,键入startx, GNOME桌面环境就启动了。
Note: 如果已经使用了一个像 XDM这样的显示管理器,就不能这样做。而是,用同样的命令创建一个可执行文件.xsession。要这样做,需要先编辑文件,然后用 /usr/X11R6/bin/gnome-session替换已存在的窗口管理命令: % echo "#!/bin/sh" > ~/.xsession % echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession % chmod +x ~/.xsession 另一个选项是在登陆时配置显示管理器允许您选择窗口管理器;有关 KDE 细节会解释如何使用kdm, KDE显示管理器来做。
X11 通过“RENDER”扩展来支持 anti-aliasing。 GTK+ 2.0 以及更高的版本(被 GNOME使用的工具包)可以使用这个功能。 所以,使用最近的软件, anti-aliasing 可以应用在 GNOME桌面环境中。只需要依次选择 应用程序->桌面首选项->字体,然后选上 最佳形状, 最佳对比度,或者像素圆滑(LCD)。对于 GTK+ 应用程序,它们不是 GNOME 桌面的一部分,在启动程序前需要设置 环境变量GDK_USE_XFT的值为1。
1.安装CVSUP:
最好在安装时装好cvsup;

freebsd# cd /usr/ports/net/cvsup-without-gui/
freebsd# make install clean

2.升组源码:
freebsd# ee /usr/share/examples/cvsup/stable-supfile
把:
default host=CHANGE_THIS.FreeBSD.org
改为:
default host=cvsup.FreeBSDchina.org

freebsd# cvsup -g -L 2 /usr/share/examples/cvsup/stable-supfile
freebsd# cd /usr/obj
freebsd# chflags -R noschg *
freebsd# rm -rf *

3.重新编译源码和内核

freebsd# cd /usr/src
freebsd# make buildworld
freebsd# make buildkernel KERNCONF=freebsd
freebsd# make installkernel KERNCONF=freebsd
reboot

4.重新登陆系统进入单用户模式
启动时boot -s

# adjkerntz -i         //调整内核时区
# fsck -p              //整理文件系统,自动修正所有可以安全地更正且不会导致数据丢失的问题
# mount -u /           //装载根分区
# mount -a -t ufs      //装载所有的ufs分区
# swapon -a            //启动虚拟内存,打开交换空间
# mergemaster -p       //选择YES
# cd /usr/src
# make installworld
# mergemaster          //要安装的全选"i"
# reboot

源码和内核升级完毕
写了一个批量自动上传下载文件的小工具。 特点:

   1. 文件名中可包含日期如TEST20070212.txt
   2. 可多次运行,不会重复处理已成功的条目
   3. 配置方便,异常处理完善

想来今后或许还用得上,所以放在这里晒一下。好不好用各位试下就知道了。 myftp.sh内容如下:


#!/bin/bash
#Author: Robin Guo

DATE_YYYYMMDD=`date +%Y%m%d`
DATE_YYMMDD=`date +%y%m%d`
DATE_YYYY_MM_DD=`date +%Y-%m-%d`

#日志文件~/log/YYYYMMDD.LOG
FTP_LOG=~/log/${DATE_YYYYMMDD}.LOG

#Function ftp_download
#Example:
#ftp_download ftp://interfs:qwerasdf@10.245.10.245:21/home/interfs/etc/config.test config.test
ftp_download()
{
if [ "$#" = "2" ]
then
if [ -f $2 ]
then
#文件已存在,说明上次下载已成功,可跳过
echo "INFO : $2 exists" | tee -a $FTP_LOG
else
echo "FROM : $1" | tee -a $FTP_LOG
echo "TO   : $2" | tee -a $FTP_LOG
curl -s -P 21000 --connect-timeout 8 --max-time 60 $1 -o $2 > /dev/null  2>&1
CURL_RETCODE=$?
if [ "$CURL_RETCODE" = "0" ]
then
echo "INFO : downlaod $1 is ok" | tee -a $FTP_LOG
touch $2 > /dev/null 2>&1
else
echo "ERROR: download $1 is failed. curl return ($CURL_RETCODE)" | tee -a $FTP_LOG
rm -f $2 > /dev/null 2>&1
fi
fi
echo "" | tee -a $FTP_LOG
fi
}

#Function ftp_upload
#Example:
#ftp_upload uploadfile.txt ftp://interfs:qwerasdf@10.245.10.245:21/home/interfs/etc/upload.txt

ftp_upload()
{
if [ "$#" = "2" ]
then
if [ -f $1 ]
then
if [ -f $1.ok ]
then
#“文件.ok”存在,说明上次已成功上传,可跳过
echo "INFO : already upload $1" | tee -a $FTP_LOG
else
echo "FROM : $1" | tee -a $FTP_LOG
echo "TO   : $2" | tee -a $FTP_LOG
curl -s -P 21000 --connect-timeout 8 --max-time 60 -T $1 $2 > /dev/null  2>&1
CURL_RETCODE=$?
if [ "$CURL_RETCODE" = "0" ]
then
#上传成功,做标记
touch  ${1}.ok > /dev/null 2>&1
echo "INFO : upload $1 is ok" | tee -a $FTP_LOG
else
echo "ERROR: upload $1 is failed. curl return ($CURL_RETCODE)" | tee -a $FTP_LOG
fi
fi
else
echo "ERROR: upload failed. $1 not exists." | tee -a $FTP_LOG
fi
echo "" | tee -a $FTP_LOG
fi
}

date "+%y-%m-%d %H:%M" | tee -a $FTP_LOG

if [ "$#" != "1" ]
then
echo "Usage: ftp.sh ftp.cfg"
exit 1
fi

FTP_CONFIG=$1
if [ -f $FTP_CONFIG ]
then
echo "INFO : Config File: $FTP_CONFIG" | tee -a $FTP_LOG
echo "" | tee -a $FTP_LOG
else
echo "ERROR: Config File $FTP_CONFIG not exist" | tee -a $FTP_LOG
exit 1
fi

killall curl > /dev/null 2>&1

#从配置中读取条目
while read V_SYSID V_FILE_NAME V_DIRE V_REMOTE_PATH V_LOCAL_PATH
do
FIRST_CHAR=${V_SYSID:0:1}
if [ "$FIRST_CHAR" != "#" ]
then
#展开文件名中的日期段
FILE_NAME=${V_FILE_NAME}
FILE_NAME=${FILE_NAME/\$YYYYMMDD\$/$DATE_YYYYMMDD}     # $YYYYMMDD$ to 20070120
FILE_NAME=${FILE_NAME/\$YYMMD\$/$DATEYYMMDD}           # $YYMMDD$ to 070120
FILE_NAME=${FILE_NAME/\$YYYY-MM-DD\$/$DATE_YYYY_MM_DD} # $YYYY-MM-DD$ to 2007-01-20
if [ "$V_DIRE" = "DNLD" ]
then
echo "INFO : Download ${FILE_NAME} ... " | tee -a $FTP_LOG
ftp_download ${V_REMOTE_PATH}${FILE_NAME} ${V_LOCAL_PATH}${FILE_NAME}
fi
if [ "$V_DIRE" = "UPLD" ]
then
echo "INFO : Upload ${FILE_NAME}... " | tee -a $FTP_LOG
ftp_upload ${V_LOCAL_PATH}${FILE_NAME} ${V_REMOTE_PATH}${FILE_NAME}
fi

fi
done < $FTP_CONFIG

典型的配置范例myftp.cfg如下:

#SYSID FILE_NAME DIRECTION(DNLD/UPLD) REMOTE_PATH/ LOCAL_PATH/
0001 010YCDZ$YYYYMMDD$.txt   UPLD ftp://user:passwd@10.245.62.226:21/dz/ /home/myftp/whdl/
0002 010YCJZ$YYYYMMDD$.TXT   UPLD ftp://user:passwd@10.245.62.226:21/jz/ /home/myftp/whdl/
0003 010YJJS$YYYY-MM-DD$.TXT DNLD ftp://user:passwd@10.245.62.226:21/pk/js/ /home/myftp/whdl/
点击在新窗口中浏览此图片

Installation (安装)

wget http://www.monkey.org/~provos/libevent-1.3e.tar.gz
tar zxvf libevent-1.3e.tar.gz
cd libevent-1.3e/
./configure --prefix=/usr
make && make install
cd ../

wget http://dbcached.googlecode.com/files/dbcached-1.0.beta2.tar.gz
tar zxvf dbcached-1.0.beta2.tar.gz
cd dbcached-1.0.beta2/
./configure --prefix=/usr/local/dbcached --with-libevent=/usr
make && make install
cd ../

Run as a daemon (作为守护进程运行)

/usr/local/dbcached/bin/memcached -d -m 256 -p 11211 -c 51200 -u nobody -x 192.168.0.2 -y 26010 -z 26010

    ● -x {ip_addr} hostname or IP address of nmdb server

    ● -y {num} TCP port number of nmdb server (default: 26010) for set & get command

    ● -z {num} UDP port number of nmdb server (default: 26010) only for set command, UDP will be used to replace TCP for set command when using parameter -z

    ● -x {IP地址} nmdb 服务器的域名或者IP地址,推荐使用IP地址

    ● -y {端口号} nmdb 服务器的TCP端口号 (默认: 26010) 支持 set/delete/... 等写命令 和 get 等读命令

    ● -z {端口号} nmdb 服务器的UDP端口号 (默认: 26010) 只支持 get 等都命令, 当使用 -z 参数时,将使用 UDP 协议代替 TCP 协议执行 set 操作,执行 get 操作时仍然使用 TCP 协议。强烈推荐加上 -z 参数。

    ● 其他参数跟 memcached 1.2.4 完全一样,就不再详细说明。

    ● 如果想让 dbcached 通过 NMDB 保存数据时采用 TCP 协议,去掉 -z 参数即可,例如:(除非因防火墙、NAT穿透等问题导致 UDP 协议不可用,否则不建议使用 TCP 协议)

/usr/local/dbcached/bin/memcached -d -m 256 -p 11211 -c 51200 -u nobody -x 192.168.0.2 -y 26010

    ● 如果想让 dbcached 作为普通的 Memcached 运行,去掉 -x、-y、-z 参数即可,例如:

/usr/local/dbcached/bin/memcached -d -m 256 -p 11211 -c 51200 -u nobody
载录来源:http://code.google.com/p/dbcached/
张也转载了:http://blog.s135.com/read.php?329&guid=17
http://blog.sina.com.cn/s/blog_4d52f5a701000bav.html
http://blog.sina.com.cn/s/articlelist_1340168604_2_1.html
ubuntu下配置nginx+php+mysql+zend
http://www.zhanghaifeng.com/archives/33

CentOS 5.1下 postfix + extmail + dovecot + maildrop 最新版安装笔记:
http://hi.baidu.com/delphiss/blog/item/38571c94f7a7d50e7af48052.html
使用共享主机,控制面版是CPANEL的朋友都知道,他默认绑定主域名的目录为public_html

所以如果想要放域名yourdomain.com能直接访问,势必需要把所有文件全直接放进public_html下。这时候如果你想再建个子站,bbs.yourdomain.com,这时BBS目录就和其他php文件或主站的文件夹混在一起,很不利于管理

可以通过.htaccess文件来实现转向

以下以cms目录和www域名为例:

/————————————-以下为.htaccess文件内容————————————————-
# 开启功能
RewriteEngine on

# 你的主域名

RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$

# 把哪个子目录你想指向主域名
# 这里以CMS为例

RewriteCond %{REQUEST_URI} !^/cms/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 你想在哪个子目录上绑定主域名,把subfolder改成子目录

RewriteRule ^(.*)$ /cms/$1

#这里改成你的主域名和子目录
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteRule ^(/)?$ cms/index.php [L]

//———————-OVER——————————————

以上内容就是把目录cms指向主域名
比如www.yourmaindomain.com,访问时就直接转到了cms目录


我的配置:



# 开启功能
RewriteEngine on

# 你的主域名

RewriteCond %{HTTP_HOST} ^(www.)?xiangdong.org$

# 把哪个子目录你想指向主域名
# 这里以CMS为例

RewriteCond %{REQUEST_URI} !^/mycom/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 你想在哪个子目录上绑定主域名,把subfolder改成子目录

RewriteRule ^(.*)$ /mycom/$1

#这里改成你的主域名和子目录
RewriteCond %{HTTP_HOST} ^(www.)?xiangdong.org$
RewriteRule ^(/)?$ mycom/index.php

作者:老王

问题:主从服务器表类型的选择

一般的共识是主服务器使用innodb,从服务器使用myisam,以便各尽其能。

问题:主从服务器字段类型的选择

字段类型对于分页等操作有很大影响。主服务器一般是innodb,因为不涉及查询,所以可以使用varchar等来存储字符串来节省空间,从服务器一般是 myisam,因为涉及查询,所以必须在char和varchar之间仔细权衡,没有varchar, text, blob字段的表是静态表,反之是动态表,静态表的检索效率要比动态表好若干倍,一般来说,所有涉及大结果集的查询都应该尽可能保证在静态表上完成,这里说一个例子:比如说常见的articles表有title(varchar), body(text)等字段,在做文章列表的时候,因为不是静态表,所以查询不会很快,下面开始重构解决方案:把原来的articles表拆分成 subjects表和contents表,title字段设置为一个足够的char类型放在subjects表里,body字段还保持是text类型放到 contents表里,subjects和contents表之间的关系是一对多,这样,顺带着也方便的实现了多页文章的功能,而且更重要的是在查询文章列表的时候,操作都是在subjects静态表里完成,效率肯定会比前一种方案提升很多。阅读全文
早就听说lighttpd加PHP的FAST-CGI方式性能不错,抽时间装了下.只是完成了环境的安装,还没具体看性能什么的!

以下是我装lighttpd+PHP(FAST-CGI)+mysql的,如有问题,请给我评论.



一、先安装MySQL

安装mysql,你可以安装源码包,也可以用编译好的!直接解压拷贝也行.我用的是直接拷贝编译好的!

1.编译源码包

./configure --prefix=/data2/ali --enable-assembler --enable-thread-safe-client --without-debug

make

make install

2.用编译好的压缩包!直接解压拷贝

tar zxf mysql-standard-5.0.27-linux-i686-glibc23.tar.gz

cd mysql-standard-5.0.27-linux-i686-glibc23

cp -rf mysql-standard-5.0.27-linux-i686-glibc23 /usr/local/mysql


//以下是为了启动多个端口

mkdir -p /data2/ali/mysql3308

mkdir -p /data2/ali/mysql3309

./scripts/mysql_install_db --ldata=/data2/ali/mysql3308

cp support-files/my-medium.cnf /data2/ali/mysql3308/my.cnf

vi /data2/ali/mysql3308/my.cnf

修改内容如下:

#

[mysqld]

datadir = /data2/ali/mysql3308/

port = 3308

socket = /tmp/mysql-3308.sock

#


cp /data2/ali/mysql3308/ /data2/ali/mysql3309/

vi /data2/ali/mysql3309/my.cnf

修改内容如下:

#

[mysqld]

datadir = /data2/ali/mysql3309/

port = 3309

socket = /tmp/mysql-3309.sock

#

启动mysql

/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/mysql3308/my.cnf --user=root &

/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/mysql3309/my.cnf --user=root &


检查mysql是否启动成功。

ps -ax|grep mysql

20835 pts/3 S 0:00 /bin/sh ./mysqld_safe --defaults-file=/data2/ali/mysql3308/my.cnf --user=root

20862 pts/3 Sl 0:00 /usr/local/mysql/bin/mysqld --defaults-file=/data2/ali/mysql3308/my.cnf --basedir=/usr/local/mysql --datadir=/data2/ali/mysql3308/ --user=root --pid-file=/data2/ali/mysql3308//XD_Blog_Web_132_42.pid --skip-external-locking --port=3308 --socket=/tmp/mysql-3308.sock

20872 pts/3 S 0:00 /bin/sh ./mysqld_safe --defaults-file=/data2/ali/mysql3309/my.cnf --user=root

20903 pts/3 Sl 0:00 /usr/local/mysql/bin/mysqld --defaults-file=/data2/ali/mysql3309/my.cnf --basedir=/usr/local/mysql --datadir=/data2/ali/mysql3309/ --user=root --pid-file=/data2/ali/mysql3309//XD_Blog_Web_132_42.pid --skip-external-locking --port=3309 --socket=/tmp/mysql-3309.sock


连接mysql

mysql -S /tmp/mysql-3108.sock




二、接着安装php

tar zxf php-5.2.4.tar.gz

cd php-5.2.4

./configure \

--prefix=/usr/local/php-fcgi \

--enable-fastcgi \

--enable-force-cgi-redirect \

--without-iconv \

--enable-mbstring \

--with-mysql=/usr/local/mysql

make

make install


复制参数文件到目标目录:

cp php.ini-dist /usr/local/php-fcgi/lib/php.ini


检查fast-cgi是否安装成功可以运行如下命令

/usr/local/php-fcgi/bin/php-cgi -v

显示如下信息,内容里包含“PHP 5.2.4 (cgi-fcgi)"表示支持fast-cgi了

PHP 5.2.4 (cgi-fcgi) (built: Oct 28 2007 20:08:41)

Copyright (c) 1997-2007 The PHP Group

Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies



三、最后安装lighttpd

1.安装配置lighttpd


1.1 首先创建运行lighttpd的用户和组


# groupadd lighttpd

# useradd -g lighttpd -s /sbin/nologin -d /dev/null lighttpd


1.2 开始安装lighttpd


# wget http://www.lighttpd.net/download/lighttpd-1.4.8.tar.gz

# tar -zxvf lighttpd-1.4.8.tar.gz

# cd lighttpd-1.4.8

# ./configure --prefix=/usr/local/lighttpd


# make

# make install


# mkdir /usr/local/lighttpd/conf

# mkdir /usr/local/lighttpd/log


# mv ./doc/lighttpd.conf /usr/local/lighttpd/conf/

# cp ./doc/rc.lighttpd.redhat /etc/init.d/lighttpd




vi conf/lighttpd.conf

将 #”mod_fastcgi”, 的#去掉

server.modules = (

"mod_rewrite",

"mod_redirect",

# "mod_alias",

"mod_access",

# "mod_cml",

# "mod_trigger_b4_dl",

# "mod_auth",

# "mod_status",

# "mod_setenv",

"mod_fastcgi",


找到fastcgi的定义


#### fastcgi module

## read fastcgi.txt for more info

## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini

fastcgi.server = ( ".php" =>

( "localhost" =>

(

"socket" => "/var/run/lighttpd/php-fastcgi.socket",

"bin-path" => "/usr/local/php-fcgi/bin/php-cgi"

)

)

)


一开始我把配置写"bin-path" => "/usr/local/php-fcgi/bin/php"这样,发现报错,后来改了下以上的配置,发现OK了!

启动lighttpd命令是这样的:

/usr/local/lighttpd/sbin/lighttpd -f conf/lighttpd.conf
我的:
/usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/conf/lighttpd.conf


最后可以在程序目录下建个test.php,检查一下是否正常!

最后发现在curl这儿:在command模式下可以看到curl php -m可以看到curl模块,但是通过lighttpd就说那个模块不存在。。???
分页: 265/339 第一页 上页 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 下页 最后页 [ 显示模式: 摘要 | 列表 ]