1、部署LNMP架构说明

1.1 LNMP架构内容

  01.部署linux系统
  02.部署nginx网站服务
  03.部署mysql数据库服务
  04.部署php动态解析服务

1.2 配置LNMP架构步骤

  01.配置Nginx配置文件
  02.配置mysql数据库信息(SQL语句)
  03.配置wordpress博客网站

1.3 架构服务器串联

  01.数据库数据信息迁移(web服务器上的mysql数据 迁移到10.0.0.51 数据库服务器上)
  02.将本地储存数据挂载到NFS共享储存服务器里(共享储存用户上传的数据信息)

1.4 LNMP FastCGI知识说明

工作原理讲解说明:
  ①. 用户请求的静态文件,由nginx服务自行处理,根据静态的location配置进行处理
用户请求的动态文件,由php服务进行处理,根据动态的location配置进行处理
  ②. nginx服务接收到动态请求,会将请求抛送给fastcgi,类似于nginx服务接收动态请求的秘书,秘书会将动态请求送给PHP程序
  ③. PHP如果可以处理,会将处理结果直接通过fastcgi返回给nginx程序;如果不可以处理,还会请求后端数据库,最终再把处理结果返回给nginx

2、LNMP环境搭建步骤

2.1 部署linux系统

  基本优化(ip地址 yum更新 字符集)
  安全优化完成(iptables关闭 selinux关闭 tmp目录权限777)
    说明:详细配置参见 https://www.cnblogs.com/znix/p/7736899.html

2.2 部署nginx网站服务

2.2.1 检查软件安装的系统环境

  1. [root@web01 ~]# cat /etc/redhat-release
  2. CentOS release 6.9 (Final)
  3. [root@web01 ~]# uname -r
  4. 2.6.32-696.el6.x86_64

2.2.2 安装nginx的依赖包(pcre-devel openssl-devel)

  1. yum install -y pcre-devel openssl-devel

pcre:兼容perl语言正则表达式,perl compatible regular expressions
  rewirte模块 参数信息(perl方式定义正则表达式)
  openssl:ssh—-openssh/openssl—-https
总结:所有安装依赖软件,后面都要加上-devel

2.2.3 下载nginx软件

  1. wget http://nginx.org/download/nginx-1.10.2.tar.gz

说明:软件很小,用心查看一下
解压软件

  1. tar xf nginx-1.10.2.tar.gz

2.2.4 创建管理用户 www

  1. useradd -M -s /sbin/nologin www

2.2.5.1 注意

  软件编译安装步骤
  a>软件解压配置(将软件程序安装到哪个目录中 开启nginx软件的哪些功能)
  b>软件编译过程
  c>软件编译安装过程
    注意顺序,顺序不对软件安装会出错

2.2.5.2 编译安装软件

1、配置软件,在软件的解压目录中

  1. [root@web01 nginx-1.10.2]# ./configure --prefix=/application/nginx-1.10.2 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module

编译参数说明:
—prefix 表示指定软件安装到哪个目录中,指定目录不存在会自动创建
—user/—group nginx工作进程由哪个用户运行管理
—with-http_stub_status_module 启动nginx状态模块功能(用户访问nginx的网络信息)
—with-http_ssl_module 启动https功能模块
通过软件编译过程中的返回值是否正确,确认配置是否正确

  1. [root@web01 nginx-1.10.2]# echo $?
  2. 0

2、编译软件

  1. [root@web01 nginx-1.10.2]# make

3、编译安装

  1. [root@web01 nginx-1.10.2]# make install

2.2.6 创建软连接

  1. [root@web01 application]# ln -s /application/nginx-1.10.2/ /application/nginx

2.2.7 精简化nginx.conf 主配置文件内容, 编写nginx配置文件

  1. [root@web01 conf]# egrep -v "#|^$" nginx.conf.default >nginx.conf

2.2.8 启动程序

  1. [root@web01 application]# /application/nginx/sbin/nginx
  2. [root@web01 application]#

检查是否启动

  1. [root@web01 application]# ps -ef |grep nginx
  2. root 26548 1 0 20:13 ? 00:00:00 nginx: master process /application/nginx/sbin/nginx
  3. www 26549 26548 0 20:13 ? 00:00:00 nginx: worker process
  4. root 26551 23431 3 20:13 pts/0 00:00:00 grep --color=auto nginx

