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. 20160221.CCPP体系详解(0031天)

    程序片段(01):01.结构体静态数组.c+02.结构体动态数组.c 内容概要:结构体数组 ///01.结构体静态数组.c #include <stdio.h> #include < ...

  2. 如何在控制台切换Xcode的版本

    打开控制台,输入 xcode-select -p 你可以看到当前Xcode所使用的版本路径,比如本猫的输出为: /Applications/Xcode-beta.app/Contents/Develo ...

  3. Android6.0 init 深入分析

    之前写过一篇关于android5.0 init的介绍,这篇博客是介绍android6.0init,之前有的代码介绍不详细.而且分析 解析init.rc那块代码也没有结合init.rc介绍. 一. ma ...

  4. Compass 更智能的搜索引擎(3)--高亮,排序,过滤以及各种搜索

    要想使得一个搜索系统更加的完美,查询精确度和页面显示算是其中比较重要的两个方面.今天,我们就来谈谈怎么使得我们的搜索系统更加的完美. 关于分词 下载地址 配置 关于高亮 关于排序 原理 冗余字段 使用 ...

  5. Apache shiro集群实现 (八) web集群时session同步的3种方法

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

  6. Android 使用DownloadManager进行版本更新的完整方案

    在Android App都会有版本更新的功能,以前我们公司是用友盟SDK更新功能,自己服务器没有这样的功能.版本检测.Apk下载都是使用友盟.最近看到友盟的版本更新SDK文档:十月份更新功能将会停止服 ...

  7. FFmpeg的HEVC解码器源代码简单分析:环路滤波(Loop Filter)

    ===================================================== HEVC源代码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpe ...

  8. JAVA面向对象-----面向对象(基础预备知识汇总)

    终于整理好了面向对象基础预备知识,但是有点多,所以你们懂的,贴图,较长的代码我还是会排版出来的,我不想把时间浪费在排版上在word里排版一次已经很浪费时间了,所以请谅解. public class C ...

  9. Dynamics CRM 视图显示列的拷贝—view layout replicator

    在视图设置的时候很多人会遇到这样的问题,要设置多张视图,而这多张视图可能除了筛选条件不同外其他的均相同,手动去设置是件重复的令人非常头痛的事情,如果能够拷贝那就相当完美了. 本篇即介绍视图显示列的拷贝 ...

  10. Cocos2D两个方法的重构一例

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在RPG游戏项目的GameSpace类中原来有一个方法: -( ...