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环境所需软件
---------------------------------

 

  
  
  
  
  1. tar zxvf libiconv-1.13.1.tar.gz 
  2. cd libiconv-1.13.1/ 
  3. ./configure --prefix=/usr/local 
  4. make 
  5. make install 
  6. cd .. 
  7.   
  8. tar zxvf libmcrypt-2.5.8.tar.gz   
  9. cd libmcrypt-2.5.8/ 
  10. ./configure 
  11. make 
  12. make install 
  13. /sbin/ldconfig 
  14. cd libltdl/ 
  15. ./configure --enable-ltdl-install 
  16. make 
  17. make install 
  18. cd .. 
  19. cd .. 
  20.   
  21. tar jxvf mhash-0.9.9.9.tar.bz2 
  22. cd mhash-0.9.9.9/ 
  23. ./configure 
  24. make 
  25. make install 
  26. cd .. 
  27.  
  28.   
  29. ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la 
  30. ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so 
  31. ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4 
  32. ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8 
  33. ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a 
  34. ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la 
  35. ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so 
  36. ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2 
  37. ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1 
  38. ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config 
  39.   
  40. tar zxvf mcrypt-2.6.8.tar.gz 
  41. cd mcrypt-2.6.8/ 
  42. /sbin/ldconfig 
  43. LD_LIBRARY_PATH=/usr/local/lib ./configure 
  44. make 
  45. make install 
  46. cd .. 

-------------------------------
安装MySQL 5.5.3-m3
-------------------------------

  
  
  
  
  1. /usr/sbin/groupadd mysql 
  2. /usr/sbin/useradd -g mysql mysql 
  3. tar zxvf mysql-5.5.3-m3.tar.gz 
  4. cd mysql-5.5.3-m3/ 
  5. ./configure 
  6. --prefix=/usr/local/mysql/ 
  7. --enable-assembler 
  8. --with-extra-charsets=complex 
  9. --enable-thread-safe-client 
  10. --with-big-tables 
  11. --with-readline 
  12. --with-ssl 
  13. --with-embedded-server 
  14. --enable-local-infile 
  15. --with-plugins=partition,innobase,myisammrg 
  16. make && make install 
  17. chmod +w /usr/local/mysql 
  18. chown -R mysql:mysql /usr/local/mysql 
  19. echo "export PATH=$PATH:/usr/local/mysql/bin/">>/etc/profile 
  20. source /etc/profile 
  21. /usr/local/mysql/bin/mysql_install_db --user=mysql 
  22. cp support-files/mysql.server /etc/init.d/mysqld 
  23. chmod 755 /etc/init.d/mysqld 
  24. chkconfig --add mysqld 
  25. cd ../ 
  26.   
  27. vi /etc/my.cnf 
  28. #basedir=/var/lib        #注释掉这行 
  29.   
  30. /etc/init.d/mysqld start 
  31. mysqladmin -uroot password elain 


---------------------------------------
 
安装PHP(FastCGI模式)
---------------------------------------

  
  
  
  
  1. tar jxvf php-5.2.6.tar.bz2 
  2. gzip -cd php-5.2.6-fpm-0.5.8.diff.gz | patch -d php-5.2.6 -p1 
  3. cd php-5.2.6/ 
  4. ./configure 
  5. --prefix=/usr/local/php 
  6. --with-config-file-path=/usr/local/php/etc 
  7. --with-mysql=/usr/local/mysql 
  8. --with-iconv-dir=/usr/local 
  9. --with-freetype-dir 
  10. --with-zlib 
  11. --with-curl 
  12. --enable-fastcgi 
  13. --enable-fpm 
  14. --enable-force-cgi-redirect 
  15. --enable-mbstring 
  16. --with-mcrypt 
  17. --with-openssl 
  18. --with-mhash 
  19. --enable-sockets 
  20. --enable-zip 
  21. make ZEND_EXTRA_LIBS='-liconv' 
  22. make install 
  23. cp php.ini-dist /usr/local/php/etc/php.ini 
  24. cd ../ 


 
