Centos6.2实战部署Nginx+MySQL+PHP

#lnmp是什么?

1.Linux操作系统(Linux),是一类Unix计算机操作系统的统称。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软体和开放源代码发展中最著名的例子.


2.Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多了。Igor 将源代码以类BSD许可证的形式发布。自Nginx 发布四年来,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;国内几个重要的视频分享网站也部署了Nginx,如六房间、酷6等。新近发现Nginx 技术在国内日趋火热,越来越多的网站开始部署Nginx.


3.PHP 是什么?

PHP(“PHP: Hypertext Preprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 web 开发。


4.MySQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。


MySQL的特性:

使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性

支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统

为多种编程语言提供了API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。

支持多线程,充分利用CPU资源

优化的SQL查询算法,有效地提高查询速度

既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中

提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名

提供TCP/IP、ODBC和JDBC等多种数据库连接途径

提供用于管理、检查、优化数据库操作的管理工具

可以处理拥有上千万条记录的大型数据库


MySQL的应用:

与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL不支持视图(已经被列入5.1版的开发计划)、事件等)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。

目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是遵循GPL的开放源码软件,因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。


MySQL管理:

可以使用命令行工具管理MySQL数据库(命令mysql 和 mysqladmin),也可以从MySQL的网站下载图形管理工具MySQL Administrator和MySQL Query Browser。

phpMyAdmin是由php写成的MySQL资料库系统管理程式,让管理者可用Web介面管理MySQL资料库。

phpMyBackupPro也是由PHP写成的,可以透过Web介面创建和管理数据库。它可以创建伪cronjobs,可以用来自动在某个时间或周期备份MySQL 数据库。


Mysql存储引擎:

MyISAM Mysql的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事务

InnoDB 事务型数据库的首选引擎,支持ACID事务,支持行级锁定

BDB 源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性

Memory 所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失

Merge 将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用

Archive 非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive 拥有高效的插入速度,但其对查询的支持相对较差

Federated 将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用Cluster/NDB 高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用

CSV 逻辑上由逗号分割数据的存储引擎

BlackHole 黑洞引擎,写入的任何数据都会消失


另外,Mysql的存储引擎接口定义良好。有兴趣的开发者通过阅读文档编写自己的存储引擎。


Mysql最常见的应用架构:

单点(Single),适合小规模应用

复制(Replication),适合中小规模应用

集群(Cluster),适合大规模应用


Mysql6.0的alpha版于2007年初发布,新版增加了对falcon存储引擎的支持。Falcon是Mysql社区自主开发的引擎,支持ACID特性事务,支持行锁,拥有高性能的并发性。Mysql AB公司想用Falcon替代已经非常流行的InnoDB引擎,因为拥有后者技术的InnoBase已经被竞争对手Oracle所收购。


5.Zend,eAccelerator这两个是用来加速或优化php的速度的

其实,Zend是一个公司,且有好几个产品.本文里说的zend是指 ZendOptimizer.ZendOptimizer 就是来用加速或优化经过加密的PHP代码

ZendOptimizer是用来提高PHP应用程序的执行速度。实现的原理是对那些程序在被最终执行之前由运行编译器(Run-Time Compiler)产生的代码进行优化。一般情况下,执行使用Zend Optimizer的PHP程序比不使用的要快40%到100%。这意味着网站的访问者可以更快的浏览网页,从而完成更多的事务,创造更好的客户满意度。


6.eaccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了性能php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍


7.Imagick

PHP中Imagick类,提供了比GD库函数更为方便和强大的图片处理功能。由于工作关系研究了一阵,略有收获,不敢独乐,特与大家分享。使用Imagick类,需要PHP安装imagemagick扩展模块。其实就是linux命令行中增加了convert命令。最有一个图片压缩的函数只能针对jpeg图片,但是我用PHP中Imagick类提供的图片质量压缩不能达到压缩功能,目前尚未解决。所以用命令行解决。


8.Memcache

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。


9.ImageMagick

ImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式。利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存,对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。同时ImageMagick提供了一个高质量的2D工具包,部分支持SVG。现在,ImageMagic的主要精力集中在性能、减少bug以及提供稳定的API和ABI上。



10.google-perftools

