lnmp-初次体验

     在整个互联网web架构中,最近比较流行的轻量级web服务器nginx,功能和性能上越来越受欢迎。最近比较空闲了,从网络上看了些资料,自己尝试安装部署,算是初次体验吧。。我这里主要参考张宴的文章,声明下。
     一、lnmp环境的搭建
1、下载软件:
nginx-0.8.46.tar.gz
php-5.2.14.tar.gz
php-5.2.14-fpm-0.5.14.diff.gz
mysql-5.5.3-m3.tar.gz
libiconv-1.13.1.tar.gz
libmcrypt-2.5.8.tar.gz
mcrypt-2.6.8.tar.gz
memcache-2.2.5.tgz
mhash-0.9.9.9.tar.gz
pcre-8.10.tar.gz
eaccelerator-0.9.6.1.tar.bz2
PDO_MYSQL-1.0.2.tgz
ImageMagick.tar.gz
imagick-2.3.0.tgz
软件大家可以到sourceforge.net或者到oschina.net去下载。

2、编译安装PHP 5.2.14所需的支持库:

  
  
  
  
  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.  
  20. tar zxvf mhash-0.9.9.9.tar.gz 
  21. cd mhash-0.9.9.9/ 
  22. ./configure 
  23. make 
  24. make install 
  25. cd ../ 
  26.  
  27. ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la 
  28. ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so 
  29. ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4 
  30. ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8 
  31. ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a 
  32. ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la 
  33. ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so 
  34. ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2 
  35. ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1 
  36. ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config 
  37.  
  38. tar zxvf mcrypt-2.6.8.tar.gz 
  39. cd mcrypt-2.6.8/ 
  40. /sbin/ldconfig 
  41. ./configure 
  42. make 
  43. make install 
  44. cd ../ 
  45.  
  46. tar xvzf freetype-2.4.4.tar.gz 
  47. ./configure --prefix=/usr/local/freetype 
  48. make && make install 
  49.  
  50. tar xvzf jpegsrc.v7.tar.gz 
  51. ./configure --prefix=/usr/local/jpeg 
  52. make && make install 
  53.  
  54. tar xvzf libpng-1.5.0.tar.gz 
  55. ./configure --prefix=/usr/local/libpng 
  56. make && make install 
  57.  
  58. tar xvzf GD-2.0.35.tar.gz  
  59. 链接头文件  
  60. ln -s /usr/local/libpng/include/pnglibconf.h /usr/include  
  61. ln -s /usr/local/libpng/include/png.h /usr/include  
  62. cd gd-2.0.35  
  63. aclocal  
  64. autoconf  
  65. ./configure --prefix=/usr/local/gd2 --with-freetype=/usr/local/freetype --with-png=/usr/local/libpng --with-jpeg=/usr/local/jpeg  
  66.  make && make install 


3、安装数据库mysql

  
  
  
  
  1.  useradd -d /home/mysql -s /sbin/nologin mysql 
  2.  
  3. ./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/data/mysql --with-charset=utf8 --with-extra-charsets=all --with-plugins=innobase,partition --enable-thread-safe-client 
  4.  
  5. make 
  6.  
  7. make install 
  8.  
  9. cp support-files/my-medium.cnf /etc/my.cnf 
  10.  
  11. bin/mysql_install_db -–user=mysql 初始化数据库 
  12.  
  13. /usr/local/mysql/bin/mysqld_safe &  

备注:如遇到此错误提示:error: No curses/termcap library found,检查后发现,ncurses有安装,问题应该出在编译时无法找到库文件。

解决办法:./configure --with-named-curses-libs=/usr/lib/libncursesw.so.5 编译参数中加上这句,即可OK


