以TP5.1为例,lamp环境下配置部署mysql读写分离
环境:
主服务器:192.168.72.232 系统 Centos7 localhost
从服务器:192.168.72.152 系统 Centos7 localhost
(以下为两台服务器mysql正确安装完毕)
首先下载TP5.1框架,然后配置config.php->database.php数据库配置文件,如下图所示,“服务器地址”,默认第一个是主服务器,后面是从服务器,如果用户名,密码,端口号不一样的话,要每个都按照顺序写上以“,”逗号分隔开,如果一样的话,可以只写一个如下图,数据库部署方式,选择“1”(分布式主从服务器),从服务器序号,可以不用配置。
配置mysql远程连接访问
增加远程访问权限
登录mysql
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
MariaDB [mysql]> grant all privileges on *.* to root@'%' identified by 'root' with grant option;
Query OK, 0 rows affected (0.03 sec)
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.01 sec)
说明:GRANT ALL PRIVILEGES ON . TO ‘账号’@’%’ IDENTIFIED BY ‘密码’ WITH
GRANT OPTION; //提权 flush privileges; //刷新
至此,看似配置已经结束了,但是在服务器上部署项目之后,一直无法访问,页面报错提示如下:
很显然,提示的问题是数据库无法连接访问,此刻,可以确定的是数据库,通过外部的navicat可以正常连接,也在外部phpstudy环境下部署了同样一套代码,没有任何的修改,数据库是可以正常连接访问的,只是在192.168.72.232主服务器本地部署就提示数据库无法连接访问,然后基本可以确定的是lamp环境中Apache在作祟,尝试着百度了“centos Apache无法解析mysql ip连接”
同一服务器上,使用php中mysql_connect连接MySQL数据库,只能localhost联结,无法通过IP访问(以GRANT ALL PRIVILEGES ON给权限了)。报错:Can’t connect to mysql server on ‘ip或域名’ (13),如果用命令行连接MySQL,则一切正常,
原来是Linux限制了httpd对外访问的权限。将其开启即可:
httpd访问网络配置httpd_can_network_connect
1、查看httpd_can_network_connect的值是否为off(例如:httpd_can_network_connect --> off)
getsebool -a | grep httpd_can_network_connect
结果如下
[root@localhost ~]# getsebool -a | grep httpd_can_network_connect
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
2、执行如下命令打开:
Linux命令,临时配置,重启后失效
setsebool httpd_can_network_connect=1
(永久配置)写入配置文件的命令,重启后保留
setsebool -P httpd_can_network_connect 1
3、 重新验证httpd_can_network_connect
4、 重启http
systemctl restart httpd
至此,读写分离就正式完成了