fedora平台网站优化,采用nginx+php+php-fpm+mysql+memcache+xcache

效果还是比较明显的,速度更快了。平台:fedora 11,现在贴出配置步骤:
黑色:描述
蓝色:需要下载的包
红色:命令
橙色:代码
紫色:自己根据需要替换的部分

1、安装必要包
-bash-4.0# yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libpng libpng-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel gd-devel patch
2、安装mysql
-bash-4.0#  yum install mysql-devel
3、安装php和php-fpm
-bash-4.0# tar zxvf php-5.2.13.tar.gz
-bash-4.0# gzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1
-bash-4.0# cd php-5.2.13
-bash-4.0# ./configure --prefix=/usr/local/php --with-mysql=/usr/include/mysql/ --with-gd=/usr --with-gd-lib=/usr/lib --with-jpeg dir=/usr --with-png-dir=/usr/include/ --with-zlib --enable-mbstring --enable-iconv --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --with-openssl
-bash-4.0# make
-bash-4.0# make install
-bash-4.0# cp php.ini-dist /usr/lib/php/php.ini

4、安装memcache
-bash-4.0# tar -zxvf memcache-2.2.5.tgz
-bash-4.0# cd memcache-2.2.5
-bash-4.0#  /usr/local/php/bin/phpize
-bash-4.0# ./configure --with-php-config=/usr/local/php/bin/php-config
-bash-4.0# make
-bash-4.0# make install

5、安装xcache
-bash-4.0# tar -zxvf xcache-1.3.0.tar.gz
-bash-4.0# cd xcache-1.3.0
-bash-4.0#  /usr/local/php/bin/phpize
-bash-4.0# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-xcache
-bash-4.0# make
-bash-4.0# make install

6、把memcache和xcache加入php.ini
-bash-4.0# sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"\nextension = "memcache.so"\n#' /usr/lib/php/php.ini
-bash-4.0# sed -i 's#display_errors = On#display_errors = Off#' /usr/lib/php/php.ini

7、配置php.ini在最后加入以下内容
-bash-4.0# vi php.ini

[xcache-common]
zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so

[xcache.admin]
xcache.admin.user = "xcache"
; xcache.admin.pass = md5($yourpasswd)
xcache.admin.pass = "8e6867a5d05144cf4761d6481fc674a8"

[xcache]
xcache.cacher = On
xcache.shm_scheme = "mmap"
xcache.size = 32M
; cpu number (cat /proc/cpuinfo |grep -c processor)
xcache.count = 2
xcache.slots = 8k
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 2M
; cpu number (cat /proc/cpuinfo |grep -c processor)
xcache.var_count = 2
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.readonly_protection = Off
xcache.mmap_path = "/dev/zero"

8、添加www用户
-bash-4.0# /usr/sbin/groupadd www -g 480
-bash-4.0# /usr/sbin/useradd -u 480 -g www www

9、编辑php-fpm.conf为以下内容
-bash-4.0# vi /usr/local/php/etc/php-fpm.conf

<?xml version="1.0" ?>

<configuration>

All relative paths in this config are relative to php's install prefix

<section name="global_options">

Pid file
<value
name="pid_file">/usr/local/php/logs/php-fpm.pid</value>

Error log file
<value
name="error_log">/usr/local/php/logs/php-fpm.log</value>

Log level
<value name="log_level">notice</value>

When this amount of php processes exited with SIGSEGV or SIGBUS
...
<value name="emergency_restart_threshold">10</value>

... in a less than this interval of time, a graceful restart will be
initiated.
Useful to work around accidental curruptions in accelerator's
shared memory.
<value
name="emergency_restart_interval">1m</value>

Time limit on waiting child's reaction on signals from master
<value
name="process_control_timeout">5s</value>

Set to 'no' to debug fpm
<value
name="daemonize">yes</value>

</section>

<workers>

<section name="pool">

Name of pool. Used in logs and stats.
<value
name="name">default</value>

Address to accept fastcgi requests on.
Valid syntax is 'ip.ad.re.ss:port'
or just 'port' or '/path/to/unix/socket'
<value
name="listen_address">127.0.0.1:9000</value>

<value name="listen_options">
Set listen(2) backlog
<value
name="backlog">-1</value>

Set permissions for unix socket, if one used.
In Linux read/write
permissions must be set in order to allow connections from web server.
Many
BSD-derrived systems allow connections regardless of permissions.
<value
name="owner"></value>
<value
name="group"></value>
<value
name="mode">0666</value>
</value>

Additional php.ini defines, specific to this pool of workers.
<value
name="php_defines">
<value name="sendmail_path">/usr/sbin/sendmail
-t -i</value>
<value
name="display_errors">1</value>
</value>

Unix user of processes
<value name="user">www</value>

Unix group of processes
<value name="group">www</value>

Process manager settings
<value name="pm">

Sets style of controling worker process count.
Valid values are 'static'
and 'apache-like'
<value name="style">static</value>

Sets the limit on the number of simultaneous requests that will be
served.
Equivalent to Apache MaxClients directive.
Equivalent to
PHP_FCGI_CHILDREN environment in original php.fcgi
Used with any
pm_style.
<value name="max_children">14</value>

Settings group for 'apache-like' pm style
<value
name="apache_like">

Sets the number of server processes created on startup.
Used only when
'apache-like' pm_style is selected
<value
name="StartServers">20</value>

