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