google-perftools 是一款针对 C/C++ 程序的性能分析工具,它是一个遵守 BSD 协议的开源项目。使用该工具可以对 CPU 时间片、内存等系统资源的分配和使用进行分析




#系统环境:

[root@dba01 ~]# cat /etc/redhat-release

CentOS release 6.2 (Final)

[root@dba01 ~]# uname -a

Linux dba01 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux



[root@dba01 ~]# rz -y

rz waiting to receive.

zmodem trl+C ȡ


 100%    5349 KB 2674 KB/s 00:00:02       0 Errors

 100%   23727 KB  988 KB/s 00:00:24       0 Errors


[root@dba01 ~]# ll cmake-2.8.4.tar.gz mysql-5.5.19.tar.gz

-rw-r--r--. 1 root root  5477628 Sep 19  2011 cmake-2.8.4.tar.gz

-rw-r--r--. 1 root root 24296942 Dec 19  2011 mysql-5.5.19.tar.gz


#安装cmake

[root@dba01 ~]# tar -zxf cmake-2.8.4.tar.gz

[root@dba01 ~]# cd cmake-2.8.4

[root@dba01 cmake-2.8.4]# ./configure && gmake && gmake install


#安装mysql

[root@dba01 cmake-2.8.4]# cd ..

[root@dba01 ~]# groupadd mysql

[root@dba01 ~]# useradd -g mysql mysql

[root@dba01 ~]# tar -zxf mysql-5.5.19.tar.gz

[root@dba01 ~]# cd mysql-5.5.19

[root@dba01 mysql-5.5.19]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STOPAGE_ENGINE=1 -DWITH_BLACKHOLE_STOPAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/var/mysql/data -DMYSQL_USER=mysql -DMYSQL_TCP-PORT=3306



参数说明:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装目录

-DMYSQL_DATADIR=/var/mysql/data数据库存放目录

-DWITH_MYISAM_STORAGE_ENGINE=1 //安装myisam存储引擎

-DWITH_INNOBASE_STORAGE_ENGINE=1 //安装innodb存储引擎

-DWITH_ARCHIVE_STORAGE_ENGINE=1 //安装archive存储引擎

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 //安装blackhole存储引擎

-DENABLED_LOCAL_INFILE=1 //允许从本地导入数据

-DDEFAULT_CHARSET=utf8   //使用utf8字符

-DDEFAULT_COLLATION=utf8_general_ci //校验字符

-DEXTRA_CHARSETS=all   //安装所有扩展字符集

-DMYSQL_TCP_PORT=3306 //MySQL监听端口

-DMYSQL_USER=mysql //MySQL用户名

其他参数:

-DWITH-EMBEDDED_SERVER=1 //编译成embedded MySQL library (libmysqld.a)

-DSYSCONFDIR=/etc //MySQL配辑文件

-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock //Unix socket 文件路径

-DWITH_READLINE=1 //快捷键功能

-DWITH_SSL=yes //SSL

-DWITH_MEMORY_STORAGE_ENGINE=1 //安装memory存储引擎

-DWITH_FEDERATED_STORAGE_ENGINE=1 //安装frderated存储引擎

-DWITH_PARTITION_STORAGE_ENGINE=1 //安装数据库分区

-DINSTALL_PLUGINDIR=/usr/local/mysql/plugin //插件文件及配置路径


[root@dba01 mysql-5.5.19]# make && make install

[root@dba01 mysql-5.5.19]# chmod +w /usr/local/mysql

[root@dba01 mysql-5.5.19]# chown -R mysql:mysql /usr/local/mysql

[root@dba01 mysql-5.5.19]# ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18

[root@dba01 mysql-5.5.19]# mkdir -p /var/mysql/

[root@dba01 mysql-5.5.19]# mkdir -p /var/mysql/data

[root@dba01 mysql-5.5.19]# mkdir -p /var/mysql/log

[root@dba01 mysql-5.5.19]# chown -R mysql:mysql /var/mysql/

[root@dba01 mysql-5.5.19]# cd support-files/

[root@dba01 support-files]# cp my-large.cnf /etc/my.cnf