检查端口信息

  1. [root@web01 application]# netstat -lntup |grep 80
  2. tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 26548/nginx

服务部署完成, 修改hosts解析文件,进行浏览器访问测试
企业级LNMP架构搭建实例(基于Centos6.x) - 图1
至此软件安装完毕!

2.3 部署mysql数据库服务

2.3.1 下载mysql软件

这里使用的是5.6.34版本;在下载mysql的时候一定要注意与系统匹配的版本。
mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
方法一:mysql官网下载地址  https://dev.mysql.com/downloads/mirrors/
企业级LNMP架构搭建实例(基于Centos6.x) - 图2
尽量使用ftp下载,http的下载方式较为繁琐。下载的时候选择与自己近的服务进行下载即可。
企业级LNMP架构搭建实例(基于Centos6.x) - 图3
方法二: 使用搜狐的镜像站也可以进行下载,注意使用的软件版本。  http://mirrors.sohu.com/mysql/

2.3.2 【二进制包方式】安装mysql数据库软件

2.3.2.1 解压二进制包软件

  1. cd /server/tools/
  2. [root@web01 tools]# tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz

2.3.2.2 创建储存目录管理用户mysql

  1. [root@web01 tools]# useradd -s /sbin/nologin -M mysql

2.3.2.3 将解压后的二进制包放置到程序目录中

将mysql解压后的程序包搬家到程序目录下,并创建软连接。

  1. cd /server/tools/
  2. mv mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34
  3. ln -s /application/mysql-5.6.34 /application/mysql

2.3.2.4 对mysql数据储存目录进行授权

让mysql用户管理 /application/mysql/data

  1. [root@web01 ~]# chown -R mysql.mysql /application/mysql/data/
  2. [root@web01 ~]# ll /application/mysql/data/ -d
  3. drwxr-xr-x 3 mysql mysql 4096 Oct 26 11:26 /application/mysql/data/

2.3.2.5 初始化数据库服务

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

① 始化参数说明:
—basedir 数据库软件命令,软件安装在哪里
—datadir 数据存放目录,数据存放在哪里
—user 管理mysql的用户,MySQL使用的用户谁
②【*】判定初始化命令执行成功的方法
  1)确认返回值,看是否为0
     [root@web01 ~]# echo $?
  2)确认输出的内容中有两个ok
  3)通过数据库初始化操作,在data目录中创建出默认的数据库信息和相关表信息

  1. [root@web01 ~]# ls -l /application/mysql/data/
  2. total 110604
  3. -rw-rw---- 1 mysql mysql 12582912 Oct 26 11:56 ibdata1
  4. -rw-rw---- 1 mysql mysql 50331648 Oct 26 11:56 ib_logfile0
  5. -rw-rw---- 1 mysql mysql 50331648 Oct 26 11:56 ib_logfile1
  6. drwx------ 2 mysql mysql 4096 Oct 26 11:56 mysql
  7. drwx------ 2 mysql mysql 4096 Oct 26 11:56 performance_schema
  8. drwxr-xr-x 2 mysql mysql 4096 Oct 26 11:26 test

③ 初始化输出的内容信息

  1. To start mysqld at boot time you have to copy
  2. support-files/mysql.server to the right place for your system

  启动mysql服务,可以复制support-files/mysql.server到系统的启动目录中
  mysql.server程序自带的启动脚本文件

  1. PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
  2. To do so, start the server, then issue the following commands:
  3. /application/mysql/bin/mysqladmin -u root password 'new-password'
  4. /application/mysql/bin/mysqladmin -u root -h web01 password 'new-password'

  说明: 表示对mysql服务管理源root用户设置密码

  1. You can start the MySQL daemon with:
  2. cd . ; /application/mysql/bin/mysqld_safe &

  可以以后台方式运行 mysqld_safe 脚本命令,也可以运行mysql服务

2.3.2.6 将启动脚本文件复制到启动目录中

  1. [root@web01 ~]# cp -a /application/mysql/support-files/mysql.server /etc/init.d/mysqld

修改启动服务脚本相关文件内容—更改软件的存放目录
  注意: 修改的是两个位置

  1. sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld

  添加到开机自启动,让chkconfig 管理,能够开机自启动

  1. [root@web01 ~]# chkconfig --add mysqld
  2. [root@web01 ~]# chkconfig mysqld on

2.3.2.7 设置mysql服务配置文件

mysql默认配置文件保存位置

  1. /etc/my.cnf

