一、linux下nginx1.7.8+php5.6.3的環境配置


部分參考:http://www.cnblogs.com/simpman/p/4151662.html

              http://blog.zyan.cc/nginx_php_v6

1、利用linux系統自帶的yum命令安裝、升級所需的程序庫(這一步最好執行一下,反正也沒有什么大礙,執行一邊就行)

    sudo -s
    LANG=C
    yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

2、安裝nginx1.7.8

  1)首先安裝nginx依賴的一下模塊

       gzip模塊需要zlib庫

       rewrite模塊需要pcre庫(必須)

       ssl功能需要openssl庫

       (1)安裝pcre庫

           方法一:

    獲取pcre編譯安裝包,在http://www.pcre.org/上可以獲取相應的版本。然后拷貝到/usr/local/src/目錄下
    cd /usr/local/
    tar -zxvf  pcre2-10.00.tar.gz
    cd pcre2-10.00
    ./configure
    make
    make install

            方法二:

    cd /usr/local/
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre2-10.20.tar.gz
    tar -zxvf  pcre2-10.00.tar.gz
    cd pcre2-10.00
    ./configure
    make
    make install

        (2)安裝openssl庫

             下載地址http://www.openssl.org/source/,方法和上面一樣。

        (3)安裝zlib庫

              下載地址http://www.zlib.net/,方法和上面一樣。

   2)安裝nginx

       Nginx一般有兩個版本,分別為穩定版和開發版,根據需求選擇。

       我們可以給Nginx指定用戶組和用戶,創建用戶和組:

 /usr/sbin/groupadd www ##用戶 /usr/sbin/useradd -g www www           ##組

       Nginx的安裝非常簡單。在默認情況下,經過編譯安裝的Nginx包含了大部分可用模塊。可以通過“./configure  --help”選項設置各個模塊的使用情況,例如對不需要的http_ssi模塊,可通過“--without-http_ssi_module”方式關 閉此模塊;同理,如果需要“http_perl”模塊,那么可以通過“--with-http_perl_module”方式安裝此模塊。 “http_perl”模塊可以用來啟用 Nginx 的 NginxStatus 功能,以監控 Nginx 的當前狀態。一下是安裝過程:

    wget http://nginx.org/download/nginx-1.7.8.tar.gz
    tar zxvf nginx-1.7.8.tar.gz 
    cd nginx-1.7.8
    ./configure --user=www --group=www --with-http_stub_status_module --prefix=/usr/local/nginx
    make
    make install

      注意:如果安裝時找不到上述依賴模塊,使用--with-openssl=<openssl_dir>、--with-pcre=<pcre_dir>、--with-zlib=<zlib_dir>指定依賴的模塊目錄。

      打開/usr/local/nginx/conf/nginx.conf文件,並在最上面加上一句:user www www

      》》》》》》》》》到此,Nginx完成安裝。

      查看管理Nginx的幫助。

    /usr/local/nginx/sbin/nginx -h

      我們可以在瀏覽器中輸入http://192.168.1.204:80查看nginx是否正常運行,默認為80端口

      或

      執行命令:$ ps -A|grep nginx     #如果有返回結果,說明nginx在運行,服務已經啟動

           $ /usr/local/nginx/sbin/nginx  #啟動nginx(方法一)

      或

      執行命令$ netstat -ano|grep 80   #查看80端口占用狀態判斷nginx是否啟動,前提是

           80端口只被nginx使用

  3)配置文件

     (1)nginx.conf文件(主配置文件)

         配置文件在/nginx/conf/目錄下面,其中nginx.conf為主配置文件。

         vi nginx.conf 

         nginx.conf中,

         最上面,user www www   #設置nginx運行的用戶和組

         #全局錯誤日志及PID文件###

         pid logs/nginx.pid

         error_log logs/error.log

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

         worker_process表示工作進程的數量,一般設置為cpu的核數

         worker_connections表示每個工作進程的最大連接數

         server{}塊定義了虛擬主機

              listener 監聽端口

              server_name 監聽域名

              location{}是用來為匹配的URI進行配置,location / {}匹配任何查詢,所以請求都以/開頭

                     root指定對應uri的資源查找路徑,這里html為相對路徑,完整的為/usr/local/nginx/html/

                     Index指定首頁index文件的名稱,可以配置多個,以空格分開。按順序查

              **根路徑為/nginx/html/,該目錄下:

              50x.html為服務器錯誤重定向

     (2)mime.types文件

         文件擴展名與文件類型映射表,nginx根據映射關系,設置http請求響應頭的

         Content-Type值。當在映射表中找不到時,使用nginx.conf文件中default-type指定的默認值。

         eg,在nginx.conf文件中,

               include mime.types;

               default_type application/octet-stream

     (3)fastcgi_params文件

         Nginx配置Fastcgi解析時會調用fastcgi_params配置文件來傳遞服務器變量,這樣

         CGI中可以獲取到這些變量的值

     (4)fastcgi.conf文件

         相對fastcgi_param文件,只多出了一行:

         fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

         這樣做是為了避免許多人在定義SCRIPT_FILENAME時使用硬編碼的方式

     (5)uwsgi_params文件

         與fastcgi_params一樣,只不過前綴使用uwsgi_param

     (6)scgi_params文件

         與fastcgi_params一樣,只不過前綴使用scgi_param

     (7)koi-utf文件、koi-win文件、win-utf文件

         這三個文件都是與編碼轉換映射文件,用於在輸出內容到客戶端時,將一種編碼轉

         換到另一種編碼

         Koi-win: charset_map koi8-r <-->windows-1251

         Koi-utf : charset_map koi8-r <-->utf-8

         Win-utf: charset_map windows-1251 <-->utf-8

