Chinaunix

标题: 高性能lnmp(一) [打印本页]

作者: 朱熹庞德    时间: 2010-01-28 11:51
标题: 高性能lnmp(一)

一.安装、升级所需的程序库
yum update -y
yum install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers patch wget setuptool vixie-cron -y
二.编译安装PHP 5.2.8所需的支持库
tar zxvf libiconv-1.13.tar.gz
cd libiconv-1.13/
./configure --prefix=/usr/local
make
make install
cd ../
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure
make
make install
ldconfig
cd libltdl/
./configure --enable-ltdl-install
make
make install
cd ../../
tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
make
make install
cd ../
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
ldconfig
./configure
make
make install
cd ../
三.编译安装MySQL 5.1.33
groupadd ypdb
useradd -g ypdb ypdb
tar xzvf mysql-5.1.33.tar.gz
cd mysql-5.1.33
./configure --prefix=/yp-lnmp/mysql/ --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=innobase
make
make install
chmod +w /yp-lnmp/mysql
chown -R ypdb:ypdb /yp-lnmp/mysql
cp support-files/my-medium.cnf /yp-lnmp/mysql/my.cnf
vi /yp-lnmp/mysql/my.cnf
#skip-federated 注释掉
/yp-lnmp/mysql/bin/mysql_install_db --basedir=/yp-lnmp/mysql --datadir=/yp-lnmp/mysql/data --user=ypdb
/yp-lnmp/mysql/bin/mysqld_safe --defaults-file=/yp-lnmp/mysql/my.cnf --user=ypdb &
cd ../
四.编译安装PHP(FastCGI模式)
tar zxvf php-5.2.8.tar.gz
gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.8 -p1
cd php-5.2.8
./configure --prefix=/yp-lnmp/php --with-config-file-path=/yp-lnmp/php/etc --with-mysql=/yp-lnmp/mysql --with-mysqli=/yp-lnmp/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --enable-ftp
make ZEND_EXTRA_LIBS='-liconv'
make install
cp php.ini-dist /yp-lnmp/php/etc/php.ini
cd ../
五.编译安装PHP5扩展模块
tar xzvf memcache-2.2.5.tgz
cd memcache-2.2.5
/yp-lnmp/php/bin/phpize
./configure --with-php-config=/yp-lnmp/php/bin/php-config
make
make install
cd ../
tar xjvf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3
/yp-lnmp/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/yp-lnmp/php/bin/php-config
make
make install
cd ../
tar xzvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2
/yp-lnmp/php/bin/phpize
./configure --with-php-config=/yp-lnmp/php/bin/php-config --with-pdo-mysql=/yp-lnmp/mysql
make
make install
cd ../
tar xzvf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2
./configure
make
make install
cd ../
tar xzvf imagick-2.2.2.tgz
cd imagick-2.2.2
/yp-lnmp/php/bin/phpize
./configure --with-php-config=/yp-lnmp/php/bin/php-config
make
make install
cd ../
配置php.ini添加模块
vi /yp-lnmp/php/etc/php.ini
修改extension_dir,并在以下添加
extension_dir = "/yp-lnmp/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension = "memcache.so"
extension = "pdo_mysql.so"
extension = "imagick.so"
output_buffering = On
最后一行加上下面
[eaccelerator]
zend_extension="/yp-lnmp/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="128"
eaccelerator.cache_dir="/yp-lnmp/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="300"
eaccelerator.shm_prune_period="120"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
mkdir /yp-lnmp/eaccelerator_cache
因为eaccelerator.shm_size="128",所以kernel.shmmax = 134217728
vi /etc/sysctl.conf
kernel.shmmax = 134217728
最后一行下面
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000    65000
sysctl –p
groupadd ypweb
useradd -g ypweb ypweb
mkdir -p /htdocs/phpBB
mkdir -p /htdocs/Discuz
chmod +w /htdocs/phpBB
chmod +w /htdocs/Discuz
chown -R ypweb:ypweb /htdocs
六.创建php-fpm配置文件(php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi)
mv /yp-lnmp/php/etc/php-fpm.conf /yp-lnmp/php/etc/php-fpm.conf.bak
vi /yp-lnmp/php/etc/php-fpm.conf



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

   

    Pid file  
    /yp-lnmp/php/logs/php-fpm.pid

    Error log file  
    /yp-lnmp/php/logs/php-fpm.log

    Log level  
    notice

    When this amount of php processes exited with SIGSEGV or SIGBUS ...  
    10

    ... 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.  
    1m

    Time limit on waiting child's reaction on signals from master  
    5s

    Set to 'no' to debug fpm  
    yes

   

   

     

      Name of pool. Used in logs and stats.  
      default

      Address to accept fastcgi requests on.  
      Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'  
      127.0.0.1:9000

      

        Set listen(2) backlog  
        -1

        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.  
         
         
        0666
      

      Additional php.ini defines, specific to this pool of workers.  
      
        /usr/sbin/sendmail -t -i
        1
      

      Unix user of processes  
        ypweb

      Unix group of processes  
        ypweb

      Process manager settings  
      

        Sets style of controling worker process count.  
        Valid values are 'static' and 'apache-like'  
        static

        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.  
        128

        Settings group for 'apache-like' pm style  
         

          Sets the number of server processes created on startup.  
          Used only when 'apache-like' pm_style is selected  
          20

          Sets the desired minimum number of idle server processes.  
          Used only when 'apache-like' pm_style is selected  
          5

          Sets the desired maximum number of idle server processes.  
          Used only when 'apache-like' pm_style is selected  
          35

         

      

      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'  
      0s

      The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file  
      '0s' means 'off'  
      0s

      The log file for slow requests  
      logs/slow.log

      Set open file desc rlimit  
      51200

      Set max core size rlimit  
      0

      Chroot to this directory at the start, absolute path  
      

      Chdir to this directory at the start, absolute path  
      

      Redirect workers' stdout and stderr into main error log.  
      If not set, they will be redirected to /dev/null, according to FastCGI specs  
      yes

      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  
      500

      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.  
      127.0.0.1

      Pass environment variables like LD_LIBRARY_PATH  
      All $VARIABLEs are taken from current environment  
      
        $HOSTNAME
        /usr/local/bin:/usr/bin:/bin
        /tmp
        /tmp
        /tmp
        $OSTYPE
        $MACHTYPE
        2
      

     

   


ulimit -SHn 51200
/yp-lnmp/php/sbin/php-fpm start
七.安装nginx-0.7.51
tar xzvf pcre-7.8.tar.gz
cd pcre-7.8
./configure
make
make install
cd ../


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/75896/showart_2162952.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2