云计算-----单机LNMP结构WordPress网站

news2024/10/21 3:10:23

LNMP结构 博客网站     day1

小伙伴们,LNMP结构在第一二阶段浅浅的学习过,这里我们可以离线部署该结构。L指(虚拟机)服务器,nginx(前端代理服务器)+mysql数据库,最后基于php建设动态资源网站。

#也有前端代理服务器是apache的,建站语言还有tomcat(*^▽^*)

#服务器一般都是用linux系统的,好处安全隔离,不占空间内存大。

nginx担任前端代理服务器,负责负载均衡和前端代理作用。

它可以配置多台web网页服务器,访问相关站点资源。

NFS是起文件共享作用,mysql的作用是存储网页数据。

一般网站都会架构mysql主从同步读写分离的数据库。php需要在nginx安装的环境下,才能产生作用。

#准备以下机器,方便环境进行,单机环境即可,不上云平台购买。

主机名IP地址
client01192.168.88.10/24
web1192.168.88.11/24
web2192.168.88.12/24
web3192.168.88.13/24
database192.168.88.21/24
nfs192.168.88.31/24
haproxy01192.168.88.5
haproxy02192.168.88.6

一、单机安装WordPress

#类似WordPress的博客类网站很多(织梦,帝国等),这里只是举例子,感兴趣的可以去看看。下图是wordpress博客样例。具体功能建完我再将。^_^


  • 创建虚拟机,并配置防火墙、SELINUX、主机名、IP地址、yum

配置ansible管理环境

#这里我们用的是云计算2阶段留下来的虚拟机(192.168.88.240)主机名随课程环境更改。

你也可以自己创个master虚拟机,觉得机器多的话,可以在client虚拟机里面设置ansible 相关自动化操作,批量部署配置  虚拟机软件环境。


# 1. 创建工作目录

[root@pubserver ~]# mkdir -p project01/files
[root@pubserver ~]# cd project01/

# 2. 创建主配置文件、主机清单文件、yum配置文件

[root@pubserver project01]# vim ansible.cfg 
[defaults]
inventory = inventory
host_key_checking = false

[root@pubserver project01]# vim inventory 
[webservers]
web1 ansible_host=192.168.88.11

[all:vars]
ansible_ssh_user=root
ansible_ssh_pass=a

[root@pubserver project01]# vim files/local88.repo 
[BaseOS]
name = BaseOS
baseurl = ftp://192.168.88.240/dvd/BaseOS
enabled = 1
gpgcheck = 0

[AppStream]
name = AppStream
baseurl = ftp://192.168.88.240/dvd/AppStream
enabled = 1
gpgcheck = 0

[rpms]
name = rpms
baseurl = ftp://192.168.88.240/rpms
enabled = 1
gpgcheck = 0

[root@pubserver project01]# vim files/local88.repo 
[BaseOS]
name = BaseOS
baseurl = ftp://192.168.88.240/dvd/BaseOS
enabled = 1
gpgcheck = 0

[AppStream]
name = AppStream
baseurl = ftp://192.168.88.240/dvd/AppStream
enabled = 1
gpgcheck = 0

[rpms]
name = rpms
baseurl = ftp://192.168.88.240/rpms
enabled = 1
gpgcheck = 0
  • 配置yum服务
[root@pubserver project01]# vim 01-upload-repo.yml 
---
- name: config repos.d
  hosts: all
  tasks:
    - name: delete repos.d
      file:
        path: /etc/yum.repos.d
        state: absent

    - name: create repos.d
      file:
        path: /etc/yum.repos.d
        state: directory
        mode: '0755'

    - name: upload local88
      copy:
        src: files/local88.repo
        dest: /etc/yum.repos.d/

[root@pubserver project01]# ansible-playbook 01-upload-repo.yml 

配置nginx

