初识LAMP
LAMP是工作中常用的web部署架构之一。它由linux、apache(httpd)、mysql和php组成。其各个部件之间运作的关系如下图所示:
用户通过游览器访问服务端的apache(httpd)服务,如果访问的是静态数据,就直接提取。如果访问的数据来自mysql,那么就需要调用php模块与mysql建立关系读取数据。
安装Mysql
Mysql的安装方式主要有3种,分别为rpm、源码和二进制免编。译一般我们平时安装MySQL都是源码包安装的,但是由于它的编译需要很长的时间,建议安装二进制免编译包。可以到MySQL官方网站去下载,也可以其他镜像网站下载。
1、下载安装文件[root@juispan ~]# cd /usr/local/src
[root@juispan src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
--2017-07-21 06:40:22-- http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
正在解析主机 mirrors.sohu.com (mirrors.sohu.com)... 221.236.12.140
正在连接 mirrors.sohu.com (mirrors.sohu.com)|221.236.12.140|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:314581668 (300M) [application/octet-stream]
正在保存至: “mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz”
100%[======================================>] 314,581,668 555KB/s 用时 9m 36s
2017-07-21 06:49:59 (533 KB/s) - 已保存 “mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz” [314581668/314581668])
2、解压并移动[root@juispan src]# tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
mysql-5.6.35-linux-glibc2.5-x86_64/README
mysql-5.6.35-linux-glibc2.5-x86_64/data/test/db.opt
mysql-5.6.35-linux-glibc2.5-x86_64/lib/libmysqlclient.a
......
[root@juispan src]# mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
3、创建用户与文件夹[root@juispan local]# cd mysql/
[root@juispan mysql]# ls
bin data include man README share support-files
COPYING docs lib mysql-test scripts sql-bench
[root@juispan mysql]# useradd mysql
[root@juispan mysql]# mkdir /data/
4、初始化数据库[root@juispan mysql]# ./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
运行出错,需要安装perl和perl-Data-Dumper,使用yum安装上,重新初始化。[root@juispan mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
运行出错,安装libaio和libaio-dev相关的包,重新初始化。[root@juispan mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
Installing MySQL system tables...2017-07-21 07:17:04 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-07-21 07:17:04 0 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
2017-07-21 07:17:04 0 [Note] ./bin/mysqld (mysqld 5.6.35) starting as process 9822 ...
2017-07-21 07:17:04 9822 [Note] InnoDB: Using atomics to ref count buffer pool pages
2017-07-21 07:17:04 9822 [Note] InnoDB: The InnoDB memory heap is disabled
2017-07-21 07:17:04 9822 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2017-07-21 07:17:04 9822 [Note] InnoDB: Memory barrier is not used
......
[root@juispan mysql]# echo $?
0
通过查看运行过程中如果有2个“OK”,或者结束后使用“echo $?”命令查看为0,均表示运行正常。
5、拷贝配置文件[root@juispan mysql]# cp support-files/my-default.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
[root@juispan mysql]# vi /etc/my.cnf ##暂无需编辑
6、拷贝启动脚本文件[root@juispan mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@juispan mysql]# vi /etc/init.d/mysqld
......
basedir=/usr/local/mysql
datadir=/data/mysql
......
7、启动Mysql[root@juispan mysql]# chkconfig --add mysqld
[root@juispan mysql]# chkconfig --list | grep mysqld
注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。
如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。
欲查看对特定 target 启用的服务请执行
'systemctl list-dependencies [target]'。
mysqld 0:关 1:关 2:开 3:开 4:开 5:开 6:关
[root@juispan mysql]# service mysqld start
Starting MySQL.Logging to '/data/mysql/juispan.err'.
.. SUCCESS!
[root@juispan mysql]# netstat -lnpt
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 1096/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1753/master
tcp6 0 0 :::3306 :::* LISTEN 10111/mysqld
tcp6 0 0 :::22 :::* LISTEN 1096/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1753/master
如果要关闭mysqld服务,可以采用killall mysqld或kill 命令。
如果mysql进程杀不死,说明正在处理的数据量大,如果强行kill会丢数据或损坏表。只能慢慢等待。