从软件中复制出来配置文件,使用软件中自带的配置文件即可

  1. \cp /application/mysql/support-files/my-default.cnf /etc/my.cnf

2.3.2.8 启动mysql服务

  1. [root@web01 ~]# /etc/init.d/mysqld start
  2. Starting MySQL...... SUCCESS!

2.3.2.9 检查端口信息,确认服务是否启动

  1. [root@web01 ~]# netstat -lntup |grep 3306
  2. tcp 0 0 :::3306 :::* LISTEN 54042/mysqld

2.3.2.10 设置root用户密码信息

  1. [root@web01 ~]# /application/mysql/bin/mysqladmin -u root password 'clsn123'
  2. Warning: Using a password on the command line interface can be insecure.

2.3.2.11 测试

  1. [root@web01 ~]# /application/mysql/bin/mysql -uroot -pclsn123
  2. Welcome to the MySQL monitor. Commands end with ; or \g.
  3. Your MySQL connection id is 14
  4. Server version: 5.6.34 MySQL Community Server (GPL)
  5. Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  6. Oracle is a registered trademark of Oracle Corporation and/or its
  7. affiliates. Other names may be trademarks of their respective
  8. owners.
  9. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  10. mysql>

登录数据库命令简化方法

  1. echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
  2. source /etc/profile
  3. which mysql

2.3.3 管理mysql数据库

2.3.3.1 查看数据库

  1. mysql> show databases;
  2. +--------------------+
  3. | Database |
  4. +--------------------+
  5. | information_schema |
  6. | mysql |
  7. | performance_schema |
  8. | test |
  9. +--------------------+
  10. 4 rows in set (0.26 sec)

2.3.3.2 查看数据表信息

  1. mysql> use mysql;show tables;
  2. Reading table information for completion of table and column names
  3. You can turn off this feature to get a quicker startup with -A
  4. Database changed
  5. +---------------------------+
  6. | Tables_in_mysql |
  7. +---------------------------+
  8. | columns_priv |
  9. | db |
  10. | event |
  11. | func |
  12. | general_log |
  13. | help_category |
  14. | help_keyword |
  15. | help_relation |
  16. | help_topic |
  17. | innodb_index_stats |
  18. | innodb_table_stats |
  19. | ndb_binlog_index |
  20. | plugin |
  21. | proc |
  22. | procs_priv |
  23. | proxies_priv |
  24. | servers |
  25. | slave_master_info |
  26. | slave_relay_log_info |
  27. | slave_worker_info |
  28. | slow_log |
  29. | tables_priv |
  30. | time_zone |
  31. | time_zone_leap_second |
  32. | time_zone_name |
  33. | time_zone_transition |
  34. | time_zone_transition_type |
  35. | user |
  36. +---------------------------+
  37. 28 rows in set (0.00 sec)

2.3.3.3 退出数据库

  quit | exit
退出数据库时,尽量不要用ctrl+c进行退出mysql 用ctrl+d进行退出
数据库基础操作(数据库框架)

  1. show databases; <--- 查询默认的数据库信息
  2. create database clsn; <---创建新的数据库
  3. drop database clsn; <---删除存在的数据库
  4. use mysql; <--- 表示选择使用一个数据库,相当于cd进入一个数据库
  5. show tables <---查看数据库中表信息
  6. select database(); <--- 表示查看当前所在数据库,类似于pwd命令的功能
  7. select user(); <--- 查看当前登录数据库的用户,类似于whoami命令
  8. 并且mysql还可以限制指定用户可以从哪里进行连接登录数据库
  9. select * from user\G; <---查看user表中所有信息,并且纵行显示
  10. select user,host from user; ---查看user表中指定信息,并且横行显示
  11. select user,host from mysql.user; ---查看可以登录mysql数据库的目录,以及都可以从哪里进行管理mysql数据库
  12. grant all on *.* to user@'host' identified by 'clsn123'; ---创建用户
  13. grant all on *.* to Old_Boy@'localhost' identified by 'clsn123'; ---创建用户(大写用户)
  14. drop user 'user'@'host';
  15. flush privileges --- 刷新权限

2.4 部署php服务

2.4.1 解决PHP软件的依赖关系(14个依赖包)

2.4.1.1 基于base源的个依赖包

  1. yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y

检查的方法一:rpm

  1. rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

检查的方法二:再安装一遍即可确认是否都安装上

  1. yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