4、安装php

  
  
  
  
  1. tar zxvf php-5.2.14.tar.gz 
  2. gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1 
  3. cd php-5.2.14/ 
  4. ./configure --prefix=/usr/local/php --with-gd=/usr/local/gd2 --with-zlib-dir --enable-mbstring=all --with-freetype-dir=/usr/local/freetype --with-mysql=/usr/local/mysql --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/png --enable-fastcgi --enable-fpm --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap 
  5.  
  6. make ZEND_EXTRA_LIBS='-liconv' 
  7. make install 
  8.  cp php.ini-dist /usr/local/php/etc/php.ini 


5、编译安装PHP5扩展模块

  
  
  
  
  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 jxvf eaccelerator-0.9.6.1.tar.bz2 
  10. cd eaccelerator-0.9.6.1/ 
  11. /usr/local/php/bin/phpize 
  12. ./configure -enable-eaccelerator=shared -with-php-config=/usr/local/php/bin/php-config 
  13. make 
  14. make install 
  15. cd ../ 
  16.  
  17. tar zxvf PDO_MYSQL-1.0.2.tgz 
  18. cd PDO_MYSQL-1.0.2/ 
  19. /usr/local/php/bin/phpize 
  20. ./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql 
  21. make 
  22. make install 
  23. cd ../ 
  24.  
  25. tar zxvf ImageMagick.tar.gz 
  26. cd ImageMagick-6.5.1-2/ 
  27. ./configure 
  28. make 
  29. make install 
  30. cd ../ 
  31.  
  32. tar zxvf imagick-2.3.0.tgz 
  33. cd imagick-2.3.0/ 
  34. /usr/local/php/bin/phpize 
  35. ./configure –with-php-config=/usr/local/php/bin/php-config 
  36. make 
  37. make install 
  38. cd ../ 


 6、修改php.ini文件

  
  
  
  
  1.  sed -i ‘s#extension_dir = “./”#extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/”\nextension = “memcache.so”\nextension = “pdo_mysql.so”\nextension = “imagick.so”\n#’ /usr/local/webserver/php/etc/php.ini 
  2. sed -i ‘s#output_buffering = Off#output_buffering = On#’ /usr/local/webserver/php/etc/php.ini 
  3. sed -i “s#; always_populate_raw_post_data = On#always_populate_raw_post_data = On#g” /usr/local/webserver/php/etc/php.ini 
  4. sed -i “s#; cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g” /usr/local/webserver/php/etc/php.ini 


7、配置eAccelerator加速PHP:

  mkdir -p /usr/local/eaccelerator_cache
  vi /usr/local/php/etc/php.ini
 

  
  
  
  
  1. [eaccelerator] 
  2. zend_extension=”/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so” 
  3. eaccelerator.shm_size=”64″ 
  4. eaccelerator.cache_dir=”/usr/local/php/eaccelerator_cache” 
  5. eaccelerator.enable=”1″ 
  6. eaccelerator.optimizer=”1″ 
  7. eaccelerator.check_mtime=”1″ 
  8. eaccelerator.debug=”0″ 
  9. eaccelerator.filter=”" 
  10. eaccelerator.shm_max=”0″ 
  11. eaccelerator.shm_ttl=”3600″ 
  12. eaccelerator.shm_prune_period=”3600″ 
  13. eaccelerator.shm_only=”0″ 
  14. eaccelerator.compress=”1″ 
  15. eaccelerator.compress_level=”9″ 

8、创建www用户和组,以及供blog.abc.com和www.abc.com两个虚拟主机使用的目录:
 

  
  
  
  
  1. /usr/sbin/groupadd www  
  2. /usr/sbin/useradd -g www www  
  3. mkdir /data/webappsu/blog  
  4. chown -R www:www /data/webappsu/blog  

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

  
  
  
  
  1. cp -rp php-fpm.conf.default php-fpm.conf 

