





Nginx+mysql+php-fpm´î½¨¸ßÐÔÄÜNginxƽ̨
ϵͳ»·¾³£ºrhel4.7¡¢centos5.5
1¡¢ÂíÉÏ¿´¿´ËùÐèÈí¼þ
|
mysql-5.0.92.tar.gz |
ºôÀÀ£¬Ò»´ó¶ÑÈí¼þ£¬ÂíÉÏ¿´¿´Ôõô°²×°ÕâÒ»´ó¶ÑÈí¼þ£¡
2¡¢°²×°mysql
| tar xvfz mysql-5.0.92.tar.gz cd mysql-5.0.92 ./configure --prefix=/usr/local/mysql --localstatedir=/home/var --with-charset=utf8 --with-extra-charsets=all --with-berkeley-db --with-innodb --without-readline --enable-assembler --with-pthread --enable-thread-safe-client --with-client-ldflags=-all-static make make install |
ÈçºÎ²»´òËãÔÚ±¾»úÆ÷ÉÏÔËÐÐmysql£¬¿ÉÒÔÌø¹ýÏÂÃæÕâÒ»²½
ÅäÖÃmysql
|
vi /etc/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 = /home/var log-error = /home/var/mysql_error.log pid-file =/home/var/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 = /home/var//binlog/binlog binlog_cache_size = 4M binlog_format = MIXED max_binlog_cache_size = 8M max_binlog_size = 1G relay-log-index = /home/var/relaylog/relaylog relay-log-info-file = /home/var/relaylog/relaylog relay-log = /home/var/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 = /home/var/slow.log #long_query_time = 10 [mysqldump] quick max_allowed_packet = 32M |
³õʼ»¯Êý¾Ý¿â¼°ÅäÖÃÆô¶¯·½·¨
|
/usr/local/mysql/bin/mysql_install_db --user=mysql |
3¡¢°²×°libiconv¡¢libxml2¡¢gdµÈPHP¿â
|
tar zxvf libiconv-1.13.tar.gz tar zxvf libxml2-2.6.31.tar.gz mkdir -pv /usr/local/jpeg6/{,bin,lib,include,man/man1,man1} tar zvxf freetype-2.3.5.tar.gz tar zvxf zlib-1.2.3.tar.gz tar zxvf libpng-1.2.40.tar.gz tar xzvf gd-2.0.35.tar.gz tar -zxvf libmcrypt-2.5.7.tar.gz ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la |
ÕâÑù¾Í°²×°Íê³Éphp³£ÓõĿâÁË
4¡¢½Ó×Ű²×°php¡¢php-frm
| tar zxvf php-5.2.17.tar.gz gzip -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.2.17 -p1 cd php-5.2.17 ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv=/usr/local/libiconv/ --with-libxml-dir=/usr/local/libxml2 --with-gd=/usr/local/gd/ --with-jpeg-dir=/usr/local/jpeg6/ --with-zlib-dir=/usr/local/zlib --with-png-dir=/usr/local/lib --with-freetype-dir=/usr/local/freetype --with-mysql=/usr/local/mysql --with-mcrypt=/usr/local/lib/libmcrypt --enable-mbstring --with-openssl --enable-ftp --with-curl --enable-fastcgi --enable-xml --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex --enable-fpm --enable-force-cgi-redirect --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl make make install cp php.ini-dist /usr/local/php/lib/php.ini |
PHPµÄÅäÖÃÒ»»áÔÙ˵£¬ÏȰÑnginx°²×°Íê³É
5¡¢nginx¼°phpÀ©Õ¹²å¼þ
|
tar zxvf pcre-8.01.tar.gz
groupadd www useradd -g www -d /home/www -s /sbin/nologin www tar zxvf nginx-0.9.5.tar.gz tar zxvf memcache-2.2.5.tgz tar jxvf eaccelerator-0.9.5.3.tar.bz2 mkdir /tmp/eaccelerator |
6¡¢°²×°ÍêÄÇÒ»´ó¶ÑÈí¼þÖ®ºó£¬Òª¿ªÊ¼ÅäÖÃÁË£¬ÏÂÃæÕâЩ²ÅÊǹؼü
µÚÒ»²½£ºÅäÖÃphp.ini
| vi /usr/local/php/lib/php.ini |
ÕÒµ½
| extension_dir ="" |
Ð޸ijÉ
|
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/" |
ÔÙÕÒµ½
| output_buffering=off |
Ð޸ijÉ
| output_buffering = On |
ÔٴβéÕÒ
| ; cgi.fix_pathinfo=0 |
°Ñ×¢ÊÍÈ¥µô
| cgi.fix_pathinfo=0 |
×îºóÌøµ½php.iniÎļþµÄĩ⣬¼ÓÈëÒÔÏÂÄÚÈÝ£º
| [eaccelerator] zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so" eaccelerator.shm_size="16" eaccelerator.cache_dir="/tmp/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="0" eaccelerator.compress_level="9" eaccelerator.keys = "disk_only" eaccelerator.sessions = "disk_only" eaccelerator.content = "disk_only" |
ÖÁ´Ë£¬php.iniÎļþÐÞ¸ÄÍê±Ï£¡
µÚ¶þ²½£ºÅäÖÃnginxµÄFCGI
| vi /usr/local/nginx/conf/fcgi.conf |
дÈëÒÔÏÂÄÚÈÝ£º
|
fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param QUERY_STRING $query_string; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param REMOTE_ADDR $remote_addr; # PHP only, required if PHP was built with --enable-force-cgi-redirect |
µÚÈý²½£ºÅäÖÃphp-fpmÎļþ
|
mv /usr/local/php/etc/php-fpm.conf /usr/local/php/etc/php-fpm.conf.bak |
ÖØÐÂдÈëÒÔÏÂÄÚÈÝ
|
<?xml version="1.0" ?> All relative paths in this config are relative to php's install prefix <section name="global_options"> Pid file Error log file Log level When this amount of php processes exited with SIGSEGV or SIGBUS ... ... in a less than this interval of time, a graceful restart will be initiated. Time limit on waiting child's reaction on signals from master Set to 'no' to debug fpm </section> <workers> <section name="pool"> Name of pool. Used in logs and stats. Address to accept fastcgi requests on. <value name="listen_options"> Set listen(2) backlog Set permissions for unix socket, if one used. Additional php.ini defines, specific to this pool of workers. Unix user of processes Unix group of processes Process manager settings Sets style of controling worker process count. Sets the limit on the number of simultaneous requests that will be served. Settings group for 'apache-like' pm style Sets the number of server processes created on startup. Sets the desired minimum number of idle server processes. Sets the desired maximum number of idle server processes. </value> </value> The timeout (in seconds) for serving a single request after which the worker process will be terminated The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file The log file for slow requests Set open file desc rlimit Set max core size rlimit 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. How much requests each process should execute before respawn. Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect. Pass environment variables like LD_LIBRARY_PATH </section> </workers> </configuration> |
µÚËIJ½£ºÅäÖÃnginx.confÎļþ
| vi /usr/local/nginx/conf/nginx.conf |
дÈëÒÔÏÂÄÚÈÝ
|
user www www; worker_processes 8; #error_log /usr/local/nginx/logs/error.log; #pid logs/nginx.pid; worker_rlimit_nofile 204800; events { http { #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' #access_log logs/access.log main; sendfile on; ignore_invalid_headers on; gzip on; server_names_hash_bucket_size 256; open_file_cache max=204800 inactive=20s; location ~ .*\.(js|css)?$ { location ~ .*\.(log|txt)$ location ~ .*\.(php)?$ |
7¡¢Æô¶¯·þÎñ
|
/usr/local/php/sbin/php-fpm start |
¿´¿´ÓÐûÆô¶¯³É¹¦
| [root@localhost ~]# netstat -tunlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN 3937/snmpd tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3954/php-cgi tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2662/mysqld tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 18066/nginx tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 17955/vsftpd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 4137/sendmail: acce tcp 0 0 :::5989 :::* LISTEN 2714/cimserver tcp 0 0 :::22 :::* LISTEN 2574/sshd udp 0 0 0.0.0.0:161 0.0.0.0:* 3937/snmpd |
¿´¼ûphp-cgiºÍnginx¶Ë¿ÚÔÚÕý³£¼àÌý£¡
±¾Îijö×Ô ¡°ÔËά±Ê¼Ç¡± ²©¿Í£¬ÇëÎñ±Ø±£Áô´Ë³ö´¦http://lihuipeng.blog.51cto.com/3064864/561862
1ÈË |
ÁËÕâÆªÎÄÕ |