2.4.1.2 libiconv软件 和字符集转换相关软件

由于该软件yum安装不上,需要单独安装一下。

  1. mkdir -p /server/tools
  2. cd /server/tools
  3. #wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
  4. tar zxf libiconv-1.14.tar.gz
  5. cd libiconv-1.14
  6. ./configure --prefix=/usr/local/libiconv
  7. make
  8. make install

说明:此软件在centos6.8之后已经自带此软件功能,可以不进行安装
编译好的软件如何删除
删除安装后的程序目录即可
fpm 定制rpm包
rpm包制作软件—-把编译后的程序目录进行打包,通过fpm相关参数指定rpm解压之前要先安装哪些依赖

2.4.1.3 安装加密相关的依赖软件(3个)

这三个软件依赖与epel源

  1. yum -y install libmcrypt-devel mhash mcrypt
  2. rpm -qa libmcrypt-devel mhash mcrypt

2.4.2 编译安装php过程

解压安装包

  1. cd /server/tools/
  2. [root@web01 lnmp]# tar xf php-5.5.32.tar.gz

配置php (配置的参数较多)
mysqlnd本地没有mysql

  1. ./configure \
  2. --prefix=/application/php-5.5.32 \
  3. --with-mysql=mysqlnd \
  4. --with-pdo-mysql=mysqlnd \
  5. --with-iconv-dir=/usr/local/libiconv \
  6. --with-freetype-dir \
  7. --with-jpeg-dir \
  8. --with-png-dir \
  9. --with-zlib \
  10. --with-libxml-dir=/usr \
  11. --enable-xml \
  12. --disable-rpath \
  13. --enable-bcmath \
  14. --enable-shmop \
  15. --enable-sysvsem \
  16. --enable-inline-optimization \
  17. --with-curl \
  18. --enable-mbregex \
  19. --enable-fpm \
  20. --enable-mbstring \
  21. --with-mcrypt \
  22. --with-gd \
  23. --enable-gd-native-ttf \
  24. --with-openssl \
  25. --with-mhash \
  26. --enable-pcntl \
  27. --enable-sockets \
  28. --with-xmlrpc \
  29. --enable-soap \
  30. --enable-short-tags \
  31. --enable-static \
  32. --with-xsl \
  33. --with-fpm-user=www \
  34. --with-fpm-group=www \
  35. --enable-ftp \
  36. --enable-opcache=no

PHP编译参数详解

  1. View Code PHP编译参数详解

输出的信息

  1. Generating files
  2. configure: creating ./config.status
  3. creating main/internal_functions.c
  4. creating main/internal_functions_cli.c
  5. +--------------------------------------------------------------------+
  6. | License: |
  7. | This software is subject to the PHP License, available in this |
  8. | distribution in the file LICENSE. By continuing this installation |
  9. | process, you are bound by the terms of this license agreement. |
  10. | If you do not agree with the terms of this license, you must abort |
  11. | the installation process at this point. |
  12. +--------------------------------------------------------------------+
  13. Thank you for using PHP.

防错

  1. ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/
  2. touch ext/phar/phar.phar

编译 && 编译安装

  1. make && make install

2.4.3 PHP软件程序创建软链接

  1. ln -s /application/php-5.5.32/ /application/php

2.4.4 配置php解析文件/配置php-fpm配置文件

两个默认的配置文件区别

  1. cd /server/tools/php-5.5.32
  2. ll php.ini*
  3. -rw-r--r--. 1 1001 1001 69236 2016-02-02 21:33 php.ini-development
  4. -rw-r--r--. 1 1001 1001 69266 2016-02-02 21:33 php.ini-production

配置文件说明:

  1. php.ini-developments是开发人员调试用配置文件
  2. php.ini-production是生产常见所有配置文件

文件区别对比:
  生产的文件不会输出过多的日志信息,而开发文件会输出大量程序测试日志信息。
对比俩个文件不同的命令

  1. diff / vimdiff

复制配置文件(2个)

  1. # 创建软连接 : ln -sf /application/php-5.5.32 /application/php
  2. [root@web01 ~]#cd /server/tools/php-5.5.32
  3. [root@web01 php-5.5.32]# cp php.ini-production /application/php/lib/php.ini
  4. [root@web01 etc]# cd /application/php/etc/
  5. [root@web01 etc]# cp php-fpm.conf.default php-fpm.conf