[root@pubserver project01]# vim 02-config-web1.yml 
---
- name: config web1
  hosts: webservers
  tasks:
    - name: install pkgs   # 安装软件包
      yum:
        name:
          - nginx
          - mysql-server
          - php-mysqlnd
          - php-fpm
          - php-json
        state: present

    - name: start service   # 循环启动多个服务
      service:
        name: "{{item}}"
        state: started
        enabled: yes
      loop:
        - nginx
        - php-fpm
        - mysqld
[root@pubserver project01]# ansible-playbook 02-config-web1.yml

  • 编写php文件,并访问http://192.168.88.11/测试
  • #再次提醒,必须先配置NGINX和php相关依赖,才能出现下图。
[root@web1 ~]# vim /usr/share/nginx/html/index.php
<?php
    phpinfo();
?>

                                #测试能看到这个界面,说明环境配置成功。

二、分离数据库

  • 安装Wordpress网站,需要数据库,创建数据库并授权
# 1. 编写用于创建数据库和用户的脚本
[root@pubserver project01]# vim files/config_mysql.sh
#!/bin/bash

mysql -e "create database wordpress character set utf8mb4"
mysql -e "create user wpuser01@localhost identified by 'wordpress'"
mysql -e "grant all privileges on wordpress.* to wpuser01@localhost"

#上面是编写了脚本,执行了创建数据库用户和密码,下图则是通过ansible的script模块调用脚本文件。

# 2. 通过ansible的script模块执行脚本
[root@pubserver project01]# vim 03-config-mysql.yml 
---
- name: config mysql
  hosts: web1
  tasks:
    - name: create database
      script: files/config_mysql.sh

[root@pubserver project01]# ansible-playbook 03-config-mysql.yml
# 3. 测试账号,如果可以成功登陆mysql,则数据库和用户创建正确
[root@web1 ~]# mysql -uwpuser01 -pwordpress -hlocalhost wordpress
# 1. 拷贝wordpress到web1
[root@myhost ~]# scp /linux-soft/s2/zzg/project01_soft/wordpress-6.1.1-zh_CN.tar.gz 192.168.88.11:/root/

# 2. 解压并复制文件到nginx文档目录
[root@web1 ~]# tar xf wordpress-6.1.1-zh_CN.tar.gz  
[root@web1 ~]# cp -r wordpress/* /usr/share/nginx/html/

# 3. php程序是由php-fpm处理的,php-fpm以apache身份运行
[root@web1 ~]# ps aux | grep php-fpm
root        5655  0.0  0.4 395620 19056 ?        Ss   12:13   0:00 php-fpm: master process (/etc/php-fpm.conf)
apache      5670  0.0  0.3 412108 13812 ?        S    12:13   0:00 php-fpm: pool www

# 4. 为了让php-fpm程序能对html目录进行读写操作,需要为他授予权限
[root@web1 ~]# chown -R apache:apache /usr/share/nginx/html/

#这里我们可以直接,进入wordpress官网下载中文版,之后从真机传入虚拟机服务器。

最后按照上述骤检查 。

  • 访问http://192.168.88.11/,根据提示进行初始化

#这里的数据库名和密码,和你前面设置的mysql数据库的对应上,不然进不去嗷。

#网站登录密码,自己设置好记的,邮箱随便填写

#博客网站取名随意

注意:注销登陆后,如果再次登陆,需访问http://192.168.88.11/wp-login.php

三、配置额外的web服务器

web与数据库服务分离

#只有1台web服务器肯定是不行的,所以需要配置多台web服务器,进行负载均衡的选择。

搭建好 database 服务器,之后配好IP 192.168.88.21

修改ansible配置环境
[root@pubserver project01]# vim inventory 
[webservers]
web1 ansible_host=192.168.88.11

[dbs]
database ansible_host=192.168.88.21

[all:vars]
ansible_ssh_user=root
ansible_ssh_pass=a
  • 配置数据库服务器
# 1. 修改yum配置
[root@pubserver project01]# ansible-playbook 01-upload-repo.yml 

