RHEL5.4 安裝nginx-1.0 + php-5.2.17(fastcgi)+mysql-5.1.40

RHEL5.4 安裝nginx-1.0 + php-5.2.17(fastcgi)+mysql-5.1.40

一、下載需要的軟件包
 #創建存放軟件包的目錄
 mkdir -p /soft/diy  
 #下載nginx-1.0
 wget http://www.nginx.org/download/nginx-1.0.0.tar.gz
 #下載mysql,由於mysql官網現在需要登錄才能下載,所以我使用自己的源碼倉庫、順便鄙視一下oracle公司
 wget http://122.225.32.131/icons/mysql-5.1.40.tar.gz
 #下載字符轉換庫libiconv
 wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz (下載太慢,最後我還是使用以前的1.13版本)
 #下載PHP的memcache擴展
 http://pecl.php.net/get/memcache-2.2.6.tgz
 #下載PHP的imagick擴展
 wget http://pecl.php.net/get/imagick-3.0.1.tgz
 ftp://mirror.aarnet.edu.au/pub/imagemagick/ImageMagick-6.6.5-10.tar.bz2 imagick擴展的依耐包
 #下載PHP的PDO擴展
 wget http://pecl.php.net/get/PDO-1.0.3.tgz
 wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
 
 #PHP加速器相關下載,一般選擇一種,這裏我們講4種常見的加速軟件
 #下載eaccelerator加速
 wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2 
 #下載ZendOptimizer,由於官網下載需要註冊,所以我們在opser上下載
 wget http://soft.vpser.net/web/zend/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
 #下載PHP的apc擴展
 wget http://pecl.php.net/get/APC-3.1.7.tgz
 #xcache加速
 wget http://xcache.lighttpd.net/pub/Releases/1.3.2-rc1/xcache-1.3.2-rc1.tar.bz2
 
 
 上面是一些軟件的下載地址,如果沒有的情自己google找,官網都可以下載,不過速度比較慢
 MD5值                               軟件名
 94239866e5d1b90e02675e988a5cbad4  APC-3.1.7.tgz
 e2167713316639705202cf9b6cb1fdb1  imagick-3.0.1.tgz
 048032a3032ebd182150bdee30a5d533  libiconv-1.13.tar.gz
 0821830d930a86a5c69110837c55b7da  libmcrypt-2.5.8.tar.gz
 97639f8821b10f80943fa17da302607e  mcrypt-2.6.8.tar.gz
 9542f1886b72ffbcb039a5c21796fe8a  memcache-2.2.6.tgz
 ee66b7d5947deb760aeff3f028e27d25  mhash-0.9.9.9.tar.gz
 32e7373c16271606007374396e6742ad  mysql-5.1.40.tar.gz
 5751c920c266ea5bb5fc38af77e9c71c  nginx-1.0.0.tar.gz
 2256d0a1d0a358265165ca70e7cfc47a  pcre-7.9.tar.gz
 74bff68b3f1caaf745edaddbd4df7291  PDO-1.0.3.tgz
 6121f450488dd4893f5702051c1f84fb  PDO_MYSQL-1.0.2.tgz
 5339a2a9c6a0b015b7ce5fcb8d90de84  php-5.2.17-fpm-0.5.14.diff.gz
 150586c3af37fbdfa504cf142c447e57  ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
 32ccd838e06ef5613c2610c1c65ed228  eaccelerator-0.9.6.1.tar.bz2
 305bc145200ef5c1f7bba08a12c5f4f2  ImageMagick-6.6.5-10.tar.bz2
 b27947f3045220faf16e4d9158cbfe13  php-5.2.17.tar.bz2
 5f6ac6f6f4f8ec2322f0bb040559663b  xcache-1.3.2-rc1.tar.bz2
 3d0a037e73ffe40ea55b521cbff7ff8d  go-pear.phar
