day041-web集群架构搭建

文章目录

  • 0. 老男孩思想-高薪四板斧
  • 1. web集群架构图
  • 2. 搭建异地备份服务
    • 2.1 服务端-阿里云服务器
      • 2.1.1 查看rsync软件包
      • 2.1.2 添加rsync配置文件
      • 2.1.3 添加虚拟用户
      • 2.1.4 创建校验用户密码文件
      • 2.1.5 创建备份目录
      • 2.1.6 启动服务
      • 2.1.7 开放安全组端口
      • 2.1.8 发送检查邮件
    • 2.2 客户端
      • 2.2.1 检查与服务端的网络连通性
      • 2.2.2 创建rsync用户的密码文件
      • 2.2.3 测试
      • 2.2.4 编写定时备份脚本
      • 2.2.5 设置定时任务
  • 3. 搭建实时备份服务
    • 3.1 backup服务器
      • 3.1.1 编辑rsync配置文件
      • 3.1.2 创建虚拟用户rsync
      • 3.1.3 创建校验用户密码文件
      • 3.1.4 修改备份目录所属用户/组
      • 3.1.5 lsyncd测试
    • 3.2 nfs服务器
      • 3.2.1 添加rsync用户密码文件
      • 3.2.2 rsync测试
      • 3.2.3 检查lsyncd软件包
      • 3.2.4 修改lsyncd配置文件
      • 3.2.5 创建备份目录
      • 3.2.6 设置lsyncd服务自启动
  • 4. 搭建nfs服务
    • 4.1 服务端
      • 4.1.1 查看nfs服务的软件包
      • 4.1.2 启动rpc中介服务
      • 4.1.3 创建虚拟用户:www,修改共享目录所属用户/组
      • 4.1.4 修改nfs配置文件,添加挂载路径
      • 4.1.5 启动nfs服务
    • 4.2 客户端
      • 4.2.1 查看是否有nfs
      • 4.2.2 挂载测试
  • 5. 搭建mariadb数据库
    • 5.1 安装mariadb
    • 5.2 数据库配置
    • 5.3 远程登录测试
  • 6. 搭建nginx服务
    • 6.1 配置nginx官方yum源
    • 6.2 下载并启动nginx
    • 6.3 修改nginx的虚拟用户并创建该虚拟用户
    • 6.4 添加站点子配置文件
    • 6.5 创建站点根目录并修改所属用户/组
    • 6.6 在站点跟目录添加php文件
    • 6.7 部署WordPress代码
      • 6.7.1 下载压缩包并解压
      • 6.7.2 移动代码至站点目录,重启nginx
      • 6.7.3 配置本地hosts解析
      • 6.7.4 本地浏览器访问
    • 6.8 配置数据库信息
    • 6.9 挂载nfs共享目录
    • 6.10 重启nginx
  • 7. 搭建php服务
    • 7.1 下载php
    • 7.2 修改php配置文件
    • 7.3 检查语法并重启
  • 8. 测试
  • 9. 踩坑记录
    • 1. lsyncd.service: Start request repeated too quickly.
    • 2. 云服务器Ubuntu,不能使用中文

0. 老男孩思想-高薪四板斧

  1. 坚持第一个来,最后一个走
  2. 以领导的岗位职责要求自己
    1. 积极主动、勇于承担
    2. 为领导、其他同事干活
  3. 把公司当做自己的去工作
    1. 不要频繁的跳槽
    2. 当公司有困难时,要主动承担责任,为领导、公司解难
    3. 对公司要有一定的忠心
  4. 把前三条坚持做5-10年

薪资的高低和对公司的价值成正比

1. web集群架构图

在这里插入图片描述

2. 搭建异地备份服务

  • 服务:rsync
  • 服务端:阿里云Ubuntu
  • 客户端:backup

2.1 服务端-阿里云服务器

2.1.1 查看rsync软件包

# Ubuntu默认安装了rsync
[root@aliyun-ubuntu ~]# dpkg -l |grep rsync
ii  rsync                                  3.2.7-0ubuntu0.22.04.4                  amd64        fast, versatile, remote (and local) file-copying tool

2.1.2 添加rsync配置文件

  • 路径:/etc/rsyncd.conf
[root@aliyun-ubuntu ~]# cat  /etc/rsyncd.conf 
#created by oldboy 15:01 2009-6-5
##rsyncd.conf start##
fake super = yes 
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
#hosts allow = 172.16.1.0/24
#hosts deny = 0.0.0.0/32
auth users = aliyun_rsync_backup
secrets file = /etc/rsync.password
#####################################
[backup]
comment = www by old0boy 14:18 2012-1-13
path = /nfs/backup/blog

