LAMP架构 MySQL/Mariadb 、Apache、PHP5、PHP7安装配置,Apache和PHP结合

本文详细介绍了如何在Linux环境中搭建LAMP架构,包括MySQL/Mariadb的安装、配置与初始化,Apache的安装与模块配置,以及PHP5和PHP7的编译与安装。文章特别强调了Apache与PHP结合时的模块配置,以及在安装过程中可能遇到的问题及其解决方案,如依赖库的安装和配置文件的修改。
摘要由CSDN通过智能技术生成

 

LAMP架构

  • Linux+Apache(httpd)+MySQL+PHP
  • 三个角色可以在一台机器上,也可以分开(Apache(httpd)+PHP必须要在一起)

MySQL/Mariadb介绍

  • MySQL最新版本5.7GA/8.0DMR
  • MySQL5.6变化比较大,5.7性能上有很大提升
  • Mariadb为MySQL的一个分支,官网,最新版本10.2
  • MariaDB主要由SkySQL公司(现更名为MariaDB公司)维护,SkySQL公司由MySQL原作者带领大部分原班人马创立.
  • Mariadb5.5版本对应MySQL的5.5,Mariadb10.0对应MySQL5.6
  • Community 社区版本——>开源的版本,免费使用
  • Enterprise 企业版
  • GA(Generally Available)指通用版本,在生产环境中用的——>已经很稳定的版本,一般下载也是GA版本
  • DMR(Development Milestone Release)开发里程碑发布版
  • RC(Release Candidate)发行候选版本
  • Beta开放测试版本
  • Alpha内部测试版本

1、MySQL安装

  • MySQL的几个常用安装包:rpm、源码、二进制免编译
  1. cd /usr/local/src //切换到下载源码包的目录
[root@aminglinux ~]# cd /usr/local/src
  1. wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
[root@aminglinux src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
--2018-06-23 10:06:13--  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 23.2KB/s 用时 95m 35s

2018-06-23 11:41:53 (53.6 KB/s) - 已保存 “mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz” [314581668/314581668])
  1. tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz //解压