2.4.5 启动php-fpm程序

  1. [root@web01 ~]# /application/php/sbin/php-fpm

确认php 9000端口是否正确启动(检查服务是否启动)

  1. [root@web01 ~]# netstat -lntup |grep 9000
  2. tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN

2.5 nginx 与 php 建立连接关系

2.5.1 修改nginx配置文件,使nginx程序与php程序建立联系

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

说明:利用nginx的location区块实现动态请求与静态请求的分别处理
  <— 需要注意编辑修改默认首页文件 index index.php index.html index.htm;
  让nginx服务具有动态请求解析功能。

2.5.2 重启服务

  1. [root@web01 ~]# /application/nginx/sbin/nginx -t
  2. nginx: the configuration file /application/nginx-1.10.2/conf/nginx.conf syntax is ok
  3. nginx: configuration file /application/nginx-1.10.2/conf/nginx.conf test is successful
  4. [root@web01 ~]# /application/nginx/sbin/nginx -s reload

2.5.3 编辑nginx与php连通性测试文件,并进行测试

测试动态请求是否可以处理:

  1. echo '<?php phpinfo(); ?>' >/application/nginx/html/blog/test_info.php

测试站点

  1. curl http://blog.etiantian.org/index.html <-- 静态请求站点文件信息测试
  2. curl http://blog.etiantian.org/test_info.php <-- 动态请求站点文件信息测试

说明:当php服务停止时,9000端口信息消失,即停止PHP错误报502错误
linux系统测试完毕后,建议利用浏览器进行最终测试,测试效果更明显些

2.5.4 浏览器测试

浏览器访问  http://blog.znix.top/test_info.php
企业级LNMP架构搭建实例(基于Centos6.x) - 图4

2.6 编辑php与mysql连通性测试文件,并进行测试

2.6.1 创建数据库

  1. mysql -uroot -pclsn123;
  2. show databases; <--- 查看当前数据库信息
  3. create database wordpress; <---创建博客储存数据库

2.6.2 在mysql中添加用户信息

创建数据库授权用户

  1. grant all on wordpress.* to 'wordpress'@'10.0.0.%' identified by 'clsn123';
  2. flush privileges;

  授权 所有权限 为 wordpress库的所有表 用户@地址 设置密码 ;
  刷新数据库
添加上用于blog使用的mysql用户

  1. drop user wordpress@'172.16.1.8'; <--- 删除用户信息
  2. select user,host from mysql.user; <--- 查看用户信息
  3. mysql -uwordpress -p123456 <--- 测试创建的用户连接
  4. show databases; <--- 查看当前数据库信息

2.7 测试php与数据库连通性

  1. vim test_mysql.php
  2. <?php
  3. //$link_id=mysql_connect('主机名','用户','密码');
  4. //mysql -u用户 -p密码 -h 主机
  5. $link_id=mysql_connect('localhost','wordpress','clsn123') or mysql_error();
  6. if($link_id){
  7. echo "mysql successful by clsn !\n";
  8. }else{
  9. echo mysql_error();
  10. }
  11. ?>

2.7.1 网站访问测试

测试动态请求访问nginx服务是否可以到达数据库
企业级LNMP架构搭建实例(基于Centos6.x) - 图5

2.8 下载部署wordpress博客程序

下载地址:https://cn.wordpress.org

2.8.1 解压出来

  1. tar xf wordpress-4.7.3-zh_CN.tar.gz

2.8.2 代码上线

  1. [root@web01 wordpress]# pwd
  2. /server/tools/lnmp/wordpress
  3. [root@web01 wordpress]# mv ./* /application/nginx/html/blog/

2.8.3 统一代码属主.属组

对站点目录进行 授权

  1. [root@web01 wordpress]# cd /application/nginx/html/blog/
  2. [root@web01 blog]# chown www.www -R /application/nginx/html/blog/
  3. [root@web01 blog]# ll
  4. total 200
  5. -rw-r--r-- 1 www www 11 Oct 25 09:20 index.html
  6. -rw-r--r-- 1 www www 418 Sep 25 2013 index.php
  7. ……

说明:wp-config.php文件创建需要能够有权限对目录操作。
  此文件定义数据库连接信息

2.8.4 创建数据库