2.1.3 添加虚拟用户

[root@aliyun-ubuntu ~]# id rsync
id: ‘rsync’: no such user
[root@aliyun-ubuntu ~]# useradd -s /sbin/nologin -M rsync
[root@aliyun-ubuntu ~]# id rsync
uid=1001(rsync) gid=1001(rsync) groups=1001(rsync)
[root@aliyun-ubuntu ~]# tail -1 /etc/passwd
rsync:x:1001:1001::/home/rsync:/sbin/nologin

2.1.4 创建校验用户密码文件

[root@aliyun-ubuntu ~]# echo aliyun_rsync_backup:1 >/etc/rsync.password
[root@aliyun-ubuntu ~]# chmod 600 /etc/rsync.password
[root@aliyun-ubuntu ~]# ll /etc/rsync.password
-rw------- 1 root root 22 Jun 24 17:32 /etc/rsync.password

2.1.5 创建备份目录

[root@aliyun-ubuntu ~]# mkdir -p /nfs/backup/blog
[root@aliyun-ubuntu ~]# ll /nfs/backup/blog -d
drwxr-xr-x 2 root root 4096 Jun 24 17:34 /nfs/backup/blog/
[root@aliyun-ubuntu ~]# chown -R rsync:rsync /nfs/backup/blog 
[root@aliyun-ubuntu ~]# ll /nfs/backup/blog -d
drwxr-xr-x 2 rsync rsync 4096 Jun 24 17:34 /nfs/backup/blog/

2.1.6 启动服务

[root@aliyun-ubuntu ~]# systemctl enable --now rsync.service 
Synchronizing state of rsync.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable rsync
Created symlink /etc/systemd/system/multi-user.target.wants/rsync.service → /lib/systemd/system/rsync.service.
[root@aliyun-ubuntu ~]# systemctl is-active rsync.service
active
[root@aliyun-ubuntu ~]# systemctl is-enabled rsync.service
enabled
[root@aliyun-ubuntu ~]# ps -ef |grep [r]sync
root      128116       1  0 17:36 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
[root@aliyun-ubuntu ~]# ss -lntup |grep rsync
tcp   LISTEN 0      5                 0.0.0.0:873       0.0.0.0:*    users:(("rsync",pid=128116,fd=5))                                        
tcp   LISTEN 0      5                    [::]:873          [::]:*    users:(("rsync",pid=128116,fd=6))  

2.1.7 开放安全组端口

在这里插入图片描述

2.1.8 发送检查邮件

  • 配置邮件服务器
    • 下载邮件服务:apt install -y s-nail
    • 邮件服务的配置文件:/etc/s-nail.rc
set from=skx2554798585@163.com
set smtp=smtps://smtp.163.com:465
set smtp-auth-user=skx2554798585@163.com
set smtp-auth-password=CPVZ6355KsCtEUik
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/ 
  • 编写发送邮件脚本
[root@aliyun-ubuntu /server/scripts]# cat check_rsync_remote_backup.sh 
#!/bin/bash
##############################################################
# File Name: check_rsync_remote_backup.sh
# Version: V1.0
# Author: SunKexu
# Organization: www.oldboyedu.com
# Description:check remote backup
##############################################################
export LANG=en_US.UTF-8# vars
# backup file
file=`mktemp`
# year
year=`date +%Y`
# month
month=`date +%m`
# date
date=`date +%F_%w`
# backup dir
backup="/nfs/backup/blog/"
# title
title="aliyun-backup_check-${date}"
# mail
mail="skx2554798585@qq.com"
# command
echo "Number of documents this month:" >${file}
ls -l "${backup}${year}/${month}" |awk 'NR>1' |wc -l >>${file}
echo "backup dir size:" >>${file}
du -sh ${backup} |cut -f1 >>${file}
# send mail
cat ${file} |s-nail -s "${title}" ${mail}
  • 设置定时任务
[root@aliyun-ubuntu /server/scripts]# crontab -e
crontab: installing new crontab
[root@aliyun-ubuntu /server/scripts]# crontab -l
# rsync remote backup check
0 8 * * * bash /server/scripts/rsync/check_rsync_remote_backup.sh >/dev/null 2>&1

2.2 客户端

  • 查看本机公网ip
