Learning together

Learning together with open source fans. QQ群:8021887


  • 网站首页

  • 站内留言

  • 关于本站

  • 我的相册

  • 联系羽飞

  • 内容订阅
  • Debian+Nginx+PHP(FastCGI)+MySQL搭建LNMP服务器(一版)

    作者: 羽飞 | 发布时间: 星期六, 03/20/2010 - 21:52 |

    写在最前:看了张宴的“搭建胜过Apache十倍的Web服务器”系列文章全是基于redhat上的,所以,今天本人来教大家在Debian5.X上也来实现LNMP。本文基于张宴“Nginx0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)”。后面也会不断更新。因为这是Debian上的第一版,所以我就把自己的实现全过程记录下来,这里面包涵了一些排错和我们常遇到的问题,希望对大家后面的学习有用,因为大家的系统环境可能不一样,本次教程的实现过程是在一VPS(USA)上实现的。

    本次教程所用的系统环境:
    cat /proc/version 
    Linux version 2.6.18-128.2.1.el5.028stab064.4 (root@rhel5-64-build) (gcc version 4.1.2 20070626 (Red Hat 4.1.2-14)) #1 SMP Mon Jul 27 12:45:01 MSD 2009

    cat /etc/issue
    Debian GNU/Linux 5.0 \n \l

    uname -a
    Linux QQ46659160.com 2.6.18-128.2.1.el5.028stab064.4 #1 SMP Mon Jul 27 12:45:01 MSD 2009 i686 GNU/Linux

    Mem:    524800k

    在进行安装前,最先检查一个,你的系统中是不是安装了mysql apache和一些其它的我们不需要的软件,如果有的话,就删除掉吧!

    用netstat -ntlp查检一下启动的哪些服务
    我的系统中安装了sendmail,我不需要,所以我就把它删除
    /etc/init.d/sendmail stop
    /etc/init.d/apache2 stop
    dpkg -l |grep sendmail
    apt-get remove sendmail sendmail-base sendmail-bin sendmail-cf sendmail-doc
    dpkg -l |grep sendmail
    dpkg –force-all -P sendmail-base sendmail-bin sendmail-cf sendmail-doc
    dpkg -l |grep mysql
    apt-get remove libmysqlclient15off mysql-common
    dpkg -l |grep mysql
    dpkg –force-all -P libmysqlclient15off mysql-common
    dpkg -l |grep apache
    apt-get remove apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2.2-common
    dpkg -l |grep apache
    dpkg –force-all -P apache2-doc apache2.2-common

    这时候我的系统中就只有22端口是开放了,大家可以根据自己的需要来处理系统中的软件。
    好了,闲话就不多说了,下面就开始进行安装。

    一、安装源码编译的环境
    apt-get install build-essential

    二、下载所需要的软件
    mkdir /root/soft
    cd /root/soft
    vim down.sh

    内容如下:
    wget http://sysoev.ru/nginx/nginx-0.8.34.tar.gz
    wget http://www.php.net/get/php-5.2.13.tar.gz/from/this/mirror
    wget http://php-fpm.org/downloads/php-5.2.13-fpm-0.5.13.diff.gz
    wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.2-m2.tar.gz
    wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz
    wget "http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0"
    wget "http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&big_mirror=0"
    wget http://pecl.php.net/get/memcache-2.2.5.tgz
    wget "http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0"
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.01.tar.gz
    wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2
    wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
    wget http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
    wget http://pecl.php.net/get/imagick-2.3.0.tgz

    设置可执行权限
    chmod +x down.sh
    开始下载
    ./down.sh

    三、安装PHP 5.2.13(FastCGI模式)
    1、编译安装PHP 5.2.13所需的支持库
    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/
    /sbin/ldconfig
    cd libltdl/
    ./configure –enable-ltdl-install
    make && make install
    cd ..
    ./configure
    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/
    /sbin/ldconfig
    ./configure
    make && make install
    cd ../

    2、编译安装MySQL 5.5.2-m2
    mysql安装前需要安装 libncurses5-dev
    apt-get install libncurses5-dev
    否则就会出现下面的错误
    checking for termcap functions library… configure: error: No curses/termcap library found
    处理完上面的内容,下面就可以开始编译mysql了
    /usr/sbin/groupadd mysql
    /usr/sbin/useradd -g mysql mysql
    tar zxvf mysql-5.5.2-m2.tar.gz
    cd mysql-5.5.2-m2/
    ./configure –prefix=/usr/local/webserver/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=partition,innobase,myisammrg
    make && make install
    chmod +w /usr/local/webserver/mysql
    chown -R mysql:mysql /usr/local/webserver/mysql
    cd ../

    ①、创建MySQL数据库存放目录
    mkdir -p /data0/mysql/3306/data/
    mkdir -p /data0/mysql/3306/binlog/
    mkdir -p /data0/mysql/3306/relaylog/
    chown -R mysql:mysql /data0/mysql/

    ②、以mysql用户帐号的身份建立数据表
    /usr/local/webserver/mysql/bin/mysql_install_db –basedir=/usr/local/webserver/mysql –datadir=/data0/mysql/3306/data –user=mysql
    如果出现下面的情况,就是你的系统中的MY,CNF文件可能是有多个(一个是你系统已经帮你安装好的,一个是自己编译安装的,但MYSQL调用的是你系统里面的配置文件了),这时,你就要查看你的系统中是不是已经安装了mysql-comman了?
    Installing MySQL system tables…
    100318 19:10:22 [ERROR] /usr/local/webserver/mysql/libexec/mysqld: unknown option ‘–skip-bdb’
    100318 19:10:22 [ERROR] Aborting
    100318 19:10:22 [Note] /usr/local/webserver/mysql/libexec/mysqld: Shutdown complete

    所以我们先来查询一下看看
    dpkg -l |grep mysql
    会看到类似下面的两个软件,
    mysql-common libmysqlclient15off
    我们用下面的命令强制删除(把配置文件也一同删除)
    dpkg –force-all -P mysql-common
    dpkg –force-all -P libmysqlclient15off

    ③、创建my.cnf配置文件
    vi /data0/mysql/3306/my.cnf
    内容如下
    [client]
    character-set-server = utf8
    port    = 3306
    socket  = /tmp/mysql.sock
    [mysqld]
    character-set-server = utf8
    replicate-ignore-db = mysql
    replicate-ignore-db = test
    replicate-ignore-db = information_schema
    user    = mysql
    port    = 3306
    socket  = /tmp/mysql.sock
    basedir = /usr/local/webserver/mysql
    datadir = /data0/mysql/3306/data
    log-error = /data0/mysql/3306/mysql_error.log
    pid-file = /data0/mysql/3306/mysql.pid
    open_files_limit    = 10240
    back_log = 600
    max_connections = 5000
    max_connect_errors = 6000
    table_cache = 614
    external-locking = FALSE
    max_allowed_packet = 32M
    sort_buffer_size = 1M
    join_buffer_size = 1M
    thread_cache_size = 300
    thread_concurrency = 8
    query_cache_size = 512M
    query_cache_limit = 2M
    query_cache_min_res_unit = 2k
    default-storage-engine = MyISAM
    thread_stack = 192K
    transaction_isolation = READ-COMMITTED
    tmp_table_size = 246M
    max_heap_table_size = 246M
    long_query_time = 3
    log-slave-updates
    log-bin = /data0/mysql/3306/binlog/binlog
    binlog_cache_size = 4M
    binlog_format = MIXED
    max_binlog_cache_size = 8M
    max_binlog_size = 1G
    relay-log-index = /data0/mysql/3306/relaylog/relaylog
    relay-log-info-file = /data0/mysql/3306/relaylog/relaylog
    relay-log = /data0/mysql/3306/relaylog/relaylog
    expire_logs_days = 30
    key_buffer_size = 256M
    read_buffer_size = 1M
    read_rnd_buffer_size = 16M
    bulk_insert_buffer_size = 64M
    myisam_sort_buffer_size = 128M
    myisam_max_sort_file_size = 10G
    myisam_repair_threads = 1
    myisam_recover
    interactive_timeout = 120
    wait_timeout = 120
    skip-name-resolve
    master-connect-retry = 10
    slave-skip-errors = 1032,1062,126,1114,1146,1048,1396
    #master-host     =   192.168.1.2
    #master-user     =   username
    #master-password =   password
    #master-port     =  3306
    server-id = 1
    innodb_additional_mem_pool_size = 16M
    innodb_buffer_pool_size = 512M
    innodb_data_file_path = ibdata1:256M:autoextend
    innodb_file_io_threads = 4
    innodb_thread_concurrency = 8
    innodb_flush_log_at_trx_commit = 2
    innodb_log_buffer_size = 16M
    innodb_log_file_size = 128M
    innodb_log_files_in_group = 3
    innodb_max_dirty_pages_pct = 90
    innodb_lock_wait_timeout = 120
    innodb_file_per_table = 0
    #log-slow-queries = /data0/mysql/3306/slow.log
    #long_query_time = 10
    [mysqldump]
    quick
    max_allowed_packet = 32M


    ④、创建管理MySQL数据库的shell脚本

    vi /data0/mysql/3306/mysql
    输入以下内容(这里的用户名admin和密码12345678接下来的步骤会创建) #!/bin/sh
    mysql_port=3306
    mysql_username="admin"
    mysql_password="12345678"
    function_start_mysql()
    {
        printf "Starting MySQL…\n"
        /bin/sh /usr/local/webserver/mysql/bin/mysqld_safe –defaults-file=/data0/mysql/${mysql_port}/my.cnf 2>&1 > /dev/null &
    }
    function_stop_mysql()
    {
        printf "Stoping MySQL…\n"
        /usr/local/webserver/mysql/bin/mysqladmin -u ${mysql_username} -p${mysql_password} -S /tmp/mysql.sock shutdown
    }
    function_restart_mysql()
    {
        printf "Restarting MySQL…\n"
        function_stop_mysql
        sleep 5
        function_start_mysql
    }
    function_kill_mysql()
    {
        kill -9 $(ps -ef | grep ‘bin/mysqld_safe’ | grep ${mysql_port} | awk ‘{printf $2}’)
        kill -9 $(ps -ef | grep ‘libexec/mysqld’ | grep ${mysql_port} | awk ‘{printf $2}’)
    }
    if [ "$1" = "start" ]; then
        function_start_mysql
    elif [ "$1" = "stop" ]; then
        function_stop_mysql
    elif [ "$1" = "restart" ]; then
    function_restart_mysql
    elif [ "$1" = "kill" ]; then
    function_kill_mysql
    else
        printf "Usage: /data0/mysql/${mysql_port}/mysql {start|stop|restart|kill}\n"
    fi

    ⑤、赋予shell脚本可执行权限
    chmod +x /data0/mysql/3306/mysql ⑥、启动MySQL
    /data0/mysql/3306/mysql start ⑦、设置MySql root用户的密码(记住,后面用到)
    /usr/local/webserver/mysql/bin/mysqladmin -u root password ’123456789′ ⑧、通过命令行登录管理MySQL服务器(提示输入密码时,输入刚才设置的密码)
    /usr/local/webserver/mysql/bin/mysql -u root -p -S /tmp/mysql.sock
    这时候到mysql命令行中
    ⑨、输入以下SQL语句,创建一个具有root权限的用户(admin)和密码(12345678)
    GRANT ALL PRIVILEGES ON *.* TO ‘admin’@'localhost’ IDENTIFIED BY ’12345678′;
    GRANT ALL PRIVILEGES ON *.* TO ‘admin’@’127.0.0.1′ IDENTIFIED BY ’12345678′;
    exit

    ⑩、(可选)停止MySQL
    /data0/mysql/3306/mysql stop

    3、编译安装PHP(FastCGI模式)
    我们先来看一下下面这两个命令的作用
    apt-cache search "freetype"
    这个命令是在源中查找和freetype有关的所有软件,然后再根据软件包的描述,找你自己需要的软件,然后就可以用下面的命令进行安装
    apt-get install libfreetype6-dev
    当然是要根据错误提示来查找相关的软件。
    我们在编译过程中,缺什么,就补什么,这个也算是一种解决问题的思路。希望能给大家带来点帮助!
    下面也是同样的道理,我就简写了。tar zxvf php-5.2.13.tar.gz
    gzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1
    cd php-5.2.13/
    ./configure –prefix=/usr/local/webserver/php –with-config-file-path=/usr/local/webserver/php/etc –with-mysql=/usr/local/webserver/mysql –with-mysqli=/usr/local/webserver/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 –with-xmlrpc –enable-zip –enable-soap
    make ZEND_EXTRA_LIBS=’-liconv’
    make install
    cp php.ini-dist /usr/local/webserver/php/etc/php.ini
    cd ../

    如果出现下面的错误提示
    checking for xml2-config… no
    checking for xml-config… no
    configure: error: XML configuration could not be found

    安装
    apt-get install libxml2-dev
    出现
    configure: error: Cannot find OpenSSL’s <evp.h>
    安装
    apt-get install libssl-dev
    出现
    configure: error: Please reinstall the libcurl distribution –
        easy.h should be in <curl-dir>/include/curl/

    安装
    apt-get install libcurl4-openssl-dev
    出现
    configure: error: libjpeg.(a|so) not found.
    安装
    apt-get install libjpeg62-dev
    出现
    configure: error: libpng.(a|so) not found.
    安装
    apt-get install libpng12-dev
    出现
    configure: error: freetype.h not found.
    安装
    apt-get install libfreetype6-dev
    出现
    configure: error: sasl.h not found!
    安装
    apt-get install libsasl2-dev

    4、编译安装PHP5扩展模块
    在这一步中,我们需要安装autoconf这个软件包
    apt-get install autoconf
    tar zxvf memcache-2.2.5.tgz
    cd memcache-2.2.5/
    /usr/local/webserver/php/bin/phpize
    ./configure –with-php-config=/usr/local/webserver/php/bin/php-config
    make && make install
    cd ../

    tar jxvf eaccelerator-0.9.6.tar.bz2
    cd eaccelerator-0.9.6/
    /usr/local/webserver/php/bin/phpize
    ./configure –enable-eaccelerator=shared –with-php-config=/usr/local/webserver/php/bin/php-config
    make && make install
    cd ../

    tar zxvf PDO_MYSQL-1.0.2.tgz
    cd PDO_MYSQL-1.0.2/
    /usr/local/webserver/php/bin/phpize
    ./configure –with-php-config=/usr/local/webserver/php/bin/php-config –with-pdo-mysql=/usr/local/webserver/mysql
    make && make install
    cd ../

    安装 ImageMagick的时候make会出现
    /usr/bin/ld: cannot find -lperl
    这时候就要安装
    apt-get install libperl-dev
    tar zxvf ImageMagick.tar.gz
    cd ImageMagick-6.5.1-2/
    ./configure
    make && make install
    cd ../

    tar zxvf imagick-2.3.0.tgz
    cd imagick-2.3.0/
    /usr/local/webserver/php/bin/phpize
    ./configure –with-php-config=/usr/local/webserver/php/bin/php-config
    make && make install
    cd ../

    5、修改php.ini文件
    手工修改: 
    查找/usr/local/webserver/php/etc/php.ini中的
    extension_dir = "./"
    修改为
    extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"
    并在此行后增加以下几行,然后保存:
    extension = "memcache.so"
    extension = "pdo_mysql.so"
    extension = "imagick.so"

    再查找
    output_buffering = Off
    修改为
    output_buffering = On
    自动修改:
    sed -i ‘s#extension_dir = "./"#extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"\nextension = "memcache.so"\nextension = "pdo_mysql.so"\nextension = "imagick.so"\n#’ /usr/local/webserver/php/etc/php.ini
    sed -i ‘s#output_buffering = Off#output_buffering = On#’ /usr/local/webserver/php/etc/php.ini
    sed -i "s#; always_populate_raw_post_data = On#always_populate_raw_post_data = On#g" /usr/local/webserver/php/etc/php.ini

    6、配置eAccelerator加速PHP
    mkdir -p /usr/local/webserver/eaccelerator_cache
    vi /usr/local/webserver/php/etc/php.ini

    到配置文件的最末尾,加上以下配置信息
    [eaccelerator]
    zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
    eaccelerator.shm_size="64"
    eaccelerator.cache_dir="/usr/local/webserver/eaccelerator_cache"
    eaccelerator.enable="1"
    eaccelerator.optimizer="1"
    eaccelerator.check_mtime="1"
    eaccelerator.debug="0"
    eaccelerator.filter=""
    eaccelerator.shm_max="0"
    eaccelerator.shm_ttl="3600"
    eaccelerator.shm_prune_period="3600"
    eaccelerator.shm_only="0"
    eaccelerator.compress="1"
    eaccelerator.compress_level="9"

    7、创建www用户和组,以及供debian.freeopens.com虚拟主机使用的目录
    /usr/sbin/groupadd www
    /usr/sbin/useradd -g www www
    mkdir -p /data0/htdocs/www
    chmod +w /data0/htdocs/www
    chown -R www:www /data0/htdocs/www

    8、创建php-fpm配置文件(php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi)
    在/usr/local/webserver/php/etc/目录中创建php-fpm.conf文件
    rm -f /usr/local/webserver/php/etc/php-fpm.conf
    vi /usr/local/webserver/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/webserver/php/logs/php-fpm.pid</value>
        Error log file
        <value name="error_log">/usr/local/webserver/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">0</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">128</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">65535</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">1024</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>

    9、启动php-cgi进程,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为www:
    ulimit -SHn 65535
    /usr/local/webserver/php/sbin/php-fpm start

    注:/usr/local/webserver/php/sbin/php-fpm还有其他参数,包括:start|stop|quit|restart|reload|logrotate,修改php.ini后不重启php-cgi,重新加载配置文件使用reload。
    如果出现下面的错误(这个错误是我在安装过程中发现的,是内在不足导致的,在文章的结尾优化后,就不会有这样的问题了,在这里做个记录,方便大家学习)
    Starting php_fpm eAccelerator: Could not allocate 67108864 bytes, the maximum size the kernel allows is 33554432 bytes. Lower the amount of memory request or increase the limit in /proc/sys/kernel/shmmax.
    PHP Warning:  [eAccelerator] Can not create shared memory area in Unknown on line 0
    PHP Fatal error:  Unable to start eAccelerator module in Unknown on line 0
    failed

    四、安装Nginx 0.8.34
    1、安装Nginx所需的pcre库
    tar zxvf pcre-8.01.tar.gz
    cd pcre-8.01/
    ./configure
    make && make install
    cd ../

    2、安装Nginx
    tar zxvf nginx-0.8.34.tar.gz
    cd nginx-0.8.34/
    ./configure –user=www –group=www –prefix=/usr/local/webserver/nginx –with-http_stub_status_module –with-http_ssl_module
    make && make install
    cd ../

    3、创建Nginx日志目录
    mkdir -p /data1/logs
    chmod +w /data1/logs
    chown -R www:www /data1/logs

    4、创建Nginx配置文件
    ①、在/usr/local/webserver/nginx/conf/目录中创建nginx.conf文件:
    rm -f /usr/local/webserver/nginx/conf/nginx.conf
    vi /usr/local/webserver/nginx/conf/nginx.conf

    输入以下内容
    user  www www;
    worker_processes 8;
    error_log  /data1/logs/nginx_error.log  crit;
    pid        /usr/local/webserver/nginx/nginx.pid;
    #Specifies the value for maximum file descriptors that can be opened by this process.
    worker_rlimit_nofile 65535;
    events
    {
      use epoll;
      worker_connections 65535;
    }
    http
    {
      include       mime.types;
      default_type  application/octet-stream;
      #charset  gb2312;
      server_names_hash_bucket_size 128;
      client_header_buffer_size 32k;
      large_client_header_buffers 4 32k;
      client_max_body_size 8m;
      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  blog.s135.com;
        index index.html index.htm index.php;
        root  /data0/htdocs/blog;
        #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  /data1/logs/access.log  access;
          }
      server
      {
        listen       80;
        server_name  www.s135.com;
        index index.html index.htm index.php;
        root  /data0/htdocs/www;
        location ~ .*\.(php|php5)?$
        {      
          #fastcgi_pass  unix:/tmp/php-cgi.sock;
          fastcgi_pass  127.0.0.1:9000;
          fastcgi_index index.php;
          include fcgi.conf;
        }
        log_format  wwwlogs  ‘$remote_addr – $remote_user [$time_local] "$request" ‘
                   ‘$status $body_bytes_sent "$http_referer" ‘
                   ‘"$http_user_agent" $http_x_forwarded_for’;
        access_log  /data1/logs/wwwlogs.log  wwwlogs;
      }
      server
      {
        listen  80;
        server_name  status.blog.s135.com;
        location / {
        stub_status on;
        access_log   off;
        }
      }
    }

    ②、在/usr/local/webserver/nginx/conf/目录中创建fcgi.conf文件
    vi /usr/local/webserver/nginx/conf/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;

    5、启动Nginx
    ulimit -SHn 65535
    /usr/local/webserver/nginx/sbin/nginx

    如果出现下面的错误
    usr/local/webserver/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory
    安装
    apt-get install libpcre3-dev
    五、配置开机自动启动Nginx + PHP + Mysql
    vi /etc/rc.local
    把下面的内容增加到exit 0的上面
    /data0/mysql/3306/mysql start
    ulimit -SHn 65535
    /usr/local/webserver/php/sbin/php-fpm start
    /usr/local/webserver/nginx/sbin/nginx

    六、优化Linux内核参数
    vi /etc/sysctl.conf
    在末尾增加以下内容
    # Add
    net.ipv4.tcp_max_syn_backlog = 65536
    net.core.netdev_max_backlog =  32768
    net.core.somaxconn = 32768
    net.core.wmem_default = 8388608
    net.core.rmem_default = 8388608
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.ipv4.tcp_timestamps = 0
    net.ipv4.tcp_synack_retries = 2
    net.ipv4.tcp_syn_retries = 2
    net.ipv4.tcp_tw_recycle = 1
    #net.ipv4.tcp_tw_len = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_mem = 94500000 915000000 927000000
    net.ipv4.tcp_max_orphans = 3276800
    #net.ipv4.tcp_fin_timeout = 30
    #net.ipv4.tcp_keepalive_time = 120
    net.ipv4.ip_local_port_range = 1024  65535

    使配置立即生效
    /sbin/sysctl -p
    七、相关软件的重新启动
    如果说你改了nginx的配置文件,就要用下面的命令,使配置生效
    /usr/local/webserver/nginx/sbin/nginx -t   检查参数
    kill -HUP `cat /usr/local/webserver/nginx/nginx.pid`   平滑重启

    如果说你改了php.ini就要用下面的命令,使配置生效
    /usr/local/webserver/php/sbin/php-fpm reload 重新加载 mysql数据库重新启动
    /data0/mysql/3306/mysql restart
    八、每天定时切割Nginx日志
    1、创建脚本/usr/local/webserver/nginx/sbin/cut_nginx_log.sh
    vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
    输入以下内容
    #!/bin/bash
    # This script run at 00:00
    # The Nginx logs path
    logs_path="/usr/local/webserver/nginx/logs/"
    mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
    mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
    kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`

    2、设置crontab,每天凌晨00:00切割nginx访问日志 crontab -e
    增加以下内容
    00 00 * * * /bin/bash  /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
    九、在小内存服务器上的配置优化
    1、Nginx  的主配置文件(nginx.conf)优化

    vi /usr/local/webserver/nginx/conf/nginx.conf
    根据下面的内容进行相应的修改和增加
    #Nginx每个进程耗费10M~12M内存,这里只开启一个Nginx进程,节省内存。
    worker_processes 1;
    #对网页文件、CSS、JS、XML等启动gzip压缩,减少数据传输量,提高访问速度。
    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;
    location ~ .*\.(php|php5)?$
       {
         #将Nginx与FastCGI的通信方式由TCP改为Unix Socket。TCP在高并发访问下比Unix Socket稳定,但Unix Socket速度要比TCP快。
         fastcgi_pass  unix:/tmp/php-cgi.sock;
         #fastcgi_pass  127.0.0.1:9000;
         fastcgi_index index.php;
         include fcgi.conf;
       }
    location ~ /read.php
       {
         #将Nginx与FastCGI的通信方式由TCP改为Unix Socket。TCP在高并发访问下比Unix Socket稳定,但Unix Socket速度要比TCP快。
         fastcgi_pass  unix:/tmp/php-cgi.sock;
         #fastcgi_pass  127.0.0.1:9000;
         fastcgi_index index.php;
         include fcgi.conf;
       }
    #博客的图片较多,更改较少,将它们在浏览器本地缓存15天,可以提高下次打开我博客的页面加载速度。
       location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
       {
         expires      15d;
       }
       #博客会加载很多JavaScript、CSS,将它们在浏览器本地缓存1天,访问者在看完一篇文章或一页后,再看另一篇文件或另一页的内容,无需从服务器再次下载相同的JavaScript、CSS,提高了页面显示速度。
       location ~ .*\.(js|css)?$
       {
         expires      1d;
       }

    2、PHP(FastCGI)的配置优化
    php.ini 配置文件中关于eAcelerator的优化。只使用1M共享内存,删除所有在最后3600秒内无法存取的脚本缓存,用磁盘辅助进行缓存。
    vi /usr/local/webserver/php/etc/php.ini
    根据内容增加或者修改
    eaccelerator.shm_size="1"
    eaccelerator.shm_ttl="3600"
    eaccelerator.shm_prune_period="3600"
    eaccelerator.keys = "disk_only"
    eaccelerator.sessions = "disk_only"
    eaccelerator.content = "disk_only"

    php-fpm.conf 的配置优化
    vim /usr/local/webserver/php/etc/php-fpm.conf
    一是修改以下一行,将启动的php-cgi进程数由原来的128个改为5个:
    <value name="max_children">5</value>
    二是修改以下一行,将TCP模式改为Unix Socket模式:
    <value name="listen_address">/tmp/php-cgi.sock</value> 3、MySQL配置优化
    vi /data0/mysql/3306/my.cnf
    根据自己的情况改吧
    [client]
    port    = 3306
    socket  = /tmp/mysql.sock
    [mysql]
    prompt="(\u:s135:)[\d]> "
    no-auto-rehash
    [mysqld]
    user    = mysql
    port    = 3306
    socket  = /tmp/mysql.sock
    basedir = /usr/local/webserver/mysql
    datadir = /usr/local/webserver/mysql/data
    open_files_limit    = 600
    back_log = 20
    max_connections = 100
    max_connect_errors = 200
    table_cache = 60
    external-locking = FALSE
    max_allowed_packet = 16M
    sort_buffer_size = 128K
    join_buffer_size = 128K
    thread_cache_size = 10
    thread_concurrency = 8
    query_cache_size = 0M
    query_cache_limit = 2M
    query_cache_min_res_unit = 2k
    default_table_type = MyISAM
    thread_stack = 192K
    transaction_isolation = READ-UNCOMMITTED
    tmp_table_size = 512K
    max_heap_table_size = 32M
    /usr/local/webserver/mysql/data/slow.log
    /usr/local/webserver/mysql/data/error.log
    long_query_time = 1
    log_long_format
    server-id = 1
    #log-bin = /usr/local/mysql/data/binlog
    binlog_cache_size = 2M
    max_binlog_cache_size = 4M
    max_binlog_size = 512M
    expire_logs_days = 7
    key_buffer_size = 4M
    read_buffer_size = 1M
    read_rnd_buffer_size = 2M
    bulk_insert_buffer_size = 2M
    myisam_sort_buffer_size = 4M
    myisam_max_sort_file_size = 10G
    myisam_max_extra_sort_file_size = 10G
    myisam_repair_threads = 1
    myisam_recover
    [mysqldump]
    quick
    max_allowed_packet = 16M

    最后给个优化前后的对比图
    优化前
    1 2
    优化后
    3 4  
    本主参考文章:
    http://blog.s135.com/nginx_php_v6/
    http://blog.s135.com/post/375/

    有问题请给我留言,让我们一起交流学习!
    珍惜劳动成果,转载请注明本文地址!

    相关文章

    1. topkey Said,

      不错,我还没有研究出来。

      [回复]

    2. 支持 Said,

      支持原创,谢谢了

      [回复]

    3. network_sina Said,

      顶,顶,顶,顶,继续努力!

      [回复]

    4. 羽飞 Said,

      有什么问题,希望大家及时提出,我好更正!
      感谢大家的支持!

      [回复]

    5. freeopens Said,

      博客文章写的不错啊,再多些几篇都快成业余作者了,模板挺漂亮很醒目 O(∩_∩)O哈哈~希望你再接再厉啊 2010年一定要努力 努力!

      [回复]

      羽飞 回复:

      你的网站要很强悍啊!!多向你学习,以后多多指点!

      [回复]

      topkey 回复:

      飞哥,那是广告

      [回复]

      羽飞 回复:

      不是吧!!看来是我太善良了!!

      [回复]

      轩痕 回复:

      围观委屈的飞哥。。。

      [回复]

    6. carlos Said,


      tar zxvf libmcrypt-2.5.8.tar.gz
      cd libmcrypt-2.5.8/
      /sbin/ldconfig
      cd libltdl/
      ./configure –enable-ltdl-install
      make && make install
      cd ..
      ./configure
      make && make install
      cd ../

      /sbin/ldconfig 这句的作用是什么?
      cd libltdl/ 这句出错,No such file or dierctory

      请楼主指点,谢~~

      [回复]

      羽飞 回复:

      ldconfig 命令的用途主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库,进而创建出动态装入程序(ld.so)所需的连接和缓存文件。
      cd libltdl/ 这句出错,No such file or dierctory
      看看你在不在libmcrypt-2.5.8这个目录里面
      用这个命令cd libmcrypt-2.5.8/ libltdl/试试看

      [回复]

      carlos 回复:

      谢楼主热情解答
      在我本地出错信息如下
      debian:~/soft# cd libmcrypt-2.5.8/
      debian:~/soft/libmcrypt-2.5.8# /sbin/ldconfig
      /sbin/ldconfig: Writing of cache data failed: No space left on device
      但是实际上我这一个200多G的硬盘上就装了一个DEBIAN,别的什么都没有,怎么会设备上没有空间了?
      郁闷!

      [回复]

      羽飞 回复:

      df看一下!看看什么个情况!

      [回复]

    7. carlos Said,

      菲戈:
      这两句的force前面少了一个’-'吧
      dpkg –force-all -P mysql-common
      dpkg –force-all -P libmysqlclient15off
      应该是
      dpkg –force-all -P mysql-common
      dpkg –force-all -P libmysqlclient15off
      吧~~^_^

      [回复]

      羽飞 回复:

      是这样的,原本是”–”但发表后就是一个”-”
      郁闷啊!!我再看看哪里能解决这个问题!
      谢谢提醒!

      [回复]

      羽飞 回复:

      问题已经解决了!!

      [回复]

      live 回复:

      dpkg: unknown option -o

      Type dpkg –help for help about installing and deinstalling packages [*];
      Use `dselect’ or `aptitude’ for user-friendly package management;
      Type dpkg -Dhelp for a list of dpkg debug flag values;
      Type dpkg –force-help for a list of forcing options;
      Type dpkg-deb –help for help about manipulating *.deb files;
      Type dpkg –license for copyright license and lack of warranty (GNU GPL) [*].

      Options marked [*] produce a lot of output – pipe it through `less’ or `more’ !

      运行后提示这个是删除了吗?

      [回复]

    8. carlos Said,

      楼主好;
      文章里面许多地方出现了全角字符?直接paste出现乱码。
      许多应该是 — 的地方都只有 -

      如果菲戈有兴趣自己走一遍的话,直接CTRL+C CTRL+V试试就知道了。

      另外
      执行到
      ⑦、设置MySql root用户的密码(记住,后面用到)
      /usr/local/webserver/mysql/bin/mysqladmin -u root password ‘123456789′

      出错如下
      /usr/local/webserver/mysql/bin/mysqladmin: connect to server at ‘localhost’ failed
      error: ‘Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)’
      Check that mysqld is running and that the socket: ‘/tmp/mysql.sock’ exists!

      [回复]

      羽飞 回复:

      关于 —和 -我有空的时候再来整理一下,关于你说的MySql的错误,是你的MySql没有启动的原因!你再仔细检查一下看看,是不是有哪里出错了?

      [回复]

      topkey 回复:

      没有启动mysql

      [回复]

    9. carlos Said,

      感谢楼主的帖子,终于走下来了。
      本来都打算转投CENTOS了,呵呵。

      [回复]

    10. carlos Said,

      楼主好:
      今天在一台512M内存的机器上按照教程配置完毕后出现502 Bad Gateway的错误。在网上查找
      根据
      http://blog.s135.com/post/361/
      进行修改没有效果。
      不知菲戈有何提示?

      [回复]

      topkey 回复:

      查看你的配置文件有没有错误之类的啊。重新弄一边,或者是权限问题。

      [回复]

      羽飞 回复:

      按topkey 的回复看看!!

      [回复]

    11. 一次成功~~~ Said,

      按照这里的步骤Ctrl C/Ctrl V张宴的代码,一次就OK了,谢谢博主!

      [回复]

      羽飞 回复:

      在开始的时候,由于博客程序自动把”–”变成”-”所以不能直接复制,现在也可以Ctrl+C/Ctrl+V 就OK了!

      [回复]

      一次成功~~~ 回复:

      不知博主有没有将命令打包的想法,呵呵.

      [回复]

      羽飞 回复:

      以后做成PDF文档!

      [回复]

      一次成功~~~ 回复:

      文中nginx和fpm配置部分至少还有两处因全角字符引起的错误,呵呵.

      我已经重新全程记录好了安装过程,尝试看能不能装zend optimizer.

      [回复]

      羽飞 回复:

      OK,有空的时候,我再重新编辑一下!

      又回来了 回复:

      有个请求说下,呵呵.

      本文是针对VPS的配置方式吧,能否在下一版针对独立服务器呢?

      下午装了zend optimizer,已经记录了安装方式,还算很容易装.
      但是刚刚在装memcached的时候出错忘记记录查错过程了,稀里糊涂装好才发现忘记怎么装的…汗…

    12. 羽飞 Said,

      @又回来了
      VPS的配置方式和独立服务器一样啊!!只是针对自己的服务器的性能,进行相应的优化,就可以了!!

      [回复]

      又回来了 回复:

      呵呵我悲剧了.
      我只会安装系统(吹牛一下,几乎能下到的所有系统吧),勉强可以安装环境,但不知道怎么优化和配置…

      [回复]

      羽飞 回复:

      本文的第九点有些说明,你还可以找一下我BLOG中以前我转的关于MYSQL的优化,这样基本上就OK了。
      当然,在使用中如果出现问题,就根据问题再进行相应的优化!
      以上只是个人观点!!

      [回复]

      又回来了 回复:

      呵呵,这个也只能实际中慢慢实践了.

      [回复]

    13. firefish Said,

      博主,完全按照你的步骤,因为已经装过mysql了,所以在配置选项中去掉了mysql的两个选项,然而在编译PHP时执行:
      make ZEND_EXTRA_LIBS=’-liconv’
      遇到错误:
      /bin/sh /home/soft/php/php-5.2.13/libtool –silent –preserve-dup-deps –mode=compile gcc -Iext/date/lib -Iext/date/ -I/home/soft/php/php-5.2.13/ext/date/ -DPHP_ATOM_INC -I/home/soft/php/php-5.2.13/include -I/home/soft/php/php-5.2.13/main -I/home/soft/php/php-5.2.13 -I/home/soft/php/php-5.2.13/ext/date/lib -I/usr/include/libxml2 -I/usr/include/freetype2 -I/home/soft/php/php-5.2.13/ext/mbstring/oniguruma -I/home/soft/php/php-5.2.13/ext/mbstring/libmbfl -I/home/soft/php/php-5.2.13/ext/mbstring/libmbfl/mbfl -I/usr/local/include -I/home/soft/php/php-5.2.13/TSRM -I/home/soft/php/php-5.2.13/Zend -I/usr/local/include -g -O2 -c /home/soft/php/php-5.2.13/ext/date/lib/parse_date.c -o ext/date/lib/parse_date.lo

      cc1: out of memory allocating 4064 bytes after a total of 32792576 bytes
      make: *** [ext/date/lib/parse_date.lo] Error 1

      vps 256m内存debian 5,请问是什么问题啊?谢谢。

      [回复]

      羽飞 回复:

      应该是你的内存不够的原因,你把其它没有用的程序全部KILL掉,只留下一下编译的!这样可能会好点!!
      要不,你可以增加一个SWAP,来解决内存不足的问题,前提,你的VPS需要支持自己增加SWAP!

      [回复]

    14. Jetaimt Said,

      支持,我的是CentOS版本的LINUX,我是用RPM包做的,LAMP环境也完成了,这前用BZ包做的时候老出问题,现在看了知道哪里出问题啦。。。非常的感谢,继续加油~~~

      [回复]

      topkey 回复:

      http://blog.s135.com/post/366/ 参考这个

      [回复]

    15. guiduan Said,

      博主,您好:
      想向您请教一个关于nginx的问题:nginx能不能想apache那样,在目录列表页添加头部和尾部文件,就像康盛创想的下载中心(http://download.comsenz.com/)那样?

      [回复]

      羽飞 回复:

      看一下这个文章,对你有帮助不!
      http://bbs.linuxtone.org/viewthread.php?tid=5245&highlight=index

      [回复]

      guiduan 回复:

      谢谢博主,这个很有帮助,但是昨天我把nginx的源码下载下来,并且用grep -r “Index of” ~/nginx/*发现在源码包的src/http/modules/ngx_http_autoindex_module.c中找到了一下代码:
      static u_char title[] =
      “” CRLF
      “Index of ”
      ;

      static u_char header[] =
      “” CRLF
      “” CRLF
      “Index of ”
      ;

      static u_char tail[] =
      “” CRLF
      “” CRLF
      ;
      然后我就直接在这里添加我自定义的html代码,然后再重新编译安装nginx,结果也还是解决了这个问题,但是花了我好大的力气呀!

      [回复]

    16. 学习 Said,

      /data0/mysql/3306/mysql start
      飞哥,到这一步MYSQL启动不起来。
      一步一步按照教程做的,什么原因呀?

      [回复]

      羽飞 回复:

      启动不了,有什么提示啊?安装中有没有什么错误提示?
      还有就是,是没有3306端口还是什么其它的?
      你只有结果,让我很难判断啊!

      [回复]

    17. 一起玩 Said,

      mysql_port=3306
      kill -9 $(ps -ef | grep ‘bin/mysqld_safe’ | grep ${mysql_port} | awk ‘{printf $2}’)
      kill -9 $(ps -ef | grep ‘libexec/mysqld’ | grep ${mysql_port} | awk ‘{printf $2}’)

      飞哥
      这两句中的${mysql_port},也就是3306是端口还是路径文件夹名

      另外,2个1.5TB磁盘web服务器,怎么分区比较好呢
      在你的这篇文章里,好象没有提起其他分区,难道你的只有swap分区和/分区?

      [回复]

      羽飞 回复:

      是3306端口啊!
      至于分区,根据自己的情况不划分吧!!

      [回复]

    18. wuruiqiww Said,

      挺好的

      [回复]

    19. live Said,

      /usr/local/webserver/mysql/bin/mysqladmin -u root password ’123456789′
      执行后 提示
      /usr/local/webserver/mysql/bin/mysqladmin -u root password ’123456789′
      /usr/local/webserver/mysql/bin/mysqladmin: Can’t read dir of ‘/etc/mysql/conf.d/’ (Errcode: 2)
      Fatal error in defaults handling. Program aborted
      楼主,怎么办问题出在哪了

      [回复]

    发表评论