电子说
由于单台服务器运行LNMP架构会导致网站访问缓慢,当内存被吃满时,容易导致系统出现oom,从而kill掉MySQL数据库,所以需要将web和数据库进行独立部署。
1.缓解web网站的压力
2.增强数据库的读写性能
3.提高用户访问的速度
一体机
客户端-------LNMP服务器
拆分数据库
客户端--------Nginx+PHP服务器--------MySQL服务器
主机名称 应用环境 IP地址
Server-1 nginx+php 192.168.2.4
client-1 mariadb 192.168.2.5
[root@Server-1 ~]# mysqldump -uroot -pP@ssw0rd --all-databases --single-transaction >mariadb-all.sql
#一定要检查文件内是否有数据,因为失败了也会有文件产生。
[root@Server-1 ~]#cat mariadb-all.sql
[root@Server-1 ~]# scp mariadb-all.sql root@192.168.2.5:/code
#安装mariadb数据库客户端和服务端
[root@Client-1 ~]# yum -y install mariadb mariadb-server
#启动并加入开机自启
[root@Client-1 ~]# systemctl enable mariadb
[root@Client-1 ~]# systemctl start mariadb
#导入数据库信息,重启数据库
[root@Client-1 ~]# mysql
[root@Client-1 ~]# systemctl restart mariadb
#查看数据库是否导入成功
[root@Client-1 ~]# mysql -uroot -pP@ssw0rd
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| edusoho |
| mysql |
| performance_schema |
| test |
| wecenter |
| wordpress |
+--------------------+
7 rows in set (0.01 sec)
#先在本地192.168.2.4服务器上停止本地的数据库
[root@Server-1 ~]# systemctl disable mariadb
[root@Server-1 ~]# systemctl stop mariadb
#在192.168.2.5的服务器上授权远程主机能够能连接数据库
[root@Client-1 ~]# mysql -uroot -pP@ssw0rd
MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by 'P@ssw0rd';
Query OK, 0 rows affected (0.02 sec)
#在192.168.2.4服务器上测试远程账户能否连接192.168.2.5的数据库
[root@Server-1 ~]# mysql -h 192.168.2.5 -uroot -pP@ssw0rd
MariaDB [(none)]>
#在192.168.2.4服务器上修改web程序wordpress连接数据库的配置文件
[root@Server-1 ~]# vim /code/wordpress/wp-config.php
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');
/** MySQL数据库用户名 */
define('DB_USER', 'root');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'P@ssword');
/** MySQL主机 */
define('DB_HOST', '192.168.2.5');
#注:配置完直接访问wordpress.zxc.com查看
#不知道数据库配置文件,可以使用grep查找数据库密码来查看数据库配置文件
[root@Server-1 wecenter]# grep -R "P@ssw0rd" *
system/config/database.php: 'password' => 'P@ssw0rd',
[root@Server-1 wecenter]# vim system/config/database.php
?php'charset'] = 'utf8mb4';
$config['prefix'] = 'aws_';
$config['driver'] = 'MySQLi';
$config['master'] = array (
'charset' => 'utf8mb4',
'host' => '192.168.2.5',
'username' => 'root',
'password' => 'P@ssw0rd',
'dbname' => 'wecenter',
);
$config['slave'] = false;
#注:配置完直接访问wecenter.zxc.com查看
[root@Server-1 edusoho]# vim edusoho/app/config/parameters.yml
database_driver: pdo_mysql
database_host: 192.168.2.5
database_port: 3306
database_name: edusoho
database_user: root
database_password: 'P@ssw0rd'
#必须清理缓存
[root@Server-1 edusoho]# rm -rf /code/edusoho/edusoho/app/cache/*
#注:配置完直接访问edu.zxc.com查看
单台web服务器能抗住的访问量是有限的,配置多台web服务器能提升更高的访问速度。
1、单台web节点故障,会导致业务down机
2、多台web节点能够保证业务的持续稳定,扩展性高
3、多台web节点能有效的提升用户访问网站的速度
#1、准备对应的www用户
[root@Server-2 ~]# groupadd -g666 www
[root@Server-2 ~]# useradd -u666 -g666 www
#2、拷贝Server-1上面的yum仓库
[root@Server-2 ~]# scp root@192.168.2.4:/etc/yum.repos.d/*.repo /etc/yum.repos.d/
#3、安装nginx和php
[root@Server-2 ~]# yum -y install nginx php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
#1、同步nginx
[root@Server-2 ~]# rsync -avz --delete root@192.168.2.4:/etc/nginx/ /etc/nginx/
[root@Server-2 ~]# nginx -t
[root@Server-2 ~]# systemctl enable nginx
[root@Server-2 ~]# systemctl start nginx
#2、同步php(/etc/php-fpm.conf /etc/php-fpm.d /etc/php.ini)
[root@Server-2 ~]# rsync -avz --delete root@192.168.2.4:/etc/php* /etc/
[root@Server-2 ~]# systemctl enable php-fpm
[root@Server-2 ~]# systemctl start php-fpm
#3、统一代码
[root@Server-1 ~]# tar czf code.tar.gz /code #在Server-1上打包站点
[root@Server-1 ~]# scp code.tar.gz root@192.168.2.6:/tmp #在Server-1上将打包好的代码发送给Server-2
[root@Server-2 ~]# tar xf /tmp/code.tar.gz -C / #在Server-2上进行解压,并解压到/目录下
#4、配置解析进行访问(把host上.4的注释,复制改成.6)
缺点: 就是当用户上传图片、视频附件等静态资源仅上传到一台web服务器上,那么其他的web服务器则无法访问到该图片。
当后端的web节点出现多台时,会导致用户上传的图片、视频附件等内容仅上传到一台web服务器上,那么其他的web服务器则无法访问到该图片。
1、保证了多台web节点静态资源一致。
2、有效节省多台web节点的存储空间。
3、统一管理静态资源,便于后期推送至CDN进行静态资源加速。
主机名 应用环境 IP地址
Server-1 Nginx+PHP 192.168.2.4
Server-2 Nginx+PHP 192.168.2.6
NFS NFS 192.168.2.7
MySQL MySQL 192.168.2.5
#1、创建用户
[root@nfs ~]# groupadd -g666 www
[root@nfs ~]# useradd -u666 -g666 www
#2、安装
[root@nfs ~]# yum install nfs-utils -y
#3、配置
[root@nfs ~]# cat /etc/exports
/data/wordpress 192.168.2.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/wecenter 192.168.2.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/edu 192.168.2.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
#4、根据配置,创建目录,准备用户,授权等等
[root@nfs ~]# rm -rf /data/
[root@nfs ~]# mkdir /data/{wordpress,wecenter ,edu} -p
[root@nfs ~]# chown -R www.www /data/
#5、启动
[root@nfs ~]# systemctl enable nfs-utils
[root@nfs ~]# systemctl restart nfs-utils
#1、查看图片右键保存链接,可看见上传路径
http://wordpress.zxc.com/wp-content/uploads/2022/03/timg.jpg
#2、把上传文件夹推送到nfs共享存储上
[root@Server-2 ~]# cd /code/wordpress/wp-content
[root@Server-2 wp-content]# scp -r uploads/* root@192.168.2.7:/data/wordpress/
注意:需要上nfs服务器上进行重新的递归授权,否则会出现无法上传文件的错误
[root@nfs ~]# chown -R www.www /data/
mount -t nfs 192.168.2.7:/data/wordpress /code/wordpress/wp-content/uploads/
全部0条评论
快来发表一下你的评论吧 !