cp: overwrite `/etc/my.cnf'? yes

[root@dba01 support-files]# cp mysql.server /etc/init.d/mysqld

[root@dba01 support-files]# /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/var/mysql/data/ --user=mysql

[root@dba01 support-files]# chmod +x /etc/init.d/mysqld


[root@dba01 support-files]# vim /etc/init.d/mysqld +46



在basedir=/usr/local/mysql (添加)

datadir=/var/mysql/data   (添加)


[root@dba01 support-files]# chkconfig --add mysqld

[root@dba01 support-files]# chkconfig --level 345 mysqld on

[root@dba01 support-files]# chkconfig --list|grep mysqld

mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off


[root@dba01 support-files]# ln -s /usr/local/mysql/bin/* /bin/

[root@dba01 support-files]# /etc/init.d/mysqld restart

ERROR! MySQL server PID file could not be found!

Starting MySQL.......................... SUCCESS!

[root@dba01 support-files]# netstat -lntp|grep mysqld

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      46116/mysqld  



[root@dba01 support-files]# mysqladmin -uroot password '123456'

[root@dba01 support-files]# mysql -uroot -p123456

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.5.19-log Source distribution


Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> show engines;                                               #查看mysql存储引擎

+--------------------+---------+------------------------------------------------------------+--------------+------+------------+

| Engine             | Support | Comment                                                    | Transactions | XA   | Savepoints |

+--------------------+---------+------------------------------------------------------------+--------------+------+------------+

| MyISAM             | YES     | MyISAM storage engine                                      | NO           | NO   | NO         |

| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |

| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |

| PERFORMANCE_SCHEMA | YES     | Performance Schema                                         | NO           | NO   | NO         |

| CSV                | YES     | CSV storage engine                                         | NO           | NO   | NO         |

| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |

+--------------------+---------+------------------------------------------------------------+--------------+------+------------+

6 rows in set (0.00 sec)


mysql> show variables like 'innodb_version'\G;                     #查看innodb存储引擎版本。

*************************** 1. row ***************************

Variable_name: innodb_version

       Value: 1.1.8

1 row in set (0.00 sec)




mysql> show variables like 'log_error';                             #查看mysql错误日志存放路径

+---------------+---------------------------+

| Variable_name | Value                     |

+---------------+---------------------------+

| log_error     | /var/mysql/data/dba01.err |

+---------------+---------------------------+

1 row in set (0.00 sec)



mysql> system hostname;                                             #查看mysql主机名

dba01


mysql> show create table mysql.slow_log;                            #查看mysql慢查询日志结构

+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table    | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |

+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| slow_log | CREATE TABLE `slow_log` (

 `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

 `user_host` mediumtext NOT NULL,

 `query_time` time NOT NULL,

 `lock_time` time NOT NULL,

 `rows_sent` int(11) NOT NULL,

 `rows_examined` int(11) NOT NULL,

 `db` varchar(512) NOT NULL,

 `last_insert_id` int(11) NOT NULL,

 `insert_id` int(11) NOT NULL,

 `server_id` int(10) unsigned NOT NULL,

 `sql_text` mediumtext NOT NULL

) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log' |

+----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)



mysql> show variables like 'log_output';                                    #查看mysql慢查询的格式

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_output    | FILE  |

+---------------+-------+

1 row in set (0.00 sec)


mysql> set global log_output='TABLE';

Query OK, 0 rows affected (0.00 sec)


mysql> show variables like 'log_output';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_output    | TABLE |

+---------------+-------+

1 row in set (0.00 sec)


mysql> select sleep(10);

+-----------+

| sleep(10) |

+-----------+

|         0 |

+-----------+

1 row in set (10.00 sec)




mysql> \q

Bye


#安装pcre

[root@dba01 support-files]# cd

[root@dba01 ~]# tar -zxvf pcre-8.31.tar.gz && cd pcre-8.31

[root@dba01 pcre-8.31]# ./configure && make && make install



#安装Nginx

[root@dba01 ~]# tar -zxvf nginx-1.2.7.tar.gz && cd nginx-1.2.7

[root@dba01 nginx-1.2.7]# /usr/sbin/groupadd www

[root@dba01 nginx-1.2.7]# /usr/sbin/useradd -g www www

[root@dba01 nginx-1.2.7]# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

[root@dba01 nginx-1.2.7]# make && make install

[root@dba01 ~]# /usr/local/nginx/sbin/nginx

/usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

