11.1 LAMP架构介绍



LAMP=Linux+Apache(hettpd)+MySQL+PHP

Linux操作系统

Apache提供web的服务软件,真正名字叫httpd

MySQL存储软件,数据、字符串等等

PHP脚本语言,和shell类似,但比shell复杂。以做网站为主。 

PHP网站(Google、淘宝、百度、51cto博客、猿课论坛) 

三个角色可以在一台机器、也可以分开

(httpd和PHP要在一起,MySQL可以单独一台机器)

LAMP架构介绍 


过程:

PHP与Apache是在一起的,因为PHP是以模块的形式和APACHE结合在一起的。

但是Apache不能直接与MySQL相互打交道,他只能通过PHP模块去MySQL里面拿数据。

拿到数据后,PHP会把结果,反馈给Apache,Apache再把数据反馈给用户。


PHP与MySQL相连取数据的行为称为动态请求。

例如,登录猿课论坛的操作为例子。

登录网站(ask.apelearn.com),键入账号密码点击登录进行认证,登录这个请求已经交给Apache,然后Apache去检查此请求是动态还是静态的。因为登录这个行为需要把登录的信息提交给Apache,Apache拿到账号密码之后会进入数据库进行匹配,看看输入的对还是错(此过程是运用了PHP与MySQL打交道的过程,首先在MySQL查到用户的账号密码,然后PHP进行对比,如果正确,Apache会把登录状态反馈给用户,这就是动态请求)。


静态请求

访问网站,网站显示的logo,这个logo的显示也是通过Apache去请求的,Apache拿到logo图片发现该图片不存在MySQL里面,直接在静态文件里面(Linux服务器上某一个目录)拿到了这个图片的文件,拿到后直接反馈给用户,这个过程并没有与MySQL打交道,这就是静态请求。

11.2 MySQL_MariaDB介绍


Oracle

也是同样做数据库的,这个数据库比较大型,像银行,金融的一些企业。

Oracle会专门装在一台小型机上,这台小型机会安装Unix。这台小型机是太超级计算机(几百个CPU,上T的内存等等超级配置)


 MySQL官网https://www.mysql.com  最新版本5.7GA/8.0DMR


MySQL5.6变化比较大,5.7性能上有很大提升

 

Mariadb为MySQL的一个分支,官网https://mariadb.com/最新版本10.2

 

MariaDB主要由SkySQL公司(现更名为MariaDB公司)维护,SkySQL公司由MySQL原作者带领

部分原班人马创立.

MySQL原作者带领大部分原班人马创立.

 

Mariadb5.5版本对应MySQL的5.5,10.0对应MySQL5.6

 

Community 社区版本,Enterprise 企业版,

GA(Generally Available)指通用版本,在生产环境中用的,一般使用此项

DMR(Development Milestone Release)开发里程碑发布版,

RC(Release Candidate)发行候选版本,

Beta开放测试版本,

Alpha内部测试版本

11.3-11.5 MySQL安装


MySQL的几个常用安装包:rpm、源码、二进制免编译


先进入目录 /usr/local/src(以后把所有软件包都放在这个目录下面)

cd /usr/local/src


下载MySQL 5.6安装包,一般都下载x64 

[root@localhost src]# wget  http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

解压MySQL的安装包

[root@localhost src]# tar zxf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

把解压完后的mysql的目录移动并改名 /usr/local/mysql

[root@localhost src]# mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql

进入目录

[root@localhost src]# cd /usr/local/mysql/

建立MySQL用户,因为启动MySQL需要该用户。

[root@localhost mysql]# useradd -s /sbin/nologin mysql

建立datadir

[root@localhost mysql]# mkdir -p /data/mysql

更改权限

[root@localhost mysql]# chown -R mysql:mysql /data/mysql

--user指定用户,--datadir指定目录,

[root@localhost mysql-5.6.39-linux-glibc2.12-x86_64]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

如果发现安装出错,可以先利用grep查找相关词的安装包,如果拿不准安装哪个包的时候可以全部安装。大意就是安装一个后再测试,一个一个来。

(其实第一个就是我们要安装的包。)

[root@localhost mysql]# yum list |grep perl |grep -i Dumper 
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
perl-Data-Dumper.x86_64                     2.145-3.el7                base     
perl-XML-Dumper.noarch                      0.81-17.el7                base
[root@localhost mysql-5.6.39-linux-glibc2.12-x86_64]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
-bash: ./scripts/mysql_install_db: /usr/bin/perl: 坏的解释器: 没有那个文件或目录
[root@localhost mysql-5.6.39-linux-glibc2.12-x86_64]# ^C
[root@localhost mysql-5.6.39-linux-glibc2.12-x86_64]# ./mysql_install_db.sh
-bash: ./mysql_install_db.sh: 没有那个文件或目录
[root@localhost mysql-5.6.39-linux-glibc2.12-x86_64]# yum -y install perl perl-devel
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务


安装

perl-Module-Install

完成后,再测试。

[root@localhost mysql]# yum install -y perl-Module-Install
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.cn99.com
 * extras: mirrors.cn99.com
 * updates: mirrors.cn99.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 perl-Module-Install.noarch.0.1.06-4.el7 将被 安装
