1、解决依赖关系和优化所需的组件 
编译安装nginx需要事先需要安装开发包组"Development Tools" 。同时,安装pcre-devel包,用yum安装即可

安装TCMalloc和google-perftools(TCMalloc只是google-perftools的一个组件,主要是优化内存分配效率和速度的),如果是64位系统请先安装libunwind库,我是32位系统,就不安装了 
下载google-perftools 
http://gperftools.googlecode.com/files/gperftools-2.0.tar.gz

tar xf gperftools-2.0.tar.gz 
./configure 
make && make install

安装最新的libevent 提高事件性能 
tar xf tar libevent-2.0.19-stable.tar.gz 
./configure 
make && make install 
echo “usr/local/lib” >/etc/ld.so.conf.d/local.conf 
ldconfig

2、安装

首先添加用户nginx,实现以之运行nginx服务进程: 
# groupadd -r nginx 
# useradd -r -g nginx -s /bin/false -M nginx

tar xf nginx-1.0.14.tar.gz 
接着开始编译和安装: 
# ./configure \ 
  --prefix=/usr \ 
  --sbin-path=/usr/sbin/nginx \ 
  --conf-path=/etc/nginx/nginx.conf \ 
  --error-log-path=/var/log/nginx/error.log \ 
  --http-log-path=/var/log/nginx/access.log \ 
  --pid-path=/var/run/nginx/nginx.pid  \ 
  --lock-path=/var/lock/nginx.lock \ 
  --user=nginx \ 
  --group=nginx \ 
  --with-http_ssl_module \ 
  --with-http_flv_module \ 
  --with-http_stub_status_module \ 
  --with-http_gzip_static_module \ #加载gzip压缩模块 
  --http-client-body-temp-path=/var/tmp/nginx/client/ \ 
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \ 
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ 
  --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ 
  --http-scgi-temp-path=/var/tmp/nginx/scgi \ 
  --with-pcre \ 
--with-google_perftools_module \ #加载 google_perftools模块 
--with-cc-opt='-O3' \ #优化GCC编译 
--with-cup-opt=pentium4 \ # 指定处理器类型,具体类型执行./configure --help帮助

# make && make install

3、为nginx提供SysV init脚本:

新建文件/etc/rc.d/init.d/nginx,内容如下: 
#!/bin/sh 

# nginx - this script starts and stops the nginx daemon 

# chkconfig:   - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \ 
#               proxy and IMAP/POP3 proxy server 
# processname: nginx 
# config:      /etc/nginx/nginx.conf 
# config:      /etc/sysconfig/nginx 
# pidfile:     /var/run/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/sbin/nginx" 
prog=$(basename $nginx) 
  
NGINX_CONF_FILE="/etc/nginx/nginx.conf" 
  
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx 
  
lockfile=/var/lock/subsys/nginx 
  