这个目前暂时以默认文档创建模板,需要调优时要对其中的某些参数做修改。

 10、启动php-cgi进程,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为www:Linode 512 VPS ,此数值设为 24-32是合适的。

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


    注:/usr/local/webserver/php/sbin/php-fpm还有其他参数,包括:start|stop|quit|restart|reload|logrotate,修改php.ini后不重启php-cgi,重新加载配置文件使用reload。
 
 11、安装nginx前先检查下pcre库,如果pcre版本太旧或者未安装,则安装nginx会提示错误。

  
  
  
  
  1. #rpm -qa |grep pcre 
  2. #tar xvzf pcre-8.12.tar.gz 
  3. #cd pcre-8.12 
  4. #./configure 
  5. #make && make install 
  6.  
  7. 下载nginx1.0.2源码包,并上传至服务器。 
  8. #useradd nginx 
  9. #tar xvzf nginx-1.0.2.tar.gz 
  10. #cd nginx-1.0.2 
  11. #./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module 
  12. #make 
  13. #make install 

12、vim /usr/local/nginx/conf/nginx.conf
  

  
  
  
  
  1. user  www www; 
  2. worker_processes  8; 
  3.  
  4. error_log  /data/logs/error.log; 
  5. pid        /data/logs/nginx.pid; 
  6. worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 
  7. worker_rlimit_nofile 102400; 
  8.  
  9. events { 
  10.     use epoll; 
  11.     worker_connections  102400; 
  12.       } 
  13.  
  14. http { 
  15.     include       mime.types; 
  16.     default_type  application/octet-stream; 
  17.     include       vhosts/*.conf; 
  18.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' 
  19.                       '$status $body_bytes_sent "$http_referer" ' 
  20.                       '"$http_user_agent" "$http_x_forwarded_for"'; 
  21.  
  22.     access_log  /data/logs/access.log  main; 
  23.  
  24.     sendfile        on; 
  25.     userid_expires  max; 
  26.     tcp_nopush     on; 
  27.     tcp_nodelay    on; 
  28.     server_names_hash_bucket_size  256; 
  29.     client_header_buffer_size      16k; 
  30.     large_client_header_buffers    4 256k; 
  31.     client_max_body_size           20m; 
  32.     client_header_timeout          3m; 
  33.     client_body_timeout            3m; 
  34.     send_timeout                   3m; 
  35.     fastcgi_buffers                8 128k; 
  36.     fastcgi_connect_timeout        300; 
  37.     fastcgi_send_timeout           300; 
  38.     fastcgi_read_timeout           300; 
  39.     fastcgi_buffer_size            128k; 
  40.     fastcgi_busy_buffers_size      256k; 
  41.     fastcgi_temp_file_write_size   256k; 
  42.     fastcgi_intercept_errors       on; 
  43.     output_buffers                 1 32k; 
  44.     postpone_output                1460; 
  45.     keepalive_timeout              30; 
  46.     gzip  on; 
  47.     gzip_types  text/plain text/htm text/css application/ x-javascript; 
  48.    } 

 #mkdir vhosts
vim blog.conf
 

  
  
  
  
  1. server{ 
  2.        listen  80; 
  3.        server_name www.backter.com; 
  4.        index index.php index.html; 
  5.        root  /data/webappsu/blog; 
  6.        error_page 404 /404.htm; 
  7.        autoindex_exact_size on; 
  8.        access_log /data/logs/nginx-access/blog.log combined; 
  9.  
  10.        location ~ .*\.(php|php5)?$ 
  11.       { 
  12.       #fastcgi_pass  unix:/tmp/php-cgi.sock; 
  13.       fastcgi_pass  127.0.0.1:9000; 
  14.       fastcgi_index index.php; 
  15.       include fastcgi.conf; 
  16.       } 
  17.  
  18.     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ 
  19.     { 
  20.       expires      30d; 
  21.     } 
  22.  
  23.     location ~ .*\.(js|css)?$ 
  24.     { 
  25.       expires      1h; 
  26.     } 
  27.   } 

13、测试http://ip打开正常即证明安装无误。

    可以用webbench测试下负载压力,下面是我的测试性能:

   至此,整个lnmp部署完成,不过上面这个部署参考了张宴的文章,所以其实中间有很多加速插件初次都可以不安装的。。

你可能感兴趣的:(nginx,职场,LNMP,休闲)