• 一、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/"
    extension = "memcache.so"
    extension = "pdo_mysql.so"
    extension = "imagick.so"
    #' /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去监听不同的端口。

  • 相关阅读:
    Java实现 洛谷 P1170 兔八哥与猎人
    Java实现 洛谷 P1601 A+B Problem(高精)
    断言(Assert)与异常(Exception)
    spring源码之—Assert.notNull
    spring的断言工具类Assert的基本使用
    js中 给json对象添加属性和json数组添加元素
    java中抽象类和空的方法体有什么区别?
    抽象类实现接口
    springmvc中controller内方法跳转forward?redirect?
    java获取访问路径、域名、项目名、请求入参
  • 原文地址:https://www.cnblogs.com/yxpblog/p/4627509.html
Copyright © 2020-2023  润新知