# 2. 安装数据库服务,并创建数据库及用户
[root@pubserver project01]# vim files/config_mysql2.sh
#!/bin/bash
  
mysql -e "create database wordpress character set utf8mb4"
mysql -e "create user wpuser01@'%' identified by 'wordpress'"
mysql -e "grant all privileges on wordpress.* to wpuser01@'%'"

[root@pubserver project01]# vim 04-config-database.yml
---
- name: config database
  hosts: dbs
  tasks:
    - name: install mysql    # 安装数据库服务
      yum:
        name: mysql-server
        state: present

    - name: start service    # 启动数据库服务
      service:
        name: mysqld
        state: started
        enabled: yes

    - name: create database
      script: files/config_mysql2.sh

[root@pubserver project01]# ansible-playbook 04-config-database.yml

迁移数据库 (测试新数据库的功能)

 

 #文章里面的区块附近,可以点击查看相关设置,有网页设计知识的都看得懂,比较简单。结构都是HTML ,CSS,JAVAscript的相关内容,不涉及JAVA前端Vue框架知识。都看得懂

 

  • 注意:默认的wordpress对中文标题支持有bug,需要修改源码修复bug。或者更改【固定链接】配置,如下:

 

  • 迁移数据库
# 1. 在源服务器上备份数据库中的数据。备份数据库wordpress中的数据到wordpress.sql文件
[root@web1 ~]# mysqldump wordpress > wordpress.sql

# 2. 将备份文件拷贝到新数据库服务器
[root@web1 ~]# scp wordpress.sql 192.168.88.21:/root/

# 3. 在新数据库服务器上,导入数据。将wordpress.sql中的数据导入到wordpress数据库中
[root@database ~]# mysql wordpress < wordpress.sql 

# 4. 修改php网站,将数据库服务器地址,指向新数据库服务器
[root@web1 ~]# vim /usr/share/nginx/html/wp-config.php 
...略...
 31 /** Database hostname */
 32 define( 'DB_HOST', '192.168.88.21' );
...略...
# 5. 停止web1上的数据库服务,wordpress网站仍然可以访问
[root@web1 ~]# systemctl stop mysqld
[root@web1 ~]# yum remove -y mysql-server

# 6. 停止database上的数据库服务,wordpress将不能访问
  • 查询数据库中的内容
[root@database ~]# mysql   # 打开mysql命令行
mysql> show databases;     # 查看有哪些数据库
mysql> use wordpress;      # 切换到wordpress数据库
mysql> show tables;        # 查看wordpress库中有哪些表
mysql> select * from wp_posts\G  # 查看wp_posts表中的内容

 配置额外的web服务器

#注意如果你们一开始机器就准备好了,这里的两台web2-web3服务器,和它们的IP地址就别设置到了 。

你们应该看出来了,机器和相应的ansible自动化配置,没有一开始配完。主要是考虑思路,循序渐进的演示,如果一开始ip和机器配好,自动化也设置好,就会有点知识不过脑。

  • 修改ansible配置
[root@pubserver project01]# vim inventory 
[webservers]
web1 ansible_host=192.168.88.11
web2 ansible_host=192.168.88.12
web3 ansible_host=192.168.88.13

[dbs]
database ansible_host=192.168.88.21

[all:vars]
ansible_ssh_user=root
ansible_ssh_pass=a
  • 配置web服务
# 1. 配置yum
[root@pubserver project01]# ansible-playbook 01-upload-repo.yml 

# 2. 配置web服务器
[root@pubserver project01]# vim 05-config-webservers.yml 
---
- name: config webservers
  hosts: webservers
  tasks:
    - name: install pkgs    # 安装软件包
      yum:
        name:
          - nginx
          - php-mysqlnd
          - php-fpm
          - php-json
        state: present

    - name: start service   # 循环启动多个服务
      service:
        name: "{{item}}"
        state: started
        enabled: yes
      loop:
        - nginx
        - php-fpm
 
 [root@pubserver project01]# ansible-playbook 05-config-webservers.yml
  • 将web1的html目录打包并下载