[root@backup ~]# curl ifconfig.io
123.117.19.236

2.2.1 检查与服务端的网络连通性

# 阿里云的公网ip
[root@backup ~]# grep aliyun /etc/hosts
8.140.211.162 aliyun
[root@backup ~]# ping aliyun -c1
PING aliyun (8.140.211.162) 56(84) bytes of data.
64 bytes from aliyun (8.140.211.162): icmp_seq=1 ttl=128 time=7.41 ms--- aliyun ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 7.409/7.409/7.409/0.000 ms

2.2.2 创建rsync用户的密码文件

[root@backup ~]# echo 1 >/etc/rsync-client.password
[root@backup ~]# ll /etc/rsync-client.password
-rw-r--r-- 1 root root 2  624 17:45 /etc/rsync-client.password
[root@backup ~]# chmod 600 /etc/rsync-client.password
[root@backup ~]# ll /etc/rsync-client.password
-rw------- 1 root root 2  624 17:45 /etc/rsync-client.password

2.2.3 测试

  • 备份路径:/nfs/backup/blog
  • 创建备份目录
[root@backup ~]# mkdir -p /nfs/backup/blog/
  • 测试

在这里插入图片描述

2.2.4 编写定时备份脚本

[root@backup /server/scripts]# cat rsync_remote_backup.sh 
#!/bin/bash
##############################################################
# File Name:rsync_remote_backup.sh
# Version:V1.0
# Author:SunKexu
# Organization:www.oldboyedu.com
# Desc:rsync 异地备份
##############################################################
export LANG=en_US.UTF-8# vars
username="aliyun_rsync_backup"
server_ip="aliyun"
bak_module="backup"
bak_dir="/nfs/backup/blog/"
client_password="/etc/rsync-client.password"
# command
# rsync同步备份
send_backup_files(){rsync -avz "${bak_dir}" "${username}"@"${server_ip}"::"${bak_module}" --password-file="${client_password}"[ $? -eq 0 ] && echo "rsync success!" || {echo "rsync failed"exit 1}
}
send_backup_files

2.2.5 设置定时任务

[root@backup /nfs/backup/blog]# crontab -e
crontab: installing new crontab
[root@backup /nfs/backup/blog]# crontab -l
#1. sync time by lidao996 at 20230101
*/3 * * * * /sbin/ntpdate ntp.aliyun.com  >/dev/null  2>&1
#2. 异地备份
0 1 * * * bash /server/scripts/rsync_remote_backup.sh >/dev/null 2>&1

3. 搭建实时备份服务

  • 服务:rsync服务、lsyncd服务
  • backup服务器:rsync服务端、lsyncd客户端
  • nfs服务器:rsync客户端、lsyncd服务端

3.1 backup服务器

3.1.1 编辑rsync配置文件

[root@backup ~]# cat /etc/rsyncd.conf
#created by oldboy 15:01 2009-6-5
##rsyncd.conf start##
fake super = yes 
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
#hosts allow = 10.0.0.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[backup]
comment = www by old0boy 14:18 2012-1-13
path = /nfs/backup/blog

3.1.2 创建虚拟用户rsync

[root@backup ~]# id rsync
id: “rsync”:无此用户
[root@backup ~]# useradd -s /sbin/nologin -M rsync
[root@backup ~]# id rsync
用户id=1000(rsync) 组id=1000(rsync)=1000(rsync)

3.1.3 创建校验用户密码文件

[root@backup ~]# echo "rsync_backup:1" >/etc/rsync.password 
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# ll /etc/rsync.password
-rw------- 1 root root 15  624 19:49 /etc/rsync.password

3.1.4 修改备份目录所属用户/组

[root@backup ~]# chown -R rsync:rsync /nfs/backup/blog/
[root@backup ~]# ll -d /nfs/backup/blog/
drwxr-xr-x 2 rsync rsync 4096  624 19:05 /nfs/backup/blog/

接下来backup作为lsyncd客户端进行配置


3.1.5 lsyncd测试

在这里插入图片描述

3.2 nfs服务器

3.2.1 添加rsync用户密码文件

[root@nfs01 ~]# echo 1 >/etc/rsync-client.password
[root@nfs01 ~]# chmod 600 /etc/rsync-client.password
[root@nfs01 ~]# ll /etc/rsync-client.password 
-rw------- 1 root root 2  624 19:53 /etc/rsync-client.password

3.2.2 rsync测试