二、安裝前的準備工作
 1、檢查是否已經安裝apache,php和mysql的rpm包
 rpm -qa | egrep 'httpd|mysql|php'
 如果有
 yum remove 對應的軟件
 2、安裝必須的軟件
 yum -y install patch make gcc gcc-c++ gcc-g77 flex bison file
 yum -y install libtool libtool-libs autoconf kernel-devel
 yum -y install libjpeg libjpeg-devel libpng libpng-devel  gd gd-devel
 yum -y install freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel
 yum -y install glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel
 yum -y install ncurses ncurses-devel curl curl-devel e2fsprogs
 yum -y install e2fsprogs-devel krb5 krb5-devel libidn libidn-devel
 yum -y install openssl openssl-devel vim-minimal nano sendmail
 yum -y install fonts-chinese gettext gettext-devel
 yum -y install ncurses-devel
 yum -y install gmp-devel pspell-devel
 yum -y install unzip
三、開始安裝
 1、安裝PHP需要的庫
 libiconv-1.13.tar.gz加強系統對支持字符編碼轉換的功能
 tar -zxvf libiconv-1.13.tar.gz
 cd libiconv-1.13
 ./configure --prefix=/usr/local/
 make && make install
 cd ..
 libmcrypt-2.5.8.tar.gz加密算法庫,php擴展mcrypt功能對此庫有依耐關係,要使用mcrypt必須先安裝此庫
 tar -zxvf libmcrypt-2.5.8.tar.gz
 cd libmcrypt-2.5.8
 ./configure  && make && make install
 ldconfig
 cd libltdl/
 ./configure --enable-ltdl-install
 make && make install
 cd ../..
 mhash-0.9.9.9.tar.gz hash加密算法庫
 tar -zxvf mhash-0.9.9.9.tar.gz
 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 
 
 
 mcrypt-2.6.8.tar.gz簡單的加密程序,php的加密擴展,必須先安裝libmcrypt庫
 tar -zxvf mcrypt-2.6.8.tar.gz
 cd mcrypt-2.6.8
 ldconfig
 ./configure
 make && make install
 cd ..
 
 2、安裝mysql數據庫,略過.
 
 3、安裝PHP(重點)
 tar -jxvf php-5.2.17.tar.bz2
 gzip  -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.2.17 -p1
 cd php-5.2.17
 ./configure --prefix=/usr/local/php \
 --with-config-file-path=/usr/local/php/etc \
 --with-mysql=/usr/local/mysql/ \
 --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir=/usr/local/ \
 --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr/ \
 --enable-xml --disable-rpath --enable-discard-path  --enable-bcmath \
 --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers \
 --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring \
 --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl \
 --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap
 --enable-safe-mode \\此選項可選,如果使用可以增加安全性,但是一些功能會被制約
 
 編譯完成後認真閱讀php的反饋信息,看看是否有debug.log文件,如果有就仔細閱讀,並解決存在的問題。
 確認沒有問題後,繼續:
 
 make ZEND_EXTRA_LIBS='-liconv'
 完成後,如果有時間可以 make test 需要10分鐘左右
 make install
 cp php.ini-dist  /usr/local/php/etc/php.ini
 
 安裝pear支持
 老版本的php和新版本的php不同,記得在5.2.10版本上,是執行go-pear文件,新版本中執行的是phar。
 wget  http://pear.php.net/go-pear.phar
 /usr/local/php/bin/php go-pear.phar
 
 
 4、安裝PHP擴展模塊
 memcache擴展接口,如果想要使用memcache功能,還要單獨安裝memcached軟件。
 memcache簡介:memcache相當一個簡單的內存數據庫
 tar -zxvf memcache-2.2.6.tgz
 cd memcache-2.2.6
 /usr/local/php/bin/phpize
 Configuring for:
 PHP Api Version:         20041225
 Zend Module Api No:      20060613
 Zend Extension Api No:   220060519
 
 ./configure --with-php-config=/usr/local/php/bin/php-config
 make && make install 
 Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
 
 pdo_mysql擴展
 pdo簡介:pdo是PHP連接數據庫的統一接口,連接對應數據庫需要對應的pdo驅動。
 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
 Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
 
 安裝PHP擴展imagick,處理圖像。
 如果PHP版本 >= 5.1.3 依耐的 ImageMagick版本就要大於 >= 6.2.4 。
 tar -jxvf ImageMagick-6.6.5-10.tar.bz2
 ./configure
 make && make install
 
 tar -zxvf imagick-3.0.1.tgz
 cd imagick-3.0.1
 /usr/local/php/bin/phpize
 ./configure --with-php-config=/usr/local/php/bin/php-config
 make && make install
 nstalling shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
 
 
 常用擴展安裝完成,下面我們配置PHP
 5、配置PHP
 編輯/usr/local/php/etc/php.ini文件,找到"extension_dir = "./""此行,使用下面的類容替換此行
 ;extension_dir = "./"
 extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/" #保存擴展庫的位置,下面是擴展庫的名字,在這個目錄中要能找到下面的庫文件
 extension = "memcache.so"
 extension = "pdo_mysql.so"
 extension = "imagick.so"
 
 6、配置PHP加速有多種方法,我們暫時不配置加速[當你的LNMP環境搭建完成以後,再倒回來安裝這部分]
   a、安裝APC加速器
  tar -zxvf APC-3.1.7.tgz
  cd APC-3.1.7
  /usr/local/php/bin/phpize
  ./configure --enable-apc --enable-apc-mmap --with-php-config=/usr/local/php/bin/php-config
  make && make install
  結果:
  Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
  Installing header files:          /usr/local/php/include/php/  
  編輯php.ini,查找extension_dir行,修改此行內容如下(如果按照上面的方法,提前安裝了其他模塊,這行應該是不用修改的),並且添加下面沒有的部分,在最後加入[APC]下面的代碼:
  extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
  [APC]
  extension = apc.so
  apc.enabled = 1
  apc.shm_segments = 1
  apc.shm_size = 64M
  apc.optimization = 1
  apc.num_files_hint = 0
  apc.ttl = 0
  apc.gc_ttl = 3600
  apc.cache_by_default = on
 完成後,重新啓動fastcgi,通過phpinfo函數看到下面信息就算成功了
  apc
  APC Support enabled
  Version  3.1.7 
  APC Debugging  Disabled 
  MMAP Support  Enabled 
  MMAP File Mask  no value 
  Locking type  pthread mutex Locks 
  Serialization Support  php 
  Revision  $Revision: 307215 $ 
  Build Date  Apr 26 2011 23:08:03 
  
   b、安裝eaccelerator加速器
  tar -jxvf eaccelerator-0.9.6.1.tar.bz2
  cd eaccelerator-0.9.6.1
  /usr/local/php/bin/phpize
  ./configure  --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
  make && make install
  Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
  
  修改php.ini,註釋剛纔關於APC的代碼
  extension_dir =  "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
  extension = "memcache.so"
  extension = "pdo_mysql.so"
  ;extension = "apc.so"
  ;[APC]
  ;apc.enabled = 1
  ;apc.shm_segments = 1
  ;apc.shm_size = 64M
  ;apc.optimization = 1
  ;apc.num_files_hint = 0
  ;apc.ttl = 0
  ;apc.gc_ttl = 3600
  ;apc.cache_by_default = on
  ;##############eaccelerator################
  extension = "eaccelerator.so"
  [eAccelerator]
  eaccelerator.shm_size="128"
  eaccelerator.cache_dir="/tmp/accelerator_cache"
  eaccelerator.enable="1"
  eaccelerator.optimizer="1"
  eaccelerator.check_mtime="1"
  eaccelerator.debug="0"
  eaccelerator.filter=""
  eaccelerator.shm_max="0"
  eaccelerator.shm_ttl="300"
  eaccelerator.shm_prune_period="120"
  eaccelerator.shm_only="0"
  eaccelerator.compress="1"
  eaccelerator.compress_level="9"
  
  mkdir -p /tmp/accelerator_cache
  chown -R nobody:nobody /tmp/accelerator_cache
  完成後,重新啓動fastcgi,phpinfo中出現如下信息,即爲成功
  eAccelerator
  eAccelerator support enabled
  Version  0.9.6.1 
  Caching Enabled  true 
  Optimizer Enabled  true 
  Check mtime Enabled  true 
  Memory Size  134,217,688 Bytes 
  Memory Available  134,215,092 Bytes 
  Memory Allocated  2,596 Bytes 
  Cached Scripts  1 
  Removed Scripts  0 
  c、安裝ZendOptimizer加速器
  tar zxvf ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz
  mkdir -p /usr/local/zend/
  cp ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp/ZendOptimizer.so /usr/local/zend/
  然後修改php.ini文件,把剛纔關於eaccelerator相關的代碼註釋掉。在文件結尾,加入如下代碼:
  [Zend Optimizer]
  zend_optimizer.optimization_level=1
  zend_extension="/usr/local/zend/ZendOptimizer.so"
  完成後,從新啓動fastcgi,看到如下信息,即爲成功
  This program makes use of the Zend Scripting Language Engine:
  Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
  with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies
  
 d、安裝xcache加速器(由於我們使用php是5.2裏面最新的版本,所以對應的xcache還是rc版本)
  tar -jxvf xcache-1.3.2-rc1.tar.bz2
  cd xcache-1.3.2-rc1
  /usr/local/php/bin/phpize
  ./configure --enable-xcache --enable-xcache-coverager --with-php-config=/usr/local/php/bin/php-config
  make && make install
  
  Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
  
  修改php.ini,註釋zendoptimizer相關代碼,在extension_dir那句代碼下面加入,如下代碼:
  [xcache]
  extension = xcache.so
  xcache.admin.user = "admin"
  ;xcache.admin.pass = "(執行) echo ’(你的密碼)’|md5sum(得出的密文)"下面的密碼是123456
  xcache.admin.pass = "f447b20a7fcbf53a5d5be013ea0b15af"
  xcache.size = 24M
  xcache.shm_scheme = "mmap"
  xcache.count = 2
  xcache.slots = 8k
  xcache.ttl = 0
  xcache.gc_interval = 0
  xcache.var_size = 8M
  xcache.var_count = 1
  xcache.var_slots = 8k
  xcache.var_ttl = 0
  xcache.var_maxttl = 0
  xcache.var_gc_interval = 300
  xcache.test = Off
  xcache.readonly_protection = On
  xcache.mmap_path = "/tmp/xcache"
  xcache.coredump_directory = ""
  xcache.cacher = On
  xcache.stat = On
  ;xcache.optimizer = Off/On
  xcache.coverager = On
  xcache.coveragedump_directory = ""
  mkdir /tmp/xcache
  chmod 777 /tmp/xcache
  
  完成後,從新啓動fastcgi,看到如下信息,即爲成功
  XCache
  XCache Support enabled
  Version  1.3.2-rc1 
  Modules Built  cacher coverager 
  Readonly Protection  enabled 
  Cache Init Time  2011-04-28 16:57:25 
  Cache Instance Id  20336 
  Opcode Cache  enabled, 25,165,824 bytes, 2 split(s), with 8192 slots each 
  Variable Cache  enabled, 8,388,608 bytes, 1 split(s), with 8192 slots each 
  Shared Memory Schemes  mmap 
  Coverage Auto Dumper  disabled
  到這裏常用的PHP加速器軟件就算安裝完成了,任選其一即可,推薦APC和xcache
 
 7、創建php-fpm配置文件,php-fpm是開源社區爲php開發的一個補丁,可以平滑變更php.ini,而無需重啓php-cgi
  php-fpm.conf文件的詳細解釋http://php-fpm.org/wiki/Configuration_File
  vim /usr/local/php/etc/php-fpm.conf ,使用 :set nu顯示行號。
  需要注意的幾行,給大家說說
 
  (原)41                         <value name="listen_address">127.0.0.1:9000</value>
  (改)41                         <value name="listen_address">/tmp/php-cgi.sock</value> #個人習慣,比較喜歡使用sock。
  (原)63                 <!--    <value name="user">nobody</value>     -->#進程的所有者
  (原)66                 <!--    <value name="group">nobody</value>     -->#進程的所有組,默認都爲nobody
  (改)       <value name="user">nobody</value>
  (改)       <value name="group">nobody</value> 
  59                 <!--    <value name="display_errors">0</value>   --> #是否顯示錯誤,1爲關閉顯示錯誤,0爲打開錯誤顯示,調試期間可以打開
  79                             <value name="max_children">5</value> #爲客戶端服務的最大進程數
  86                             <value name="StartServers">20</value> #啓動時創建的進程數
         <value name="MinSpareServers">5</value> #最小空閒進程數
  94                             <value name="MaxSpareServers">35</value>#最大空閒進程數
 
  (原)107                        <value name="request_slowlog_timeout">0s</value> #默認關閉慢查詢,建議還是打開,對性能分析有好處
  (改)107                        <value name="request_slowlog_timeout">5s</value>
 
  (原)113                        <value name="rlimit_files">1024</value> #設定打開文件的限制
  (改)113                        <value name="rlimit_files">51200</value>
 
  132                         <value name="max_requests">5000</value> #設置大可以接受的請求數
 
  137                        <value name="allowed_clients">127.0.0.1</value> #允許連接的客戶端
  啓動php-cgi
  Usage: /usr/local/php/sbin/php-fpm {start|stop|quit|restart|reload|logrotate}
  /usr/local/php/sbin/php-fpm start
 
 8、安裝nginx-1.0
  安裝pcre-7.9.tar.gz,perl擴展正則表達式的支持,主要用於支持url rewrite
  tar -zxvf pcre-7.9.tar.gz
  cd pcre-7.9
  ./configure
  make && make install
  cd ..
 
  安裝ngnx-1.0
  tar -zxvf nginx-1.0.0.tar.gz
  cd nginx-1.0.0
  ./configure --prefix=/usr/local/nginx --user=nobody --group=nobody --with-http_stub_status_module --with-http_ssl_module
  #config完成後,查看結果,使用了哪些庫,如果有些你希望使用的庫沒有使用,需要安裝或者添加配置參數
   Configuration summary
   + using system PCRE library
   + using system OpenSSL library
   + md5: using OpenSSL library
   + sha1 library is not used
   + using system zlib library
  
  make && make install
 
  修改配置文件
  vim /usr/local/nginx/conf/nginx.conf
  2 user  nobody; #取消註釋
  12 events {
  13     use epoll;
  14     worker_connections  51200;
  15 }
  36     server {
  37         listen       80;
  38         server_name  122.225.32.135;
  66         location ~ \.php$ {
  67
  68                 if ( $fastcgi_script_name ~ \..*\/.*php ) {
  69                         return 403;
  70                 }
  71             root           html;
  72             fastcgi_pass   unix:/tmp/php-cgi.sock;
  73             fastcgi_index  index.php;
  74             fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
  75             include        fastcgi.conf;
  76         }
  /usr/local/nginx/sbin/nginx  -t -c /usr/local/nginx/conf/nginx.conf  #測試配置文件是否正確
  /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 或者/usr/local/nginx/sbin/nginx 
 
四、測試
 cd /usr/local/nginx/html/
 echo "<?phpinfo();?>" >phpinfo.php
 使用瀏覽器訪問 http://122.225.32.135/phpinfo.php
 如果能夠正常顯示PHP的信息,基本就算成功了。
 
五、優化和安全
 1、
     關於fastcgi存在的一個上傳漏洞,
  詳見:
  http://www.80sec.com/nginx-securit.html
 
 2、php禁用函數,注意,是一行
 disable_functions = set_time_limit,system,exec,shell_exec,,passthru,proc_open,proc_close,proc_get_status,checkdnsrr,getmxrr,getservbyname,getservbyport,syslog,popen,show_source,highlight_file,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,dl,socket_listen,socket_create,socket_bind,socket_accept,socket_connect,stream_socket_server,stream_socket_accept,stream_socket_client,ftp_connect,ftp_login,ftp_pasv,ftp_get,zlib.compress,gzopen,gzpassthru,gzcompress,phpinfo
 
本文出自 “fenghao.cn's Soft..” 博客,請務必保留此出處http://linuxguest.blog.51cto.com/195664/578304
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章