CentOS6.3下编译安装配置nginx1.2.3+php5.3.16+mysql5.5.27+memcached1.4.5

Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过五年。Igor 将源代码以类BSD许可证的形式发布。

Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻等门户网站频道,六间房、56.com等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,豆瓣、YUPOO相册、海内SNS、迅雷网络(典型的案例就是迅雷离线)等新兴Web 2.0网站。

Nginx目前的最新稳定版本为1.2.3,当然开发版本已经有诸如1.3.5的了。部署在生产环境中的鄙人还是建议采用官方稳定版,当然求新者另算。Nginx最新稳定版下载地址

for linux:http://nginx.org/download/nginx-1.2.3.tar.gz windows版本因为不通过服务方式运转,加之nginx开发的初衷便是搭建在linux平台下的服务器代理软件,所以本博不对window平台下的nginx加以介绍。

在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据知名博主张宴(http://blog.s135.com/)的测试结果,Nginx 0.8.15 + PHP 5.2.10 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。当然,这并不是说阿帕奇服务器就已经落伍,不同类型的站点,优化与配置的不同,其负载能力也是不同的。

安装步骤

系统约定:软件包放在 /usr/local/src  ;安装目录在/usr/local/软件名 例如nginx安装目录:/usr/local/nginx

一、软件准备

1.Nginx1.2.3 wget http://nginx.org/download/nginx-1.2.3.tar.gz

2.Mysql5.5.27 wget http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.27.tar.gz

3.PHP5.3.16 wget http://cn.php.net/distributions/php-5.3.16.tar.gz (推荐使用5.3.16,。最新稳定版为5.4.6 下载地址: wget http://cn.php.net/distributions/php-5.4.6.tar.bz2

4.cmake2.8.9 wget http://www.cmake.org/files/v2.8/cmake-2.8.9.tar.gz (Mysql编译工具)

5.Pcre下载 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.31.tar.gz (nginx支持伪静态的pcre库)

6.libmcrypt库下载 wget http://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz (php支持mcrypt函数库的运行库)

7.ZendGuard下载 wget http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz (zendguard可以理解为zend opitimizer的升级产品;加速php的运行速度,具体请查看相关资料)

8.GD库 wget http://fossies.org/unix/www/gd-2.0.35.tar.gz (php的gd图像库函数运行库支持;该地址有时候会404 本博客提供源 wget http://blog.jjonline.org/Upload/file/201209/20120913225807.gz 下载后请改名gd-2.0.35.tar.gz ,便于后面的统一操作)

以上软件准备过程做简要叙述:

先cd进入/usr/local/src目录 ,然后通过wget方式下载以上八个编译安装的软件。

二、安装编译工具及必须库文件(使用CentOS yum命令安装)

yum install make apr* autoconf automake curl-devel gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel gd gettext gettext-devel kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel  libXpm* freetype freetype-devel freetype* fontconfig fontconfig-devel libjpeg* libpng* php-common php-gd ncurses* libtool* libxml2 libxml2-devel patch bison

三、编译安装过程概述

1.安装mysql编译安装的工具cmake

cd /usr/local/src #进入软件包目录

tar zxvf cmake-2.8.8.tar.gz #解压tar.gz文件

cd cmake-2.8.8 #进入cmake目录

./configure #编译配置

make #编译 

make install #安装

2.安装mysql 先卸载系统默认存在的老版本mysql ,也可以不用卸载

groupadd mysql   #添加mysql运行组;某些情况下centos6.3默认安装过mysql则存在该组 

useradd -g mysql mysql -s /bin/false   #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统 

mkdir -p /data/mysql     #创建MySQL数据库存放目录 

chown -R mysql:mysql /data/mysql     #设置MySQL数据库目录权限 

mkdir -p /usr/local/mysql       #创建MySQL安装目录 cd /usr/local/src

tar zxvf mysql-5.5.27.tar.gz #解压 

cd mysql-5.5.27 

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc #配置 

make #编译 

make install #安装

cd /usr/local/mysql 

cp ./support-files/my-huge.cnf /etc/my.cnf #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可) 

vi /etc/my.cnf #编辑配置文件 (vi编辑器的使用 ,vi打开文件后按i进入编辑模式,编辑完毕按ESC退出编辑模式,按shift+:进入输入wq)

在 [mysqld] 部分增加下面一行 datadir = /data/mysql #添加MySQL数据库路径 

:wq! #保存退出 

./scripts/mysql_install_db --user=mysql #生成mysql系统数据库 

cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld #把Mysql加入系统启动 

chmod 755 /etc/init.d/mysqld #增加执行权限 

chkconfig mysqld on #加入开机启动 (此步骤可能会有提示说mysql不支持chkconfg,解决方案直接在vi /etc/rc.d/rc.local 加入一行 service mysqld start 即可开机启动mysql)

vi /etc/rc.d/init.d/mysqld #编辑 

basedir = /usr/local/mysql #MySQL程序安装路径 

datadir = /data/mysql #MySQl数据库存放目录 

service mysqld start #启动 

vi /etc/profile #把mysql服务加入系统环境变量:在最后添加下面这一行 

export PATH=$PATH:/usr/local/mysql/bin 

:wq! #保存退出 

下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等需要连接mysql的软件时可以不用指定mysql的库文件地址。

ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql 

ln -s /usr/local/mysql/include/mysql /usr/include/mysql

此步骤后需要重启linux系统,shell输入 reboot 或者 shutdown -r now

重启后修改mysql的密码

/usr/local/mysql/bin/mysqladmin -u root -p password "123456" #修改密码 此处123456为您的密码

service mysqld restart #重启mysql服务

3.安装pcre

cd /usr/local/src 

mkdir /usr/local/pcre #创建安装目录 

tar zxvf pcre-8.31.tar.gz 

cd pcre-8.31 

./configure --prefix=/usr/local/pcre #配置 

make 

make instal

4.安装nginx

cd /usr/local/src 

groupadd www #添加www组 

useradd -g www www -s /bin/false #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统 

tar zxvf nginx-1.2.3.tar.gz 

cd nginx-1.2.3 

./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/usr/local/src/pcre-8.31 

注意:--with-pcre=/usr/local/src/pcre-8.31指向的是源码包解压的路径,而不是安装的路径,否则会报错 

make 

make install 

/usr/local/nginx/sbin/nginx #启动nginx 设置nginx开启启动

vi /etc/rc.d/init.d/nginx #编辑启动文件添加下面内容

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
# By www.jjonline.cn
# 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: /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"

[ -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' -`
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
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 -QUIT
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
:wq! #退
chmod 775 /etc/rc.d/init.d/nginx #
chkconfig nginx on #
/etc/rc.d/init.d/nginx restart
service nginx restart

5.安装libmcrypt

cd /usr/local/src 
tar zxvf libmcrypt-2.5.8.tar.gz #解压 
cd libmcrypt-2.5.8 #进入目录 
./configure #配置 
make #编译 
make install #安装 

6、安装gd 

cd /usr/local/src 
tar zxvf gd-2.0.35.tar.gz #解压 
cd gd-2.0.35 #进入目录 
./configure --enable-m4_pattern_allow --prefix=/usr/local/gd --with-jpeg=/usr/lib --with-png=/usr/lib --with-xpm=/usr/lib --with-freetype=/usr/lib --with-fontconfig=/usr/lib #配置 
make #编译 
make install #安装

7、安装php 

cd /usr/local/src 
tar -zvxf php-5.3.16.tar.gz 
cd php-5.3.16 
mkdir -p /usr/local/php5 #建立php安装目录 
./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql=/usr/local/mysql --with-gd=/usr/local/gd --with-png-dir=/usr/lib --with-jpeg-dir=/usr/lib --with-freetype-dir=/usr/lib --with-iconv --with-zlib --enable-xml --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl #配置 
make #编译 
make install #安装
cp php.ini-production /usr/local/php5/etc/php.ini #复制php配置文件到安装目录 
rm -rf /etc/php.ini #删除系统自带配置文件 
ln -s /usr/local/php5/etc/php.ini /etc/php.ini #添加软链接 
cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件 
vi /usr/local/php5/etc/php-fpm.conf #编辑 
user = www #设置php-fpm运行账号为www 
group = www #设置php-fpm运行组为www 
pid = run/php-fpm.pid #取消前面的分号 设置 php-fpm开机启动 
cp /usr/local/src/php-5.3.16/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm #拷贝php-fpm到启动目录 
chmod +x /etc/rc.d/init.d/php-fpm #添加执行权限 
chkconfig php-fpm on #设置php通过nginx的php-fpm方式的开机启动
vi /usr/local/php5/etc/php.ini #编辑php的配置文件;此处仅作简要概述
找到:disable_functions =
修改为:disable_functions =
passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
找到:expose_php = On 修改为:expose_php = OFF #禁止显示php版本的信息

8.配置nginx支持php

vi /usr/local/nginx/conf/nginx.conf 修改/usr/local/nginx/conf/nginx.conf 配置文件,需做如下修改 

user www www; #首行user去掉注释,修改Nginx运行组为www www;必须与/usr/local/php5/etc/php-fpm.conf中的user,group配置相同,否则php运行出错 

index index.php index.html index.htm; #添加index.php 

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # 

location ~ \.php$ { 

root 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 server部分location的注释,注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径 

配置完成保存,重启nginx服务器

/etc/init.d/nginx restart #重启nginx

9.配置php支持zendguard 

cd /usr/local/src 

mkdir /usr/local/zend #建立Zend安装目录 

tar xvfz ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz #解压安装文件 

cp ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x/ZendGuardLoader.so /usr/local/zend/ #拷贝文件到安装目录 

vi /usr/local/php5/etc/php.ini #编辑文件 

在最后位置添加以下内容 

[Zend Guard] 

zend_extension=/usr/local/zend/ZendGuardLoader.so 

zend_loader.enable=1 

zend_loader.disable_licensing=0 

zend_loader.obfuscation_level_support=3 

zend_loader.license_path=

如有必要则可能需要重启系统后phpinfo中才能看到zendguard的支持信息。

10.测试

cd /usr/local/nginx/html/ #进入nginx默认网站根目录

删除默认首页

rm -rf /usr/local/nginx/html/index.html #删除默认测试页

vi新建一个index.php文件,phpinfo的测试信息函数写入

<?PHP

echo phpinfo();

?>

浏览器访问localhost,久违的phpinfo信息出现。

php版本信息


zendguard支持信息

以上步骤本人亲测可用。

--------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------

2012年9月14日添加内容:

放火设置:

vi /etc/sysconfig/iptables

在原先22端口下添加如下三行

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT   #允许80端口www通过防火墙

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT  #允许3306端口mysql通过防火墙

-A INPUT -m state --state NEW -m tcp -p tcp --dport 11211 -j ACCEPT  #允许11211端口memcached通过防火墙

seliux设置:

方法1:永久关闭seliux

修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器

方法2:暂时关闭seliux

直接命令行工具 setenforce 0;如需每次开机都铃声关闭seliux,则可以在/etc/rc.d/rc.local文件中添加该命令。

########添加memcached内存服务器对php的支持########

1.软件准备

memcached内存服务器 wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz

memcached运行库libevent wget https://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz

php的memcache扩展库(php对memcached内存服务器的支持库有两种,一种是memcache,一种是memcached,本次采用前者)

wget http://pecl.php.net/get/memcache-2.2.6.tgz

2.编译安装过程

2.1 memcached内存服务器支持库libevent安装(指定安装目录,方便memcached安装)

tar zxvf libevent-2.20-stable.tar.gz

cd libevent

./configure --prefix=/usr/local/libevent

make && make install

2.2 memcached安装

可以选择yum一键安装,yum install memcached 这样就可以通过shell命令 service memcached start|stop|restart等命令。本次安装采用编译方式

tar zxvf memcached-1.4.45.tar.gz

cd memcached-1.4.5

./configure --prefix=/usr/local/memcached --with--libevent=/usr/local/libevent

make

make instal

内存服务器的启动方式:如下命令,可以加入到/etc/rc.d/rc.local进行开机启动

/usr/local/memcached/bin/memcached  -d -u memcached  -m 128  -l 127.0.0.1 -p 11211

说明,-d以守护进程运行,-u 运行的用户 一般以nobody或者新建一个memcached的用户运行,-m指为它分配多少M的内存,-l是监听的ip地址,本地为127.0.0.1,-p为监听的端口


2.3 php的memcache扩展安装

tar zxvf memcahce-2.2.6.tgz

cd memcache-2.2.6

/usr/local/php5/bin/phpize #找到php编译的phpize文件

./configure --with-php-config=/usr/local/php5/bin/php-config --with-zlib-dir;

make && make install

编译安装完成后界面会给出编译好的诸如Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/的提示信息,该路径即为编译好的memcache.so文件的位置,此步骤的编译实际就是产生这个so文件。

在php.ini中添加如下extension扩展如下,也可以将该memcache.so文件拷贝到自己制定的位置后添加

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

#此处可以是自己制定的位置,前提条件是该so文件在该位置。

extension=memcache.so

For documentation, browse index.html. Quick install guide: If the sources have been fetched from CVS, run bootstrap.sh [options]. From a released source, use: 1. Type './configure' 2. Type 'make install' Generic configuration instructions are in the file INSTALL. The following 3rd-party libraries will be used by gd if found by configure. While gd will compile and install even without these, we suggest that at least zlib and libpng are installed, and recommend that freetype and jpeg are installed as well: 1. zlib, available from http://www.gzip.org/zlib/ Data compression library 2. libpng, available from http://www.libpng.org/pub/png/ Portable Network Graphics library; requires zlib 3. FreeType 2.x, available from http://www.freetype.org/ Free, high-quality, and portable font engine 4. JPEG library, available from http://www.ijg.org/ Portable JPEG compression/decompression library 5. XPM, available from http://koala.ilog.fr/lehors/xpm.html X Pixmap library If any of these libraries are installed, but not detected by configure, you can use the following command line options: --with-png=DIR Without the DIR argument, configure will check for png header files and libraries in a default location. To switch off png support, use --without-png, or --with-png=no. If the DIR argument is specified, configure tries to find the png header files in DIR/include, and the libraries in DIR/lib. To accommodate OpenBSD ports, DIR/include/libpng is also checked if necessary. --with-freetype=DIR Dto. for freetype 2.x library. The search path for include files is DIR/include/freetype2. --with-jpeg=DIR Dto. for jpeg library. --with-xpm=DIR Dto. for xpm library.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值