2.8.5 添加wordpress数据库用户

  1. mysql> grant all on wordpress.* to 'wordpress'@'10.0.0.%' identified by 'clsn123';
  2. Query OK, 0 rows affected (0.16 sec)
  3. mysql> select user,host from mysql.user;
  4. +-----------+-----------+
  5. | user | host |
  6. +-----------+-----------+
  7. | wordpress | 10.0.0.% |
  8. | root | 127.0.0.1 |
  9. | root | ::1 |
  10. | | localhost |
  11. | root | localhost |
  12. | | web01 |
  13. | root | web01 |
  14. +-----------+-----------+
  15. 7 rows in set (0.00 sec)

2.8.6 安装wordpress

访问网站进行初始化操作
填写的数据为
企业级LNMP架构搭建实例(基于Centos6.x) - 图6
连接数据库配置说明
数据库名:指定数据存储到哪一个数据库当中,例如:存储到wordpress数据库中
用户名:以什么用户身份管理wordpress数据库
密码: 用户的密码
数据库主机: 指定连接的数据库服务器地址信息
表前缀:标识相应表属于哪一个数据库
说明:配置完数据连接信息后,会自动创建wp-config.php文件,此文件定义数据库连接配置信息
安装完成效果
企业级LNMP架构搭建实例(基于Centos6.x) - 图7

3、mysql数据/储存数据迁移

3.1 mysql数据库迁移

说明:
  以上的mysql配置都是在web01 上进行 ,现在需要将web01上的mysql数据进行迁移到db01(数据库服务器)上去。

3.1.1 备份数据库中的数据

  1. [root@db01 ~]# mysqldump -uroot -pclsn123 --all-databases >/tmp/bak.sql

使用mysqldump命令将数据库中的全部数据进行备份 备份到 /tmp/bak.sql 。
mysqldump 命令参数说明:

参数 参数说明
—add-drop-table 在每个创建数据库表语句前添加删除数据库表的语句;
—add-locks 备份数据库表时锁定数据库表;
—all-databases 备份MySQL服务器上的所有数据库;
—comments 添加注释信息;
—compact 压缩模式,产生更少的输出;
—complete-insert 输出完成的插入语句;
—databases 指定要备份的数据库;
—default-character-set 指定默认字符集;
—force 当出现错误时仍然继续备份操作;
—host 指定要备份数据库的服务器;
—lock-tables 备份前,锁定所有数据库表;
—no-create-db 禁止生成创建数据库语句;
—no-create-info 禁止生成创建数据库库表语句;
—password 连接MySQL服务器的密码;
—port MySQL服务器的端口号;
—user 连接MySQL服务器的用户名。

3.1.2 将备份数据传输到mysql服务器(db01)

  1. [root@web01 tools]# rsync -avz /tmp/bak.sql 172.16.1.51:/tmp/
  2. The authenticity of host '172.16.1.51 (172.16.1.51)' can't be established.
  3. RSA key fingerprint is d3:41:bb:0d:43:88:da:a3:2c:e8:36:91:11:c9:e4:9c.
  4. Are you sure you want to continue connecting (yes/no)? yes
  5. Warning: Permanently added '172.16.1.51' (RSA) to the list of known hosts.
  6. root@172.16.1.51's password:
  7. sending incremental file list
  8. bak.sql
  9. sent 377261 bytes received 31 bytes 83842.67 bytes/sec
  10. total size is 1483738 speedup is 3.93

使用rsync将数据推送到MySQL服务器的/tmp 目录下面。

3.1.3 数据库服务器部署mysql服务(快速部署命令集)

mysql服务快速部署过程脚本。详情参见mysql数据库部署安装。

  1. cd /server/tools
  2. tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
  3. useradd -s /sbin/nologin -M mysql
  4. mkdir -p /application/
  5. mv /server/tools/mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34
  6. ln -s /application/mysql-5.6.34/ /application/mysql
  7. chown -R mysql.mysql /application/mysql
  8. /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data --user=mysql
  9. cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
  10. chmod +x /etc/init.d/mysqld
  11. sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld
  12. \cp /application/mysql/support-files/my-default.cnf /etc/my.cnf
  13. /etc/init.d/mysqld start
  14. /application/mysql/bin/mysqladmin -u root password 'clsn123'

3.1.4 将备份的数据恢复到数据库服务器上

  1. [root@db01 ~]# /application/mysql/bin/mysql -uroot -pclsn123 </tmp/bak.sql
  2. Warning: Using a password on the command line interface can be insecure.

注意,数据库导入之后要刷新数据库,让导入的数据被识别(重要)

  1. mysql> flush privileges;
  2. Query OK, 0 rows affected (0.00 sec)