安装PHP扩展模块
-------------------------------------

  
  
  
  
  1. tar zxvf memcache-2.2.5.tgz 
  2. cd memcache-2.2.5/ 
  3. /usr/local/php/bin/phpize 
  4. ./configure --with-php-config=/usr/local/php/bin/php-config 
  5. make 
  6. make install 
  7. cd ../ 
  8.   
  9. tar zxvf PDO_MYSQL-1.0.2.tgz 
  10. cd PDO_MYSQL-1.0.2/ 
  11. /usr/local/php/bin/phpize 
  12. ./configure 
  13. --with-php-config=/usr/local/php/bin/php-config 
  14. --with-pdo-mysql=/usr/local/mysql 
  15. make 
  16. make install 
  17. cd ../ 
  18.   


 
配置PHP
----------------------------------
修改php.ini文件
 
vi /usr/local/php/etc/php.ini

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


 
手工修改:
 
查找/usr/local/php/etc/php.ini中的
 

  
  
  
  
  1. extension_dir = "./"    #(约491行)   
修改为
  
  
  
  
  1. extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/" 


 
并在此行后增加以下几行

  
  
  
  
  1. extension = "memcache.so" 
  2. extension = "pdo_mysql.so" 
  3. extension = "imagick.so" 


 
再查找 output_buffering = Off    (约101行)
修改为 output_buffering = On
 
