• LNMP架构部署


    第1章 部署LNMP架构步骤

    1.1 ①部署Linux系统(OK)

    基本优化完成(ip地址设置 yum源更新 字符集设置)

    安全优化完成(iptables关闭 selinux关闭 /tmp/ 1777)

    1.2 ②部署nginx网站服务

    A.安装软件依赖包

    B.创建进程管理用户

    C.下载nginx软件,进行编译安装(编译安装三步曲)

    D.创建软链接文件

    E.编写nginx配置文件

    F.启动nginx服务

    G.编写hosts解析文件,进行浏览器访问测试

    第2章 ③部署mysql数据库服务(web服务器)

    2.1 软件部署过程

    A.下载mysql软件

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

    B.二进制包方式安装mysql数据库软件

    2.1.1 a.解压二进制包软件

     1 cd /server/tools 2 3 tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz 

    2.1.2 b.创建mysql虚拟用户

     1 useradd -s /sbin/nologin -M mysql 

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

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

    2.1.4 c.要对mysql数据存储目录data进行授权

     1 chown -R mysql.mysql /application/mysql/data #这里也可以直接让用户直接管理mysql目录 2 3 ll /application/mysql/data/ 

    2.1.5 e.初始化数据库服务

     1 /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data --user=mysql 2 3 echo $? 

    提示:如何判定以上初始化命令执行成功

    01.确认返回值

    02.确认命令执行输出内容中,必须存在两个OK

    03.通过数据库初始化操作,在data目录中创建出默认数据库信息和相关表信息

    其中,查看初始化输出的内容

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

      说明:mysql启动脚本默认在support-files/mysql.server,这里要复制mysql.server到系统启动目录

    2.1.6 f.将启动脚本文件复制到启动目录中并授权

    cp -a /application/mysql/support-files/mysql.server /etc/init.d/mysqld
    
    chmod +x /etc/init.d/mysqld

      注意mysql相关文件:启动脚本/etc/init.d/mysqld  启动命令/application/mysql/bin/mysqld_safe

    因为两文件中都存在mysql安装默认路径/usr/local/mysql,故这里进行同时修改,如下

    2.1.7 g.修改启动脚本和mysql命令中的路径

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

    2.1.8 h.复制mysql默认的服务配置文件

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

    说明:mysql默认配置文件保存位置support-files/my-default.cnf,但my-default.cnf不能在mysql目录下配置,更改为/etc/my.cnf使系统能够识别mysql配置信息,且原有/etc/my.cnf与安装版本不同

    2.1.9 i.启动mysql服务

    1 /etc/init.d/mysqld start
    2 
    3 Starting MySQL.... SUCCESS!
    4 
    5 netstat -lntup|grep mysql
    6 
    7 tcp      0      0 :::3306          :::*             LISTEN      3075/mysqld

    说明:至此mysql数据库安装完成,可以检测进程和服务端口,确认服务是否启动正确

    2.2 mysql管理讲解

    2.2.1 01.进入与退出mysql数据库方法

     1 /application/mysql/bin/mysql 

    退出数据库时,尽量不要用ctrl+c进行退出mysql ,使用ctrl+d进行退出

    2.2.2 02.设置全局变量,便于登录数据库

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

    a.查看数据库信息

     1 mysql> show databases;
     2 
     3 +--------------------+
     4 
     5 | Database           |
     6 
     7 +--------------------+
     8 
     9 | information_schema |
    10 
    11 | mysql              |
    12 
    13 | performance_schema |
    14 
    15 | test               |
    16 
    17 +--------------------+
    18 
    19 4 rows in set (0.13 sec)

    b.查看数据表信息(二维表)

    1 mysql> use mysql;   #因为表属于库,故此处要具体到使用某一个数据库进行查看
    2 
    3 Reading table information for completion of table and column names
    4 
    5 You can turn off this feature to get a quicker startup with -A
    6 
    7 Database changed
    8 
    9 mysql> show tables;   #显示信息

    2.2.3 03.设置mysql服务开机自启动

    加入开机自启动

     1 chkconfig --add mysqld 2 3 chkconfig mysqld on 

    2.2.4 04.设置mysql数据库登录用户名与密码

    给MySQL root用户设置密码

    1 /application/mysql/bin/mysqladmin -u root password 'oldboy123'   #本地设定密码,提示可忽略
    2 
    3 mysql -u root -poldboy123
    4 
    5 /application/mysql/bin/mysqladmin -u root -h web01 password 'oldboy123'   #远端设定密码,择其一

    2.3 常用命令参数说明

     1 show databases;           #<-查询默认的数据库信息
     2 create database oldboy;     #<-创建新的数据库
     3 drop database oldboy;      #<-删除存在的数据库
     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 'oldboy123';           #<-创建用户
    13 grant all on *.* to Old_Boy@'localhost' identified by 'oldboy123';   #<-创建用户(大写用户)
    14 drop user 'user'@'host';    #<-删除用户及用户关联库
    15 flush privileges;        #<-刷新权限
    16 初级 添加删除系列
    17 create database wordpress;   #<-创建数据库
    18 drop database wordpress;    #<-删除数据库

    第3章 ④部署PHP动态解析服务

    01.配置LNMP架构步骤

    A.配置nginx配置文件

    B.配置mysql数据库信息(SQL语句)

    C.配置wordpress博客网站

    02.架构服务器串联

    a.数据库数据信息迁移(web服务器上的mysql数据迁移到10.0.0.51数据库服务器上)

    b.将本地存储数据挂载到NFS共享存储服务器里(共享存储用户上传的数据信息)

    3.1 PHP软件安装步骤

    3.1.1 解决PHP软件的依赖关系

    1 yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y
    2 
    3 yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y
    4 
    5 rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel
    6 
    7 yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

    # zlib压缩有关软件 libxml2字符集有关软件 libjpeg图片有关软件等

    说明:由于libiconv-devel无法进行yum安装,故使用编译如下

    3.1.1.1  libiconv-devel软件安装--字符集转换库

    #和字符集转换的相关软件

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

    #和数据加密有关的三个软件

    1 #wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo   #更改epel源
    2 
    3 yum -y install libmcrypt-devel mhash mcrypt
    4 
    5 rpm -qa libmcrypt-devel mhash mcrypt

    说明:此软件在centOS6.8之后,系统已经自带此软件功能,可以不进行安装

    编译好的软件卸载方法:删除安装后的程序目录

    FPM:rpm包制作软件---把编译后的程序目录进行打包,通过fpm指定rpm解压前要先安装哪些软件

    自动化部署必备技能—定制化RPM包:http://blog.oldboyedu.com/autodeploy-rpm/

    3.2 下载解压PHP软件

     1 cd /server/tools/
     2 tar xf php-5.5.32.tar.gz
     3 cd php-5.5.32
     4  
     5 ./configure \
     6 --prefix=/application/php-5.5.32 \     #指定php软件安装位置
     7 --with-mysql=/application/mysql \  #指定mysql软件安装位置 mysqlnd数据库服务没有安装在本地服务器上参数(web服务器视情况而定)
     8 --with-pdo-mysql=mysqlnd \        #定义接口pdo
     9 --with-iconv-dir=/usr/local/libiconv \
    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 \   #fpm要与wrapper程序对接,用户需一致
    38 --with-fpm-group=www \
    39 --enable-ftp \
    40 --enable-opcache=no

    说明:LNMP架构部署时,如果mysql服务和web服务不在一台主机上,php配置参数需要进行调整

    --with-mysql=/application/mysql/  =>  --with-mysql=mysqlnd

    3.2.1 防错步骤

    1 ln -s /application/mysql/lib/libmysqlclient.so.18  /usr/lib64/
    2 
    3 touch ext/phar/phar.phar   #创建软链接生成目录
    4 
    5 make
    6 
    7 make install

    说明:此时/application下会生成程序文件信息

    3.3 PHP软件程序创建软链接

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

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

    php服务拥有两个配置文件

    01.php.ini

    1 cd /server/tools/php-5.5.32
    2 
    3 ll php.ini*
    4 
    5 -rw-r--r--. 1 1001 1001 69236 2016-02-02 21:33 php.ini-development   #开发人员调试用配置文件
    6 
    7 -rw-r--r--. 1 1001 1001 69266 2016-02-02 21:33 php.ini-production    #生产常见所有配置文件

    说明:文件比较命令vimdiff php.ini-development php.ini-production

    php.ini-production 与 php.ini-development 文件区别关系对比:

    ①  生产文件:不会输出太多日志信息

    ②  开发文件:会输出大量程序测试日志信息

     1 cp php.ini-production /application/php/lib/php.ini 2 3 cd /application/php/etc/ 4 5 cp php-fpm.conf.default php-fpm.conf 

    扩展命令:编译安装PHP时若配置未正确指定PHP进程用户信息,可以修改PHP文件进行调整

    #sed -i 's#user = www#user = nginx#g;s#group = www#group = nginx#g' /application/php-5.5.32/etc/php-fpm.conf   #忽略此步骤

    3.5 启动php服务

     1 /application/php/sbin/php-fpm 2 3 lsof -i :9000 #<-确认php 9000端口是否正确启动 4 5 ps -ef|grep php-fpm 

    第4章 wordpress博客站点部署配置

    4.1 01.修改nginx配置文件,使nginx程序与php程序建立联系(fastcgi)

     1 vim extra/blog.conf
     2 
     3 server {
     4 
     5         listen       80;
     6 
     7         server_name  blog.etiantian.org;
     8 
     9         location / {
    10 
    11                     root   html/blog;
    12 
    13                     index  index.php index.html index.htm;          <--需要注意编辑修改默认首页文件  index  index.php index.html index.htm;
    14 
    15         }
    16 
    17         location ~* .*\.(php|php5)?$ {   #以php|php5结尾的动态资源访问文件交给php处理
    18 
    19                     root html/blog;
    20 
    21                     fastcgi_pass  127.0.0.1:9000;   #使用127.0.0.0/24本地网段建立互联
    22 
    23                     fastcgi_index index.php;
    24 
    25                     include fastcgi.conf;
    26 
    27         }
    28 
    29 }

    说明:利用nginx的location区块实现动态请求与静态请求的分别处理;让nginx服务具有动态请求解析功能  location ~* .*\.(php|php5)?$  修改后==> location ~* (php|php5)$

    4.2 ⭐02.编辑nginx与php连通性测试文件,并进行测试

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

    01.必须要有动态资源文件php文件

    1 cd /application/nginx/html/blog
    2 
    3 vim test_info.php
    4 
    5 <?php
    6 
    7 phpinfo();
    8 
    9 ?>

    说明:当php服务停止时,9000端口信息消失,即停止PHP错误报502错误

    02.linux系统测试完毕后,建议利用浏览器进行最终测试,测试效果更明显些

    客户端测试

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

    浏览器测试

     1 blog.etiantian.org #<-静态 2 3 blog.etiantian.org/test_info.php #<-动态 

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

    4.3.1 A.创建wordpress博客存储博客数据库

     1 mysql -uroot -poldboy123; 2 3 show databases; #<-查看当前数据库信息 4 5 create database wordpress; 

    4.3.2 B.创建数据库授权用户

    1 grant all on wordpress.* to 'wordpress'@'10.0.0.%' identified by 'oldboy123';
    2 
    3 flush privileges;   #刷新mysql的系统权限相关表

     

    #授权 所有权限 针对某一个库.表信息(这里即所有) 让哪些用户可以有此权限 允许哪些网段的主机可以连接到数据库上(%即网段,亦可定义具体地址) 定义数据库密码信息

    4.3.2.1  查看用户信息

     1 mysql> select user,host from mysql.user;
     2 
     3 +-----------+-----------+
     4 
     5 | user      | host      |
     6 
     7 +-----------+-----------+
     8 
     9 | wordpress | 10.0.0.%  |
    10 
    11 | root      | 127.0.0.1 |
    12 
    13 | root      | ::1       |
    14 
    15 |           | localhost |
    16 
    17 | root      | localhost |
    18 
    19 |           | web01     |
    20 
    21 | root      | web01     |
    22 
    23 +-----------+-----------+
    24 
    25 7 rows in set (0.00 sec)

    4.3.2.2  其他信息说明

    drop user wordpress@'172.16.1.8';     #<-删除用户信息
    select user,host from mysql.user;      #<-查看用户信息
    mysql -uwordpress -p123456         #<-测试创建的用户连接
    show databases;                   #<-查看当前数据库信息
    利用mysql命令进行指定用户登录测试
    /application/mysql/bin/mysql -uwordpress -poldboy123

    4.3.3 C.测试php与数据库连通性

    01.编写文件

     1 cd /application/nginx/html/blog
     2 
     3 vim test_mysql.php
     4 
     5 <?php
     6 
     7 //$link_id=mysql_connect('主机名','用户','密码');
     8 
     9    //mysql -u用户 -p密码 -h 主机
    10 
    11    $link_id=mysql_connect('localhost','wordpress','oldboy123') or mysql_error();
    12 
    13    if($link_id){
    14 
    15                 echo "mysql successful by oldboy !\n";
    16 
    17                }else{
    18 
    19                 echo mysql_error();
    20 
    21                }
    22 
    23    ?>

    02.测试

     1 curl blog.etiantian.org/test_mysql.php #<-xshell测试php与数据库的连通性 2 3 http://blog.etiantian.org/test_mysql.php #<-浏览器测试 

    4.4 04.下载部署wordpress博客程序

    另外三个网站 bbs www blog

    4.4.1 下载wordpress程序进行保存

    说明:中文网站https://cn.wordpress.org/ 英文官网https://www.wordpress.org/

     1 cd /server/tools/ 2 3 wget https://cn.wordpress.org/wordpress-4.7.3-zh_CN.tar.gz 

    4.4.2 解压程序压缩包,将解压后程序代码复制到站点目录下

     1 tar xf wordpress-4.7.3-zh_CN.tar.gz 2 3 mv wordpress/* /application/nginx/html/blog/ 

    4.4.3 对站点目录进行授权

     1 chown -R www.www /application/nginx/html/blog/ 

    注意:统一目录下内容nginx用户管理,因为ps -ef|grep nginx显示nginx管理的用户是www。通过网站访问是以www用户,不修改则为root用户,用户没有写入权限

    4.4.4 进行访问blog网站,完成初始化操作

    连接数据库配置

    数据库名:指定数据存储到哪一个数据库当中,如存储到wordpress数据库中

    用户名:以什么用户身份管理wordpress数据库[不建议root权限过大]

    密码:-

    数据库主机:指定数据库所在的服务器地址信息[当nginx与数据库在同一台服务器上时,可以使用localhost]

    表前缀:标识相应表属于哪一个数据库

    注意:配置完数据连接信息后,浏览网页页面进行会自动生成WordPress基础配置文件,即/application/nginx/html/blog/ wp-config.php,此文件定义数据库连接配置参数选项。

    第5章 wordpress博客站点数据库迁移(架构服务器串联)

    5.1 迁移数据库:利用数据库备份命令(web服务器上的mysql数据迁移到数据库服务器上)

    5.1.1 01.备份数据库中数据信息

    1 /application/mysql/bin/mysqldump -uroot -poldboy123 --all-databases >/tmp/bak.sql   #警告:在命令行界面使用密码可能不安全
    2 
    3 ll /tmp/bak.sql -h
    4 
    5 scp /tmp/bak.sql 172.16.1.51:/tmp/

    5.1.2 02.将备份数据传送到10.0.0.51服务器上,进行恢复

     1 [root@web01 ~]# rsync -avz /tmp/bak.sql 172.16.1.51:/tmp/ 2 3 [root@db01 ~]# ll /tmp 

    5.1.3 03.mysql服务器快速部署mysql过程

     1 [root@db01 ~]# mkdir -p /server/tools   #上传mysql压缩包
     2 [root@db01 ~]# vim /server/scripts/mysql_conf.sh
     3 
     4 #解压mysql压缩包
     5 
     6 cd /server/tools
     7 
     8 tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
     9 
    10 mkdir -p /application
    11 
    12 #将解压后的二进制包放置到程序目录中
    13 
    14 mv mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34
    15 
    16 ln -s /application/mysql-5.6.34/ /application/mysql
    17 
    18 #创建mysql虚拟用户
    19 
    20 useradd -s /sbin/nologin -M mysql
    21 
    22 #对mysql数据存储目录进行授权
    23 
    24 chown -R mysql.mysql /application/mysql/data
    25 
    26 #复制mysql默认的服务配置文件
    27 
    28 cp /application/mysql/support-files/my-default.cnf /etc/my.cnf
    29 
    30 #初始化数据库服务
    31 
    32 /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data --user=mysql
    33 
    34 #将启动脚本文件复制到启动目录中
    35 
    36 \cp -a /application/mysql/support-files/mysql.server /etc/init.d/mysqld
    37 
    38 #修改启动脚本和mysql命令中的路径
    39 
    40 sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld
    41 
    42 #启动mysql服务
    43 
    44 /etc/init.d/mysqld start
    45 [root@db01 ~]# sh /server/scripts/mysql_conf.sh

    5.1.3.1  数据恢复功能

     1 [root@db01 ~]# /application/mysql/bin/mysqladmin -uroot password #mysql数据库设置密码 2 3 [root@db01 ~]# /application/mysql/bin/mysql -u root -poldboy123 </tmp/bak.sql 

    5.1.4 04.进行测试(在web01服务器上进行远程登录数据库)

    启动数据库并查看数据库信息

     1 /application/mysql/bin/mysql -u wordpress -poldboy123 -h 10.0.0.51#<--修改配置文件之前,先测试网站web服务器与迁移后的数据库连通性 2 3 show databases; 

    注意:页面出现"建立数据库连接时出错"

    原因:服务停止;连接时出现问题

    5.1.5 05.数据库迁移完毕,修改web服务php连接数据配置文件信息

    1 cd /application/nginx/html/blog
    2 vim wp-config.php     #<--修改wordpress上的数据库连接参数信息
    3 
    4 
    5 /** MySQL主机 */
    6 
    7 define('DB_HOST', '10.0.0.51');   #<--修改连接的主机信息,将localhost修改为10.0.0.51

    说明:web服务器数据库此时可以关闭了

    5.2 将本地存储数据挂载到NFS共享存储服务器上(共享存储用户上传的数据信息)

    5.2.1 A.确认本地数据存储路径信息

    01.通过查看网页图片属性信息进行确认路径

    02.通过find查看数据存储路径信息

    find . -type f -mmin -1

    03.通过inotify软件进行监控

    html/blog

    5.2.2 B.将已有数据进行迁移备份

    1 cd /application/nginx/html/blog/wp-content/uploads     #数据库存储目录
    2 
    3 mkdir /tmp/wordpress_backup -p
    4 
    5 mv ./* /tmp/wordpress_backup/

    5.2.3 C.将存储目录挂载到nfs共享目录上

    1 [root@nfs01 ~]# vim /etc/exports
    2 
    3 /backup 172.16.1.0/24(rw,sync,all_squash)
    4  
    5 showmount -e 172.16.1.31
    6 
    7 [root@web01 ~]# mount -t nfs 172.16.1.31:/backup /application/nginx/html/blog/wp-content/uploads/
    8 
    9 mv /tmp/wordpress_backup/* /application/nginx/html/blog/wp-content/uploads/

    说明:/etc/exports若未设置all_squash,则无法向共享目录中写入数据,需要调整nfs服务配置

    01.修改映射参数

     1 vim /etc/exports 2 3 no_all_squash ==> all_squash 

    02.修改共享目录为指定默认映射用户-www

    #保持web服务器同nfs的用户uid gid一致

     1 usermod -u xxx www groupmod -g xxx www 

     

     1 vim /etc/exports 2 3 anonuid=xxx,anongid=xxx #<-xxx值: uid及gid 

     

    此笔记是本人学习摘记整理而成,此为初稿(尚有诸多不完善之处),原创作品允许转载,转载时请务必以超链接形式标明文章原始出处,作者信息和本声明,否则将追究法律责任。http://www.cnblogs.com/bananaaa/

  • 相关阅读:
    提交订单的时候,实现拦截,登录成功后跳转回之前的页面;使用redis生成指定起始位置的id
    iOS Outlets Referencing Outlets
    iOS 常用控件 参数
    iOS UIImageView设置为圆形
    iOS Xcode个人常用插件
    iOS Xcode注释的几种使用方法
    MFC MSBDutyTable下载地址
    MFC HTTP访问URL
    MFC 程序以管理员权限运行
    MFC 打开文件夹选择框并获取文件夹路径
  • 原文地址:https://www.cnblogs.com/bananaaa/p/7825171.html
Copyright © 2020-2023  润新知