LAMP架构介绍

LAMP架构介绍

LAMP是 linux Apache MySQL PHP的简写,即把Apache MySQL PHP 安装在linux系统上,组成一个环境来运行PHP网站。这里的Apache是httpd服务。这些可以安装在一个机器上,也可以安装在多台机器上,但是httpd和PHP安装在一台机器上(php作为httpd的一个模块存在的。 他们两者必须要在一起,才能实现效果)。

httpd,MySQL,PHP三者如何工作
LAMP架构介绍_第1张图片

静态,就是直接由webserver处理的请求,比如图片,js,css等,而动态的是需要和数据库打交道的请求,比如你现在访问ask.apelearn.com,登录用户,发帖子,看帖子,这些都是需要和数据库打交道的。这样的就是动态。

LAMP架构介绍_第2张图片

安装MySQL步骤:

LAMP架构介绍_第3张图片

安装时在那个目录下操作很重要,决定着你能否安装成功。

下载MySQL到指定目录下(/usr/local/src).

[root@shuai-01 ~]# cd /usr/local/src/
[root@shuai-01 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

解压包:

[root@shuai-01 local]# tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

将解压的包移动并重命名为/usr/local/mysql

[root@shuai-01 local]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
[root@shuai-01 mysql]# ls
bin      data  include  man     mysql-test  scripts  sql-bench
COPYING  docs  lib      my.cnf  README      share    support-files

创建MySQL用户,创建/data/目录:

[root@shuai-01 local]# useradd mysql

[root@shuai-01 local]# mkdir /data/

安装MySQL,指定用户,指定目录:

[root@shuai-01 local]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

这时如果出现错误,如下图:

这里写图片描述

少了一个模块,模块名字dumper,少什么安装什么。

搜索模块包名:

[root@shuai-01 ~]yum list |grep perl |grep -i dumper
perl-Data-Dumper.x86_64                 2.145-3.el7                    @base    
perl-XML-Dumper.noarch                  0.81-17.el7                    @base    
perl-Data-Dumper-Concise.noarch         2.020-6.el7                    epel     
perl-Data-Dumper-Names.noarch           0.03-17.el7                    epel  

搜出来四个,安装完一个包后再安装MySQL,还出错,安装下一个包,四个都安装完肯定能安装MySQL。其实它是靠perl-Data-Dumper.x86_64这个包。

安装这个包:

[root@shuai-01 ~]# yum install -y perl-Data-Dumper

错误2:./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

yum -y install libaio-devel

安装完成后就能安装MySQL了。

[root@shuai-01 ~]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

安装完成后,检验是否安装成功,没有错误。
安装MySQL后,立马执行echo $? 显示是0,就表示安装成功,没有问题。

[root@shuai-01 ~]# echo $?

其实,echo $? 是检测上一条命令是否执行成功

拷贝配置文件(/support-files/my-large.cnf):

[root@shuai-01 mysql]# cp support-files/my-large.cnf /etc/my.cnf

mysql的配置文件就叫/etc/my.cnf 就在/etc下。

也可能你的/etc/my.cnf这个文件本来就有了,被其他的包装的时候带过来了。

查看是哪个包安装的/etc/my.cnf

[root@shuai-01 mysql]# rpm -qf /etc/my.cnf
mariadb-libs-5.5.52-1.el7.x86_64

这个也可以使用,不过要改一下文件。

[mysqld]
datadir=/data/mysql
socket=/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

复制启动脚本并修改属性:

[root@shuai-01 mysql]# support-files/mysql.server /etc/init.d/mysqld

修改启动脚本:
basedir=/usr/local/mysql
datadir=/data/mysql

# If you change base dir, you must also change datadir. These may get
# overwritten by settings in the MySQL configuration files.

basedir=/usr/local/mysql
datadir=/data/mysql

# Default value, in seconds, afterwhich the script should timeout waiting
# for server start.

修改启动脚本文件权限:

[root@shuai-01 mysql]# chmod 755 /etc/init.d/mysqld

设置开机启动:

[root@shuai-01 ~]# chkconfig --add mysqld

也可以手动启动:

[root@shuai-01 ~]# service mysqld start

启动起来了:

[root@shuai-01 mysql]# ps aux |grep mysql
root       1535  0.0  0.1 115392  1688 ?        S    19:07   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/shuai-01.pid
mysql      1863  0.1 45.2 1300784 452380 ?      Sl   19:07   0:08 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/shuai-01.err --pid-file=/data/mysql/shuai-01.pid --socket=/tmp/mysql.sock
root       3473  0.0  0.0 112680   976 pts/0    S+   21:00   0:00 grep --color=auto mysql

监听端口(3306):

[root@shuai-01 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      1516/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2168/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1863/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      1516/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      2168/master  

如果没有启动脚本,可以用命令行启动:

命令行,指定配置文件路径,指定用户,指定/datadir 加&丢入后台。

[root@shuai-01 mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
[2] 3723
[root@shuai-01 mysql]# 171214 21:10:07 mysqld_safe Logging to '/data/mysql/shuai-01.err'.
171214 21:10:07 mysqld_safe Starting mysqld daemon with databases from /data/mysql

[root@shuai-01 mysql]# !ps
ps aux |grep mysql
root       3545  0.0  0.1 113264  1612 pts/0    T    21:08   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
mysql      3670 11.1  0.0      0     0 pts/0    Z    21:08   0:20 [mysqld] 
root       3723  0.0  0.1 113264  1612 pts/0    S    21:10   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
mysql      3848  1.6 45.1 1300788 451364 pts/0  Sl   21:10   0:01 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/shuai-01.err --pid-file=/data/mysql/shuai-01.pid --socket=/tmpmysql.sock
root       3872  0.0  0.0 112676   976 pts/0    R+   21:11   0:00 grep --color=auto mysql

关闭时就只能killall:

[root@shuai-01 mysql]# killall mysqld

killall会先停止读写操作,把已有的写完后,就杀死MySQL服务。
而kill -9 pid 会啥都不管,直接杀掉进程。这样做很可能导致数据的丢失甚至损坏表

MySQL有两个引擎:innodb (小), myisam(大)

你可能感兴趣的:(linux运维)