再查找 ;cgi.fix_pathinfo=0       (约523行)
修改为 cgi.fix_pathinfo=0,    即取消注释,使生效,防止Nginx文件类型错误解析漏洞。
-------
 
 
创建www用户和组,以及供www.elain.org使用的目录:
 

  
  
  
  
  1. /usr/sbin/groupadd www 
  2. /usr/sbin/useradd -g www www 
  3. mkdir -p /www/htdocs 
  4. chmod +w /www/htdocs 
  5. chown -R www:www /www 


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

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


 
输入以下内容:

 

 

  

 

  
  
  
  
  1. <?xml version="1.0" ?> 
  2.  
  3. <configuration> 
  4.  
  5.  
  6.  
  7.   All relative paths in this config are relative to php's install prefix 
  8.  
  9.  
  10.  
  11.   <section name="global_options"> 
  12.  
  13.  
  14.  
  15.     Pid file 
  16.  
  17.     <value name="pid_file">/usr/local/php/logs/php-fpm.pid</value> 
  18.  
  19.  
  20.  
  21.     Error log file 
  22.  
  23.     <value name="error_log">/usr/local/php/logs/php-fpm.log</value> 
  24.  
  25.  
  26.  
  27.     Log level 
  28.  
  29.     <value name="log_level">notice</value> 
  30.  
  31.  
  32.  
  33.     When this amount of php processes exited with SIGSEGV or SIGBUS ... 
  34.  
  35.     <value name="emergency_restart_threshold">10</value> 
  36.  
  37.  
  38.  
  39.     ... in a less than this interval of time, a graceful restart will be initiated. 
  40.  
  41.     Useful to work around accidental curruptions in accelerator's shared memory. 
  42.  
  43.     <value name="emergency_restart_interval">1m</value> 
  44.  
  45.  
  46.  
  47.     Time limit on waiting child's reaction on signals from master 
  48.  
  49.     <value name="process_control_timeout">5s</value> 
  50.  
  51.  
  52.  
  53.     Set to 'no' to debug fpm 
  54.  
  55.     <value name="daemonize">yes</value> 
  56.  
  57.  
  58.  
  59.   </section> 
  60.  
  61.  
  62.  
  63.   <workers> 
  64.  
  65.  
  66.  
  67.     <section name="pool"> 
  68.  
  69.  
  70.  
  71.       Name of pool. Used in logs and stats. 
  72.  
  73.       <value name="name">default</value> 
  74.  
  75.  
  76.  
  77.       Address to accept fastcgi requests on. 
  78.  
  79.       Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket' 
  80.  
  81.       <value name="listen_address">127.0.0.1:9000</value> 
  82.  
  83.  
  84.  
  85.       <value name="listen_options"> 
  86.  
  87.  
  88.  
  89.         Set listen(2) backlog 
  90.  
  91.         <value name="backlog">-1</value> 
  92.  
  93.  
  94.  
  95.         Set permissions for unix socket, if one used. 
  96.  
  97.         In Linux read/write permissions must be set in order to allow connections from web server. 
  98.  
  99.         Many BSD-derrived systems allow connections regardless of permissions. 
  100.  
  101.         <value name="owner"></value> 
  102.  
  103.         <value name="group"></value> 
  104.  
  105.         <value name="mode">0666</value> 
  106.  
  107.       </value> 
  108.  
  109.  
  110.  
  111.       Additional php.ini defines, specific to this pool of workers. 
  112.  
  113.       <value name="php_defines"> 
  114.  
  115.         <value name="sendmail_path">/usr/sbin/sendmail -t -i</value> 
  116.  
  117.         <value name="display_errors">0</value> 
  118.  
  119.       </value> 
  120.  
  121.  
  122.  
  123.       Unix user of processes 
  124.  
  125.       <value name="user">www</value> 
  126.  
  127.  
  128.  
  129.       Unix group of processes 
  130.  
  131.       <value name="group">www</value> 
  132.  
  133.  
  134.  
  135.       Process manager settings 
  136.  
  137.       <value name="pm"> 
  138.  
  139.  
  140.  
  141.         Sets style of controling worker process count. 
  142.  
  143.         Valid values are 'static' and 'apache-like' 
  144.  
  145.         <value name="style">static</value> 
  146.  
  147.  
  148.  
  149.         Sets the limit on the number of simultaneous requests that will be served. 
  150.  
  151.         Equivalent to Apache MaxClients directive. 
  152.  
  153.         Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi 
  154.  
  155.         Used with any pm_style. 
  156.  
  157.         <value name="max_children">8</value> 
  158.  
  159.  
  160.  
  161.         Settings group for 'apache-like' pm style 
  162.  
  163.         <value name="apache_like"> 
  164.  
  165.  
  166.  
  167.           Sets the number of server processes created on startup. 
  168.  
  169.           Used only when 'apache-like' pm_style is selected 
  170.  
  171.           <value name="StartServers">20</value> 
  172.  
  173.  
  174.  
  175.           Sets the desired minimum number of idle server processes. 
  176.  
  177.           Used only when 'apache-like' pm_style is selected 
  178.  
  179.           <value name="MinSpareServers">5</value> 
  180.  
  181.  
  182.  
  183.           Sets the desired maximum number of idle server processes. 
  184.  
  185.           Used only when 'apache-like' pm_style is selected 
  186.  
  187.           <value name="MaxSpareServers">35</value> 
  188.  
  189.  
  190.  
  191.         </value> 
  192.  
  193.  
  194.  
  195.       </value> 
  196.  
  197.  
  198.  
  199.       The timeout (in seconds) for serving a single request after which the worker process will be terminated 
  200.  
  201.       Should be used when 'max_execution_time' ini option does not stop script execution for some reason 
  202.  
  203.       '0s' means 'off' 
  204.  
  205.       <value name="request_terminate_timeout">0s</value> 
  206.  
  207.  
  208.  
  209.       The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file 
  210.  
  211.       '0s' means 'off' 
  212.  
  213.       <value name="request_slowlog_timeout">0s</value> 
  214.  
  215.  
  216.  
  217.       The log file for slow requests 
  218.  
  219.       <value name="slowlog">logs/slow.log</value> 
  220.  
  221.  
  222.  
  223.       Set open file desc rlimit 
  224.  
  225.       <value name="rlimit_files">65535</value> 
  226.  
  227.  
  228.  
  229.       Set max core size rlimit 
  230.  
  231.       <value name="rlimit_core">0</value> 
  232.  
  233.  
  234.  
  235.       Chroot to this directory at the start, absolute path 
  236.  
  237.       <value name="chroot"></value> 
  238.  
  239.  
  240.  
  241.       Chdir to this directory at the start, absolute path 
  242.  
  243.       <value name="chdir"></value> 
  244.  
  245.  
  246.  
  247.       Redirect workers' stdout and stderr into main error log. 
  248.  
  249.       If not set, they will be redirected to /dev/null, according to FastCGI specs 
  250.  
  251.       <value name="catch_workers_output">yes</value> 
  252.  
  253.  
  254.  
  255.       How much requests each process should execute before respawn. 
  256.  
  257.       Useful to work around memory leaks in 3rd party libraries. 
  258.  
  259.       For endless request processing please specify 0 
  260.  
  261.       Equivalent to PHP_FCGI_MAX_REQUESTS 
  262.  
  263.       <value name="max_requests">1024</value> 
  264.  
  265.  
  266.  
  267.       Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect. 
  268.  
  269.       Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+) 
  270.  
  271.       Makes sense only with AF_INET listening socket. 
  272.  
  273.       <value name="allowed_clients">127.0.0.1</value> 
  274.  
  275.  
  276.  
  277.       Pass environment variables like LD_LIBRARY_PATH 
  278.  
  279.       All $VARIABLEs are taken from current environment 
  280.  
  281.       <value name="environment"> 
  282.  
  283.         <value name="HOSTNAME">$HOSTNAME</value> 
  284.  
  285.         <value name="PATH">/usr/local/bin:/usr/bin:/bin</value> 
  286.  
  287.         <value name="TMP">/tmp</value> 
  288.  
  289.         <value name="TMPDIR">/tmp</value> 
  290.  
  291.         <value name="TEMP">/tmp</value> 
  292.  
  293.         <value name="OSTYPE">$OSTYPE</value> 
  294.  
  295.         <value name="MACHTYPE">$MACHTYPE</value> 
  296.  
  297.         <value name="MALLOC_CHECK_">2</value> 
  298.  
  299.       </value> 
  300.  
  301.  
  302.  
  303.     </section> 
  304.  
  305.  
  306.  
  307.   </workers> 
  308.  
  309.  
  310.  
  311. </configuration> 

 

 


 