在这里插入图片描述


接下来nfs作为lsyncd服务端进行配置


3.2.3 检查lsyncd软件包

[root@nfs01 ~]# rpm -qa |grep lsyncd
lsyncd-2.2.3-2.ky10.x86_64
[root@nfs01 ~]# rpm -ql lsyncd
/etc/logrotate.d/lsyncd
/etc/lsyncd.conf
/etc/sysconfig/lsyncd
……

3.2.4 修改lsyncd配置文件

[root@nfs01 ~]# cat /etc/lsyncd.conf
--全局部分主要配置lsyncd服务,日志,pid文件.
settings {--※※※※※日志文件,主要查看日志文件.logfile    = "/var/log/lsyncd.log",--pid文件pidfile    = "/var/run/lsyncd.pid",--服务状态文件statusFile = "/var/log/lsyncd.status",--改为非守护进程模式,默认.rsync命令,lsyncdnodaemon   = true,--控制最多用于传输数据的进程数量 rsync进程数(最大)--※※※※※根据cpu核心数来 一致或2倍maxProcesses = 2
}--配置rsync命令,rsync服务端与客户端模式
--sync部分可以有多个.
sync {--指定rsync工作模式default.rsync,--※※※※※ 指定lsyncd监控目录,源目录 source    = "/nfs/backup/blog",--※※※※※ 指定目标 rsync服务端    用户名@rsync ip地址::模块名字target    = "rsync_backup@172.16.1.41::backup",--※※※※※ 每隔5秒同步一次.delay     = 5,--rsync命令的  --delete 选项  保存客户端与服务端 内容一致.delete    = true,-- 配置rsync命令位置,rsync命令选项,rsync     = {-- 命令位置binary   = "/usr/bin/rsync",-- rsync命令的 -a选项archive  = true,-- rsync命令的  -z选项 压缩compress = true,-- ※※※※※配置rsync--password-file密码文件password_file = "/etc/rsync-client.password"}
}

3.2.5 创建备份目录

[root@nfs01 ~]# mkdir -p /nfs/backup/blog
[root@nfs01 ~]# ll -d /nfs/backup/blog
drwxr-xr-x 2 root root 6  624 20:19 /nfs/backup/blog

3.2.6 设置lsyncd服务自启动

[root@nfs01 ~]# systemctl enable --now lsyncd.service 
Created symlink /etc/systemd/system/multi-user.target.wants/lsyncd.service → /usr/lib/systemd/system/lsyncd.service.
[root@nfs01 ~]# systemctl is-active lsyncd.service 
active
[root@nfs01 ~]# systemctl is-enabled lsyncd.service 
enabled

4. 搭建nfs服务

  • 服务:nfs
  • 服务端:nfs服务器
  • 客户端:web服务器

4.1 服务端

4.1.1 查看nfs服务的软件包

[root@nfs01 ~]# rpm -qa |grep -E 'nfs-utils|rpcbind'
nfs-utils-2.5.1-5.p04.ky10.x86_64
rpcbind-1.2.5-2.p01.ky10.x86_64
rpcbind-help-1.2.5-2.p01.ky10.noarch
nfs-utils-help-2.5.1-5.p04.ky10.x86_64

4.1.2 启动rpc中介服务

[root@nfs01 ~]# systemctl enable --now  rpcbind.service 
[root@nfs01 ~]# systemctl is-active rpcbind.service 
active
[root@nfs01 ~]# systemctl is-enabled rpcbind.service 
enabled
[root@nfs01 ~]# rpcinfo -pprogram vers proto   port  service100000    4   tcp    111  portmapper100000    3   tcp    111  portmapper100000    2   tcp    111  portmapper
……

4.1.3 创建虚拟用户:www,修改共享目录所属用户/组

[root@nfs01 ~]# id www
id: “www”:无此用户
[root@nfs01 ~]# useradd -s /sbin/nologin -M -u 1999 www
[root@nfs01 ~]# id www
用户id=1999(www) 组id=1999(www)=1999(www)
[root@nfs01 ~]# tail -1 /etc/passwd
www:x:1999:1999::/home/www:/sbin/nologin
[root@nfs01 ~]# chown -R www:www /nfs/backup/blog/
[root@nfs01 ~]# ll -d /nfs/backup/blog/
drwxr-xr-x 3 www www 87  624 20:25 /nfs/backup/blog/

4.1.4 修改nfs配置文件,添加挂载路径