Sets the desired minimum number of idle server processes.
Used only when
'apache-like' pm_style is selected
<value
name="MinSpareServers">5</value>

Sets the desired maximum number of idle server processes.
Used only when
'apache-like' pm_style is selected
<value
name="MaxSpareServers">35</value>

</value>

</value>

The timeout (in seconds) for serving a single request after which the worker
process will be terminated
Should be used when 'max_execution_time' ini
option does not stop script execution for some reason
'0s' means
'off'
<value name="request_terminate_timeout">0s</value>

The timeout (in seconds) for serving of single request after which a php
backtrace will be dumped to slow.log file
'0s' means 'off'
<value
name="request_slowlog_timeout">0s</value>

The log file for slow requests
<value
name="slowlog">logs/slow.log</value>

Set open file desc rlimit
<value
name="rlimit_files">51200</value>

Set max core size rlimit
<value
name="rlimit_core">0</value>

Chroot to this directory at the start, absolute path
<value
name="chroot"></value>

Chdir to this directory at the start, absolute path
<value
name="chdir"></value>

Redirect workers' stdout and stderr into main error log.
If not set, they
will be redirected to /dev/null, according to FastCGI specs
<value
name="catch_workers_output">yes</value>

How much requests each process should execute before respawn.
Useful to
work around memory leaks in 3rd party libraries.
For endless request
processing please specify 0
Equivalent to PHP_FCGI_MAX_REQUESTS
<value
name="max_requests">10240</value>

Comma separated list of ipv4 addresses of FastCGI clients that allowed to
connect.
Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi
(5.2.2+)
Makes sense only with AF_INET listening socket.
<value
name="allowed_clients">127.0.0.1</value>

Pass environment variables like LD_LIBRARY_PATH
All $VARIABLEs are taken
from current environment
<value name="environment">
<value
name="HOSTNAME">$HOSTNAME</value>
<value
name="PATH">/usr/local/bin:/usr/bin:/bin</value>
<value
name="TMP">/tmp</value>
<value
name="TMPDIR">/tmp</value>
<value
name="TEMP">/tmp</value>
<value
name="OSTYPE">$OSTYPE</value>
<value
name="MACHTYPE">$MACHTYPE</value>
<value
name="MALLOC_CHECK_">2</value>
</value>

</section>

</workers>

</configuration>

10、启动php-fpm
-bash-4.0# /usr/local/php/sbin/php-fpm start

11、安装nginx
-bash-4.0# yum install nginx

12、编辑nginx.conf为如下内容
-bash-4.0# vi /etc/nginx/nginx.conf

user  www www;

worker_processes 8;

error_log
 /var/log/nginx/nginx_error.log  crit;

pid      
 /var/run/nginx.pid;

#Specifies the value for maximum file descriptors
that can be opened by this process.
worker_rlimit_nofile
51200;

events
{
 use epoll;
 worker_connections
51200;
}

http
{
 include       mime.types;
 default_type
 application/octet-stream;

     
 server_names_hash_bucket_size
128;
 client_header_buffer_size 32k;
 large_client_header_buffers 4
32k;
     
 sendfile on;
 tcp_nopush     on;

 keepalive_timeout
60;

 tcp_nodelay on;

 fastcgi_connect_timeout
300;
 fastcgi_send_timeout 300;
 fastcgi_read_timeout
300;
 fastcgi_buffer_size 64k;
 fastcgi_buffers 4
64k;
 fastcgi_busy_buffers_size 128k;
 fastcgi_temp_file_write_size
128k;

 gzip on;
 gzip_min_length  1k;
 gzip_buffers     4
16k;
 gzip_http_version 1.0;
 gzip_comp_level 2;
 gzip_types      
text/plain application/x-javascript text/css application/xml;
 gzip_vary
on;

 #limit_zone  crawler  $binary_remote_addr
 10m;

 server
 {
   listen       80;
 
 server_name  yourdomainname.com;
   index index.html index.htm index.php;
   root
 /usr/local/nginx/html;

   #limit_conn   crawler  20;    
           
               
   location ~ .*\.(php|php5)?$
   {      
   
 #fastcgi_pass  unix:/tmp/php-cgi.sock;
     fastcgi_pass
 127.0.0.1:9000;
     fastcgi_index index.php;
     include
fcgi.conf;
   }
   
   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
 
 {
     expires      30d;
   }

   location ~ .*\.(js|css)?$
 
 {
     expires      1h;
   }    

   log_format  access
 '$remote_addr - $remote_user [$time_local] "$request" '
           
 '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent"
$http_x_forwarded_for';
   access_log  /var/log/nginx/access.log
 access;
     }
}

13、新建fcgi.conf,内容如下
-bash-4.0# vi /etc/nginx/fcgi.conf

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;

fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;

14、检查配置是否正确
-bash-4.0# php -v
-bash-4.0# nginx -t -c /etc/nginx/nginx.conf

15、启动nginx
-bash-4.0# nginx

16、把php-fpm和nginx加入启动脚本:
-bash-4.0# echo "/usr/local/php/sbin/php-fpm start" >> /etc/rc.local
-bash-4.0# echo "nginx" >> /etc/rc.local

(我用了外部mysql数据库,所以这里能用到的只是mysql的客户端,如果你需要使用mysql服务器,得做深一层的配置,才能启动mysql,如:初始化数据库,添加用户,添加权限等,相关操作可以在网上查询)