[root@aminglinux 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
mysql-5.6.35-linux-glibc2.5-x86_64/lib/libmysqlclient.so.18
mysql-5.6.35-linux-glibc2.5-x86_64/lib/libmysqlclient.so
  1. mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql //改名,并放到/usr/local/mysql
[root@aminglinux src]# mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
  1. cd /usr/local/mysql //进入到该目录下
[root@aminglinux src]# cd /usr/local/mysql
[root@aminglinux mysql]# ls
bin      data  include  man         README   share      support-files
COPYING  docs  lib      mysql-test  scripts  sql-bench
  1. useradd mysql //创建一个mysql用户
[root@aminglinux mysql]# useradd mysql
  1. mkdir /data/ //创建一个目录,是为了存放mysql的数据,把数据目录放到这个目录下
[root@aminglinux mysql]# mkdir /data/
  1. ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql //初始化,所谓初始化就是要生成/data/mysql ,因为mysql要想启动,首先要有一个自带的库,自带的库叫mysql
[root@aminglinux 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
  • 出现一个提示,缺少Dumper模块【从字面意义上分析,它是说 Perl modules,(因为这属于一个Perl脚本),所以在初始化的时候,依赖于Perl(Perl、python和PHP三种比较流行的三种脚本语言;)
  • 解决思路(思路,在缺少模块,缺少包,那就去安装,在安装的不知道包和模块的名称,就去模糊搜索;模糊搜索yum list |grep perl |grep -i dumper (-i 忽略大小写)】

8.1.安装Dumper包:yum list |grep perl |grep -i dumper

[root@aminglinux mysql]# yum list |grep perl |grep -i dumper
perl-Data-Dumper.x86_64                   2.145-3.el7                  base     
perl-Data-Dumper-Concise.noarch           2.020-6.el7                  epel     
perl-Data-Dumper-Names.noarch             0.03-17.el7                  epel     
perl-XML-Dumper.noarch 
[root@aminglinux mysql]# yum install -y perl-Data-Dumper.x86_64 实际上是安装perl-Data-Dumper.x86_64包
已加载插件:fastestmirror

重新初始化

[root@aminglinux mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
Installing MySQL system tables...2018-06-23 13:16:43 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
....
[root@aminglinux mysql]# echo $?检测是否安装成功
0

9.cp support-files/my-default.cnf /etc/my.cnf //拷贝配置文件到/etc/并改名my.cnf

[root@aminglinux mysql]# ls support-files/
binary-configure  my-default.cnf       mysql-log-rotate
magic             mysqld_multi.server  mysql.server
[root@aminglinux mysql]# ls support-files/my-default.cnf  查看配置文件
support-files/my-default.cnf
[root@aminglinux mysql]# cp support-files/my-default.cnf /etc/my.cnf 拷贝配置文件到/etc/并改名my.cnf,确认覆盖
cp:是否覆盖"/etc/my.cnf"y

10.cp support-files/mysql.server /etc/init.d/mysqld //拷贝启动脚本到启动目录

[root@aminglinux mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@aminglinux mysql]# vi /etc/init.d/mysqld
  • 编辑定义vi /etc/init.d/mysqld // -定义basedir和datadir路径
basedir=/usr/local/mysql
 datadir=/data/mysql

11.权限变更:chmod 755 /etc/init.d/mysqld

  • 默认就是755权限
  • chkconfig --add mysqld //添加到系统服务使其开机启动
[root@aminglinux mysql]# chmod 755 /etc/init.d/mysqld^C
[root@aminglinux mysql]# ls -l /etc/init.d/mysqld
-rwxr-xr-x 1 root root 10903 623 13:40 /etc/init.d/mysqld
[root@aminglinux mysql]# chkconfig --add mysqld
[root@aminglinux 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:关
  • 也可以命令启动服务:/etc/init.d/mysqld start 或service mysqld start
[root@aminglinux mysql]# service mysqld start 启动服务
Starting MySQL.Logging to '/data/mysql/aminglinux.err'.
.............................................. SUCCESS! 
[root@aminglinux mysql]# ps aux |grep mysql 查看进程
root      1716  0.0  0.1  11772  1568 pts/0    S    13:49   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/aminglinux.pid
mysql     1824 61.5 44.5 973052 449492 pts/0   Sl   13:49   0:49 /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/aminglinux.err --pid-file=/data/mysql/aminglinux.pid
root      1947  0.0  0.0 112676   984 pts/0    S+   13:50   0:00 grep --color=auto mysq
[root@aminglinux mysql]# 
[root@aminglinux 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      1033/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1117/master         
tcp6       0      0 :::22                   :::*                    LISTEN      1033/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1117/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1824/mysqld

kill和killall区别

  • mysql在实时的读写数据,写的速度很快,有可能写入的数据保存在内存里(缓存中),如果这部分缓存并没有同步到磁盘里去,而直接去kill 掉,就意味着你的数据丢失,而使用killall 命令,则会先停止当前的写读操作,然后把没有完成写入到磁盘里的数据在慢慢写入到磁盘里去,直到写完之后才会把进程杀死。
  • 这就意味着如果将来有一天mysqld的进程始终杀不死,等待一分钟还是没有杀死,那说明你的数据量很大,它正在慢慢的写入到磁盘到磁盘里去,这个时候不要强制的使用 kill 9 杀进程,这样非常有可能丢数据,还会损坏你的表。

mysql常用的两种引擎

  • innodb引擎,比较大,和oracle类似
  • myisam引擎,存储空间、存储量都比较小

2.安装mariadb

1.cd /usr/local/src //切换到下载源码包的目录

[root@aminglinux ~]# cd /usr/local/src

2.wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz

[root@aminglinux src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
--2018-06-23 16:54:04--  https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
正在解析主机 downloads.mariadb.com (downloads.mariadb.com)... 51.255.94.155, 2001:41d0:1004:249b::
正在连接 downloads.mariadb.com (downloads.mariadb.com)|51.255.94.155|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:541295045 (516M) [application/octet-stream]
正在保存至: “mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz”

3.tar zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz

[root@aminglinux src]# tar zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz

4.mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb 解压的包移动到/usr/local下,并改名叫mariadb——>这里的改名,是为了之前安装mysql的名字有所区分

[root@aminglinux src]# mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb

5.cd /usr/local/mariadb 进入cd /usr/local/mariadb目录

[root@aminglinux ~]# cd /usr/local/mariadb
[root@aminglinux mariadb]#

6.创建mysql用户,创建data——>这里因为之前安装mysql的时候,已经创建过了所以不需要创建useradd mysql 7../scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb 初始化并定义路径basedir=/usr/local/mariadb

[root@aminglinux mariadb]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb
Installing MariaDB/MySQL system tables in '/data/mariadb' ...
OK
......
[root@aminglinux mariadb]# echo $? 检测命令
0

8.cp support-files/my-small.cnf /usr/local/mariadb/my.cnf 拷贝配置文件

[root@aminglinux mariadb]# cd /usr/local/mariadb/
[root@aminglinux mariadb]# ls support-files/
binary-configure        my-large.cnf         mysql-log-rotate  wsrep_notify
magic                   my-medium.cnf        mysql.server
my-huge.cnf             my-small.cnf         policy
my-innodb-heavy-4G.cnf  mysqld_multi.server  wsrep.cnf
  • 配置文件存放在/usr/local/mariadb/suport/files/目录下,会看到有很多配置文件
  • my-small.cnf、my-medium.cnf、my-large.cnf这三个配置文件区别在于 缓存的数值大小不同
  • 根据内存大小的不同,它可以给你指定合适的缓存,这样能够让你的mysql达到更高效的性能
  • 若是内存有几十个G,可以使用my-huge.cnf拷贝过去,然后根据实际的运行情况 ,去适当的调整参数;这里我们使用最小的my-small.cnf
[root@aminglinux mariadb]# vim support-files/my-small.cnf
# The MySQL server
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 240K
  • 拷贝文件到/usr/local/mariadb/my.cnf(mariadb这里就不放到/etc/my.cnf下了,因为这是mysql用的,这里为了区分到/usr/local/mariadb/my.cnf)
[root@aminglinux mariadb]# cp support-files/my-small.cnf /usr/local/mariadb/my.cnf
[root@aminglinux mariadb]#

9.编辑配置文件vim /usr/local/mariadb/my.cnf //定义basedir和datadir (这里面配置不用修改)

[root@aminglinux mariadb]# vim /usr/local/mariadb/my.cnf

10.拷贝启动脚本到/etc/init.d/mariadb并编辑:

  • cp support-files/mysql.server /etc/init.d/mariadb
  • vim /etc/init.d/mariadb //定义basedir、datadir、conf以及启动参数
[root@aminglinux mariadb]# cp support-files/mysql.server /etc/init.d/mariadb
[root@aminglinux mariadb]# vim /etc/init.d/mariadb
# If you change base dir, you must also change datadir. These may get
# overwritten by settings in the MySQL configuration files.

basedir=/usr/local/mariadb 定义basedir
datadir=/data/mariadb   定义datadir
conf=$basedir/my.cnf    自定义参数(配置文件在/etc下不用定义这个参数)

配置启动命令:在一般模式下,搜索 /start 启动命令

$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" "$@" &中,增加--defaults-file="$conf";
最后为 $bindir/mysqld_safe --defaults-file="$conf" --datadir="$datadir" --pid-file="$mysqld_pid_file_path" "$@" &

11.在启动前,先查看是否有mysql服务在启动;因前面安装有MySQL,并启了服务;所以要关掉

[root@aminglinux mariadb]# ps aux |grep mysql
root      1039  0.0  0.0 115388   596 ?        S    16:44   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/aminglinux.pid
mysql     1166  0.2 44.8 973052 452588 ?       Sl   16:44   0:48 /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/aminglinux.err --pid-file=/data/mysql/aminglinux.pid
root 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值