[root@pubserver project01]# vim 06-fetch-web1.yml 
---
- name: copy web
  hosts: web1
  tasks:
    - name: compress html    # 压缩html目录到/root下
      archive:
        path: /usr/share/nginx/html
        dest: /root/html.tar.gz
        format: gz

    - name: download html    # 下载压缩文件
      fetch:
        src: /root/html.tar.gz
        dest: files/
        flat: yes

[root@pubserver project01]# ansible-playbook 06-copy-web.yml 
  • 释放html压缩包到web2和web3上
  • [root@pubserver project01]# vim 07-deploy-web23.yml
    ---
    - name: deploy web2 and web3
      hosts: web2,web3
      tasks:
        - name: unarchive to web    # 解压文件到指定位置
          unarchive:
            src: files/html.tar.gz
            dest: /usr/share/nginx/
    
    [root@pubserver project01]# ansible-playbook 07-deploy-web23.yml
  • 访问http://192.168.88.12/和http://192.168.88.13/将会得到与http://192.168.88.11/相同的页面

LNMP结构 博客网站     day2

深入理解程序的数据存储

  • 程序将文字数据保存到数据库中
  • 程序将非文字数据(如图片、视频、压缩包等)保存到相应的文件目录中

验证

  • 发一篇文章,文章内容包含文字和图片
  • 在数据库中查看文字数据。在最新的一条记录中,可以查看到图片的保存位置
  • #去博客上面发哈。
[root@database ~]# mysql
mysql> use wordpress;
mysql> select * from wp_posts\G
  • 在文件系统中查看图片文件。/usr/share/nginx/html/wp-content/uploads/是固定位置,其后的2024/10是年和月目录。每个月上传的图片,都会保存到相应的月份目录。
[root@web1 html]# ls /usr/share/nginx/html/wp-content/uploads/2024/10/
snow.jpg

配置NFS服务器 

#老样子,首先配好nfs服务器IP,以后可以更具需求架构图,先配置好

  • 配置ansible环境
[root@pubserver project01]# vim inventory 
[webservers]
web1 ansible_host=192.168.88.11
web2 ansible_host=192.168.88.12
web3 ansible_host=192.168.88.13

[dbs]
database ansible_host=192.168.88.21

[storages]
nfs ansible_host=192.168.88.31
   
[all:vars]
ansible_ssh_user=root
ansible_ssh_pass=a
  • 配置nfs服务
# 1. 配置yum
[root@pubserver project01]# ansible-playbook 01-upload-repo.yml 

# 2. 配置nfs服务
[root@pubserver project01]# vim 08-config-nfs.yml
---
- name: config nfs
  hosts: nfs
  tasks:
    - name: install nfs        # 安装nfs
      yum:
        name: nfs-utils
        state: present

    - name: mkdir /nfs_root    # 创建共享目录
      file:
        path: /nfs_root
        state: directory
        mode: "0755"

    - name: nfs share          # 修改配置文件
      lineinfile:
        path: /etc/exports
        line: '/nfs_root 192.168.88.0/24(rw)'

    - name: start service      # 循环启动服务
      service:
        name: "{{item}}"
        state: started
        enabled: yes
      loop:
        - rpcbind       # nfs服务依赖rpcbind服务
        - nfs-server

[root@pubserver project01]# ansible-playbook 08-config-nfs.yml

# 3. 查看共享输出
[root@nfs ~]# showmount -e
Export list for nfs:
/nfs_root 192.168.88.0/24
迁移文件至nfs共享
  • 迁移文件至nfs共享
# 1. 重新下载web1的html目录
[root@pubserver project01]# cp 06-fetch-web1.yml 09-fetch-web1.yml
---
- name: copy web
  hosts: web1
  tasks:
    - name: compress html        # 压缩html目录到/root下
      archive:
        path: /usr/share/nginx/html
        dest: /root/html2.tar.gz
        format: gz

    - name: download html
      fetch:
        src: /root/html2.tar.gz  # 下载压缩文件
        dest: files/
        flat: yes