[root@nfs01 ~]# cat /etc/exports |grep '/nfs/backup/blog'
/nfs/backup/blog 172.16.1.0/24(rw,all_squash,anonuid=1999,anongid=1999)

4.1.5 启动nfs服务

[root@nfs01 ~]# systemctl enable --now nfs
[root@nfs01 ~]# systemctl is-active nfs
active
[root@nfs01 ~]# systemctl is-enabled nfs
enabled
[root@nfs01 ~]# rpcinfo -p |grep nfs100003    3   tcp   2049  nfs100003    4   tcp   2049  nfs100227    3   tcp   2049  nfs_acl
[root@nfs01 ~]# showmount -e |grep '/nfs/backup/blog'
/nfs/backup/blog 172.16.1.0/24

4.2 客户端

4.2.1 查看是否有nfs

[root@web01 ~]# rpcinfo -p nfs01 |grep nfs100003    3   tcp   2049  nfs100003    4   tcp   2049  nfs100227    3   tcp   2049  nfs_acl
[root@web01 ~]# showmount -e nfs01 |grep '/nfs/backup'
/nfs/backup/blog 172.16.1.0/24

4.2.2 挂载测试

[root@web01 ~]# mount -t nfs nfs01:/nfs/backup/blog /mnt/
[root@web01 ~]# df -hT /mnt/
文件系统               类型  容量  已用  可用 已用% 挂载点
nfs01:/nfs/backup/blog nfs4   77G  4.1G   73G    6% /mnt
[root@web01 ~]# ll -d /mnt/
drwxr-xr-x 3 www www 87  624 20:25 /mnt/
[root@web01 ~]# ll /mnt/
总用量 0
-rw-r--r-- 1 www www 0  624 20:23 孙克旭.com
-rw-r--r-- 1 www www 0  624 20:24 oldboy-lidao-孙克旭.com
drwxr-xr-x 2 www www 6  624 20:25 skx
-rw-r--r-- 1 www www 0  624 20:24 skx.com

5. 搭建mariadb数据库

  • 服务器:db01

5.1 安装mariadb

[root@web01 ~]# yum install -y mariadb-server
上次元数据过期检查:1:15:23 前,执行于 2025年06月23日 星期一 18时21分42秒。
软件包 mariadb-server-3:10.3.39-1.p01.ky10.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
# 设置开机自启动
[root@web01 ~]# systemctl enable --now mariadb-server
[root@web01 ~]# systemctl is-active mariadb.service 
active
[root@web01 ~]# systemctl is-enabled mariadb.service 
enabled
# 检查
[root@db01 ~]# ps -ef |grep [m]ysql
mysql       1015       1  0 09:22 ?        00:00:17 /usr/libexec/mysqld
[root@db01 ~]# ss -lntup |grep mysql
tcp     LISTEN   0        80                     *:3306                *:*       users:(("mysqld",pid=1015,fd=33))  

5.2 数据库配置

  • 安装配置:mysql_secure_installation
  • 创建blog数据库:create database blog;
  • 添加blog用户,并设置权限,可以远程登录:grant all on blog.* to 'blog'@'172.16.1.%' identified by '1';

5.3 远程登录测试

  • 数据库客户端:web01
[root@web01 ~]# mysql -ublog -p1 -h db01
……
MariaDB [(none)]> select user();
+------------+
| user()     |
+------------+
| blog@web01 |
+------------+
1 row in set (0.001 sec)MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| blog               |
| information_schema |
+--------------------+
2 rows in set (0.001 sec)

6. 搭建nginx服务

  • 服务器:web01

6.1 配置nginx官方yum源

[root@web01 ~]# cat /etc/yum.repos.d/nginx.repo 
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

6.2 下载并启动nginx

[root@web01 /etc/yum.repos.d]# yum install -y nginx
上次元数据过期检查:0:03:22 前,执行于 2025年06月22日 星期日 11时49分44秒。
软件包 nginx-1:1.26.1-2.el7.ngx.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!   
[root@web01 /etc/yum.repos.d]# systemctl enable --now nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
[root@web01 /etc/yum.repos.d]# systemctl status nginx
……

6.3 修改nginx的虚拟用户并创建该虚拟用户

[root@web01 /etc/nginx]# grep -nE '^user ' nginx.conf 
3:user  www;
[root@web01 /app/code/blog]# useradd -s /sbin/nologin -M www
[root@web01 /app/code/blog]# id www
用户id=1999(www) 组id=1999(www)=1999(www)

