LNMP环境由以下几个部分组成:
Linux + Nginx + MySQL/Mariadb + PHP
Nginx: 是一个WEB服务器,提供HTTP服务的。
MySQL/MariaDB: 是一个关系型数据,用来存数据的(用户名、密码、文章内容)
PHP:是一个编程语言,常用来做网站(qq.com baidu.com google.com ask.apelearn.com)
Nginx是一个WEB服务器,所以用户首先访问到的就是Nginx(静态的请求,会处理图片、js、css,
接收php的请求,但是不处理)把php的请求转给后面的php-fpm
php-fpm 会处理php相关的请求(叫做动态的请求)
动态、静态
所谓静态,指的是Nginx可以直接处理的图片、js、css、视频、音频、flash等等
所谓动态,指的是这些请求需要和数据库打交道。比如,用户登录过程,比如查看一篇文章,或者写一篇文章
MariaDB是MySQL的一个分支
为什么用MariaDB而不用 MySQL,因为 MySQL被收购了2次,先是被 SUN收购,然后 SUN又被Oracle facebook收购,Oracle是专门做商业的收费的关系型数据库,所以将来
开源的MySQL可能会闭源,收费。很多大型企业都放弃了使用MySQL改用MariaDB
MariaDB的维基百科: https://zh.wikipedia.org/wiki/MariaDB#cite_note-103_release-21
官网 https://mariadb.org/
下载:
1,cd /usr/local/src/
进入/usr/local/src/目录
2,wget http://mirrors.neusoft.edu.cn/mariadb//mariadb-10.3.11/bintar-linux-x86_64/mariadb-10.3.11-linux-x86_64.tar.gz
下载MariaDB包
3,tar zxf mariadb-10.3.11-linux-x86_64.tar.gz
解压
4,mv mariadb-10.3.11-linux-x86_64 /usr/local/mysql
把mariadb-10.3.11-linux-x86_64这个目录移动并改名成/usr/local/mysql目录
ls /usr/local/mysql
查看确认一下/usr/local/mysql这个目录里面的文件对不对
5,cd /usr/local/mysql
进入/usr/local/mysql这个目录
less INSTALL-BINARY
查看帮助文档,看安装步骤:
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
6,mkdir -p /data/mysql
同时创建data和mysql目录(-p级联创建)
7,useradd -M -s /sbin/nologin mysql
创建一个mysql用户(-M不需要创建家目录,-s /sbin/nologin不登录仅仅只是作为一个服务用户)
grep mysql /etc/passwd
用grep查看刚刚创建的mysql用户
mysql这个用户没有家目录所以/home/mysql是红色的,后面/sbin/nologin不能登录(如果显示/bin/bash就表示可以登录的)
8,chown -R mysql:mysql /data/mysql
指定/data/mysql目录的属主、属组
9,./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
生成一个库
报错了:
如何验证一条命令是否正常?
敲完这条命令之后,马上运行 echo $?
,看其输出是否是0,如果是非0说明你这个命令有错误。
如下图示结果是1,表示上一条命令出错了
错误:
error while loading shared libraries: libaio.so.1: cannot open shared object file:
No such file or directory
解决:
10,yum install -y libaio libaio-devel
安装libaio libaio-devel这个包
安装完libaio libaio-devel包之后再去执行
11,./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
生成一个库,然后再执行echo $?此时刚生成库的命令完成了
ls /data/mysql/
此时查看到/data/mysql/目录中生成了很多文件,就是咱们的mysql库了
接下来拷贝启动脚本
12,cp support-files/mysql.server /etc/init.d/mysqld
编辑启动脚本/etc/init.d/mysqld
13,vi /etc/init.d/mysqld
定义:
basedir=/usr/local/mysql
datadir=/data/mysql
14,CentOS6: chkconfig --list
//列出系统所有的服务 这里用这个
CentOS7: systemctl list-unit-files
空格键继续往下翻,q键退出
15,chkconfig --add mysqld
//增加服务到列表,前提是mysqld文件需要在/etc/init.d/下,并且权限755,如下图:
16,chkconfig mysqld on
//让其开机启动 (chkconfig mysqld off,会把2、3、4、5全部关闭)
17,/etc/init.d/mysqld start
或者 service mysqld start
启动mysql服务
报错了,没有这个文件,目录不对
报错是因为没有修改这个配置文件
18,vi /etc/my.cnf
定义:
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mariadb.log
pid-file=/data/mysql/mariadb.pid
19,service mysqld start
再次启动mysql服务
此时查看到mysql服务正式启动起来了
查看服务: ps aux |grep mysql
查看监听端口:netstat -lnp
//看是否有3306