[root@pubserver project01]# ansible-playbook 09-fetch-web1.yml 
# 2. 释放压缩包到nfs服务器
[root@pubserver project01]# cp 07-deploy-web23.yml 10-deploy-nfs.yml
[root@pubserver project01]# vim 10-deploy-nfs.yml 
---
- name: deploy nfs
  hosts: nfs
  tasks:
    - name: unarchive to web     # 将控制端压缩文件解压到指定位置
      unarchive:
        src: files/html2.tar.gz
        dest: /nfs_root/

[root@pubserver project01]# ansible-playbook 10-deploy-nfs.yml 
# 3. 清除web服务器的html目录
[root@pubserver project01]# vim 11-rm-html.yml
---
- name: rm html
  hosts: webservers
  tasks:
    - name: rm html
      file:
        path: /usr/share/nginx/html
        state: absent
        
    - name: create html
      file:
        path: /usr/share/nginx/html
        state: directory
        owner: apache
        group: apache
        mode: "0755"

[root@pubserver project01]# ansible-playbook 11-rm-html.yml
# 4. 挂载nfs到web服务器
[root@pubserver project01]# vim 12-mount-nfs.yml
---
- name: mount nfs
  hosts: webservers
  tasks:
    - name: install nfs
      yum:
        name: nfs-utils
        state: present
        
    - name: mount nfs
      mount:
        path: /usr/share/nginx/html
        src: 192.168.88.31:/nfs_root/html
        fstype: nfs
        state: mounted

[root@pubserver project01]# ansible-playbook 12-mount-nfs.yml

配置代理服务器 

#配置好机器IP

  • 配置ansible环境
    [root@pubserver project01]# vim inventory 
    [webservers]
    web1 ansible_host=192.168.88.11
    web2 ansible_host=192.168.88.12
    web3 ansible_host=192.168.88.13
    
    [dbs]
    database ansible_host=192.168.88.21
    
    [storages]
    nfs ansible_host=192.168.88.31
    
    [lb]
    haproxy1 ansible_host=192.168.88.5
    haproxy2 ansible_host=192.168.88.6
    
    [all:vars]
    ansible_ssh_user=root
    ansible_ssh_pass=a

  • 配置高可用、负载均衡功能
# 1. 配置yum
[root@pubserver project01]# ansible-playbook 01-upload-repo.yml 

# 2. 配置调度服务器
[root@pubserver project01]# vim 13-install-lb.yml 
---
- name: install lb
  hosts: lb
  tasks:
    - name: install pkg
      yum:
        name: haproxy,keepalived
        state: present

[root@pubserver project01]# ansible-playbook 13-install-lb.yml 
# 3. 修改配置文件并启动服务
[root@pubserver project01]# vim 14-config-lb.yml
---
- name: config haproxy
  hosts: lb
  tasks:
    - name: rm lines
      shell: sed -i '64,$d' /etc/haproxy/haproxy.cfg

    - name: add lines
      blockinfile:
        path: /etc/haproxy/haproxy.cfg
        block: |
          listen wordpress
              bind 0.0.0.0:80
              balance roundrobin
              server web1 192.168.88.11:80 check inter 2000 rise 2 fall 5
              server web2 192.168.88.12:80 check inter 2000 rise 2 fall 5
              server web3 192.168.88.13:80 check inter 2000 rise 2 fall 5

          listen mon
            bind 0.0.0.0:1080
            stats refresh 30s
            stats uri /mon
            stats auth admin:admin

    - name: start service
      service:
        name: haproxy
        state: started
        enabled: yes

[root@pubserver project01]# ansible-playbook 14-config-lb.yml