6.4 添加站点子配置文件

[root@web01 /etc/nginx/conf.d]# cat blog.oldboy.cn.conf
server {listen 80;server_name blog.oldboy.cn;root /app/code/blog;error_log /var/log/nginx/blog.oldboy.cn-error.log notice;access_log /var/log/nginx/blog.oldboy.cn-access.log main;location / {index index.php;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}

6.5 创建站点根目录并修改所属用户/组

[root@web01 /app/code/blog]# mkdir -p /app/code/blog/
[root@web01 /app/code/blog]# chown -R www:www /app/code/blog/

6.6 在站点跟目录添加php文件

[root@web01 /app/code/blog]# cat chk_db.php
<?php
//数据库地址
$db_host='db01'
$db_user='blog'
$db_pass='1'
//数据库名字
$db_name='blog'$link_id=mysqli_connect($db_host,$db_user,$db_pass,$db_name);
if($link_id){echo "mysql successflu by oldboy lidao996!\n";
}else{echo "connection failed!\n"
}
?>

6.7 部署WordPress代码

6.7.1 下载压缩包并解压

[root@web01 ~]# wget https://cn.wordpress.org/latest-zh_CN.zip
[root@web01 ~]# unzip latest-zh_CN.zip 

6.7.2 移动代码至站点目录,重启nginx

[root@web01 ~]# mv wordpress/* /app/code/blog/
[root@web01 ~]# chown -R www:www /app/code/blog/
[root@web01 /app/code/blog]# systemctl reload nginx.service 

6.7.3 配置本地hosts解析

在这里插入图片描述

6.7.4 本地浏览器访问

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 在文章中上传一张图片

在这里插入图片描述

6.8 配置数据库信息

  • 查看下数据库信息是否正确
[root@web01 /app/code/blog]# grep 'DB' wp-config.php
define( 'DB_NAME', 'blog' );
define( 'DB_USER', 'blog' );
define( 'DB_PASSWORD', '1' );
define( 'DB_HOST', 'db01' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );

6.9 挂载nfs共享目录

[root@web01 /app/code/blog/wp-content/uploads]# df -h
文件系统                容量  已用  可用 已用% 挂载点
devtmpfs                962M     0  962M    0% /dev
tmpfs                   979M     0  979M    0% /dev/shm
tmpfs                   979M  9.0M  970M    1% /run
tmpfs                   979M     0  979M    0% /sys/fs/cgroup
/dev/mapper/klas-root    77G  4.6G   73G    6% /
/dev/sda1               2.0G  178M  1.9G    9% /boot
tmpfs                   196M     0  196M    0% /run/user/0
nfs01:/nfs/backup/blog   77G  4.1G   73G    6% /mnt
[root@web01 /app/code/blog/wp-content/uploads]# umount /mnt 
[root@web01 /app/code/blog/wp-content/uploads]# mkdir /backup/up -p
[root@web01 /app/code/blog/wp-content/uploads]# mv ./* /backup/up
[root@web01 /app/code/blog/wp-content/uploads]# mount -t nfs nfs01:/nfs
/nfs/backup/blog  /nfs/blog         /nfsdata          /nfs/pics   
[root@web01 /app/code/blog/wp-content/uploads]# mount -t nfs nfs01:/nfs/backup/blog ./
[root@web01 /app/code/blog/wp-content/uploads]# df -hT /app/code/blog/wp-content/uploads/
文件系统               类型  容量  已用  可用 已用% 挂载点
nfs01:/nfs/backup/blog nfs4   77G  4.1G   73G    6% /app/code/blog/wp-content/uploads
[root@web01 /app/code/blog/wp-content/uploads]# mv /backup/up/* ./
  • 上面是临时挂载,可以永久挂载
[root@web01 ~]# tail -n1 /etc/fstab
nfs01:/nfs/backup/blog /app/code/blog/wp-content/uploads	nfs	defaults        0 0

6.10 重启nginx

[root@web01 ~]# systemctl reload nginx.service 

7. 搭建php服务

  • 服务器:web01

7.1 下载php

yum -y install php php-bcmath php-cli php-common php-devel php-embedded php-fpm php-gd php-intl php-mbstring php-mysqlnd php-opcache php-pdo   php-process php-xml php-json
# Ubuntu
apt install -y php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
  • 开机自启动
[root@web01 ~]# systemctl enable --now php-fpm

7.2 修改php配置文件

[root@web01 ~]# grep -En '^(user|group|listen) ' /etc/php-fpm.d/www.conf
24:user = www
26:group = www
38:listen = 127.0.0.1:9000

7.3 检查语法并重启

[root@web01 ~]# php-fpm -t
[24-Jun-2025 21:52:40] NOTICE: configuration file /etc/php-fpm.conf test is successful[root@web01 ~]# systemctl reload php-fpm.service 

8. 测试

在这里插入图片描述

在这里插入图片描述

  • 查看数据库文本信息:SELECT post_title, post_content FROM wp_posts WHERE post_type = ‘post’;

在这里插入图片描述

  • 测试总结
    • 太过完美🙂

在这里插入图片描述

9. 踩坑记录

1. lsyncd.service: Start request repeated too quickly.

在这里插入图片描述


在这里插入图片描述

  • lsyncd监听的目录没创建(;・∀・)

2. 云服务器Ubuntu,不能使用中文

在这里插入图片描述

  • 修改字符集:localectl set-locale LANG=en_US.UTF-8

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/86771.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/86771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day44-Django RestFramework(drf)下

1.5 Django RestFramework(下) drf 内置了很多便捷的功能,在接下来的课程中会给大家依次讲解下面的内容: 快速上手请求的封装版本管理认证权限限流序列化视图条件搜索分页路由解析器10. 分页 在查看数据列表的API中,如果 数据量 比较大,肯定不能把所有的数据都展示给用…

机器学习基础 线性回归与 Softmax 回归

机器学习基础 线性回归与 Softmax 回归 文章目录 机器学习基础 线性回归与 Softmax 回归1. 最小二乘法1.1 数据集定义1.2 最小二乘的矩阵推导1.3 最小二乘的几何解释1.4 概率视角下的最小二乘估计 2. 正则化2.1 L1 范数与 L2 范数2.2 正则化的作用2.3 Lasso 回归的求解2.3.1 L-…

6.27_JAVA_面试(被抽到了)

1.MYSQL支持的存储引擎有哪些, 有什么区别 ? In-no-DB&#xff08;默认&#xff09;&#xff1a;支持事务安全&#xff08;数据库运行时&#xff0c;能保证数据的一致性、完整性&#xff09;&#xff0c;支持表行锁&#xff0c;支持物理和逻辑外键。占用磁盘空间大。 MEMORY&…

YOLOv13震撼发布:超图增强引领目标检测新纪元

YOLOV13最近发布了&#xff0c;速速来看。 论文标题&#xff1a;YOLOv13&#xff1a;融合超图增强的自适应视觉感知的实时目标检测 论文链接&#xff1a;https://arxiv.org/pdf/2506.17733 代码链接&#xff1a;https://github.com/iMoonLab/yolov13 话不多说&#xff0c;直…

Docker错误问题解决方法

1. Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) https://zhuanlan.zhihu.com/p/24228872523 2. no configuration file provided: …

