- 注册时间
- 2008-5-19
- 最后登录
- 2012-5-3
- 在线时间
- 1762 小时
- 阅读权限
- 200
- 积分
- 14979
- 帖子
- 2524
- 主题
- 1200
- 精华
- 25
- UID
- 1
  
 - 签到
- 81
- 注册时间
- 2008-5-19
- 最后登录
- 2012-5-3
- 在线时间
- 1762 小时
- 阅读权限
- 200
- 积分
- 14979
- 帖子
- 2524
- 主题
- 1200
- 精华
- 25
- UID
- 1
|
下载 http://www.lighttpd.net/download/lighttpd-1.5.0-r1992.tar.gz
安装 Lighttpd 1.5
./configure --prefix=/data/app/etc/lighttpd1.5 --with-pcre --with-linux-aio
make
make install
安装 PHP 5
./configure --prefix=/data/app/etc/php-fcgi --with-mysql=/data/app/etc/mysql5 --enable-shmop --enable-sockets --enable-mbstring --with-gd --with-jpeg-dir --with-ttf --with-png-dir --with-freetype-dir --with-zlib --enable-pcntl --with-curl --enable-fastcgi --enable-force-cgi-redirect --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte --enable-discard-path
make
make install
安装 eAccelerator-0.9.5
cd eAccelerator-0.9.5
export PHP_PREFIX=/usr/local/server/php
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make
make install
安装 Zend Optimizer
安装 php memcache模块
cd memcache-2.1.0
export PHP_PREFIX=/usr/local/server/php
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make
make install
用 Zend Optimizer 解密Guard的加密代码 用 eAccelerator 加速运行 的 php.ini 配置
extension_dir="/data/app/etc/php-fcgi/lib/php/extensions/"
[memcache]
extension="memcache.so"
[eAccelerator]
extension="eaccelerator.so"
eaccelerator.shm_size="128"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter="*.php"
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
eaccelerator.log_file = "/var/log/eaccelerator"
eaccelerator.allowed_admin_path = "/var/www/eaccelerator"
[Zend]
zend_optimizer.encoder_loader=1
zend_extension_manager.optimizer=/data/app/etc/Zend/lib/Optimizer-3.3.3
zend_extension_manager.optimizer_ts=/data/app/etc/Zend/lib/Optimizer_TS-3.3.3
zend_optimizer.version=3.3.3
zend_extension=/data/app/etc/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/data/app/etc/Zend/lib/ZendExtensionManager_TS.so
zend_optimizer.optimization_level=0
zend_optimizer.license_path = /data/app/www/
1. 打开下面模块 lighttpd.conf
mod_rewrite, mod_redirect, mod_access, mod_proxy_core, mod_proxy_backend_http, mod_proxy_backend_fastcgi, mod_expire, mod_simple_vhost, mod_evhost
2. 打开AIO lighttpd.conf
# 后面的配置已经有了 只适用与 lighttpd1.5 因为纯粹的AIO要缓冲到内存,效果反不如SendFile
# Lighttpd 的做法 一是开多线程 二是大部分的其实还是sendfile ,总体效果好于1.4
# server.network-backend = "linux-aio-sendfile"
3. 防盗链 ( 我配了但没起作用 ) lighttpd.conf
$HTTP["referer"] !~ "^($|http://.*\.(xiaonei\.com))" {
$HTTP["url"] =~ "\.(jpg|jpeg|png|gif|rar|zip|mp3)$" {
url.redirect = (".*" => "http://sanguo.xiaonei.com")
}
}
4. 配置为一个大负载的服务器 lighttpd.conf
# server.max-write-idle = 30
server.max-keep-alive-requests = 0
# server.max-keep-alive-idle = 30
server.max-fds = 40240
# server.network-backend = "linux-sendfile" # lighttpd1.4 适用 sendfile 已经非常好了
server.network-backend = "linux-aio-sendfile" # lighttpd1.5 适用 但不是纯粹的AIO 大部分的还是sendfile
server.event-handler = "linux-sysepoll"
server.stat-cache-engine = "fam"
5. 配置PHP的fastcgi lighttpd.conf
$HTTP["url"] =~ "\.php$" {
# proxy-core.balancer = "round-robin"
proxy-core.balancer = "sqf"
proxy-core.allow-x-sendfile = "enable"
# proxy-core.check-local = "enable"
proxy-core.protocol = "fastcgi"
proxy-core.backends = ( "unix:/tmp/php-fastcgi0.sock","unix:/tmp/php-fastcgi1.sock","unix:/tmp/php-fastcgi2.sock","unix:/tmp/php-fastcgi3.sock","unix:/tmp/php-fastcgi4.sock" )
proxy-core.max-pool-size = 16 # 等于 PHP_FCGI_CHILDREN 默认为 1
}
6. 别了忘改下PHP的配置 :) php.ini
cgi.fix_pathinfo = 1
7. 配置下静态文件的过期时间 lighttpd.conf
expire.url = ( "/images/" => "access 7200 hours", "/javascrpt/" => "access 7200 hours")
8. 记录日志 ( 需要安装 cronolog ) lighttpd.conf
server.errorlog = "/data/app/log/s1-error.log"
accesslog.filename = "|/usr/local/sbin/cronolog /data/app/log/s1-access-log-%Y%m%d"
9. 配置虚拟机 ( cakephp 的例子 ) lighttpd.conf
$HTTP["host"] == "cake.domain.com" {
simple-vhost.server-root = "/data/app/www/cake.domain.com"
url.rewrite-once = (
"/(.*)\.(.*)" => "$0",
"/(css|files|img|js|stats)/" => "$0",
"^/([^.]+)$" => "/index.php?url=$1"
)
server.error-handler-404 = "/error404.php"
accesslog.filename = "|/usr/local/sbin/cronolog /data/app/log/cakelog-%Y%m%d%H"
}
10. 配置spawn-php0.sh spawn-php1.sh spawn-php2.sh spawn-php3.sh spawn-php4.sh
FCGISOCKET="/tmp/php-fastcgi0.sock" 找到这一行 每个sh做对应的修改
#!/bin/bash
## ABSOLUTE path to the spawn-fcgi binary
SPAWNFCGI="/data/app/etc/lighttpd1.5/bin/spawn-fcgi"
## ABSOLUTE path to the PHP binary
FCGIPROGRAM="/data/app/etc/php-fcgi/bin/php-cgi"
## TCP port to which to bind on localhost
FCGIPORT="1026"
## SOCKET to which to bind on localhost
FCGISOCKET="/tmp/php-fastcgi0.sock"
## number of PHP children to spawn
PHP_FCGI_CHILDREN=16
## maximum number of requests a single PHP process can serve before it is restarted
PHP_FCGI_MAX_REQUESTS=1000
## IP addresses from which PHP should access server connections
FCGI_WEB_SERVER_ADDRS="127.0.0.1"
# allowed environment variables, separated by spaces
ALLOWED_ENV="HOME PATH USER"
## if this script is run as root, switch to the following user
USERID=daemon
GROUPID=daemon
################## no config below this line
if test x$PHP_FCGI_CHILDREN = x; then
PHP_FCGI_CHILDREN=5
fi
export PATH=$PATH:/data/app/etc/ice3/bin
export PHP_FCGI_MAX_REQUESTS
export FCGI_WEB_SERVER_ADDRS
export PATH
ALLOWED_ENV="$ALLOWED_ENV PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS"
# if test x$UID = x0; then
# EX="$SPAWNFCGI -p $FCGIPORT -f $FCGIPROGRAM -u $USERID -g $GROUPID -C $PHP_FCGI_CHILDREN"
# else
# EX="$SPAWNFCGI -p $FCGIPORT -f $FCGIPROGRAM -C $PHP_FCGI_CHILDREN"
# fi
if test x$UID = x0; then
EX="$SPAWNFCGI -s $FCGISOCKET -f $FCGIPROGRAM -u $USERID -g $GROUPID -C $PHP_FCGI_CHILDREN"
else
EX="$SPAWNFCGI -s $FCGISOCKET -f $FCGIPROGRAM -C $PHP_FCGI_CHILDREN"
fi
# copy the allowed environment variables
E=
for i in $ALLOWED_ENV; do
E="$E $i=${!i}"
done
# clean the environment and set up a new one
env - $E $EX
11. 启动web服务器 lighttpd_start.sh
#!/bin/sh
/data/app/etc/lighttpd1.5/bin/spawn-php0.sh
/data/app/etc/lighttpd1.5/bin/spawn-php1.sh
/data/app/etc/lighttpd1.5/bin/spawn-php2.sh
/data/app/etc/lighttpd1.5/bin/spawn-php3.sh
/data/app/etc/lighttpd1.5/bin/spawn-php4.sh
/data/app/etc/lighttpd1.5/sbin/lighttpd -f /data/app/etc/lighttpd1.5/sbin/lighttpd.conf
12. 关闭服务器 lighttpd_stop.sh
#!/bin/sh
killall php-cgi lighttpd
注: 后台用的PHP脚本程序,请用 php 来执行,不要用 php-cgi 避免被kill 掉
请记得修改 php.ini 改变 cgi.fix_pathinfo = 1
我对lighttpd 还不是很熟悉 望各位指正哈 :) 特别是 linux-aio 到底能提升多少 ?
如果你对服务器的安全性有更多考虑的话可以用 chroot 下面的链接也许能帮到你
http://www.cyberciti.biz/tips/ho ... -chrooted-jail.html
MySQL 可以下载 Google-MySQL-Tools 打补丁
svn checkout http://google-mysql-tools.googlecode.com/svn/trunk/ google-mysql-tools-read-only
现在有 mysql-4.0.26 和 mysql-5.0.37 的补丁,具体效果不明,试好了再补这个笔记
下载地址 http://downloads.mysql.com/archives/mysql-5.0/mysql-5.0.37.tar.gz
编译参数 CXX=gcc ./configure --prefix=/data/app/etc/mysql --enable-assembler --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-unix-socket-path=/tmp/mysql.sock --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all --with-pthread --enable-thread-safe-client --enable-local-infile --enable-shared
用google-perftools里的tcmalloc替代glibc的malloc,可以极大改善MySQL在高并发下的性能
Download: http://code.google.com/p/google-perftools/downloads/list
编译: CFLAGS="-O3" CXX=g++ CXXFLAGS="-O3 -felide-constructors \
-fno-exceptions -fno-rtti" ./configure \
--prefix=/usr/local/mysql --enable-assembler \
--with-charset=utf8 \
--with-extra-charsets=utf8,gb2312,latin1 \
--localstatedir=/opt/mysql-data \
--with-mysqld-user=mysql --enable-large-files --with-big-tables \
--without-debug \
--with-mysqld-ldflags="-all-static -ltcmalloc -lstacktrace"\
--with-client-ldflags=-all-static \
--enable-thread-safe-client
或按默认方式编译和安装成功后在 mysqld_safe 中加入 LD_PRELOAD="/usr/local/lib/libtcmalloc.so" |
|