--> 正在处理依赖关系 perl(PAR::Dist) >= 0.29,它被软件包 perl-Module-Install-1.06-4.el7.noarch 需要
--> 正在处理依赖关系 perl(YAML::Tiny),它被软件包 perl-Module-Install-1.06-4.el7.noarch 需要
--> 正在处理依赖关系 perl(Module::ScanDeps),它被软件包 perl-Module-Install-1.06-4.el7.noarch 需要
--> 正在处理依赖关系 perl(Module::CoreList),它被软件包 perl-Module-Install-1.06-4.el7.noarch 需要
--> 正在处理依赖关系 perl(Module::Build),它被软件包 perl-Module-Install-1.06-4.el7.noarch 需要
--> 正在处理依赖关系 perl(LWP::UserAgent),它被软件包 perl-Module-Install-1.06-4.el7.noarch 需要
--> 正在处理依赖关系 perl(File::Remove),它被软件包 perl-Module-Install-1.06-4.el7.noarch 需要
--> 正在处理依赖关系 perl(ExtUtils::ParseXS),它被软件包 perl-Module-Install-1.06-4.el7.noarch 需要
--> 正在处理依赖关系 perl(ExtUtils::Manifest),它被软件包 perl-Module-Install-1.06-4.el7.noarch 需要
--> 正在处理依赖关系 perl(ExtUtils::MakeMaker),它被软件包 perl-Module-Install-1.06-4.el7.noarch 需要
--> 正在处理依赖关系 perl(CPANPLUS::Backend),它被软件包 perl-Module-Install-1.06-4.el7.noarch 需要
--> 正在处理依赖关系 perl(CPAN),它被软件包 perl-Module-Install-1.06-4.el7.noarch 需要

利用echo $?检查执行结果是否成功 0成功 1以上失败

[root@localhost mysql]# echo $?
0

拷贝mysql的配置文件并改名my.cnf(mysql默认识别此命名)

[root@localhost mysql]# cp support-files/my-default.cnf  /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
[root@localhost mysql]# ls /etc/my.cnf
/etc/my.cnf

如果不复制support-files/my-default.cnf的话,就直接修改my.cnf里面datadir与socket的路径

datadir=/data/mysql

socket=/tmp/mysql.sock

vi /etc/my.cnf
# These are commonly set, remove the # and set as required.
 basedir =  /usr/local/mysql
 datadir =  /data/mysql
 port = 3306
 server_id = 128
 socket = /tmp/mysql.sock

一定要注释掉日志报错与pid报错,因为他们的目录不存在,会产生报错。

复制脚本文件到指定目录并改名/etc/init.d/mysqld

[root@localhost mysql]# ls /etc/init.d/mysqld
/etc/init.d/mysqld
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
 chmod 755 /etc/init.d/mysqld
[root@localhost mysql]# vi /etc/init.d/mysqld

把mysqld加入开机服务列表

[root@localhost mysql]# chkconfig --add mysqld


[root@localhost mysql]# chkconfig mysqld on
[root@localhost mysql]# service mysqld start
Starting MySQL SUCCESS! 
[root@localhost mysql]# 180826 20:11:48 mysqld_safe A mysqld process already exists
[root@localhost mysql]# ps aux |grep mysqld
root       6185  0.0  0.1  11816  1616 pts/0    S    19:59   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/localhost.localdomain.pid
mysql      6399  0.0 45.3 1304816 452708 pts/0  Sl   19:59   0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=localhost.localdomain.err --pid-file=/data/mysql/localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306
root       7028  0.0  0.0 112720   984 pts/0    S+   20:12   0:00 grep --color=auto mysqld
[root@localhost mysql]# netstat -lnp|grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      6399/mysqld
[root@localhost mysql]# yum install -y net-tools
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 net-tools.x86_64.0.2.0-0.22.20131004git.el7 将被 安装
--> 解决依赖关系完成

上例为安装netstat命令

安装apache

[root@localhost mysql]# cd /usr/local/src
[root@localhost src]# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.25.tar.gz
[root@localhost src]# wget  http://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz
[root@localhost src]# wget  http://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.bz2

分别解压

tar zxvf httpd-2.4.33.tar.gztar jxvf apr-util-1.6.1.tar.bz2 
tar zxvf apr-1.6.3.tar.gz

编译时报错

configure: error: no acceptable C compiler found in $PATH
yum -y install gcc
[root@localhost apr-1.6.3]# ./configure --prefix=/usr/local/apr
[root@localhost apr-1.6.3]# echo $?
0
make && make install


然后安装apr-util 1.6.1

[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking for working mkdir -p... yes
APR-util Version: 1.6.1
checking for chosen layout... apr-util
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
Applying apr-util hints file rules for x86_64-pc-linux-gnu
checking for APR... configure: error: the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file.

上面是报错信息

解决方法:

缺少expat.h文件,yum安装:#yum install -y expat-devel;安装完成后,重新执行上面的命令!

安装httpd-2.4


安装期间,出现报错信息,大致内容就是缺了某个包。

利用#yum list 去追踪导致错误信息的包

 # 安装libxml2-devel包
[root@localhost httpd-2.4.25]#   yum install -y libxml2-devel