3、安裝MySQL-5.5.3-m3

     下載

     安裝

 #增加mysql的使用者
/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 cd ../

      PS:正常情況下我們還需要其他的一些配置操作,但是如果你只是希望讓PHP支持MySQL擴展庫,能夠連接其他服務器上的MySQL數據庫,那么,到此MySQL就算安裝完成了。(我只是需要PHP支持MySQL擴展庫)

      完整安裝:http://www.cnblogs.com/yxpblog/p/4653732.html

4、安裝PHP

    1)編譯安裝PHP所需的支持庫

         下載:

        編譯安裝:

   tar zxvf libiconv-1.13.1.tar.gz
   cd libiconv-1.13.1/
   ./configure
   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 ../../

   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
   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
   ./configure
   make
   make install
   cd ../

 

    2)安裝php

      因為在php5.3.3以后php-fpm已經加入到php內核中。老版本中php-fpm是以patch的方式安裝。我們安裝php-5.6.3版本。

    wget http://cn2.php.net/get/php-5.6.3.tar.gz/from/this/mirror
    tar zxvf php-5.6.3.tar.gz 
    cd php-5.6.3
    ./configure --enable-fpm  --with-mysql=/usr/local/mysql --prefix=/usr/local/php-5.6.3 --without-pear

      這里最好加上 --without-pear  ,防止下面操作報錯。

    make

      如果執行 make 操作時最后報 make: ***[sapi|cli|php] Error 1  的錯誤,那就執行 make ZEND_EXTRA_LIBS='-liconv'命令。

    make install

      執行上面命令如果報 make: ***[ext|phar|phar.php] Error 127 的錯誤,那就執行一下操作:

    vi /etc/ld.so.conf    ##在該文件中加入一行:/usr/local/lib
    然后運行:
    /sbin/ldconfig

      最后,

    cp php.ini-development  /usr/local/php-5.6.3/etc/php.ini
    cp /usr/local/php-5.6.3/etc/php-fpm.conf.default  /usr/local/php-5.6.3/etc/php-fpm.conf

     》》》》》》至此,PHP5.6.3安裝完成!

    3)配置    

    如果文件不存在,則阻止 Nginx 將請求發送到后端的 PHP-FPM 模塊, 以避免遭受惡意腳本注入的攻擊。
    將 php.ini 文件中的配置項 cgi.fix_pathinfo 設置為 0
    vim /usr/local/php-5.6.3/etc/php.ini
    cgi.fix_pathinfo=0

        啟動php-fpm:

    /usr/local/bin/php-fpm
    查看php-fpm支持的啟動選項
    /usr/local/bin/php-fpm -h

        讓Nginx支持php:

        修改nginx.conf, vim /usr/local/nginx/conf/nginx.conf

location / {
    root   html;
    index  index.php index.html index.htm;
}

location ~* \.php$ {
    fastcgi_index   index.php;
    fastcgi_pass    127.0.0.1:9000;
    include         fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}

          其中紅色為修改部分。

          如果修改的不對,會報404錯誤。

    4)編譯安裝php的擴展模塊

        以下為擴展模塊的下載地址:

        安裝:

tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5/
/usr/local/php-5.6.3/bin/phpize
./configure --with-php-config=/usr/local/php5.6.3/bin/php-config
make
make install
cd ../

tar jxvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1/
/usr/local/php-5.6.3/bin/phpize
./configure --enable-eaccelerator=shared --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-5.6.3/bin/phpize
./configure --with-php-config=/usr/local/php-5.6.3/bin/php-config --with-pdo-mysql=/usr/local/mysql
make
make install
cd ../

tar zxvf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2/
./configure
make
make install
cd ../

tar zxvf imagick-2.3.0.tgz
cd imagick-2.3.0/
/usr/local/php-5.6.3/bin/phpize
./configure --with-php-config=/usr/local/php-5.6.3/bin/php-config
make
make install
cd ../

        安裝完成后還需有修改php.ini配置文件中的一些參數:

        手工修改:查找/usr/local/webserver/php/etc/php.ini中的extension_dir = "./"
    修改為extension_dir = "/usr/local/php-5.6.3/lib/php/extensions/no-debug-non-zts-20131226"
    並在此行后增加以下幾行,然后保存:
    extension = "memcache.so"
    extension = "pdo_mysql.so"
    extension = "imagick.so"

   再查找output_buffering = Off
   修改為output_buffering = On

   再查找; cgi.fix_pathinfo=0
   修改為cgi.fix_pathinfo=0,防止Nginx文件類型錯誤解析漏洞。

       自動安裝:若嫌手工修改麻煩,可執行以下shell命令,自動完成對php.ini文件的修改:

   sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/php-5.6.3/lib/php/extensions/no-debug-non-zts-20060613/"\nextension = "memcache.so"\nextension = "pdo_mysql.so"\nextension = "imagick.so"\n#' /usr/local/php-5.6.3/etc/php.ini
   sed -i 's#output_buffering = Off#output_buffering = On#' /usr/local/php-5.6.3/etc/php.ini
   sed -i "s#; always_populate_raw_post_data = On#always_populate_raw_post_data = On#g" /usr/local/php-5.6.3/etc/php.ini
   sed -i "s#; cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g" /usr/local/php-5.6.3/etc/php.ini

     5)配置eAccelerator加速PHP

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

         按shift+g鍵跳到配置文件的最末尾,加上以下配置信息:

  [eaccelerator]
  zend_extension="/usr/local/php-5.6.3/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
  eaccelerator.shm_size="64"
  eaccelerator.cache_dir="/usr/local/eaccelerator_cache"
  eaccelerator.enable="1"
  eaccelerator.optimizer="1"
  eaccelerator.check_mtime="1"
  eaccelerator.debug="0"
  eaccelerator.filter=""
  eaccelerator.shm_max="0"
  eaccelerator.shm_ttl="3600"
  eaccelerator.shm_prune_period="3600"
  eaccelerator.shm_only="0"
  eaccelerator.compress="1"
  eaccelerator.compress_level="9"

重新啟動Nginx,就可以使用了。

 

5、配置虛擬主機

     經過以上四步的操作,我們已經完成了Nginx環境的搭建,只不過我們的工程目錄都是默認的(“/usr/local/nginx/html”)

     如果我們想要分配多個目錄以及多個端口去監聽的話,就需要去配置虛擬主機了。如下為我的操作,非常簡單:

#打開配置文件
vi /usr/local/nginx/conf/nginx.conf

     我們可以看到有一個默認的server,並且其監聽的是80端口。

     繼續往下看,就會看到這樣一句“#another virtual host using mix of IP-, name-, and port-based configuration”,且下面有一個被注釋掉的server,這就是我們需要配置的server,我們不用將注釋去掉,只需將下面代碼拷貝到其下面即可:

server {
    listen       8000;                       #我們監聽的端口
    listen       192.168.1.204:8000;      
    server_name  somename  alias  another.alias;

    location / {
        root   html;
        index  index index.php index.html index.htm;
    }

    #支持php
    location ~* \.php$ {
        root   /home/yangxueping/www.test.com;  #監聽的站點位置
        fastcgi_pass   127.0.0.1:9000;         #注意,這句去掉的話有問題
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
     }
}

      OK,虛擬主機的配置完成,如果你需要多個的話,將創建多個server去監聽不同的端口。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM