LEMP部署安装for RHEL AS4.6

系统环境:

Red Hat Enterprise Linux AS release 4 (Nahant Update 6)



所需软件:



mhash-0.9.9.9.tar.bz2

ImageMagick-6.6.1-10.tar.gz

mysql-5.5.3-m3.tar.gz

imagick-2.3.0.tgz

nginx-0.8.46.tar.gz

libiconv-1.13.1.tar.gz

pcre-8.10.zip

libmcrypt-2.5.8.tar.gz

PDO_MYSQL-1.0.2.tgz

mcrypt-2.6.8.tar.gz

php-5.2.14-fpm-0.5.14.diff.gz

memcache-2.2.5.tgz

php-5.2.14.tar.gz



安装PHP环境所需软件

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

tar zxvf libiconv-1.13.1.tar.gz

cd libiconv-1.13.1/

./configure --prefix=/usr/local

make

make install

cd ..



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

cd ..

cd ..



tar jxvf mhash-0.9.9.9.tar.bz2

cd mhash-0.9.9.9/

./configure

make

make install

cd ..
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la

ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so

ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4

ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8

ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a

ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la

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

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

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

ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config



tar zxvf mcrypt-2.6.8.tar.gz

cd mcrypt-2.6.8/

/sbin/ldconfig

LD_LIBRARY_PATH=/usr/local/lib ./configure

make

make install

cd ..

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

安装MySQL 5.5.3-m3

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

/usr/sbin/groupadd mysql

/usr/sbin/useradd -g mysql mysql

tar zxvf mysql-5.5.3-m3.tar.gz

cd mysql-5.5.3-m3/

./configure \

--prefix=/usr/local/mysql/ \

--enable-assembler \

--with-extra-charsets=complex \

--enable-thread-safe-client \

--with-big-tables \

--with-readline \

--with-ssl \

--with-embedded-server \

--enable-local-infile \

--with-plugins=partition,innobase,myisammrg

make && make install

chmod +w /usr/local/mysql

chown -R mysql:mysql /usr/local/mysql

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

source /etc/profile

/usr/local/mysql/bin/mysql_install_db --user=mysql

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

chmod 755 /etc/init.d/mysqld

chkconfig --add mysqld

cd ../



vi /etc/my.cnf

#basedir=/var/lib        #注释掉这行



/etc/init.d/mysqld start

mysqladmin -uroot password admin888

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



安装PHP(FastCGI模式)

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

tar jxvf php-5.2.6.tar.bz2

gzip -cd php-5.2.6-fpm-0.5.8.diff.gz | patch -d php-5.2.6 -p1

cd php-5.2.6/

./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-zlib \

--with-curl \

--enable-fastcgi \

--enable-fpm \

--enable-force-cgi-redirect \

--enable-mbstring \

--with-mcrypt \

--with-openssl \

--with-mhash \

--enable-sockets \

--enable-zip \

make ZEND_EXTRA_LIBS='-liconv'

make install

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

cd ../



安装PHP扩展模块

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

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

cd ../



tar zxvf PDO_MYSQL-1.0.2.tgz

cd PDO_MYSQL-1.0.2/

/usr/local/php/bin/phpize

./configure \

--with-php-config=/usr/local/php/bin/php-config \

--with-pdo-mysql=/usr/local/mysql

make

make install

cd ../





配置PHP

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

修改php.ini文件



vi /usr/local/php/etc/php.ini



手工修改:



查找/usr/local/php/etc/php.ini中的



extension_dir = "./"    (约491行)



修改为



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



并在此行后增加以下几行

extension = "memcache.so"

extension = "pdo_mysql.so"

extension = "imagick.so"



再查找 output_buffering = Off    (约101行)

修改为 output_buffering = On



再查找 ;cgi.fix_pathinfo=0       (约523行)

修改为 cgi.fix_pathinfo=0,    即取消注释,使生效,防止Nginx文件类型错误解析漏洞。





创建www用户和组,以及供www.elain.org使用的目录:



/usr/sbin/groupadd www

/usr/sbin/useradd -g www www

mkdir -p /www/htdocs

chmod +w /www/htdocs

chown -R www:www /www





创建php-fpm配置文件(php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi):

在/usr/local/php/etc/目录中创建php-fpm.conf文件:



vi /usr/local/php/etc/php-fpm.conf



输入以下内容:

#######################################

见附件,附件下载即可!php-fpm.conf.tar

#######################################

注:如果安装 Nginx + PHP 用于程序调试,请将以上的0改为1,以便显示PHP错误信息,否则,Nginx 会报状态为500的空白错误页):



启动php-cgi进程,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为www:



ulimit -SHn 65535

/usr/local/php/sbin/php-fpm start



注:/usr/local/php/sbin/php-fpm还有其他参数,包括:start|stop|quit|restart|reload|logrotate,修改php.ini后不重启php-cgi,重新加载配置文件使用reload。

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

安装Nginx 0.8.46

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

安装Nginx所需的pcre库:



unzip pcre-8.10.zip

cd pcre-8.10/

./configure

make && make install

cd ../



安装Nginx



tar zxvf nginx-0.8.46.tar.gz

cd nginx-0.8.46/

./configure --user=www --group=www \

--prefix=/usr/local/nginx \

--with-http_stub_status_module \

--with-http_ssl_module

make && make install

cd ../



创建Nginx日志目录



mkdir -p /www/logs

chmod +w /www/logs

chown -R www:www /www/logs



创建Nginx配置文件



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



输入以下内容:

##################################

user  www www;



worker_processes 8;



error_log  /www/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 65535;

}



http  

{

  include       mime.types;

  default_type  application/octet-stream;



  #charset  gb2312;



  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  www.elain.org;

    index index.html index.htm index.php;

    root  /www/htdocs;



    #limit_conn   crawler  20;     



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

    {       

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

      fastcgi_pass  127.0.0.1:9000;

      fastcgi_index index.php;

      include fcgi.conf;

    }



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

    {

      expires      30d;

    }



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

    {

      expires      1h;

    }     



    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  /www/logs/access.log  access;

      }



   server

  {

    listen  80;

    server_name  status.elain.org;



    location / {

    stub_status on;

    access_log   off;

    }

  }

}

##################################



创建fcgi.conf文件:



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



输入以下内容:

##################################

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;

################################



启动Nginx



ulimit -SHn 65535

/usr/local/nginx/sbin/nginx



配置开机自动启动Nginx + PHP



vi /etc/rc.local



在末尾增加以下内容:



ulimit -SHn 65535

/usr/local/php/sbin/php-fpm start

/usr/local/nginx/sbin/nginx





nginx重启



killall -9 nginx;/usr/local/nginx/sbin/nginx



kill -HUP `cat /usr/local/nginx/nginx.pid` #平滑重启

/usr/local/nginx/sbin/nginx -s {reload|stop}

killall -HUP nginx
文章目录
,