tar解压nginx所有人变为mysql_nginx+php(spawn-fcgi)

一、编译安装PHP 5.2.5所需的支持库

1、wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz

tar -xvzf libiconv-1.12.tar.gz

./configure --prefix=/usr/local

make

make install

ln -s  /usr/local/lib/libiconv.so.2 /usr/lib/

2、wget http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.3.9.tar.gz

tar -xvzf freetype-2.3.9.tar.gz

./configure

make

make install

3、wget http://voxel.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.35.tar.gz

tar -xvzf libpng-1.2.35.tar.gz

./configure

make

make install

4、wget http://quirkysoft.googlecode.com/files/jpegsrc.v6b.tar.gz

tar -xvzf jpegsrc.v6b.tar.gz

./configure --enable-static --enable-shared

make

make install

make install-lib

在x86_64位上,checking host system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized

在做 configure 的时候,报上述的错误。

解决方案:

把 /usr/share/libtool/config.guess 覆盖到相关软件自带的config.guess

把 /usr/share/libtool/config.sub 覆盖到相关软件自带的config.sub

centos 6:/usr/share/libtool/config/config.guess

5、#----If your system was install libxml2, you do not need to install it.----

#如果系统已经安装了libxml2,就不要再安装libxml了,我升级了一下,失败了,出现的错误没有解决

#ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/ 我下载时,最新版为libxml2-2.6.30.tar.gz

#tar zxvf libxml2-2.6.30.tar.gz

#cd libxml2-2.6.30/

#./configure

#make

#make install

6、yum install libxml2-devel.i386

yum install curl-devel

否则编译php时:

configure: error: xml2-config not found. Please check your libxml2 installation.

7、wget http://voxel.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz

tar zxvf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8/

./configure

make

make install

/sbin/ldconfig

cd libltdl/

./configure --enable-ltdl-install

make

make install

在x86_64位上,./libtool: line 3965: ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib ): command not found

在做 configure 的时候,报上述的错误。

解决方案:

yum  -y install libtool-ltdl

yum -y  install libtool-ltdl-devel

ln -sf /usr/lib64/libltdl.a /usr/local/lib/libltdl.a

8、wget http://voxel.dl.sourceforge.net/sourceforge/mhash/mhash-0.9.9.9.tar.gz

tar -xvzf mhash-0.9.9.9.tar.gz

cd mhash-0.9.9.9/

./configure

make

make install

9、cp /usr/local/lib/libmcrypt.* /usr/lib

ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2

/sbin/ldconfig

10、wget http://voxel.dl.sourceforge.net/sourceforge/mcrypt/mcrypt-2.6.8.tar.gz

tar zxvf mcrypt-2.6.8.tar.gz

cd mcrypt-2.6.8/

./configure

make

make install

二 安装mysql

1、wget  http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.33-linux-i686-glibc23.tar.gz/from/http://mirror.services.wisc.edu/mysql/

//添加用于启动MySQL的用户及用户组

groupadd mysql

useradd mysql -g mysql

tar -C /usr/local/ -xvzf mysql-5.1.33-linux-i686-glibc23.tar.gz

2、//建立符号链接,如果以后有新版本的MySQL的话,你可以仅仅将源码解压到新的路径,然后重新做一个符号链接就可以了。这样非常方便,

数据也更加安全。

ln -s /usr/local/mysql-5.1.33-linux-i686-glibc23/ /usr/local/mysql

3、//初始化授权表

cd /usr/local/mysql

scripts/mysql_install_db --user=mysql

注意:执行该步骤时,必须将 /etc/mysql/ 下的 my.cnf 文件删除或改名,否则将会报错

4、//修改MySQl目录的所有权

chown -R mysql.mysql /usr/local/mysql-5.1.33-linux-i686-glibc23/

chown -R mysql.mysql /usr/local/mysql

5、//配置系统启动时自动启动MySQl

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld

(另:mysql 5.5.8,启动时:/etc/init.d/mysqld: line 256: my_print_defaults: command not found

修改/etc/init.d/mysqld:

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data)

6、cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

注:my-medium.cnf为中档规模的mysql,更多,查看/usr/local/mysql/support-files/目录

7、//启动Mysql

/service mysqld start

8、//添加mysql命令到/usr/local/bin目录

echo "export PATH=/usr/local/mysql/bin:$PATH" >>/etc/profile

source /etc/profile

9、//添加libmysqlclient.so.15动态链接库到/usr/lib

ln -s /usr/local/mysql/lib/libmysqlclient.so.15 /usr/lib

10、更改mysql root 密码

use mysql

update user set Password=password('newpassword') where User='root';

flush privileges;

三 编译安装PHP(FastCGI模式)

1、

./configure --prefix=/usr/local/php \

--with-config-file-path=/usr/local/php/etc \

--with-mysql=/usr/local/mysql \

--with-iconv-dir=/usr/local \

--with-freetype-dir \

--with-jpeg-dir \