[root@dba01 ~]# ln -s /lib64/libpcre.so.0 /lib64/libpcre.so.1

[root@dba01 ~]# /usr/local/nginx/sbin/nginx          

[root@dba01 ~]# netstat -lntp|grep nginx

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      29508/nginx  

[root@dba01 ~]# /etc/init.d/iptables stop


#安装php

#备注:php5.3.3以后的版本源码不需要打php-fpm补丁,该补丁已经集成进5.3.3,在编译时,不需再--enable-fastcgi了,在php5.3.3中强制启用fastcgi.

[root@dba01 nginx-1.2.7]# cd

[root@dba01 ~]# tar -zxvf libmcrypt-2.5.8.tar.gz && cd libmcrypt-2.5.8

[root@dba01 libmcrypt-2.5.8]# ./configure && make && make install


[root@dba01 libmcrypt-2.5.8]# cd

[root@dba01 ~]# tar -zxvf mhash-0.9.9.9.tar.gz && cd mhash-0.9.9.9

[root@dba01 mhash-0.9.9.9]# ./configure && make && make install


[root@dba01 mhash-0.9.9.9]# cd ..

[root@dba01 ~]# tar -zxvf mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8

config.status: executing default commands

[root@dba01 mcrypt-2.6.8]# LD_LIBRARY_PATH=/usr/local/lib ./configure --prefix=/usr/local/

[root@dba01 mcrypt-2.6.8]# make && make install



[root@dba01 mcrypt-2.6.8]# cd ..

[root@dba01 ~]# tar -zxvf libiconv-1.14.tar.gz

[root@dba01 ~]# cd libiconv-1.14

[root@dba01 libiconv-1.14]# ./configure && make && make install

[root@dba01 libiconv-1.14]# cd


[root@dba01 ~]# useradd -g nginx nginx -s /sbin/nologin

[root@dba01 ~]# tar -zxvf php-5.3.11.tar.gz

[root@dba01 ~]# cd php-5.3.11

[root@dba01 php-5.3.11]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/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-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

[root@dba01 php-5.3.11]# make ZEND_EXTRA_LIBS='-liconv'

[root@dba01 php-5.3.11]# make install

[root@dba01 php-5.3.11]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

[root@dba01 php-5.3.11]# cp -rf php.ini-production /usr/local/php/etc/php.ini

[root@dba01 php-5.3.11]# chmod +x /etc/init.d/php-fpm

[root@dba01 php-5.3.11]# chkconfig php-fpm on

[root@dba01 php-5.3.11]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf


[root@dba01 php-5.3.11]# cd

[root@dba01 ~]# tar -xjvf eaccelerator-0.9.6.1.tar.bz2

[root@dba01 ~]# cd eaccelerator-0.9.6.1

[root@dba01 eaccelerator-0.9.6.1]#  /usr/local/php/bin/phpize

[root@dba01 eaccelerator-0.9.6.1]# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config && make && make install


[root@dba01 eaccelerator-0.9.6.1]# cd ..

[root@dba01 ~]# tar zxvf PDO_MYSQL-1.0.2.tgz

[root@dba01 ~]# cd PDO_MYSQL-1.0.2

[root@dba01 PDO_MYSQL-1.0.2]# /usr/local/php/bin/phpize

[root@dba01 PDO_MYSQL-1.0.2]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql && make && make install && cd


[root@dba01 ~]# yum -y install libevent libevent-devel

[root@dba01 ~]# tar -zxvf memcached-1.2.5.tar.gz  

[root@dba01 ~]# cd memcached-1.2.5

[root@dba01 memcached-1.2.5]# ./configure --prefix=/usr/local/memcache && make && make install && cd



[root@dba01 ~]# tar -zxvf memcache-2.2.5.tgz

[root@dba01 ~]# cd memcache-2.2.5

[root@dba01 memcache-2.2.5]# /usr/local/php/bin/phpize

[root@dba01 memcache-2.2.5]# ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install && cd


[root@dba01 ~]# sed -i 's#output_buffering = Off#output_buffering = On#' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i "s#; always_populate_raw_post_data = On#always_populate_raw_post_data = On#g" /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i "s#; cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g" /usr/local/php/etc/php.ini

[root@dba01 ~]# mkdir -p /usr/local/eaccelerator_cache