注:如果安装 Nginx + PHP 用于程序调试,请将以上的0改为1,以便显示PHP错误信息,否则,Nginx 会报状态为500的空白错误页):
 
启动php-cgi进程,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为www:

  
  
  
  
  1.   
  2. ulimit -SHn 65535 
  3. /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库:
 

  
  
  
  
  1. unzip pcre-8.10.zip 
  2. cd pcre-8.10/ 
  3. ./configure 
  4. make && make install 
  5. cd ../ 


 
安装Nginx
 

  
  
  
  
  1. tar zxvf nginx-0.8.46.tar.gz 
  2. cd nginx-0.8.46/ 
  3. ./configure --user=www --group=www 
  4. --prefix=/usr/local/nginx 
  5. --with-http_stub_status_module 
  6. --with-http_ssl_module 
  7. make && make install 
  8. cd ../ 


 
创建Nginx日志目录
 

  
  
  
  
  1. mkdir -p /www/logs 
  2. chmod +w /www/logs 
  3. chown -R www:www /www/logs 


 
创建Nginx配置文件
 
vi /usr/local/nginx/conf/nginx.conf
 
输入以下内容:

  
  
  
  
  1. user  www www; 
  2.   
  3. worker_processes 8; 
  4.   
  5. error_log  /www/logs/nginx_error.log  crit; 
  6.   
  7. pid        /usr/local/nginx/nginx.pid; 
  8.   
  9. #Specifies the value for maximum file descriptors that can be opened by this process.   
  10. worker_rlimit_nofile 65535; 
  11.   
  12. events   
  13.   use epoll; 
  14.   worker_connections 65535; 
  15.   
  16. http   
  17.   include       mime.types; 
  18.   default_type  application/octet-stream; 
  19.   
  20.   #charset  gb2312; 
  21.         
  22.   server_names_hash_bucket_size 128; 
  23.   client_header_buffer_size 32k; 
  24.   large_client_header_buffers 4 32k; 
  25.   client_max_body_size 8m; 
  26.         
  27.   sendfile on; 
  28.   tcp_nopush     on; 
  29.   
  30.   keepalive_timeout 60; 
  31.   
  32.   tcp_nodelay on; 
  33.   
  34.   fastcgi_connect_timeout 300; 
  35.   fastcgi_send_timeout 300; 
  36.   fastcgi_read_timeout 300; 
  37.   fastcgi_buffer_size 64k; 
  38.   fastcgi_buffers 4 64k; 
  39.   fastcgi_busy_buffers_size 128k; 
  40.   fastcgi_temp_file_write_size 128k; 
  41.   
  42.   gzip on; 
  43.   gzip_min_length  1k; 
  44.   gzip_buffers     4 16k; 
  45.   gzip_http_version 1.0; 
  46.   gzip_comp_level 2; 
  47.   gzip_types       text/plain application/x-javascript text/css application/xml; 
  48.   gzip_vary on; 
  49.   
  50.   #limit_zone  crawler  $binary_remote_addr  10m; 
  51.   
  52.   server 
  53.   { 
  54.     listen       80; 
  55.     server_name  www.elain.org; 
  56.     index index.html index.htm index.php; 
  57.     root  /www/htdocs; 
  58.   
  59.     #limit_conn   crawler  20;      
  60.                                
  61.     location ~ .*.(php|php5)?$ 
  62.     {        
  63.       #fastcgi_pass  unix:/tmp/php-cgi.sock; 
  64.       fastcgi_pass  127.0.0.1:9000; 
  65.       fastcgi_index index.php; 
  66.       include fcgi.conf; 
  67.     } 
  68.       
  69.     location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ 
  70.     { 
  71.       expires      30d; 
  72.     } 
  73.   
  74.     location ~ .*.(js|css)?$ 
  75.     { 
  76.       expires      1h; 
  77.     }      
  78.   
  79.     log_format  access  '$remote_addr - $remote_user [$time_local] "$request" ' 
  80.               '$status $body_bytes_sent "$http_referer" ' 
  81.               '"$http_user_agent" $http_x_forwarded_for'; 
  82.     access_log  /www/logs/access.log  access; 
  83.       } 
  84.   
  85.    server 
  86.   { 
  87.     listen  80; 
  88.     server_name  status.elain.org; 
  89.   
  90.     location / { 
  91.     stub_status on; 
  92.     access_log   off; 
  93.     } 
  94.   } 
  95. }

 