--with-png-dir \

--with-zlib \

--with-libxml-dir  \

--enable-xml \

--disable-debug \

--disable-rpath \

--enable-discard-path \

--enable-bcmath \

--enable-shmop \

--enable-sysvsem \

--enable-inline-optimization \

--with-curl \

--with-gd \

--with-curlwrappers \

--enable-mbregex \

--enable-fastcgi \

--enable-force-cgi-redirect \

--enable-mbstring \

--with-mcrypt \

--enable-ftp

php5.3.3以后的版本源码不需要再打php-fpm补丁,该补丁已集成进php5.3.3,在编译时,不需再–enable-fastcgi了,在php5.3.3中强制启用fastcgi了。但是对于fpm,仍然需要--enable-fpm

在X86_64位上时,编译有问题,需要去掉下面两个扩展:--with-curl --with-curlwrappers

make ZEND_EXTRA_LIBS='-liconv'

make install

注:关于make 后面添加的ZEND_EXTRA_LIBS='-liconv',和下面的操作的作用是相同的,是为了解决make中出现的错误:

sed -i 's#-lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt#& -liconv#' Makefile

必须,否则报错:

collect2: ld returned 1 exit status

make: *** [sapi/cgi/php-cgi] Error 1

精简模块的安装

./configure \

--prefix=/usr/local/php \

--with-config-file-path=/usr/local/php/etc \

--with-mysql=/usr/local/mysql \

--enable-fpm \

--disable-debug \

--disable-rpath \

--enable-bcmath \

--enable-shmop \

--enable-sysvsem \

--enable-inline-optimization \

--enable-mbregex \

--enable-mbstring \

--enable-ftp \

--enable-sockets

make ZEND_EXTRA_LIBS='-liconv'

make install

2、

cp php.ini-recommended  /usr/local/php/etc/php.ini

php-5.4.3

cp php.ini-production /usr/local/php/etc/php.ini

3、编译安装PHP5扩展模块

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

tar zxvf memcache-2.2.5.tgz

cd memcache-2.2.5/

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make

make install

4、修改php.ini文件

sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"\nextension = "memcache.so"\n#' /usr/local/php/etc/php.ini

6、关于php的404错误,查看是否打开了php.ini的下面的参数

cgi.fix_pathinfo=0

该参数用于是否使用完整路径

四 fastcgi

要在nginx上跑php,首先需要启动fastcgi,方法有三种,一是用php自带的fastcgi server,二是用lighttpd带的spawn-fcgi,三是用php-fpm。

我使用的是spawn-fcgi

1、一些相关的rpm包

yum install  bzip2*

yum install pcre-devel

2、获得spawn-fcgi,spawn-fcgi现在被分离出来,做为一个新的项目

wget http://www.lighttpd.net/download/spawn-fcgi-1.6.1.tar.gz

tar -xvzf spawn-fcgi-1.6.1.tar.gz

./configure

make

make install

/usr/local/bin/spawn-fcgi -h

3、创建www用户和组,以及其使用的目录:

groupadd www -g 48

useradd -u 48 -g www www

mkdir -p /EBS/www

chmod +w /EBS/www

chown -R www:www /EBS/www

4、启动php-cgi进程,监听127.0.0.1的10080端口,进程数为64(如果服务器内存小于3GB,可以只开启25个进程),脚本:

#! /bin/bash

address="127.0.0.1"

port="9000"

pidpath="/tmp/spawn_phpcgi_${port}.pid"

user="www"

group="www"

phpcgi="/usr/local/php/bin/php-cgi"

PHP_FCGI_CHILDREN=25

PHP_FCGI_MAX_REQUESTS=1000

echo_ok ()

{

echo -ne "\033[33C ["

echo -ne "\033[32m"

echo -ne "\033[1C OK"

echo -ne "\033[39m"

echo -ne "\033[1C ]\n"

}

start_spawn()

{

env - PHP_FCGI_CHILDREN=${PHP_FCGI_CHILDREN} PHP_FCGI_MAX_REQUESTS=${PHP_FCGI_MAX_REQUESTS} /usr/local/bin/spawn-fcgi -a ${a

ddress} -p ${port} -u ${user} -g ${group} -f ${phpcgi} -P ${pidpath} 1>/dev/null

echo -ne "php-cgi start successfull"

echo_ok

}

case "$1" in

start)

if [ ! -f $pidpath ]

then

start_spawn

else

pidcount=`ps -ef |grep ${phpcgi}|wc -l`

if [ "$pidcount" -gt "1" ]

then

echo -ne "php-cgi  already  running  "

echo_ok

else

rm -f $pidpath

start_spawn

fi

fi

;;

stop)

pid=`cat ${pidpath} 2>/dev/null`

kill ${pid} 2>/dev/null

rm -f ${pidpath} 2>/dev/null

echo -ne "php-cgi  stop successfull"

echo_ok

;;

*)

echo "Usage: $0 {start|stop]}"

