• LNMP集群架构篇


     

    一.LNMP介绍

    1.使前端web服务和后端存储服务进行串联

    2.主要实现处理php动态请求

    工作原理:

    L:linux  N:nginx  M:mysql   P:php

    二、lnmp部署

    我的环境:centos6.9+nginx+mysql5.6+php5  文件存储系统NFS

    1.部署安装linux系统(这里不介绍了)

      基础优化操作要完成(防火墙关闭,关闭selinuxn 将/tmp目录权限设为1777)

    2.部署nginx服务

      这里暂时忽略...................

    3.安装部署mysql

      三种安装方式:yum部署,源码编译安装,二进制包安装

      本次介绍下二进制安装方法:

      第一个里程:下载并解压mysql安装包

        mysql官方下载链接地址:ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6/

        上传mysql软件程序,进行利用xftp软件进行上传

        tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz

        mv mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34 (我的安装目录为/application/mysql  你随意)

      第二里程: 创建程序软链接

        ln -sf /application/mysql-5.6.34/ /application/mysql

      第三里程:创建数据库管理用户,并授权给数据目录

        useradd -s mysql /sbin/nologin -M

        chown -R mysql.mysql /application/mysql/data/

      第四个里程:对数据库服务进行初始化

        /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data/ --user=mysql

      第五个里程:启动mysql服务

      

    cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
    
    sed -ri 's#/usr/local#/application#g' /etc/init.d/mysqld /application/mysql/bin/mysqld_safe (将默认的路径改成你自己安装目录)
    
    cp /application/mysql/support-files/my-default.cnf /etc/my.cnf
    
    /etc/init.d/mysqld start

      第六个里程:设置数据库root用户登录密码

        /application/mysql/bin/mysqladmin -uroot password "密码=="

        /application/mysql/bin/mysql -uroot -poldboy123  (嫌难敲自己设置软链接)

    4. 安装部署PHP

      第一里程:解决PHP软件的依赖关系 

        yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel
    
        libiconv软件安装---字符集转换库(默认可以不进行安装了)
    
        cd /server/tools
    
         #wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
    
        tar zxf libiconv-1.14.tar.gz
    
        cd libiconv-1.14
    
        ./configure --prefix=/usr/local/libiconv
    
        make && make install
    
        如果用yum安装的话,注意更新下yum源
    
        #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

      第二个里程:下载解压PHP软件

        php官方网站下载:php.net
    
         cd /server/tools/
    
        tar xf php-5.5.32.tar.gz
    
        cd php-5.5.32
    
        ./configure 
        --prefix=/application/php-5.5.32 
        --with-mysql=/application/mysql-5.6.34 
        --with-pdo-mysql=mysqlnd 
        --with-iconv-dir=/usr/local/libiconv 
        --with-freetype-dir 
        --with-jpeg-dir 
        --with-png-dir 
        --with-zlib 
        --with-libxml-dir=/usr 
        --enable-xml 
        --disable-rpath 
        --enable-bcmath 
        --enable-shmop 
        --enable-sysvsem 
        --enable-inline-optimization 
        --with-curl 
        --enable-mbregex 
        --enable-fpm 
        --enable-mbstring 
        --with-mcrypt 
        --with-gd 
        --enable-gd-native-ttf 
        --with-openssl 
        --with-mhash 
        --enable-pcntl 
        --enable-sockets 
        --with-xmlrpc 
        --enable-soap 
        --enable-short-tags 
        --enable-static 
        --with-xsl 
        --with-fpm-user=www 
        --with-fpm-group=www 
        --enable-ftp 
        --enable-opcache=no
    
        ##为了防错(配置下以下信息)
    
        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

       第三个里程:设置PHP程序配置文件

        php.ini php-fpm.ini
        cp php.ini-production /application/php-5.5.32/lib/
        cd /application/php/etc/
        cp php-fpm.conf.default php-fpm.con

      第四个里程:启动php程序服务

        /application/php/sbin/php-fpm
        netstat -lntup|grep php

    5.php与mysql和nginx进行软件结合

    5.1、与mysql进行结合

      编写.php文件

      

    <?php
        //$link_id=mysql_connect('主机名','用户','密码');
        //mysql -u用户 -p密码 -h 主机
        $link_id=mysql_connect('localhost','root','oldboy123') or mysql_error();
        if($link_id){
                     echo "mysql successful by oldboy !
    "; 
                    }else{
                     echo mysql_error();
                    }
    ?>

    5.2、php与nginx结合

      编写nginx配置文件 nginx.conf

     nginx与php结合:编写nginx配置文件的location
           location ~* .*.(php|php5)?$ {
              fastcgi_pass  127.0.0.1:9000; #php服务默认9000端口
              fastcgi_index index.php;
              include fastcgi.conf;
           }

      

    6、部署一个网站

      第一个里程:下载与上传网站代码

      第二个里程:解压程序代码,将程序代码保存到nginx站点目录并进行授权

      例如:

           tar xf wordpress-4.7.3-zh_CN.tar.gz 
           mv wordpress/* /application/nginx/html/blog/
           chown -R www.www /application/nginx/html/blog/

       第三个里程:直接访问网站,进行初始化操作

        创建数据库:

        create database 

        创建连接数据用户信息

         grant all on wordpress.* to '用户名'@'localhost' identified by '密码'; 
    
         select user,host from mysql.user;  

    7. LNMP架构中数据迁移

       在企业生产环境中我们最后需要将数据迁移至后端的存储服务器中,实现动静态资源的分离

       这里简单的介绍哈!!!

      01. LNMP架构数据库服务的迁移

       迁移数据库:利用数据库备份命令(mysql mysqladmin mysqldump)

       1) 备份数据库数据库信息   

    例如:
    mysqldump -uroot -p密码 --all-databases >/tmp/bak.sql
    ll /tmp/bak.sql -h
    scp /tmp/bak.sql 172.16.1.51:/tmp/ #推送到至远程数据库服务器

       2) 恢复数据库数据库信息   

    mysql -uroot -poldboy123 </tmp/bak.sql
    ###db01添加新的用户
    grant all on wordpress.* to 用户名@'172.16.1.0/255.255.255.0' identified by '密码';
    flush privileges;
    mysql -uwordpress -poldboy123 -h 172.16.1.51

      3) 数据库迁移完毕,修改网站连接数据库的配置文件

        我此处为php程序连接数据库配置文件

    mysql -u用户名 -p密码 -h 172.16.1.51       <-- 修改配置文件之前,先测试网站web服务器与迁移后的数据库连通性    
    vim wp-config.php                                  <-- 修改wordpress上的数据库连接参数信息
    /** MySQL主机 */
     define('DB_HOST','172.16.1.51')                    <-- 修改连接的主机信息,将localhost修改为172.16.1.51
     说明:web服务器数据库此时可以关闭了

      4)停止nginx服务器上MySQL服务  

     /etc/init.d/mysql stop

      02. LNMP架构数据迁移到NFS存储说明

        01:先将原有目录中数据移出

    cd /application/nginx/html/blog/wp-content/uploads #我的站点目录下的文件资源路径
    mkdir /tmp/wordpress_backup -p
    mv ./* /tmp/wordpress_backup/

      注意:

        数据存储到本地什么位置,获取方法
        ①. 通过网站页面右键点击,获取资源地址信息
        ②. find命令利用-mmin 5
        ③. 利用inotify服务监控目录数据变化

      02:NFS服务器上配置创建共享目录

      

    vim /etc/exports
    /data 172.16.1.0/24(rw,sync,all_squash)
    showmount -e 172.16.1.31
    mount -t nfs 172.16.1.31:/data /mnt/
    
    #在web服务器上        
    showmount -e 172.16.1.31
    mount -t nfs 172.16.1.31:/data/ ./uploads/ #将nfs共享服务器上的目录挂载到本地
     mv /tmp/wordpress_backup/* ./  #将之前备份的数据还原
  • 相关阅读:
    《设计模式
    JConsole监控远程Tomcat服务器
    Linux下Nginx+tomcat应用系统性能优化
    nginx 解决400 bad request 的方法
    lvs、haproxy、nginx 负载均衡的比较分析
    三种LVS负载均衡技术的优缺点----负载均衡调度算法
    LVS集群的体系结构
    LVS--什么是LVS?
    七、Nginx学习笔记七Nginx的Web缓存服务
    六、Nginx 防盗链
  • 原文地址:https://www.cnblogs.com/xh-0205/p/11127641.html
Copyright © 2020-2023  润新知