欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

LNMP集群架构篇

程序员文章站 2022-12-09 20:34:27
一.LNMP介绍 1.使前端web服务和后端存储服务进行串联 2.主要实现处理php动态请求 工作原理: L:linux N:nginx M:mysql P:php 二、lnmp部署 我的环境:centos6.9+nginx+mysql5.6+php5 文件存储系统NFS 1.部署安装linux系统 ......

 

一.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 !\n"; 
                }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/* ./  #将之前备份的数据还原