exit 1

esac

exit

cp /usr/local/php/etc/php.ini /usr/local/php/bin/php.ini

注意:使用cgi时,读取的php.ini为与php-cgi程序在同一目录的php.ini

五、安装Nginx 0.6.36

1、echo ulimit -HSn 51200 >>/etc/profile

source /etc/profile

tar -xvzf nginx-0.6.36.tar.gz

2

./configure  --prefix=/usr/local/nginx \

--with-http_stub_status_module \

--without-poll_module \

--without-select_module \

--with-http_ssl_module \

--with-http_realip_module \

--with-http_perl_module

make

make install

错误:

objs/src/core/ngx_regex.o: In function `ngx_pcre_free_studies':

/opt/nginx-1.2.1/src/core/ngx_regex.c:307: undefined reference to `pcre_free_study'

Probably, you have the same problem as mentioned in this ticket:http://trac.nginx.org/nginx/ticket/94If so, the solution is in the last comment by Maxim Dounin:http://trac.nginx.org/nginx/ticket/94#comment:9Also, it's possible to compile nginx with pcre from source by usingthe "--with-pcre=/path/to/pcre/source" and "--with-pcre-jit" configureflags., see http://nginx.org/en/docs/install.html for more information.

./configure \

--prefix=/usr/local/nginx \

--with-http_stub_status_module \

--without-poll_module \

--without-select_module \

--with-http_ssl_module \

--with-http_realip_module \

--with-http_perl_module \

--with-pcre=../pcre-8.30 \

--with-pcre-jit && \

make && make install

启动脚本

#!/bin/bash

# nginx Startup script for the Nginx HTTP Server

# this script create it by jackbillow at 2007.10.15.

# it is v.0.0.2 version.

# if you find any errors on this scripts,please contact jackbillow.

# and send mail to jackbillow at gmail dot com.

#

# chkconfig: - 85 15

# description: Nginx is a high-performance web and proxy server.

#              It has a lot of features, but it's not for everyone.

# processname: nginx

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

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

nginxd=/usr/local/nginx/sbin/nginx

nginx_config=/usr/local/nginx/conf/nginx.conf

nginx_pid=/var/run/nginx.pid

RETVAL=0

prog="nginx"

# Source function library.

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

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

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

[ -x $nginxd ] || exit 0

# Start nginx daemons functions.

start() {

if [ -e $nginx_pid ];then

echo "nginx already running...."

exit 1

fi

echo -n $"Starting $prog: "

daemon $nginxd -c ${nginx_config}

RETVAL=$?

echo

[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx

return $RETVAL

}

# Stop nginx daemons functions.

stop() {

echo -n $"Stopping $prog: "

killproc $nginxd

RETVAL=$?

echo

[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid

}

# reload nginx service functions.

reload() {

echo -n $"Reloading $prog: "

#kill -HUP `cat ${nginx_pid}`

killproc $nginxd -HUP

RETVAL=$?

echo

}

# See how we were called.

case "$1" in

start)

start

;;

stop)

stop

;;

reload)

reload

;;

restart)

stop

start

;;

status)

status $prog

RETVAL=$?

;;

*)

echo $"Usage: $prog {start|stop|restart|reload|status|help}"

exit 1

esac

exit $RETVAL

3、编辑相关配置文件

(1).nginx配置文件

vi /usr/local/nginx/conf/nginx.conf

user  www www;

worker_processes 10;

error_log  logs/error.log notice;

pid        logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.

worker_rlimit_nofile 51200;

events

{

use epoll;

worker_connections 51200;

}

http

{

include      mime.types;

default_type  application/octet-stream;

charset  gb2312;

server_names_hash_bucket_size 128;

#sendfile on;

#tcp_nopush     on;

keepalive_timeout 60;

tcp_nodelay on;

gzip on;

gzip_min_length  1k;

gzip_buffers     4 8k;

gzip_http_version 1.1;

gzip_types       text/plain application/x-javascript text/css text/html application/xml;

server

{

listen       80;

server_name  192.168.1.2;

index index.html index.htm index.php;

root  /EBS/www;

if (-d $request_filename)

{

rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;

}

location ~ .*\.php?$

{

include fcgi.conf;

fastcgi_pass  127.0.0.1:9000;

fastcgi_index index.php;

}

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

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" $http_x_forwarded_for';

access_log  logs/access.log  access;

}

}

(2)、php cgi 配置文件

vi /usr/local/nginx/conf/fcgi.conf

注:nginx自带了一个配置文件,/usr/local/nginx/conf/fastcgi_params,该配置文件缺少红色字体的部分,会造成访问php文件时报404错误。

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 only, required if PHP was built with --enable-force-cgi-redirect

#fastcgi_param  REDIRECT_STATUS    200;

六 相关Linux内核参数

vi /etc/sysctl.conf,添加:

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 300

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.ip_local_port_range = 5000    65000

使配置生效

sysctl -p

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值