3.1.5 在web01服务器上进行远程登陆数据库测试

  1. [root@web01 ~]# /application/mysql/bin/mysql -u wordpress -pclsn123 -h 10.0.0.51
  2. Warning: Using a password on the command line interface can be insecure.
  3. Welcome to the MySQL monitor. Commands end with ; or \g.
  4. Your MySQL connection id is 4
  5. Server version: 5.6.34 MySQL Community Server (GPL)
  6. Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  7. Oracle is a registered trademark of Oracle Corporation and/or its
  8. affiliates. Other names may be trademarks of their respective
  9. owners.
  10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  11. mysql>
  12. mysql> show databases;
  13. +--------------------+
  14. | Database |
  15. +--------------------+
  16. | information_schema |
  17. | test |
  18. | wordpress |
  19. +--------------------+
  20. 3 rows in set (0.00 sec)

3.1.6 修改web服务器php连接数据库主机的配置文件

修改wordpress软件的配置,将连接的主机地址改为数据库服务器的地址

  1. [root@web01 ~]# vim /application/nginx/html/blog/wp-config.php
  2. ……
  3. /** MySQL主机 */
  4. define('DB_HOST', '10.0.0.51');
  5. ……

3.2 本地数据挂载到nfs共享储存

3.2.1 确认本地数据的储存位置(三种方法)

1.通过网页图片属性信息进行确认路径  http://blog.clsn.top/wp-content/uploads/2017/10/cropped-Frog-2.png
2.通过find查看数据储存路径信息,上传个图片,查找相同中1分钟以内的文件

  1. find -type f -mmin -1

3.通过inotify软件进行监控
确认文件的储存目录

  1. /application/nginx/html/blog/wp-content/uploads

3.2.2 将已有数据进行迁移备份

备份数据是因为挂载的时候会将当前的数据全部’覆盖’掉,只显示nfs共享目录的信息。

  1. [root@web01 uploads]# pwd
  2. /application/nginx/html/blog/wp-content/uploads
  3. [root@web01 uploads]# mkdir /tmp/wordpress_bak
  4. [root@web01 uploads]# mv ./* /tmp/wordpress_bak/

3.2.3 nfs储存服务配置

配置nfs服务的时候注意权限的设置

  1. [root@nfs01 data]# cat /etc/exports
  2. #share user:hzs
  3. /data 172.16.1.0/24(rw,sync,root_squash,no_all_squash,anonuid=501,anongid=501)

注意:
  anonuid 与 anongid 要和web服务器上的www用户的相同(UID与GID相同)

  1. [root@nfs01 /]# id www
  2. uid=501(www) gid=501(www) groups=501(www)

目录的属组要是与nfs配置的anonuid,anongid相同的用户。

  1. [root@nfs01 /]# ll /data/ -d
  2. drwxr-xr-x 3 www www 4096 Oct 27 12:11 /data/

NFS的配置详情参见: NFS存储服务部署一篇。

3.2.4 将储存目录挂载到nfs共享目录上

注:作为nfs客户端需要安装nfs-utils 和 rpcbind
①先检查是否能挂载,显示可以挂载的目录

  1. [root@web01 uploads]# showmount -e 172.16.1.31
  2. Export list for 172.16.1.31:
  3. /data 172.16.1.0/24

②将磁盘进行挂载

  1. [root@web01 uploads]# mount -t nfs 172.16.1.31:/data /application/nginx/html/blog/wp-content/uploads/

③显示磁盘信息

  1. [root@web01 uploads]# df -h
  2. Filesystem Size Used Avail Use% Mounted on
  3. /dev/sda3 19G 3.7G 15G 21% /
  4. tmpfs 238M 0 238M 0% /dev/shm
  5. /dev/sda1 190M 40M 141M 22% /boot
  6. 172.16.1.31:/data 19G 1.5G 17G 9% /application/nginx-1.10.2/html/blog/wp-content/uploads

3.2.5 恢复数据(将之前备份的数据还原回来)

  1. [root@web01 uploads]# pwd
  2. application/nginx-1.10.2/html/blog/wp-content/uploads
  3. [root@web01 uploads]# mv /tmp/wordpress_bak/* ./

3.2.6 命令补全功能

  1. yum install bash-completion -y

3.3各服务的启动脚本

