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@centos7-01 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
解压MySQL的安装包
[root@centos7-01 src]# tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
把解压完后的mysql的目录移动并改名 /usr/local/mysql
[root@centos7-01 src]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
[root@centos7-01 src]# cd !$
cd /usr/local/mysql
[root@centos7-01 mysql]# ls
bin COPYING data docs include lib man mysql-test README scripts share sql-bench support-files
进入目录
[root@centos7-01 mysql]# cd /usr/local/mysql/
建立MySQL用户,因为启动MySQL需要该用户。
[root@centos7-01 mysql]# useradd mysql
建立datadir
#mkdir -p /data/mysql
更改权限
# chown -R mysql:mysql /data/mysql
--user指定用户,--datedir指定目录,
[root@centos7-01 mysql]# ./scripts/mysql_install_db --user=mysql --datedir=/data/mysql
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
-*
如果发现安装出错,可以先利用grep查找相关词的安装包,如果拿不准安装哪个包的时候可以全部安装。大意就是安装一个后再测试,一个一个来。
(其实第一个就是我们要安装的包。)
[root@centos7-01 mysql]# yum list |grep perl |grep -i Dumper
perl-Data-Dumper.x86_64 2.145-3.el7 base
perl-Data-Dumper-Concise.noarch 2.020-6.el7 epel
perl-Data-Dumper-Names.noarch 0.03-17.el7 epel
perl-XML-Dumper.noarch 0.81-17.el7 base
[root@centos7-01 mysql]# yum install -y perl-Data-Dumper
安装 perl-Data-Dumper完成后,再测试。
[root@centos7-01 mysql]# ./scripts/mysql_install_db --user=mysql --datedir=/data/mysql
利用echo $?检查执行结果是否成功 0成功 1以上失败
[root@centos7-01 mysql]# echo $?
0
至此,初始化完成。
拷贝mysql的配置文件并改名my.cnf(mysql默认识别此命名)
cp support-files/my-default.cnf /etc/my.cnf
系统默认已经有/etc/my.cnf
[root@Centos7-01 mysql]# ls /etc/my.cnf
/etc/my.cnf
[root@Centos7-01 mysql]# rpm -qf /etc/my.cnf
mariadb-libs-5.5.56-2.el7.x86_64
如果不复制support-files/my-default.cnf的话,就直接修改my.cnf里面datadir与socket的路径
datadir=/data/mysql
socket=/tmp/mysql.sock
一定要注释掉日志报错与pid报错,因为他们的目录不存在,会产生报错。
复制脚本文件到指定目录并改名/etc/init.d/mysqld
#cp support-files/mysql.server /etc/init.d/mysqld
#vi /etc/init.d/mysqld
basedir=/usr/local/mysqlmysql的目录
datadir=/data/mysqlmysql data的目录
[root@Centos7-01 mysql]# chmod 755 /etc/init.d/mysqld
把mysqld加入开机服务列表
[root@Centos7-01 mysql]# chkconfig --add mysqld
[root@Centos7-01 mysql]# chkconfig --list
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
mysqld 0:关1:关2:开3:开4:开5:开6:关
netconsole 0:关1:关2:关3:关4:关5:关6:关
network 0:关1:关2:开3:开4:开5:开6:关
/etc/init.d/mysqld start启动服务,同样下面方法也是一样
[root@Centos7-01 mysql]# service mysqld start
Starting MySQL.Logging to '/data/mysql/Centos7-01.err'.
SUCCESS!
再检查进程与监听端口。
#ps aux |grep myslqd
#netstat -lntp
另一种方法启动服务,指定目标,更详细。
#/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --data/mysql &
停止服务利用killall mysqld (这种比较安全)
如果发现服务等了好久也停不了 不要用kill -9去杀 否则会导致数据丢失或损坏 这时候唯有等到结束为止。