# 4. haproxy1配置keepalived,实现高可用集群
[root@haproxy1 ~]# vim /etc/keepalived/keepalived.conf 
...略...
 12    router_id haproxy1   # 为本机取一个唯一的id
 13    vrrp_iptables        # 自动开启iptables放行规则
...略...
 20 vrrp_instance VI_1 {
 21     state MASTER        # 主服务器状态是MASTER
 22     interface eth0
 23     virtual_router_id 51
 24     priority 100
 25     advert_int 1
 26     authentication {
 27         auth_type PASS
 28         auth_pass 1111
 29     }
 30     virtual_ipaddress {
 31         192.168.88.80       # vip地址
 32     }
 33 }
# 以下全部删除

# #########  33行下面去哪删除 !!!!!!!!!!!!!!!!!!!!

# 5. haproxy2配置keepalived
[root@haproxy1 ~]# scp /etc/keepalived/keepalived.conf 192.168.88.6:/etc/keepalived/
[root@haproxy2 ~]# vim /etc/keepalived/keepalived.conf 
...略...
 12    router_id haproxy2   # 为本机取一个唯一的id
 13    vrrp_iptables        # 自动开启iptables放行规则
...略...
 20 vrrp_instance VI_1 {
 21     state BACKUP        # 备份服务器状态是BACKUP
 22     interface eth0
 23     virtual_router_id 51
 24     priority 80         # 备份服务器优先级低于主服务器
 25     advert_int 1
 26     authentication {
 27         auth_type PASS
 28         auth_pass 1111
 29     }
 30     virtual_ipaddress {
 31         192.168.88.80
 32     }
 33 }

#区别1个是master,1个配置为了backup.

服务器ID不一样,优先级不一样。别搞混乱了

 
 
# 6. 启动服务
[root@haproxy1 ~]# systemctl enable keepalived.service --now
[root@haproxy2 ~]# systemctl enable keepalived.service --now
# 7. 验证。haproxy1上出现VIP。客户端访问http://192.168.88.80即可
[root@haproxy1 ~]# ip a s | grep 192
    inet 192.168.88.5/24 brd 192.168.88.255 scope global noprefixroute eth0
    inet 192.168.88.80/32 scope global eth0

 配置名称解析

通过本机hosts文件实现名称解析
[root@myhost ~]# echo "192.168.88.80 www.danei.com" >> /etc/hosts
  • 如果客户端是windows主机,则使用记事本程序打开C:\windows\System32\drivers\etc\hosts添加名称解析
  • 当点击http://www.danei.com页面中任意链接时,地址栏上的地址,都会变成192.168.88.11。通过以下方式修复它:
# 在nfs服务器上修改配置文件
[root@nfs ~]# vim /nfs_root/html/wp-config.php 
# define('DB_NAME', 'wordpress')它的上方添加以下两行:
define('WP_SITEURL', 'http://www.danei.com');
define('WP_HOME', 'http://www.danei.com');

以上就是全部的云计算第一个简单项目了,该项目主要讲述了,搭建网站的lnmp结构。和相关的数据库读写分离,web服务器的keepalived,与NGINX的负载均衡设值。

彩蛋: 

        很多国产监控面板,上面都有一键建站功能,你熟悉了上述功能之后,你就可以快速上手使用了。

 功能也很多,和华为云、阿里云也有合作。在两家平台创建服务器时,可以自己勾选宝塔面板,安装在服务器上。设置也方便绑定ip。windterm等远程连接软件,都可以在命令行输入

bt      调用出bt终端。

想要下载可以点下方链接,下载电脑对应版本。

 宝塔面板下载,免费全能的服务器运维软件 

我不是打广告的,宝塔也没给我钱嗷,喜欢就可以试试,毕竟宝塔本省也是国产监控软件 的一种,了解一下。  ^_^

  

 问题:  单机版可以进入自己的域名网站,自己也可以领ssl测试证书。如果是公网部署网站,需要自己 买域名,配置SSL安全证书,网站工商局网上备案等相关细微操作。

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

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