大模型在恶性心律失常预测及治疗方案制定中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与方法 1.3 研究创新点 二、大模型技术概述 2.1 大模型基本原理 2.2 常见大模型类型及特点 2.3 大模型在医疗领域的应用现状 三、心律失常的术前预测与准备 3.1 术前心律失常预测的重要性 3.2 大模型在术前预测中的应…

【视频芯片选型】

一、边缘 AI 芯片选型逻辑与未来趋势 &#xff08;一&#xff09;嘉楠 K230、全志 V853、瑞芯微 RK3588 对比选型 核心场景适配 嘉楠 K230&#xff1a; 适合低功耗边缘 AI场景&#xff0c;如智能家居中控&#xff08;支持语音 视觉双模态交互&#xff09;、电池供电设备&#…

JavaScript---DOM篇

1. DOM 概念 文档对象模型&#xff1a;将 HTML 文档映射为树形结构&#xff0c;JS 可通过 DOM 操作页面。 2. 获取元素 document.getElementById(id) document.querySelector(CSS选择器) document.querySelectorAll() 获取多个 3. 操作元素 属性操作&#xff1a; element.getAt…

第三次课:实验室安全用电

触电的危害 触电的方式 安全用电与预防措施 触电急救 时间就是生命 安全自省 安全用电常识补充

NV064NV065美光固态闪存NV067NV076