3.3.1php启动脚本

  1. # 复制php启动脚本
  2. [root@clsn ~]# cp /server/tools/php-5.5.32/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  3. [root@clsn ~]# chmod +x /etc/init.d/php-fpm
  4. # 找到pid文件,开启它
  5. [root@clsn ~]# vim /application/php/etc/php-fpm.conf
  6. # ···
  7. [global]
  8. ; Pid file
  9. ; Note: the default prefix is /application/php-5.5.32/var
  10. ; Default Value: none
  11. pid = run/php-fpm.pid
  12. # ···
  13. # 启动php
  14. [root@clsn ~]# /etc/init.d/php-fpm status
  15. php-fpm (pid 27931) is running...

3.3.2NGINX管理脚本

  1. [root@clsn ~]# cat /etc/init.d/nginx
  2. #!/bin/sh
  3. #
  4. # nginx - this script starts and stops the nginx daemon
  5. #
  6. # chkconfig: - 85 15
  7. # description: NGINX is an HTTP(S) server, HTTP(S) reverse \
  8. # proxy and IMAP/POP3 proxy server
  9. # processname: nginx
  10. # config: /application/nginx/conf/nginx.conf
  11. # config: /application/nginx/sbin/nginx
  12. # pidfile:
  13. # by: http://www.nmtui.com
  14. # Source function library.
  15. . /etc/rc.d/init.d/functions
  16. # Source networking configuration.
  17. . /etc/sysconfig/network
  18. # Check that networking is up.
  19. [ "$NETWORKING" = "no" ] && exit 0
  20. nginx="/application/nginx/sbin/nginx"
  21. prog=$(basename $nginx)
  22. NGINX_CONF_FILE="/application/nginx/conf/nginx.conf"
  23. #[ -f /application/nginx/sbin/nginx ] && . /application/nginx/sbin/nginx
  24. lockfile=/var/lock/subsys/nginx
  25. make_dirs() {
  26. # make required directories
  27. user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
  28. if [ -n "$user" ]; then
  29. if [ -z "`grep $user /etc/passwd`" ]; then
  30. useradd -M -s /bin/nologin $user
  31. fi
  32. options=`$nginx -V 2>&1 | grep 'configure arguments:'`
  33. for opt in $options; do
  34. if [ `echo $opt | grep '.*-temp-path'` ]; then
  35. value=`echo $opt | cut -d "=" -f 2`
  36. if [ ! -d "$value" ]; then
  37. # echo "creating" $value
  38. mkdir -p $value && chown -R $user $value
  39. fi
  40. fi
  41. done
  42. fi
  43. }
  44. start() {
  45. [ -x $nginx ] || exit 5
  46. [ -f $NGINX_CONF_FILE ] || exit 6
  47. make_dirs
  48. echo -n $"Starting $prog: "
  49. daemon $nginx -c $NGINX_CONF_FILE
  50. retval=$?
  51. echo
  52. [ $retval -eq 0 ] && touch $lockfile
  53. return $retval
  54. }
  55. stop() {
  56. echo -n $"Stopping $prog: "
  57. killproc $prog -QUIT
  58. retval=$?
  59. echo
  60. [ $retval -eq 0 ] && rm -f $lockfile
  61. return $retval
  62. }
  63. restart() {
  64. configtest || return $?
  65. stop
  66. sleep 1
  67. start
  68. }
  69. reload() {
  70. configtest || return $?
  71. echo -n $"Reloading $prog: "
  72. killproc $nginx -HUP
  73. RETVAL=$?
  74. echo
  75. }
  76. force_reload() {
  77. restart
  78. }
  79. configtest() {
  80. $nginx -t -c $NGINX_CONF_FILE
  81. }
  82. rh_status() {
  83. status $prog
  84. }
  85. rh_status_q() {
  86. rh_status >/dev/null 2>&1
  87. }
  88. case "$1" in
  89. start)
  90. rh_status_q && exit 0
  91. $1
  92. ;;
  93. stop)
  94. rh_status_q || exit 0
  95. $1
  96. ;;
  97. restart|configtest)
  98. $1
  99. ;;
  100. reload)
  101. rh_status_q || exit 7
  102. $1
  103. ;;
  104. force-reload)
  105. force_reload
  106. ;;
  107. status)
  108. rh_status
  109. ;;
  110. condrestart|try-restart)
  111. rh_status_q || exit 0
  112. ;;
  113. *)
  114. echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
  115. exit 2
  116. esac