相关文章

AlDente Pro for Mac电脑 充电限制保护工具 安装教程【简单,轻松上手】

Mac分享吧 文章目录 AlDente Pro for Mac 充电限制保护工具 安装完成&#xff0c;软件打开效果一、AlDente Pro for Mac 充电限制保护工具 Mac电脑版——v1.28.41️⃣&#xff1a;下载软件2️⃣&#xff1a;安装软件&#xff0c;将安装包从左侧拖入右侧文件夹中&#xff0c;等…

Halcon实战——基于NCC模板匹配的芯片检测(附源码)

Halcon实战——基于NCC模板匹配的芯片检测&#xff08;附源码&#xff09; 关于作者 作者&#xff1a;小白熊 作者简介&#xff1a;精通python、matlab、c#语言&#xff0c;擅长机器学习&#xff0c;深度学习&#xff0c;机器视觉&#xff0c;目标检测&#xff0c;图像分类&am…

Java | Leetcode Java题解之第493题翻转对

题目&#xff1a; 题解&#xff1a; class Solution {public int reversePairs(int[] nums) {Set<Long> allNumbers new TreeSet<Long>();for (int x : nums) {allNumbers.add((long) x);allNumbers.add((long) x * 2);}// 利用哈希表进行离散化Map<Long, Int…

linux 效率化 - 输入法 - fcitx5

安装 Fcitx5 1. 卸载 ibus 框架 由于 ibus 和 fcitx 可能会冲突&#xff0c;先卸载 ibus&#xff08;暂未确认原因&#xff09; sudo apt remove --purge ibus2. 安装 fcitx5 输入法框架 sudo apt update sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk…

深入理解Nest的REQUEST范围和TRANSIENT范围

深入理解Nest的REQUEST范围和TRANSIENT范围 单例模式REQUEST范围控制器的REQUEST范围REQUEST范围的冒泡特性场景 TRANSIENT范围例外场景 总结 单例模式 单例模式是指在整个程序执行期间&#xff0c;程序内的类都会实例化&#xff0c;且与应用程序生命周期直接相关&#xff0c;…

javax.el.PropertyNotFoundException: Property ‘XXX‘ not found on type XXX(类的路径)

捣鼓了半小时的bug 在网上找了好多方案,都没有解决 其中一个佬的解决方案:异常&#xff1a;javax.el.PropertyNotFoundException: Property xxx not found on type java.lang.String-CSDN博客 但是还是没有解决我的问题 最终解决方法,在jsp文件头部导入了类包(第三行我导入…

【Nginx系列】Nginx配置超时时间

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

MySQL日期类型选择建议

我们平时开发中不可避免的就是要存储时间&#xff0c;比如我们要记录操作表中这条记录的时间、记录转账的交易时间、记录出发时间、用户下单时间等等。你会发现时间这个东西与我们开发的联系还是非常紧密的&#xff0c;用的好与不好会给我们的业务甚至功能带来很大的影响。所以…

深入拆解TomcatJetty(二)

深入拆解Tomcat&Jetty&#xff08;二&#xff09; 专栏地址&#xff1a;https://time.geekbang.org/column/intro/100027701 1、Tomcat支持的IO模型和应用层协议 IO模型&#xff1a; NIO&#xff1a;非阻塞 I/O&#xff0c;采用 Java NIO 类库实现。NIO2&#xff1a;异…

Cyber RT 之 Timer Component 实践(apollo 9.0)

实验内容 Component 是 Cyber RT 提供的用来构建功能模块的基础类&#xff0c;Component 有两种类型&#xff0c;分别为 Component 和 TimerComponent。 相较于 Component&#xff0c;TimerComponent 不提供消息融合&#xff0c;也不由消息触发运行&#xff0c;而是由系统定时…

UE5 gameplay学习 蓝图0 level blueprint

