三十七、LAMP架构、MySQL-MariaDB介绍、MySQL安装、
一、LAMP架构
LAMP=Linux+Apache(httpd)+MySQL+PHP
即把Apache、MySQL、PHP安装在Linux上,组成一个环境来运行PHP的脚本语言,通常是网站。
Linux:操作系统。centos、乌班图就是Linux操作系统。
Apache:提供外部服务的软件,真名叫httpd,常用的web服务软件。
MySQL:数据库软件。存的不是图片文件那些,存的是数据、字符串。
PHP:脚本语言。和shell类似,但比shell复杂。通常以做网站为主。
可以Apache+PHP安装在一台机器上,MySQL安装在另一台机器上;也 可以三个都安装在一台机器上,但是Apache和PHP需要装在同一台机器上,因为PHP是作为Apache的一个模块存在,它们必须安装在一起。
Apache不能和MySQL打交道,只能通过PHP模块交换数据,Apache再交给用户。这个取数据的行为叫做“动态请求”。
动态请求,解析:比如登录一个网站,输入用户名和密码,然后Apache去数据库比对,此时就是通过PHP和MySQL打交道比对数据,先查到数据库里你的密码是什么,然后PHP再对比,然后Apache再反馈给你一个登录状态。
静态文件,解析:比如网站内的logo,也是去Apache请求,这个logo是存在Linux服务器上的一个目录下,拿到图片然后反馈给用户。该过程并没有和MySQL打交道。
二、MySQL-MariaDB介绍
MySQL:一个关系型数据库,由mysql ab公司开发,2008年被sun公司收购(10亿刀),2009年被Oracle公司收购(74亿刀)。
MySQL官网:https://www.mysql.com
MariaDB为MySQL的一个分支,官网https://mariadb.com
MariaDB主要由SkySQL公司(现更名为MariaDB公司)维护,SkySQL公司由MYSQL原作者带领大部分原班人马创立。
MariaDB5.5版本对应MySQL的5.5,MariaDB10.0对应MySQL的5.6。
Community社区版;Enterprise企业版;
GA(Generally Available)通用版,生产环境中用;
DMR(Development Milestone Release)开发里程碑发布版;
RC(Release Candidate)发行候选版本;
Beta开放测试版本;Alpha内部测试版本。
三、MySQL安装
MySQL的常用安装包:rpm、源码、二进制免编译。
二进制免编译包的好处:不用花太多时间配置编译,可以直接用。可以指定安装路径,rpm包不支持。
如果要追求性能,就自己编译,若工作中无特殊要求,就安装这种二进制免编译的包就可以了。
# cd /usr/local/src
5.6_64位二进制包:http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
# tar zvxf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
# cd /usr/local/mysql
# useradd mysql
# mkdir /data/ 存放mysql的数据,ls可以查看到有这个目录,就可以省略这步了。
# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper 初始化,实际上就是为了生成/data/mysql这个目录。这个就是mysql的数据库目录,就好比keepass的存密码的数据库一样。此时提示少了一个模块,模块名叫Dumper。
解决思路:当少了包或者模块,又不知道模块的名字,先模糊搜索一下:# yum list |grep perl |grep -i dumper,不知道dumper是大写还是小写,就加-i不区分大小写,此方法不一定行得通但要试一下,如果行不通,就把这一段到www.bing.com、www.google.com(谷歌打不开)、http://coderschool.cn/1853.html(谷歌的镜像,可以到这里面的网站里搜索)
# 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
此时搜出来四个,如果不知道哪一个,就一个个都试一下,此处需要安装的第1个。
# yum install -y perl-Data-Dumper.x86_64
# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql 再进行初始化
当你不知道这步有没有执行成功时,第一种方法,看有没有两个ok,第二种,echo $?(必须是在刚敲完上面的那条命令时随后就输,对了就是0)
/usr/local/mysql/support-files/my-default.cnf 模板配置文件
# cp support-files/my-default.cnf /etc/my.cnf 实际上/etc/下有这个my.cnf,这是centos7默认安装的,可以使用,但是要改一下配置。
# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql 修改为/data/mysql
socket=/tmp/mysql.sock 修改为/tmp/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log 注释掉,没什么用
#pid-file=/var/run/mariadb/mariadb.pid 注释掉,没什么用
#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d
# cp support-files/mysql.server /etc/init.d/mysqld 把启动脚本模板拷贝过去
自定义启动脚本,第一步就是放到/etc/init.d/下,然后再配置。
# vim /etc/init.d/mysqld 按下方向键找到下面两项
basedir=/usr/local/mysql 设置base地址
datadir=/data/mysql 设置数据库目录
其他不需要修改,改完这两项保存即可。
# chmod 755 /etc/init.d/mysqld 此处因为它默认是755,所以不用修改。
# chkconfig --add mysqld 如果想让它开机启动,就把它放到系统服务列表里去。
# chkconfig --list 可以查看到
同样也可以用命令让它启动:/etc/init.d/mysqld start、service mysqld start
假如没有把启动的脚本或者没有放到/etc/init.d/下,可以通过下例方法去启动:
用命令行的方式启动
# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
--defaults-file=/etc/my.cnf 指定配置文件所在的路径
如何停止这个mysql的服务:
# /etc/init.d/mysqld stop
如果以命令行开启的,就只能# killall mysqld
killall:杀进程的命令,更安全,比如在实时的读写数据,写入的数据保存在内存,还没缓存到磁盘里去,killall会先停止当前的操作,等数据全写到磁盘里去了再杀死这个进程。
经验分享:如果mysqld的进程杀不死,ps还有进程,说明数据量很大,还在慢慢的写入磁盘,此时不要用kill -9去杀进程,否则可能会丢数据和损坏你的表,慢慢等就可以了。
关于mysql有两个常用的引擎:innodb(存储量大,和Oracle类似)、myisam(存储量比较小)