美光NV系列固态闪存技术深度解析与应用指南 技术架构革新&#xff1a;垂直堆叠与浮栅技术的突破 美光NV系列固态闪存的核心竞争力在于其232层NAND闪存技术&#xff0c;通过垂直堆叠工艺将存储单元层层叠加&#xff0c;如同在指甲盖面积内构建超过200层“数据楼宇”&#xff0…

设计模式精讲 Day 18:备忘录模式(Memento Pattern)

【设计模式精讲 Day 18】备忘录模式&#xff08;Memento Pattern&#xff09; 文章内容 开篇 在“设计模式精讲”系列的第18天&#xff0c;我们来探讨备忘录模式&#xff08;Memento Pattern&#xff09;。这是一种行为型设计模式&#xff0c;其核心思想是在不破坏封装性的前…

SpringCloud系列(35)--使用HystrixDashboard进行服务监控

前言&#xff1a;在上一节中我们使用了Hystrix进行服务熔断处理&#xff0c;至此关于Hystrix的使用到此为止&#xff0c;本节内容关注的是如何使用HystrixDashboard对调用进行监控。 1、HystrixDashboard概述 Hystrix提供的准实时的调用监控(HystrixDashboard)&#xff0c;Hys…

爬虫简单实操2——以贴吧为例爬取“某吧”前10页的网页代码

需求是将贴吧的【某个吧】里面【n页】的网页代码爬取下来&#xff0c;保存至本地 首先我们要思考这个贴吧爬虫的框架&#xff0c;要有方法可以构造url列表&#xff08;就可以一次获取多个url&#xff09;&#xff0c;能请求获取相应&#xff0c;能把html保存到本地。 import …

webpack5 css-loader 配置项中的modules

在 Webpack 的 css-loader 中&#xff0c;modules 选项是一个核心配置&#xff0c;它直接关系到 CSS 的模块化处理方式。下面从概念、原理、使用场景和实践技巧四个方面详细解析&#xff1a; 概念解析&#xff1a;CSS Modules 是什么&#xff1f; CSS Modules 是一种让 CSS 类…

springboot+Vue驾校管理系统

概述 基于springbootVue开发的驾校管理系统。该系统采用主流技术栈开发&#xff0c;功能完善&#xff0c;既包含用户端便捷的操作界面&#xff0c;又具备强大的后台管理功能。 主要内容 一、用户端功能模块 ​​核心功能导航​​&#xff1a; 首页展示驾校推荐信息及最新动态…

#华为鲲鹏#华为计算#鲲鹏开发者计划2025#

#华为鲲鹏#华为计算#鲲鹏开发者计划2025# <新版开发者计划>的内容链接&#xff1a;鲲鹏开发者计划2025-鲲鹏社区 通过学习毕昇编译器整体介绍&#xff0c;以及安装使用流程、新增特性、调优工具的使用及相关指导文件获取&#xff0c;对毕异编译器有了更深的认识。 我刚…

小程序学习笔记:声明式导航的多种玩法

在小程序开发中&#xff0c;页面导航是实现用户流畅交互体验的关键环节。今天&#xff0c;咱们就一起来深入学习小程序里通过声明式导航实现页面跳转、切换 tab 页、后退等功能的技巧&#xff0c;还会附上详细代码示例&#xff0c;让大家轻松掌握&#xff01; 一、什么是页面导…

Linux中《动/静态库原理》

目录 目标文件ELF文件ELF从形成到加载轮廓ELF形成可执行readelf命令ELF可执行文件加载 理解连接与加载静态链接ELF加载与进程地址空间虚拟地址/逻辑地址 重新理解进程虚拟地址空间 动态链接与动态库加载进程如何看到动态库进程间如何共享库的动态链接动态链接到底是如何工作的&…

Android大图加载优化:BitmapRegionDecoder深度解析与实战

在移动端开发中&#xff0c;超大图片加载一直是性能优化的难点。本文将深入剖析BitmapRegionDecoder原理&#xff0c;提供完整Kotlin实现方案&#xff0c;并分享性能调优技巧。 一、为什么需要大图加载优化&#xff1f; 典型场景&#xff1a; 医疗影像&#xff1a;2000015000…

基于ApachePOI实现高德POI分类快速导入PostgreSQL数据库实战

目录 前言 一、高德POI分类简介 1、数据表格 2、分类结构 二、从Excel导入到Postgresql 1、Excel解析流程 2、Mybatis批量导入 3、数据入库 三、总结 前言 在大数据与地理信息深度交融的当下&#xff0c;地理信息系统&#xff08;GIS&#xff09;的触角已延伸至各个领域…