首先在左上角这个位置可以创建一个这个蓝图 我理解这个蓝图适合做全局事件规划啥的 在场景选中一个物体&#xff0c;右侧面板拿到他&#xff0c;直接拖入蓝图&#xff0c;就能操作他了 这里获取到了这个物体&#xff0c;在gamebegin的时候把Z加了500 执行播放的时候能看见他从…

Windows API 一 ----起步

目录 1.介绍主函数入口参数。 2. 简单介绍 Windows.h 这个头文件 小结&#xff0c;也聊一聊 1.介绍主函数入口参数。 第一个参数: HINSTANCE 类型的 参数&#xff0c; 称为“实例句柄“&#xff0c;这个参数唯一标志了我们写的这个程序。 第二个参数&#xff1a; HINSTANCE…

poisson过程——随机模拟(Python和R实现)

Python实现 exponential()使用&#xff0c;自动poisson过程实现。 import numpy as np import matplotlib.pyplot as plt# Parameters lambda_rate 5 # rate parameter (events per time unit) T 10 # total time# Generate Poisson process times np.random.exponential(…

k8s系列-Rancher 上操作的k8s容器网络配置总结

Rancher 上操作的k8s容器网络配置总结 要在 Rancher 中配置Spring Boot 应用 ykhd-zhjgyw-xpwfxfjfl 服务&#xff0c;正确的配置方式如下&#xff1a; 1. 应用程序监听端口 在 application.yaml 文件中&#xff0c;配置的应用监听端口是 10001&#xff0c;并且应用的上下文…

Mycat 详细介绍及入门实战,解决数据库性能问题

一、基本原理 1、数据分片 &#xff08;1&#xff09;、水平分片 Mycat 将一个大表的数据按照一定的规则拆分成多个小表&#xff0c;分布在不同的数据库节点上。例如&#xff0c;可以根据某个字段的值进行哈希取模&#xff0c;将数据均匀的分布到不同的节点上。 这样做的好处…

美摄科技云服务解决方案,方案成熟,接入简单

美摄科技作为视频处理领域的先锋&#xff0c;凭借其强大的技术实力和深厚的行业经验&#xff0c;推出了成熟的云服务解决方案&#xff0c;为轻量化视频制作开辟了全新的道路。 一、成熟方案&#xff0c;接入无忧 美摄科技云服务解决方案的最大亮点在于其成熟度和易用性。我们…

RabbitMQ 入门(四)SpringAMQP五种消息类型(Work Queue)

一、WorkQueue(工作消息队列) Work queues&#xff0c;也被称为&#xff08;Task queues&#xff09;&#xff0c;任务模型。简单来说就是让多个消费者绑定到一个队列&#xff0c;共同消费队列中的消息。 当消息处理比较耗时的时候&#xff0c;可能生产消息的速度会远远大于…

react里实现左右拉伸实战

封装组件&#xff1a; 新建一个resizeBox.tsx文件写上代码如下&#xff1a; import React, { ReactNode, useState, useEffect, useRef } from react; import styles from "./resizeBox.less"; interface ResizableBoxProps {/*** 盒子的宽度*/widthNum?: number;…

比较相同机器上 redis和mysql分别单独承载的 最大连接数量

在相同的机器上&#xff0c;Redis 和 MySQL 的最大连接数量会受到硬件配置&#xff08;如 CPU、内存、网络等&#xff09;、配置参数和应用场景的影响。以下是对 Redis 和 MySQL 在单机环境下最大连接数的比较&#xff1a; Redis 最大连接数量 默认配置&#xff1a; Redis 默…

【2024最新版】网络安全学习路线-适合入门小白

首先说明&#xff0c;我是一名CTF的web手&#xff0c;这是我自己亲身学习网络安全的路线&#xff0c;希望能够帮到大家&#xff0c;我虽然不是大牛&#xff0c;但我也希望能够帮助一些网安小白找到自己学习的方向&#xff0c;后面有就业的详细安全技术要求&#xff0c;如果真想…