创建fcgi.conf文件:
 

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


 
输入以下内容:

  
  
  
  
  1. fastcgi_param  GATEWAY_INTERFACE  CGI/1.1; 
  2. fastcgi_param  SERVER_SOFTWARE    nginx; 
  3.   
  4. fastcgi_param  QUERY_STRING       $query_string; 
  5. fastcgi_param  REQUEST_METHOD     $request_method; 
  6. fastcgi_param  CONTENT_TYPE       $content_type; 
  7. fastcgi_param  CONTENT_LENGTH     $content_length; 
  8.   
  9. fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name; 
  10. fastcgi_param  SCRIPT_NAME        $fastcgi_script_name; 
  11. fastcgi_param  REQUEST_URI        $request_uri; 
  12. fastcgi_param  DOCUMENT_URI       $document_uri; 
  13. fastcgi_param  DOCUMENT_ROOT      $document_root; 
  14. fastcgi_param  SERVER_PROTOCOL    $server_protocol; 
  15.   
  16. fastcgi_param  REMOTE_ADDR        $remote_addr; 
  17. fastcgi_param  REMOTE_PORT        $remote_port; 
  18. fastcgi_param  SERVER_ADDR        $server_addr; 
  19. fastcgi_param  SERVER_PORT        $server_port; 
  20. fastcgi_param  SERVER_NAME        $server_name; 
  21.   
  22. # PHP only, required if PHP was built with --enable-force-cgi-redirect 
  23. fastcgi_param  REDIRECT_STATUS    200; 


 
启动Nginx
 

  
  
  
  
  1. ulimit -SHn 65535 
  2. /usr/local/nginx/sbin/nginx 


 
配置开机自动启动Nginx + PHP
 

  
  
  
  
  1. vi /etc/rc.local 


 
在末尾增加以下内容:
 

  
  
  
  
  1. ulimit -SHn 65535 
  2. /usr/local/php/sbin/php-fpm start 
  3. /usr/local/nginx/sbin/nginx 


 
 
nginx重启
 

  
  
  
  
  1. killall -9 nginx;/usr/local/nginx/sbin/nginx 
  2.   
  3. kill -HUP `cat /usr/local/nginx/nginx.pid`  #平滑重启 
  4.  
  5. /usr/local/nginx/sbin/nginx -s reload 
  6.   
  7. killall -HUP nginx 


 

 

 

转载请注明: 转载自http://www.elain.org

本文链接地址:LEMP部署安装for RHEL AS4.6

 

你可能感兴趣的:(PHP,mysql,httpd,休闲,LEMP)