• s28 LNMP架构服务搭建


    nginx-location使用

    location语法



    location使用的语法例子为:
    location [=|~|~*|^~] uri{

    对location语法列表说明。
    |1ocation | [=|~|~*|^~] |uri |{..}.
    |指令 |匹配标识。 |匹配的网站网址。|匹配URI后要执行的配置段。


    上述语法中的URI部分是关键,这个URI可以是普通的字符串地址路径或者是正则表达式,当匹配成功则执行后面大括号里面的相关指令。正则表达式的前面还可以有~或~*等特殊的字符。

    这两种特殊字符~或~*匹配的区别为:
    “ ~ ” 用于区分天小写(大小写敏感)的匹配;~/images{}
    “ ~* ” 用于不区分大小写的匹配。还可以用逻辑操作符!对上面的匹配取反,即 !~ 和!~* 。
    “ ^~ ” 作用是在常规的字符串匹配检查之后,不做正则表达式的检查,即如果最明确的那个字符



    实现配置

    x
     
    1
    [root@www extra]# cat www.conf
    2
        server {
    3
            listen       80;
    4
            server_name  www.etiantian.org etiantian.org;
    5
            root   html/www;
    6
           
    7
            location / {
    8
               return 401;
    9
            }
    10
            location = / {
    11
                return 402;
    12
            }
    13
    14
            location /documents/ {
    15
                return 403;
    16
            }
    17
            location ^~ /images/ {
    18
                return 404;
    19
     
    20
            }
    21
     
    22
            location ~* .(gif|jpg|jpeg)$ {
    23
                return 500;
    24
            }
    25
            access_log logs/access_www.log main ;
    26
        }

    测试

    1
    1
     
    1



    小结


    不用URI及特殊字符组合匹配顺序    匹配说明
    第一名:“location  = / {”    精确匹配/
    第二名:“location  ^~ /images/ {”     匹配常规字符串,不做正则匹配检查, 优先匹配路径
    第三名:“location  ~* .(gif|jpg|jpeg)$ {”     正则匹配
    第四名:“location  /documents/ {”     匹配常规字符串,如果有正则则优先匹配正则。
    第五名:“location  / {”     所有location都不能匹配后的默认匹配。







    nginx-rewrite短域名跳转


    lewen.com ====>www.lewen.com
    lewen.com 变换为 www.lewen.com


        server {
            listen       80;
            server_name  lewen.com;
            rewrite ^/(.*) http://www.lewen.com/$1 permanent;
        }

    lewen.com/index.html    ====   www.lewen.com/index.html

    rewrite配置

    15
    15
     
    1
    [root@web01 extra]# cat www.conf
    2
        server {
    3
            listen 80;
    4
            server_name etiantian.org;
    5
            rewrite (^.*)   http://www.etiantian.org/$1 permanent;
    6
        }
    7
        server {
    8
            listen       80;
    9
            server_name  www.etiantian.org ;
    10
            access_log  logs/access_www.log  main;
    11
            location / {
    12
                root   html/www;
    13
                index  index.html index.htm;
    14
            }
    15
        }
       

    测试

    44
    44
     
    1
    [root@web01 extra]# curl -L etiantian.org/index.html
    2
    web01 www.etiantian.org
    3
    [root@web01 extra]# curl -Lv 、
    4
    * About to connect() to etiantian.org port 80 (#0)
    5
    *   Trying 10.0.0.8... connected
    6
    * Connected to etiantian.org (10.0.0.8) port 80 (#0)
    7
    > GET /index.html HTTP/1.1
    8
    > User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
    9
    > Host: etiantian.org
    10
    > Accept: */*
    11
    >
    12
    < HTTP/1.1 301 Moved Permanently
    13
    < Server: nginx/1.12.2
    14
    < Date: Tue, 27 Feb 2018 12:31:27 GMT
    15
    < Content-Type: text/html
    16
    < Content-Length: 185
    17
    < Connection: keep-alive
    18
    < Location: http://www.etiantian.org//index.html
    19
    <
    20
    * Ignoring the response-body
    21
    * Connection #0 to host etiantian.org left intact
    22
    * Issue another request to this URL: 'http://www.etiantian.org//index.html'
    23
    * About to connect() to www.etiantian.org port 80 (#1)
    24
    *   Trying 10.0.0.8... connected
    25
    * Connected to www.etiantian.org (10.0.0.8) port 80 (#1)
    26
    > GET //index.html HTTP/1.1
    27
    > User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
    28
    > Host: www.etiantian.org
    29
    > Accept: */*
    30
    >
    31
    < HTTP/1.1 200 OK
    32
    < Server: nginx/1.12.2
    33
    < Date: Tue, 27 Feb 2018 12:31:27 GMT
    34
    < Content-Type: text/html
    35
    < Content-Length: 24
    36
    < Last-Modified: Mon, 12 Feb 2018 18:11:30 GMT
    37
    < Connection: keep-alive
    38
    < ETag: "5a81d8d2-18"
    39
    < Accept-Ranges: bytes
    40
    <
    41
    web01 www.etiantian.org
    42
    * Connection #1 to host www.etiantian.org left intact
    43
    * Closing connection #0
    44
    * Closing connection #


    Http状态码301和302概念简单区别及企业应用案例


    测试其他网站
    34
    34
     
    1
    [root@web01 extra]# curl -I jd.com  baidu.com taobao.com
    2
    HTTP/1.1 302 Moved Temporarily
    3
    Server: JengineD/1.7.2.1
    4
    Date: Tue, 27 Feb 2018 12:37:26 GMT
    5
    Content-Type: text/html
    6
    Content-Length: 165
    7
    Location: http://www.jd.com
    8
    Connection: keep-alive
    9
    10
    HTTP/1.1 200 OK
    11
    Date: Tue, 27 Feb 2018 12:37:27 GMT
    12
    Server: Apache
    13
    Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
    14
    ETag: "51-47cf7e6ee8400"
    15
    Accept-Ranges: bytes
    16
    Content-Length: 81
    17
    Cache-Control: max-age=86400
    18
    Expires: Wed, 28 Feb 2018 12:37:27 GMT
    19
    Connection: Keep-Alive
    20
    Content-Type: text/html
    21
    22
    HTTP/1.1 302 Found
    23
    Server: Tengine
    24
    Date: Tue, 27 Feb 2018 12:37:27 GMT
    25
    Content-Type: text/html
    26
    Content-Length: 258
    27
    Connection: keep-alive
    28
    Location: http://www.taobao.com/
    29
    30
    [root@web01 extra]# curl status.lewen.com
    31
    Active connections: 1
    32
    server accepts handled requests
    33
     84 84 135
    34
    Reading: 0 Writing: 1 Waiting: 0





    Nginx status

    11
    11
     
    1
    ##status.conf
    2
    server {
    3
        listen  80;
    4
        server_name  status.etiantian.org;
    5
        location / {
    6
          stub_status on;
    7
          access_log   off;
    8
          auth_basic           "closed site";
    9
          auth_basic_user_file /application/nginx/conf/htpasswd;
    10
        }
    11
      }

    登录验证

    1
    1
     
    1


    10
    10
     
    1
    [root@web01 extra]# curl -u oldboy status.lewen.com
    2
    Enter host password for user 'oldboy':
    3
    <html>
    4
    <head><title>403 Forbidden</title></head>
    5
    <body bgcolor="white">
    6
    <center><h1>403 Forbidden</h1></center>
    7
    <hr><center>nginx/1.14.0</center>
    8
    </body>
    9
    </html>
    10


     
    一直报错

    错误日志

    2
    2
     
    1
    2018/09/02 19:31:29 [error] 2577#0: *44 open() "/application/nginx-1.14.0//conf/conf/htpasswd" failed (2: No such file or directory), client: 10.0.0.1, server: status.lewen.com, request: "GET / HTTP/1.1", host: "status.lewen.com"
    2
    纠正修改配置文件
    密码文件的路径或者直接用绝地路径


    6
    6
     
    1
    [root@web01 extra]# curl -u oldboy:123456 status.lewen.com
    2
    Active connections: 1 
    3
    server accepts handled requests
    4
     46 46 80 
    5
    Reading: 0 Writing: 1 Waiting: 0 
    6

    本章回顾


        Apache select和Nginx epoll模型区别形象比喻(面试常考);
        虚拟主机概念及类型分类详解;
        Nginx错误及访问日志及访问日志切割;
        Nginx location介绍及配置实践;
        Nginx Rewrite介绍及配置实践;
        Nginx Web访问认证介绍及配置实践。




    mysql二进制部署


    #二进制安装MySQL-5.6.39
    https://downloads.mysql.com/archives/community/
    1
    1
     
    1


    安装报错
    1
    5
    5
     
    1
    Installing MySQL system tables.../application/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
    2
    3
    4
    原因:缺少libaio库文件 
    5
    解决方法:yum install libaio* numactl -y 
    2
    4
    4
     
    1
    Installing MySQL system tables.../application/mysql/bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
    2
    3
    4
    如果安装mysql出现了以上的报错信息.这是却少numactl这个时候如果是Centos就yum -y install numactl就可以解决这个问题了. 



    10
    10
     
    1
    #####To start mysqld at boot time you have to copy
    2
    #####support-files/mysql.server to the right place for your system
    3
    #####mysql启动脚本 默认放在support-files/mysql.server 
    4
    #####
    5
    #####记得给MySQL设置个密码
    6
    #####PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
    7
    #####To do so, start the server, then issue the following commands:
    8
    #####
    9
    #####  /application/mysql/bin/mysqladmin -u root          password 'new-password'
    10
    #####  /application/mysql/bin/mysqladmin -u root -h web01 password 'new-password'
    初始化的帮助信息
    1
    1
     
    1

    19
    19
     
    1
    ####7.复制启动脚本 授权
    2
    cp /application/mysql/support-files/mysql.server  /etc/init.d/mysqld
    3
    chmod +x /etc/init.d/mysqld
    4
    5
    ####8.修改启动脚本 和 mysql命令 中的路径
    6
    sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld
    7
    8
    ####9.复制 默认的配置文件   
    9
    cp /application/mysql/support-files/my-default.cnf /etc/my.cnf
    10
    /etc/init.d/mysqld start
    11
    12
    [root@web01 ~]# /etc/init.d/mysqld start
    13
    Starting MySQL.Logging to '/application/mysql/data/web01.err'.
    14
    . SUCCESS! 
    15
    16
    ####查看
    17
    18
    [root@web01 ~]# ss -lntup |grep 3306
    19
    tcp    LISTEN     0      80                    :::3306                 :::*      users:(("mysqld",1898,10))

    24
    24
     
    1
    ####10.PATH路径        添加到系统路径
    2
    echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
    3
    source /etc/profile
    4
    which mysql
    5
    6
    7
    [root@web01 ~]# which mysql
    8
    /application/mysql/bin/mysql
    9
    10
    11
    12
    ####11.加入开机自启动
    13
    chkconfig --add mysqld
    14
    chkconfig mysqld on
    15
    16
    ####12.给MySQL root用户设置密码
    17
    /application/mysql/bin/mysqladmin -u root password 'oldboy123'
    18
    19
    ####13.重新登录MySQL数据库
    20
    mysql -uroot -poldboy123
    21
    22
    ####14.数据库基础框架
    23
    #1.数据库  test mysql
    24
    #2.表格



    注意
    20
    20
     
    1
    ###故障
    2
    ##1./tmp权限
    3
    ##2.主机名解析 hosts解析 #ping 主机名
    4
    ##3.一步一步执行
    5
    6
    ##
    7
    ##/application/mysql/bin/mysql
    8
    ##Welcome to the MySQL monitor.  Commands end with ; or g.
    9
    ##Your MySQL connection id is 1
    10
    ##Server version: 5.5.49 MySQL Community Server (GPL)
    11
    ##
    12
    ##Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
    13
    ##
    14
    ##Oracle is a registered trademark of Oracle Corporation and/or its
    15
    ##affiliates. Other names may be trademarks of their respective
    16
    ##owners.
    17
    ##
    18
    ##Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    19
    ##
    20
    ##mysql>


    mysql SQL语句

    #查看系统中所有数据库
    #show databases;
    #查看系统中所有的用户
    #使用某一个数据库

    11
    11
     
    1
    mysql> #查看当前都有啥
    2
    mysql> show databases;        ********
    3
    +--------------------+
    4
    | Database           |
    5
    +--------------------+
    6
    | information_schema |
    7
    | mysql              |
    8
    | performance_schema |
    9
    | test               |
    10
    +--------------------+
    11
    4 rows in set (0.07 sec)


    39
    39
     
    1
    ####初级 查看系列-开始
    2
    ##使用某一个数据库
    3
    ###相当于进入 mysql 数据库中  cd mysql ;  cd test
    4
    #use mysql
    5
    6
    ##我想查看当前在哪? pwd    当前正在使用哪个数据库
    7
    select database();
    8
    +------------+
    9
    | database() |
    10
    +------------+
    11
    | mysql      |
    12
    +------------+
    13
    1 row in set (0.00 sec)
    14
    15
    ##我是谁?           查看当前用户
    16
    select user();
    17
    +----------------+
    18
    | user()         |
    19
    +----------------+
    20
    | root@localhost |
    21
    +----------------+
    22
    1 row in set (0.00 sec)
    23
    24
    ###当前系统都有什么用户? 他们可以在哪里登录?  *****
    25
    select user,host from mysql.user;
    26
    +------+-----------+
    27
    | user | host      |
    28
    +------+-----------+
    29
    | root | 127.0.0.1 |
    30
    | root | ::1       |
    31
    |      | localhost |
    32
    | root | localhost |
    33
    |      | web01     |
    34
    | root | web01     |
    35
    +------+-----------+
    36
    6 rows in set (0.02 sec)
    37
    ####初级 查看系列-结束
    38
    ###show databases;
    39
    ###select user,host from mysql.user;


    25
    25
     
    1
    ####初级 添加删除系列
    2
    #创建数据库
    3
    create database wordpress;
    4
    #删除数据库
    5
    drop database wordpress;
    6
    7
    8
    #添加用户
    9
    grant all on wordpress.* to 'wordpress'@'172.16.1.0/255.255.255.0' identified by '123456';
    10
    11
    grant all on wordpress.*                  to 'wordpress'@'172.16.1.0/255.255.255.0' identified by '123456';
    12
    授权所有的权限, wordpress数据库所有的权限 给 wordpress用户 可以在172.16.1.0/255.255.255.0  网段登录数据库  这个用户的密码123456;
    13
    14
    #更新系统的权限表
    15
    flush privileges; 
    16
    17
    18
    19
    ###进行测试
    20
    mysql -uwordpress -p123456
    21
    22
    mysql -uwordpress -p -h 172.16.1.8
    23
    24
    #删除用户
    25
    drop user wordpress@'172.16.1.8';




    16
    16
     
    1
    [root@web01 ~]# mysql -uwordpress -p
    2
    Enter password: 
    3
    4
    ####前面创建用户时限制了访问ip 要想本地访问就得再创建一个
    5
    ERROR 1045 (28000): Access denied for user 'wordpress'@'localhost' (using password: YES)
    6
    7
    8
    ####制定ip 登录
    9
    [root@web01 ~]# mysql -uwordpress -h 172.16.1.8 -p
    10
    Enter password: 
    11
    Welcome to the MySQL monitor. Commands end with ; or g.
    12
    Your MySQL connection id is 24
    13
    Server version: 5.6.41 MySQL Community Server (GPL)
    14
    15
    Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
    16



    20
    20
     
    1
    ###1.查看都有什么数据库
    2
    ###2.查看都有什么用户
    3
    ###3.添加用户
    4
    5
    6
    #help sql语句。
    7
    8
    #跳过授权表(不用密码登录)
    9
    #/etc/init.d/mysqld restart --skip-grant-table
    10
    11
    #mysql 命令行
    12
    #-u 指定用户
    13
    #-p 指定密码(不要有空格)
    14
    #-h 连接到某一台服务器
    15
    16
    17
    #更改密码 mysqladmin -uroot -poldboy123 password '新的密码'
    18
    19
    20
    db01上部署一个mysql5.6.39
    3
    3
     
    1
      yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel curl-devel -y
    2
        yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y
    3
        rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel curl-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel    


    部署php

    #解压PHP软件,进行编译安装,将程序安装到/application目录中,并且创建软链接
    #安装其它相关程序---libmcrypt   
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
        yum -y install libmcrypt-devel mhash mcrypt
        rpm -qa libmcrypt-devel mhash mcrypt
       
     http://php.net/releases/
     
     
     

    安装PHP过程  

    40
    40
     
    1
    ####编译配置
    2
    3
    4
    tar xf php-5.5.32.tar.gz
    5
    cd php-5.5.32           #----正式编译前也可以把这个软件安装上(libxslt*)
    6
    7
    ./configure --prefix=/application/php-5.5.32 
    8
    --with-mysql=mysqlnd 
    9
    --with-pdo-mysql=mysqlnd 
    10
    --with-freetype-dir 
    11
    --with-jpeg-dir 
    12
    --with-png-dir 
    13
    --with-zlib 
    14
    --with-libxml-dir=/usr 
    15
    --enable-xml 
    16
    --disable-rpath 
    17
    --enable-bcmath 
    18
    --enable-shmop 
    19
    --enable-sysvsem 
    20
    --enable-inline-optimization 
    21
    --with-curl 
    22
    --enable-mbregex 
    23
    --enable-fpm 
    24
    --enable-mbstring 
    25
    --with-mcrypt 
    26
    --with-gd 
    27
    --enable-gd-native-ttf 
    28
    --with-openssl 
    29
    --with-mhash 
    30
    --enable-pcntl 
    31
    --enable-sockets 
    32
    --with-xmlrpc 
    33
    --enable-soap 
    34
    --enable-short-tags 
    35
    --enable-static 
    36
    --with-xsl 
    37
    --with-fpm-user=www 
    38
    --with-fpm-group=www 
    39
    --enable-ftp 
    40
    --enable-opcache=no


    35
    35
     
    1
    编译过程
    2
    3
    ##提示 如下内容 即成功
    4
    Generating files
    5
    configure: creating ./config.status
    6
    creating main/internal_functions.c
    7
    creating main/internal_functions_cli.c
    8
    +--------------------------------------------------------------------+
    9
    | License:                                                           |
    10
    | This software is subject to the PHP License, available in this     |
    11
    | distribution in the file LICENSE.  By continuing this installation |
    12
    | process, you are bound by the terms of this license agreement.     |
    13
    | If you do not agree with the terms of this license, you must abort |
    14
    | the installation process at this point.                            |
    15
    +--------------------------------------------------------------------+
    16
    17
    Thank you for using PHP.
    18
    19
    config.status: creating php5.spec
    20
    config.status: creating main/build-defs.h
    21
    config.status: creating scripts/phpize
    22
    config.status: creating scripts/man1/phpize.1
    23
    config.status: creating scripts/php-config
    24
    config.status: creating scripts/man1/php-config.1
    25
    config.status: creating sapi/cli/php.1
    26
    config.status: creating sapi/fpm/php-fpm.conf
    27
    config.status: creating sapi/fpm/init.d.php-fpm
    28
    config.status: creating sapi/fpm/php-fpm.service
    29
    config.status: creating sapi/fpm/php-fpm.8
    30
    config.status: creating sapi/fpm/status.html
    31
    config.status: creating sapi/cgi/php-cgi.1
    32
    config.status: creating ext/phar/phar.1
    33
    config.status: creating ext/phar/phar.phar.1
    34
    config.status: creating main/php_config.h
    35
    config.status: executing default commands

        ln -s /application/mysql/lib/libmysqlclient.so.18  /usr/lib64/  #可以不创建
        touch ext/phar/phar.phar
        make && make install
        ln -s /application/php-5.5.32/ /application/php

    44
    44
     
    1
    安装过程
    2
    3
    Generating phar.php
    4
    Generating phar.phar
    5
    PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
    6
    clicommand.inc
    7
    pharcommand.inc
    8
    invertedregexiterator.inc
    9
    directorygraphiterator.inc
    10
    directorytreeiterator.inc
    11
    phar.inc
    12
    13
    Build complete.
    14
    15
    [root@web01 php-5.5.32]# make install
    16
    Installing PHP CLI binary:        /application/php-5.5.32/bin/
    17
    Installing PHP CLI man page:      /application/php-5.5.32/php/man/man1/
    18
    Installing PHP FPM binary:        /application/php-5.5.32/sbin/
    19
    Installing PHP FPM config:        /application/php-5.5.32/etc/
    20
    Installing PHP FPM man page:      /application/php-5.5.32/php/man/man8/
    21
    Installing PHP FPM status page:      /application/php-5.5.32/php/php/fpm/
    22
    Installing PHP CGI binary:        /application/php-5.5.32/bin/
    23
    Installing PHP CGI man page:      /application/php-5.5.32/php/man/man1/
    24
    Installing build environment:     /application/php-5.5.32/lib/php/build/
    25
    Installing header files:          /application/php-5.5.32/include/php/
    26
    Installing helper programs:       /application/php-5.5.32/bin/
    27
      program: phpize
    28
      program: php-config
    29
    Installing man pages:             /application/php-5.5.32/php/man/man1/
    30
      page: phpize.1
    31
      page: php-config.1
    32
    Installing PEAR environment:      /application/php-5.5.32/lib/php/
    33
    [PEAR] Archive_Tar    - installed: 1.4.0
    34
    [PEAR] Console_Getopt - installed: 1.4.1
    35
    [PEAR] Structures_Graph- installed: 1.1.1
    36
    [PEAR] XML_Util       - installed: 1.3.0
    37
    [PEAR] PEAR           - installed: 1.10.1
    38
    Wrote PEAR system config file at: /application/php-5.5.32/etc/pear.conf
    39
    You may want to add: /application/php-5.5.32/lib/php to your php.ini include_path
    40
    /home/oldboy/tools/php-5.5.32/build/shtool install -c ext/phar/phar.phar /application/php-5.5.32/bin
    41
    ln -s -f phar.phar /application/php-5.5.32/bin/phar
    42
    Installing PDO headers:          /application/php-5.5.32/include/php/ext/pdo/
    43
    [root@web01 php-5.5.32]# echo $?
    44
    0

    17
    17
     
    1
    ####安装完
    2
    3
    #复制php.ini配置文件
    4
    5
    [root@web01 php-5.5.32]# cp /home/oldboy/tools/php-5.5.32/php.ini-production  /application/php-5.5.32/lib/php.ini
    6
    7
    8
    #复制php-fpm配置文件
    9
    [root@web01 php-5.5.32]# cd /application/php-5.5.32/etc/
    10
    [root@web01 etc]# ls
    11
    pear.conf  php-fpm.conf.default
    12
    [root@web01 etc]# cp php-fpm.conf.default php-fpm.conf
    13
    [root@web01 etc]# ll
    14
    total 52
    15
    -rw-r--r-- 1 root root  1332 Feb 27 22:53 pear.conf
    16
    -rw-r--r-- 1 root root 22609 Feb 27 22:56 php-fpm.conf
    17
    -rw-r--r-- 1 root root 22609 Feb 27 22:53 php-fpm.conf.default


    15
    15
     
    1
    #### 启动
    2
    3
    [root@web01 etc]# /application/php-5.5.32/sbin/php-fpm -t
    4
    [27-Feb-2018 22:56:53] NOTICE: configuration file /application/php-5.5.32/etc/php-fpm.conf test is successful
    5
    6
    [root@web01 etc]# /application/php-5.5.32/sbin/php-fpm
    7
    [root@web01 etc]# ss -lntup |grep 9000
    8
    tcp    LISTEN     0      16384          127.0.0.1:9000                  *:*      users:(("php-fpm",129733,7),("php-fpm",129734,0),("php-fpm",129735,0))
    9
    10
    11
    12
    13
    ####添加到系统命令
    14
    15
    [root@web01 etc]# ln -s  /application/php-5.5.32/sbin/php-fpm /usr/bin/







    LNMP搭建网站前测试。

    测试nginx与php配合是否成功
    php与MySQL配合是否成功
    部署网站


    测试nginx与php

    15
    15
     
    1
    server {
    2
            listen       80;
    3
            server_name  blog.etiantian.org;
    4
                root   html/blog;
    5
                index  index.php index.html index.htm;
    6
                location ~ .*.(php|php5)?$ {
    7
                fastcgi_pass   127.0.0.1:9000;
    8
                fastcgi_index  index.php;
    9
                include       fastcgi.conf;
    10
            }
    11
    }
    12
    13
    14
    15
    echo '<?php phpinfo();?>' >/application/nginx/html/blog/test_info.php



    测试php与MySQL

    11
    11
     
    1
    test_mysql.php
    2
    3
    <?php
    4
         //$link_id=mysql_connect('主机名','用户','密码');
    5
        $link_id=mysql_connect('172.16.1.51','wordpress','123456') or mysql_error();
    6
        if($link_id){
    7
             echo "mysql successful by oldboy ! 
    ";
    8
        }else{
    9
             echo mysql_error();
    10
        }
    11
    ?>

    部署博客



    https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz



     chown -R www.www  *



    root@web01 nginx]# chown -R www.www html/
    [root@web01 nginx]# ll





    1
    1
     
    1
    [root@web01 blog]# rm -f .maintenance



    负载均衡与反向代理


    区别图例

    负载均衡 LVS 中小型公司用的不多  (配置麻烦)


    实际部署




    5
    5
     
    1
    HOSTNAME    IP    说明
    2
    lb01    10.0.0.5    Nginx主负载均衡器
    3
    lb02    10.0.0.6    Nginx辅负载均衡器
    4
    web01    10.0.0.8    web01服务器
    5
    web02    10.0.0.7    web02服务器


    [root@web01 ~]# /application/nginx/sbin/nginx -V
    nginx version: nginx/1.12.2
    built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
    built with OpenSSL 1.0.1e-fips 11 Feb 2013
    TLS SNI support enabled
    configure arguments: --user=www --group=www --prefix=/application/nginx-1.12.2 --with-http_stub_status_module --with-http_ssl_module


    34
    34
     
    1
    #web01 web02 nginx.conf
    2
    worker_processes  1;
    3
    events {
    4
        worker_connections  1024;
    5
    }
    6
    http {
    7
        include       mime.types;
    8
        default_type  application/octet-stream;
    9
        sendfile        on;
    10
        keepalive_timeout  65;
    11
    12
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    13
                          '$status $body_bytes_sent "$http_referer" '
    14
                          '"$http_user_agent" "$http_x_forwarded_for"';
    15
        server {
    16
            listen       80;
    17
            server_name  www.lewen.com;
    18
            location / {
    19
                root   html/www;
    20
                index  index.html index.htm;
    21
            }
    22
            access_log  logs/access_www.log  main;
    23
        }
    24
        server {
    25
            listen       80;
    26
            server_name  bbs.lewen.com;
    27
            location / {
    28
                root   html/bbs;
    29
                index  index.html index.htm;
    30
            }
    31
            access_log  logs/access_bbs.log  main;
    32
        }
    33
    34
    }

    8
    8
     
    1
    tree /application/nginx/html/ -Ld 1
    2
    3
    for name in www bbs blog ;do echo "`hostname` $name.etiantian.org"  > /application/nginx/html/$name/oldboy.html; done
    4
     
    5
    [root@web01 ~]# for name in www bbs blog ;do cat  /application/nginx/html/$name/oldboy.html; done
    6
    web01 www.etiantian.org
    7
    web01 bbs.etiantian.org
    8
    web01 blog.etiantian.org

    9
    9
     
    1
    #web01 web02环境准备完成
    2
    [root@lb01 ~]# curl 10.0.0.8/oldboy.html
    3
    web01 bbs.etiantian.org
    4
    [root@lb01 ~]# curl 10.0.0.7/oldboy.html
    5
    web02 bbs.etiantian.org
    6
    [root@lb01 ~]# curl -H Host:www.etiantian.org 10.0.0.8/oldboy.html
    7
    web01 www.etiantian.org
    8
    [root@lb01 ~]# curl -H Host:www.etiantian.org 10.0.0.7/oldboy.html
    9
    web02 www.etiantian.org

    下面错误的配置
    22
    22
     
    1
    #lb01
    2
    worker_processes  1;
    3
    events {
    4
        worker_connections  1024;
    5
    }
    6
    http {
    7
        include       mime.types;
    8
        default_type  application/octet-stream;
    9
        sendfile        on;
    10
        keepalive_timeout  65;
    11
       
    12
        upstream server_pools { 
    13
             server 10.0.0.7:80  weight=1;
    14
             server 10.0.0.8:80  weight=1;
    15
        }
    16
        server { 
    17
           listen       80;
    18
           server_name  www.etiantian.org;
    19
           location / {
    20
            proxy_pass http://server_pools;
    21
        }
    22
    }





    36
    36
     
    1
    验证故障:
    2
    wireshark 进行抓包观察
    3
    [root@lb01 conf]# cat nginx.conf
    4
    worker_processes  1;
    5
    events {
    6
        worker_connections  1024;
    7
    }
    8
    http {
    9
        include       mime.types;
    10
        default_type  application/octet-stream;
    11
        sendfile        on;
    12
        keepalive_timeout  65;
    13
       
    14
        upstream server_pools { 
    15
             server 10.0.0.7:80  weight=1;
    16
             server 10.0.0.8:80  weight=1;
    17
        }
    18
        server { 
    19
           listen       80;
    20
           server_name  bbs.lewen.com;
    21
           location / {
    22
            proxy_pass http://server_pools;
    23
            proxy_set_header Host $host;
    24
        }
    25
    }
    26
        server { 
    27
           listen       80;
    28
           server_name  www.lewen.com;
    29
           location / {
    30
            proxy_pass http://server_pools;
    31
            proxy_set_header Host $host;
    32
        }
    33
    }
    34
    }
    35
    36
    proxy_set_header 修改反向代理 向后面发出请求的时候的 请求头的信息

    正确的配置

    34
    34
     
    1
    让web服务器记录真实的用户ip地址
    2
    worker_processes  1;
    3
    events {
    4
        worker_connections  1024;
    5
    }
    6
    http {
    7
        include       mime.types;
    8
        default_type  application/octet-stream;
    9
        sendfile        on;
    10
        keepalive_timeout  65;
    11
       
    12
        upstream server_pools { 
    13
             server 10.0.0.7:80  weight=1;
    14
             server 10.0.0.8:80  weight=1;
    15
        }
    16
        server { 
    17
           listen       80;
    18
           server_name  bbs.lewen.com;
    19
           location / {
    20
            proxy_pass http://server_pools;
    21
            proxy_set_header Host $host;
    22
            proxy_set_header X-Forwarded-For $remote_addr;
    23
            }
    24
        }
    25
        server { 
    26
           listen       80;
    27
           server_name  www.lewen.com;
    28
           location / {
    29
            proxy_pass http://server_pools;
    30
            proxy_set_header Host $host;
    31
            proxy_set_header X-Forwarded-For $remote_addr;
    32
            }    
    33
        }
    34
    }





    测试
    24
    24
     
    1
    [root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.6/oldboy.html
    2
    web02 www.lewen.com 
    3
    [root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.6/oldboy.html
    4
    web01 www.lewen.com 
    5
    [root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.6/oldboy.html
    6
    web02 www.lewen.com 
    7
    [root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.6/oldboy.html
    8
    web01 www.lewen.com 
    9
    [root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.6/oldboy.html
    10
    web02 bbs.lewen.com 
    11
    [root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.6/oldboy.html
    12
    web01 bbs.lewen.com 
    13
    [root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.6/oldboy.html
    14
    web02 bbs.lewen.com 
    15
    [root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.6/oldboy.html
    16
    web01 bbs.lewen.com 
    17
    [root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.5/oldboy.html
    18
    web01 bbs.lewen.com 
    19
    [root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.5/oldboy.html
    20
    web02 bbs.lewen.com 
    21
    [root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.5/oldboy.html
    22
    web01 www.lewen.com 
    23
    [root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.5/oldboy.html
    24
    web02 www.lewen.com 



    1
    1
     
    1
    yum install -y keepalived
    给LVS用的



    20
    20
     
    1
    #keepalive配置文件详解
    2
    3
    global_defs {
    4
       router_id LB01
    5
    }
    6
    7
    vrrp_instance VI_1 {
    8
        state MASTER
    9
        interface eth0
    10
        virtual_router_id 51
    11
        priority 150
    12
        advert_int 1
    13
        authentication {
    14
            auth_type PASS
    15
            auth_pass 1111
    16
        }
    17
        virtual_ipaddress {
    18
         10.0.0.3/24 dev eth0 label eth0:1
    19
        }
    20
    }
     




    keepalive基于 服务器 ,除非网段了,电断了,才会飘
    Nginx 关了不会飘






     if [ `netstat -lntup|grep nginx|wc -l` -ne 1 ];then
        /etc/init.d/keepalived stop
     fi


    7
    7
     
    1
    [root@lb01 conf]# cat /server/scripts/check_lb.sh
    2
    #!/bin/bash
    3
    4
    if [ `ps -ef |grep nginx|grep -v grep` -eq 0 ];then
    5
       /etc/init.d/keepalived stop
    6
    fi
    7
    [root@lb01 conf]# chmod +x /server/scripts/check_lb.sh





    8
    8
     
    1
    vrrp_script check_nginx {
    2
    script "/server/scripts/check_lb01.sh"
    3
    interval 2
    4
    weight 2
    5
    }
    6
    7
    8
    注意 {} 的空格    注意格式标准正确

    30
    30
     
    1
    [root@lb01 keepalived]# cat keepalived.conf
    2
    global_defs {
    3
       router_id LB01
    4
    }
    5
    6
    vrrp_script check_lb {
    7
        script "/server/scripts/check_lb.sh"
    8
        interval 2
    9
        weight 2
    10
    }
    11
    12
    vrrp_instance VI_1 {
    13
        state MASTER
    14
        interface eth0
    15
        virtual_router_id 51
    16
        priority 150
    17
        advert_int 1
    18
        authentication {
    19
            auth_type PASS
    20
            auth_pass 1111
    21
        }
    22
        virtual_ipaddress {
    23
            10.0.0.3/24 dev eth0 label eth0:1
    24
        }
    25
        track_script {
    26
            check_lb
    27
        }
    28
    29
    }
    30
    http://www.dedecms.com/



    使用db01上面的数据库
    把用户的上传目录挂载到 nfs01


     

  • 相关阅读:
    MS SQL执行大脚本文件时,提示“未能完成操作,存储空间不足,无法处理此命令”的解决办法
    一、Flux 是什么?
    for...in for..of
    循环总结
    javascript中几种this指向问题
    redux
    布局方式
    js获取前几个月的具体日期
    动态引入js文件
    获取页面url信息
  • 原文地址:https://www.cnblogs.com/wenyule/p/9600424.html
Copyright © 2020-2023  润新知