[root@dba01 ~]# sed -i '1290a [eaccelerator]' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1291a zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so"' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1292a eaccelerator.shm_size="64"' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1293a eaccelerator.cache_dir="/usr/local/eaccelerator_cache"' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1294a eaccelerator.enable="1"' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1295a eaccelerator.optimizer="1"' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1296a eaccelerator.check_mtime="1"' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1297a eaccelerator.debug="0"' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1298a eaccelerator.filter=""' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1299a eaccelerator.shm_max="0"' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1300a eaccelerator.shm_ttl="3600"' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1301a eaccelerator.shm_prune_period="3600"' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1302a seaccelerator.shm_only="0"' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1303a eaccelerator.compress="1"' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '1304a eaccelerator.compress_level="9"' /usr/local/php/etc/php.ini

[root@dba01 ~]# sed -i '58s#<!--##g' /usr/local/php/etc/php-fpm.conf

[root@dba01 ~]# sed -i '58s#-->##g' /usr/local/php/etc/php-fpm.conf

[root@dba01 ~]# sed -i '59s#<!--##g' /usr/local/php/etc/php-fpm.conf

[root@dba01 ~]# sed -i '59s#-->##g' /usr/local/php/etc/php-fpm.conf

[root@dba01 ~]# sed -i '63s#<!--##g' /usr/local/php/etc/php-fpm.conf

[root@dba01 ~]# sed -i '63s#-->##g' /usr/local/php/etc/php-fpm.conf

[root@dba01 ~]# sed -i '66s#<!--##g' /usr/local/php/etc/php-fpm.conf

[root@dba01 ~]# sed -i '66s#-->##g' /usr/local/php/etc/php-fpm.conf

[root@dba01 ~]# sed -i '63s#nobody#nginx#g' /usr/local/php/etc/php-fpm.conf  

[root@dba01 ~]# sed -i '66s#nobody#nginx#g' /usr/local/php/etc/php-fpm.conf  

[root@dba01 ~]# sed -i '79s#5#128#g' /usr/local/php/etc/php-fpm.conf

[root@dba01 ~]# sed -i '113s#1024#20480#g' /usr/local/php/etc/php-fpm.conf

[root@dba01 ~]# sed -i '132s#500#1024#g' /usr/local/php/etc/php-fpm.conf

[root@dba01 ~]# ulimit -SHn 65535

[root@dba01 ~]# /usr/local/php/sbin/php-fpm

[root@dba01 ~]# netstat -lntp|grep php-fpm

tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      18005/php-fpm


[root@dba01 ~]# mkdir -p /var/www/memcache;mkdir -p /var/www/bbs

[root@dba01 ~]# cat /usr/local/nginx/conf/nginx.conf

user  nginx nginx;


worker_processes 8;


error_log  /app/logs/nginx_error.log  crit;


pid        /usr/local/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 20480;

}


http

{

 include       mime.types;

 default_type  application/octet-stream;


 #charset  gb2312;


   log_format  wikilogs  '$remote_addr - $remote_user [$time_local] "$request" '

              '$status $body_bytes_sent "$http_referer" '

              '"$http_user_agent" $http_x_forwarded_for';



   log_format  bbslogs  '$remote_addr - $remote_user [$time_local] "$request" '

              '$status $body_bytes_sent "$http_referer" '

              '"$http_user_agent" $http_x_forwarded_for';

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  wiki.jc.com;

   index index.html index.htm index.php;

   root  /var/www/memcache;


   location ~ .*\.(php|php5)?$

   {

     #fastcgi_pass  unix:/tmp/php-cgi.sock;

     fastcgi_pass  127.0.0.1:9000;

     fastcgi_index index.php;

     include fastcgi.conf;

   }


   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

   {

     expires      30d;

   }


   location ~ .*\.(js|css)?$

   {

     expires      1h;

   }


   access_log  /app/logs/wikilogs.log  wikilogs;

   }

  server

  {

   listen       80;

   server_name  www.jc.com;

   index index.html index.htm index.php;

   root  /var/www/bbs;


   location ~ .*\.(php|php5)?$

   {

     #fastcgi_pass  unix:/tmp/php-cgi.sock;

     fastcgi_pass  127.0.0.1:9000;

     fastcgi_index index.php;

     include fastcgi.conf;

   }


   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

   {

     expires      30d;

   }


   location ~ .*\.(js|css)?$

   {

     expires      1h;

   }


   access_log  /app/logs/bbslogs.log  bbslogs;

   }


}


