1. LAMP架构介绍
LAMP是Linux Apache MySQL PHP的简写,即把Apache、MySQL以及PHP安装在Linux系统上。组成一个环境来运行PHP的脚本语言,通常是网站。Apache是最常用的Web服务软件,MySQL是比较小型的数据库软件。
可以把Apache和PHP安装在一台机器上,而把MySQL安装在另外一台机器上,也可以把它们三个安装在同一台机器上,但是Apache和PHP必须要在同一台机器上,这是因为PHP是Apache的一个模块存在的,它们两个必须在一起,参见下图:
静态请求:访问标准的静态网页,即HTML文件,可以包含文本、图片、声音、flash动画等;
动态请求:根据用户发出的不同请求,在数据库调取数据,为其提供个性化的网页。
2. MySQL和Mariadb
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。(注:摘自百度百科)
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。(注:摘自百度百科)
mariadb的5.5版本对应MySQL的5.5版本, 而mariadb的10.0版本对应MySQL的5.6版本。
常用的软件版本:
Community 社区版本,Enterprise 企业版,GA(Generally Available)指通用版本,在生产环境中用的;DMR(Development Milestone Release)开发里程碑发布版,RC(Release Candidate)发行候选版本,Beta开放测试版本,Alpha内部测试版本。
3. 安装MySQL
安装MySQL一般有常见的这几种方法:rpm包、源码、免编译二进制包。
源码包都是可以更改的C或者C++语言编写的源码文件,而免编译的二进制包就是已经编译过的文件再打包后提供下载使用,目前常用的是5.6及以上版本。
根据安装的操作系统选择合适的版本进行下载,一般将其放在/usr/local/src目录下,这里我下载的是5.6版本的免编译二进制包;
[root@yuioplvlinux-128 ~]# cd /usr/local/src/ [root@yuioplvlinux-128 src]# ls mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
使用命令“tar zxvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz ”解压;
请解压后的目录移动至/usr/local/mysql下;
[root@yuioplvlinux-128 src]# mv mysql-5.6.40-linux-glibc2.12-x86_64 /usr/local/mysql [root@yuioplvlinux-128 src]# cd /usr/local/mysql/ [root@yuioplvlinux-128 mysql]# ls bin COPYING data docs include lib man mysql-test README scripts share sql-bench support-files [root@yuioplvlinux-128 mysql]# useradd mysql #建立mysql用户
查看该目录下是否存在data目录,没有该目录需要去创建。
使用命令“yum install -y perl-Data-Dumper”安装perl-Data-Dumper包,否则会提示错误;
[root@yuioplvlinux-128 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql #初始化 FATAL ERROR: The parent directory for the data directory '/data/mysql' does not exist. If that path was really intended, please create that directory path and then restart this script. If some other path was intended, please use the correct path when restarting this script.
可以看到提示文件夹不存在,使用绝对路径即可;
[root@yuioplvlinux-128 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
--user表示定义数据库的以哪个用户的身份在运行,--datddir表示定义数据库的安装目录;
执行结束后,使用“echo $?”查看是否执行成功,为0则表示成功,为1则表示失败;
[root@yuioplvlinux-128 mysql]# echo $? 0
复制配置文件,因为系统默认就要/etc/my.cnf,所以会提示是否覆盖;
[root@yuioplvlinux-128 mysql]# ls support-files/my-default.cnf support-files/my-default.cnf [root@yuioplvlinux-128 mysql]# cp support-files/my-default.cnf /etc/my.cnf cp:是否覆盖"/etc/my.cnf"? y
编辑/etc/my.cnf,设置basedir和datadir;
[mysqld] # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # These are commonly set, remove the # and set as required. basedir = /usr/local/mysql datadir = /usr/local/mysql/data/mysql # port = ..... # server_id = ..... # socket = ..... # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M
basedir是MySQL包所在的路径;datadir是定义的存放数据的地方,默认情况下,错误日志也会在这个目录下面;port定义MySQL服务监听的端口,默认为3306;server_id定义该MySQL服务的ID号,这个参数用于在做主从配置;socket定义MySQL服务监听的套接字地址。
复制启动脚本文件,同样的,设置basedir和datadir;
[root@yuioplvlinux-128 mysql]# ls bin COPYING data docs include lib man my.cnf my-new.cnf mysql-test README scripts share sql-bench support-files [root@yuioplvlinux-128 mysql]# cp support-files/mysql.server /etc/init.d/mysqld [root@yuioplvlinux-128 mysql]# vim /etc/init.d/mysqld [root@yuioplvlinux-128 mysql]# ll /etc/init.d/mysqld #其权限为755 -rwxr-xr-x 1 root root 10608 5月 24 02:45 /etc/init.d/mysqld
把启动脚本加入系统服务项,并查看启动状态;
[root@yuioplvlinux-128 mysql]# chkconfig --add mysqld [root@yuioplvlinux-128 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:关 [root@yuioplvlinux-128 mysql]# service mysqld start Starting MySQL.Logging to '/usr/local/mysql/data/mysql/yuioplvlinux-128.err'. ................ SUCCESS!
[root@yuioplvlinux-128 mysql]# ps aux | grep mysqld root 1180 0.0 0.1 11772 1592 pts/0 S 02:48 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data/mysql --pid-file=/usr/local/mysql/data/mysql/yuioplvlinux-128.pid mysql 1315 10.4 44.6 1302680 449776 pts/0 Sl 02:48 0:15 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=yuioplvlinux-128.err --pid-file=/usr/local/mysql/data/mysql/yuioplvlinux-128.pid root 1371 0.0 0.0 112676 984 pts/0 R+ 02:50 0:00 grep --color=auto mysqld [root@yuioplvlinux-128 mysql]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 770/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 853/master tcp6 0 0 :::22 :::* LISTEN 770/sshd tcp6 0 0 ::1:25 :::* LISTEN 853/master tcp6 0 0 :::3306 :::* LISTEN 1315/mysqld也可以使用命令行的方式启动,如下:
/usr/local/mysql/bin/mysqld_safe --default-file=/etc/my.cnf --user=mysql --datadir=/usr/local/mysql/data/mysql/
关闭mysqld服务,使用kill命令,其中“killall mysqld”表示关闭所有的mysqld服务;
需要注意的是,kill -9(无条件终止)慎用,有可能将正在传输数据的服务关闭,从而造成数据丢失。