make_dirs() { 
   # make required directories 
   user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` 
   options=`$nginx -V 2>&1 | grep 'configure arguments:'` 
   for opt in $options; do 
       if [ `echo $opt | grep '.*-temp-path'` ]; then 
           value=`echo $opt | cut -d "=" -f 2` 
           if [ ! -d "$value" ]; then 
               # echo "creating" $value 
               mkdir -p $value && chown -R $user $value 
           fi 
       fi 
   done 

  
start() { 
    [ -x $nginx ] || exit 5 
    [ -f $NGINX_CONF_FILE ] || exit 6 
    make_dirs 
    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 -TERM 
    retval=$? 
    echo 
    [ $retval -eq 0 ] && rm -f $lockfile 
    return $retval 

  
restart() { 
    configtest || return $? 
    stop 
    sleep 1 
    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

而后为此脚本赋予执行权限: 
# chmod +x /etc/rc.d/init.d/nginx

添加至服务管理列表,并让其开机自动启动: 
# chkconfig --add nginx 
# chkconfig nginx on

而后就可以启动服务并测试了: 
# service nginx start

二、安装mysql-5.5.20

1、新建用户以安全方式运行进程:

# groupadd -r mysql 
# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql 
# chown -R mysql:mysql /mydata/data

2、安装并初始化mysql-5.5.20

# tar xf mysql-5.5.20-linux2.6-i686.tar.gz -C /usr/local 
# cd /usr/local/ 
# ln -sv mysql-5.5.20-linux2.6-i686  mysql 
# cd mysql

# chown -R mysql:mysql  . 
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data 
# chown -R root  .

3、为mysql提供主配置文件:

# cd /usr/local/mysql 
# cp support-files/my-large.cnf  /etc/my.cnf

并修改此文件中thread_concurrency的值为你的CPU个数乘以2,我这里是单核的: 
thread_concurrency = 2

另外还需要添加如下行指定mysql数据文件的存放位置: 
datadir = /mydata/data

4、为mysql提供sysv服务脚本:

# cd /usr/local/mysql 
# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld 
#修改启动脚本 添加

添加至服务列表: 
# chkconfig --add mysqld 
# chkconfig mysqld on

5、输出mysql的头文件至系统头文件路径/usr/include:

这可以通过简单的创建链接实现: 
# ln -sv /usr/local/mysql/include  /usr/include/mysql

6、输出mysql的库文件给系统库查找路径:

# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

而后让系统重新载入系统库: 
# ldconfig

7、修改PATH环境变量,让系统可以直接使用mysql的相关命令。

10.设置Mysql运行时加载tcmalloc,提高内存效率 
vi /usr/local/mysql/bin/mysqld_safe 
在# executing mysqld_safe的下一行,加入以下内容 
export LD_PRELOAD="/usr/local/lib/libtcmalloc.so"

而后就可以启动服务测试使用了。

三、编译安装php-5.3.6

1、解决依赖关系:

如果想让编译的php支持mcrypt、mcrypt、mhash扩展和libevent,下载如下几个rpm包并安装之(libevent之前装nginx时已经装过): 
libmcrypt-2.5.8-4.el5.centos.i386.rpm 
libmcrypt-devel-2.5.8-4.el5.centos.i386.rpm 
mhash-0.9.9-1.el5.centos.i386.rpm 
mhash-devel-0.9.9-1.el5.centos.i386.rpm 
mcrypt-2.6.8-1.el5.i386.rpm

最好使用升级的方式安装上面的rpm包,命令格式如下: 
# rpm -Uvh *.rpm

2、编译安装php-5.3.10

# tar xf php-5.3.6.tar.bz2 
# cd php-5.3.6 
#  ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --enable-sockets --enable-sysvshm  --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir=/usr --enable-xml  --with-mhash --with-mcrypt  --with-config-file-path=/etc/php --with-config-file-scan-dir=/etc/php --with-bz2 --with-curl

#注意要结合nginx的fastcgi整合php,必须要打开php-fpm管理程序,使nginx通过交互php-fpm整合PHP

# make && make intall

为php提供配置文件: 
# cp php.ini-production /etc/php/php.ini

为php-fpm提供Sysv init脚本,并将其添加至服务列表: 
# cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm 
# chmod +x /etc/rc.d/init.d/php-fpm 
# chkconfig --add php-fpm 
# chkconfig php-fpm on

为php-fpm提供配置文件: 
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

优化php-fpm的配置文件(具体数值按照服务器配置而定): 
# vim /usr/local/php/etc/php-fpm.conf 
优化pm.的配置: 
pm.max_children = 50 #最大进程数 
pm.start_servers = 5 #初始进程数 
pm.min_spare_servers = 2 #最小空闲进程 
pm.max_spare_servers = 8 #最大空闲进程 
pid = /usr/local/php/var/run/php-fpm.pid

接下来就可以启动php-fpm了: 
# service php-fpm start

使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了): 
# ps aux | grep php-fpm

四、整合nginx和php5,利用fastcgi_cache缓存加速nginx和php交互

1、编辑/etc/nginx/nginx.conf,启用如下选项: 
在httpd段加入下面参数 
fastcgi_connect_timeout 300; 
指定连接到后端FastCGI的超时时间。 
fastcgi_send_timeout 300; 
向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间。 
fastcgi_read_timeout 300; 
接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间。 
fastcgi_buffer_size 32k; 
指定读取FastCGI应答第一部分需要用多大的缓冲区,一般第一部分应答不会超过1k,由于页面大小为4k,所以这里设置为4k。 
fastcgi_buffers 4 32k; 
定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于硬盘。一般这个值应该为站点中PHP脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为“16 16k”、“4 64k”等。 
fastcgi_busy_buffers_size 64k; 
默认值是fastcgi_buffers的两倍。 
fastcgi_temp_file_write_size 64k; 
在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍。 
fastcgi_cache_path /var/logs/nginx/fastcgi_cache_dir levels=1:2 keys_zone=cache_fastcgi:64m inactive=1d max_size=10g; 
这个指令为FastCGI缓存指定一个路径(手动创建此目录),目录结构等级,关键字区域存储时间和非活动删除时间。以及最大占用空间。

在调用php的location中调用以上缓存配置 
location ~ \.php$ { 
root /var/www/html/; 
fastcgi_pass 127.0.0.1:9000; 
fastcgi_index index.php; 
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
include fastcgi_params; 
fastcgi_cache cache_fastcgi; 
表示开启FastCGI缓存并为其指定一个名称。 
fastcgi_cache_valid 200 302 301 1h; 
fastcgi_cache_valid any 1m; 
为指定的应答代码指定缓存时间,如上例中将200,302 301应答缓存一小时,其他为1分钟。 
fastcgi_cache_min_uses 1; 
设置链接请求几次就被缓存。 
fastcgi_cache_use_stale error timeout invalid_header http_500; 
定义哪些情况下用过期缓存 
fastcgi_cache_key $request_method://$host$request_uri; 
注意一定要加上$request_method作为cache key,否则如果HEAD类型的先请求会导致后面的GET请求返回为空 
}

2、编辑/etc/nginx/fastcgi_params,将其内容更改为如下内容: 
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格式的主页,类似如下: 
location / { 
            root   /var/www/html; 
            index  index.php index.html index.htm; 
        } 
        
而后重新载入nginx的配置文件: 
# service nginx reload

3、在/usr/html新建index.php的测试页面,测试php是否能正常工作: 
# cat &gt; /var/www/html/index.php <&lt; EOF 
&lt;?php 
phpinfo(); 
?>

接着就可以通过浏览器访问此测试页面了。

五、安装xcache,为php加速:

1、安装 
# tar xf xcache-1.3.2.tar.gz 
# cd xcache-1.3.2 
# /usr/local/php/bin/phpize 
# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config 
# make && make install

安装结束时,会出现类似如下行: 
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

2、编辑php.ini,整合php和xcache:

首先将xcache提供的样例配置导入php.ini 
#  cat xcache.ini &gt;&gt; /etc/php/php.ini

说明:xcache.ini文件在xcache的源码目录中。

接下来编辑/usr/local/php/lib/php.ini,找到zend_extension开头的行,修改为如下行: 
zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/xcache.so

3、重新启动php-fpm 
# service php-fpm restart

全部工作OK。。。

配置安装nginx的更多相关文章

  1. LNMP配置——安装Nginx

    一.下载 #cd /usr/local/src/ #wget http://nginx.org/download/nginx-1.16.1.tar.gz 二.解压 # tar zxf nginx-1. ...

  2. Mac OS使用brew安装Nginx、MySQL、PHP-FPM的LAMP开发环境

    准备工作 新版的 Mac OS 内置了Apache 和 PHP,我的系统版本是OS X 10.9.3,可以通过以下命令查看Apache和PHP的版本号: httpd -v Server version ...

  3. CentOS7通过源码安装nginx

    需要先安装安装环境和库: yum install gcc-c++ yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum i ...

  4. nginx+php 在windows下的简单配置安装

    开始前的准备 PHP安装包下载:http://windows.php.net/downloads/releases/php-5.5.14-Win32-VC11-x86.zip Nginx 下载地址:h ...

  5. CENTOS 6.5 配置YUM安装NGINX

    第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo: cd /etc/yum.repos.d/ vim nginx.repo 填写如下内容: [nginx]nam ...

  6. unbuntu14.04 安装nginx配置

    记录一下linux下安装nginx的所需要的配置. 首先从 nginx官网 下载所需要的版本,复制链接,执行 wget http://nginx.org/download/nginx-1.8.0.ta ...

  7. linux 安装 nginx 及反向代理配置

    Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,以下为Linux centos平台下安装nginx并配置反向代理的过程(采用源码安装的方式) 一:安装 ...

  8. Linux环境下Nginx配置安装PHP

    下边的安装配置方法,我试了一晚上没有成功,可能因为我的系统环境比较复杂,所以建议: 先安装PHP.使用yum命令安装,在安装配置MySQL,具体做法看博客中其他文章,至于Nginx服务器可以安装完这两 ...

  9. 【转】linux 编译安装nginx,配置自启动脚本

    linux 编译安装nginx,配置自启动脚本 本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装ng ...

随机推荐

  1. 支付平台PCI认证整改

    五大国际卡组织推出的PCI支付认证.支付平台改造方案.

  2. 制作pypi上的安装库

    下载地址 如何制作分发工具呢 setuppy 源码包 其他文件 制作过程 首先上场的肯定是setuppy了如下 然后是LICENCE 注册 测试 总结 自从接触Python以来也有几个月了,虽然主要的 ...

  3. ROS(indigo) 用于机器人控制的图形化编程工具--code_it robot_blockly

    0 简介: 编程语言有汇编,高级语言,解释语言等,现在图形化编程也越来越流行.图形化编程简单易学.8年前,微软推出了VPL用于机器人程序设计,如Python和JavaScript都可以用图形化框图实现 ...

  4. python 3.3.3 字面量,正则,反斜杠和原始字符串

    两个不起眼但是比较重要的设定 Python str类型的字面量解释器 当反斜杠及其紧接字符无法构成一个具有特殊含义的序列('recognized escape sequences')时,Python选 ...

  5. Linux 高性能服务器编程——IP协议详解

    1 IP服务特点 IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的服务. 无状态:IP通信双方不同步传输数据的状态信息,因此IP数据包的发送.传输和接收都是无序的.     ...

  6. No Team Selected:A team must be selected to run 'ProjectName' on iPhoneName

    1. 现象:发布在 app store 的 qzone,app bundle identifier:com.tencent.qzone证书支持com.tencent.*然后自已写的测试demo,bun ...

  7. Dynamics CRM2016 Web API之通过实体的primary key查询记录(二)

    继续接上篇,还是通过primary key来查询数据,本篇介绍两个我个人比较喜欢的查询方式,一个是查询单个字段,一个是查询lookup关联实体中的属性字段. 先来看如何查询单个字段,只需要在url的最 ...

  8. Linux & Windows 计时函数

    直接上代码: #if defined(_WIN32) && defined(_MSC_VER) #include <windows.h> double abtic() { ...

  9. Python optparser库详解

    一直以来对optparser不是特别的理解,今天就狠下心,静下心研究了一下这个库.当然了,不敢说理解的很到位,但是足以应付正常的使用了.废话不多说,开始今天的分享吧. 简介 optparse模块主要用 ...

  10. Dynamics CRM Trace Reader for Microsoft Dynamics CRM

    CRM中抓取日志的视窗工作叫做Diagnastics Tools For Dyanmics CRM,这个工具我们只是作为一个开关来用就不做多介绍了,日志生成后是个文本文档可读性是很差的,那就需要个视窗 ...