[root@dba01 ~]# vim /usr/local/php/etc/php.ini +1306   添加如下:

[memcache]

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"

extension=memcache.so



[root@dba01 ~]# cd /etc/init.d/

[root@dba01 init.d]# rz -y

rz waiting to receive.

zmodem trl+C ȡ


 100%       1 KB    1 KB/s 00:00:01       0 Errors


[root@dba01 init.d]# dos2unix nginx

dos2unix: converting file nginx to UNIX format ...

[root@dba01 init.d]# chmod 755 nginx

[root@dba01 init.d]# cat nginx

#!/bin/sh

#

# nginx - this script starts and stops the nginx daemin

#

# chkconfig:   - 85 15

# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \

#               proxy and IMAP/POP3 proxy server

# processname: nginx

# config:      /usr/local/nginx/conf/nginx.conf

# pidfile:     /usr/local/nginx/logs/nginx.pid


# Source function library.

. /etc/rc.d/init.d/functions


# Source networking configuration.

. /etc/sysconfig/network


# Check that networking is up.

[ "$NETWORKING" = "no" ] && exit 0


nginx="/usr/local/nginx/sbin/nginx"

prog=$(basename $nginx)


NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"


lockfile=/var/lock/subsys/nginx


start() {

   [ -x $nginx ] || exit 5

   [ -f $NGINX_CONF_FILE ] || exit 6

   echo -n $"Starting $prog: "

   daemon $nginx -c $NGINX_CONF_FILE

   retval=$?

   echo

   [ $retval -eq 0 ] && touch $lockfile

   return $retval

}


stop() {

   echo -n $"Stopping $prog: "

   killproc $prog -QUIT

   retval=$?

   echo

   [ $retval -eq 0 ] && rm -f $lockfile

   return $retval

}


restart() {

   configtest || return $?

   stop

   start

}


reload() {

   configtest || return $?

   echo -n $"Reloading $prog: "

   killproc $nginx -HUP

   RETVAL=$?

   echo

}


force_reload() {

   restart

}


configtest() {

 $nginx -t -c $NGINX_CONF_FILE

}


rh_status() {

   status $prog

}


rh_status_q() {

   rh_status >/dev/null 2>&1

}


case "$1" in

   start)

       rh_status_q && exit 0

       $1

       ;;

   stop)

       rh_status_q || exit 0

       $1

       ;;

   restart|configtest)

       $1

       ;;

   reload)

       rh_status_q || exit 7

       $1

       ;;

   force-reload)

       force_reload

       ;;

   status)

       rh_status

       ;;

   condrestart|try-restart)

       rh_status_q || exit 0

           ;;

   *)

       echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

       exit 2

esac


[root@dba01 init.d]# mkdir -p /app/logs

[root@dba01 init.d]# /etc/init.d/nginx stop

Stopping nginx:                                            [  OK  ]

[root@dba01 init.d]# netstat -lntp|grep nginx

[root@dba01 init.d]# /etc/init.d/nginx restart

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

Stopping nginx:                                            [FAILED]

Starting nginx:                                            [  OK  ]

[root@dba01 init.d]# netstat -lntp|grep nginx

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      18084/nginx        



[root@dba01 init.d]# cd /var/www/memcache/

[root@dba01 memcache]# cat phpinfo.php

<?php

phpinfo();

?>



[root@dba01 memcache]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:CA:47:D4  

         inet addr:192.168.1.118  Bcast:255.255.255.255  Mask:255.255.255.0

         inet6 addr: fe80::20c:29ff:feca:47d4/64 Scope:Link

         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

         RX packets:263728 errors:0 dropped:0 overruns:0 frame:0

         TX packets:172759 errors:0 dropped:0 overruns:0 carrier:0

         collisions:0 txqueuelen:1000

         RX bytes:294558603 (280.9 MiB)  TX bytes:19137975 (18.2 MiB)




测试:http://192.168.1.118/phpinfo.php


你可能感兴趣的:(nginx)