ansible部署lnmp架构

news2025/1/13 9:44:24

环境准备:

主机名IP服务系统
ansible192.168.160.131ansibleCentOS-8.5
nginx192.168.160.132nginxCentOS-8.5
mysql192.168.160.137mysqlCentOS-8.5
php192.168.160.139phpCentOS-8.5

1、生成私钥,对另外三台主机进行免密登入

[root@ansible ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? yes
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Ny1q6A+oJY8ZDV3+eX0hpKzOYWvrtR5/FipNa7DWj+0 root@ansible
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|                 |
|      .     .    |
|   . o   . +     |
|  . . . S * o .  |
|   o . o =.+.... |
|  o + o O +*.o.. |
|   O . *.=++*+o  |
|  + . .+B+ooo=E  |
+----[SHA256]-----+
[root@ansible ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.160.132
[root@ansible ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.160.137
[root@ansible ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.160.139

2.构建Ansible清单

[root@ansible ~]# cd /etc/ansible/
[root@ansible ansible]# vim hosts 
//添加受管主机
192.168.160.132
192.168.160.137
192.168.160.139

3. 受管主机安装python3

[root@nginx ~]# yum -y install python3
[root@mysql ~]# yum -y install python3
[root@php ~]# yum -y install python3

4. 管理nginx受管主机部署nginx服务

//创建系统用户nginx
[root@ansible ansible]# ansible 192.168.160.132 -m user -a 'name=nginx system=yes shell=/sbin/nologin state=present'

//安装依赖包
[root@ansible ansible]# ansible 192.168.160.132 -m yum -a 'name=pcre-devel,openssl,openssl-devel,gd-devel,gcc,gcc-c++,make,wget state=present'

//创建日志存放目录
[root@ansible ansible]# ansible 192.168.160.132 -m file -a 'path=/var/log/nginx state=directory'
[root@ansible ansible]# ansible 192.168.160.132 -m file -a 'path=/var/log/nginx state=directory owner=nginx group=nginx'

//下载nginx并解压
[root@ansible ansible]# ansible 192.168.160.132 -a 'wget http://nginx.org/download/nginx-1.20.2.tar.gz'
[root@ansible ansible]# ansible 192.168.160.132 -a 'tar xf nginx-1.20.2.tar.gz'

//编写编译脚本,然后进行编译安装
[root@ansible ansible]# mkdir scripts/
[root@ansible ansible]# vim scripts/a.sh 
#!/bin/bash

cd nginx-1.20.2
./configure --prefix=/usr/local/nginx
--user=nginx --group=nginx --with-debug 
--with-http_ssl_module
--with-http_realip_module
--with-http_image_filter_module
--with-http_gunzip_module
--with-http_gzip_static_module
--with-http_stub_status_module
--http-log-path=/var/log/nginx/access.log
--error-log-path=/var/log/nginx/error.log
[root@ansible ansible]# chmod +x scripts/a.sh 
[root@ansible ansible]# ansible 192.168.160.132 -m script -a '/etc/ansible/scripts/a.sh'

[root@ansible ansible]# ansible 192.168.160.132 -m shell -a 'cd nginx-1.20.2 && make && make install '

//配置环境变量
[root@ansible ansible]# ansible 192.168.160.132 -m shell -a 'echo "export PATH=/usr/local/nginx/sbin:$PATH" > /etc/profile.d/nginx.sh'
[root@ansible ansible]# ansible 192.168.160.132 -m shell -a '. /etc/profile.d/nginx.sh'

[root@ansible ansible]# ansible 192.168.160.132  -a 'nginx'
[root@ansible ansible]# ansible 192.168.160.132  -a 'ss -anlt'
192.168.160.132 | CHANGED | rc=0 >>
State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0      128          0.0.0.0:80        0.0.0.0:*          
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*          
LISTEN 0      128             [::]:22           [::]:* 

//编写service文件
[root@ansible ansible]# vim scripts/nginx.sh
#!/bin/bash

cat > /usr/lib/systemd/system/nginx.service <<EOF
[Unit]
Description=nginx server daemon
After=network.target sshd-keygen.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp= true

[Install]
WantedBy=multi-user.target
EOF


[root@ansible ansible]# chmod +x scripts/nginx.sh 
[root@ansible ansible]# ansible 192.168.160.132 -m script -a '/etc/ansible/scripts/nginx.sh'

//重启nginx服务
[root@ansible ansible]# ansible 192.168.160.132 -m service -a 'name=nginx state=restarted'

//查看nginx服务状态
[root@ansible ansible]# ansible 192.168.160.132 -a 'ss -anlt' 
192.168.160.132 | CHANGED | rc=0 >>
State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0      128          0.0.0.0:80        0.0.0.0:*          
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*          
LISTEN 0      128             [::]:22           [::]:* 

//创建存放网站名称,写入php网页信息
[root@ansible ansible]# ansible 192.168.160.132 -a 'rm -rf /usr/local/nginx/html/*'

[root@ansible ansible]# vim scripts/nginx.php.sh

#!/bin/bash
cat > /usr/local/nginx/html/index.php <<EOF
<?php
        phpinfo();
?>
EOF
[root@ansible ansible]# chmod +x scripts/nginx.php.sh 
[root@ansible ansible]# ansible 192.168.160.132 -m script -a '/etc/ansible/scripts/nginx.php.sh'

//修改nginx服务的配置

5. 管理mysql受管主机部署mysql服务

//创建系统用户msyql
[root@ansible ansible]# ansible 192.168.160.137 -m user -a 'name=mysql system=yes shell=/sbin/nologin state=present'

//安装依赖包
[root@ansible ansible]# ansible 192.168.160.137 -m yum -a 'name=ncurses-compat-libs,perl,ncurses-devel,openssl-devel,openssl,cmake,mariadb-devel state=present'

//下载nginx并解压
[root@ansible ansible]# ansible 192.168.160.137 -a 'wget https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz?spm=a2c6h.25603864.0.0.7a2e70b2GVOPCU'
[root@ansible ansible]# ansible 192.168.160.137 -a 'tar xf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz'

//修改MySQL数据库名称
[root@ansible ansible]# ansible 192.168.160.137 -a 'mv mysql-8.0.28-linux-glibc2.12-x86_64 mysql'
[root@ansible ansible]# ansible 192.168.160.137 -a 'mv mysql /usr/local/'

//修改目录/usr/local/mysql的属主属组
[root@ansible ansible]# ansible 192.168.160.137 -m file -a 'path=/usr/local/mysql owner=mysql group=mysql'

//添加环境变量
[root@ansible ansible]# ansible 192.168.160.137 -m shell -a 'echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh'
[root@ansible ansible]# ansible 192.168.160.137 -m shell -a 'source /etc/profile.d/mysql.sh'

//头文件
[root@ansible ansible]# ansible 192.168.160.137 -a 'ln -sv /usr/local/mysql/include/ /usr/include/mysql'

//库文件
[root@ansible ansible]# ansible 192.168.160.137 -m shell -a 'echo "/usr/local/mysql/lib/" > /etc/ld.so.conf.d/mysql.conf'

//man文档
[root@ansible ansible]# ansible 192.168.160.137 -a 'sed -i "22a MANDATORY_MANPATH                         /usr/local/mysql/man" /etc/man_db.conf'

//建立数据存放目录
[root@ansible ansible]# ansible 192.168.160.137 -m file -a 'path=/opt/data state=directory owner=mysql group=mysql'

//初始化数据库 
[root@ansible ansible]# ansible 192.168.160.137 -m shell -a '/usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/opt/data/'
192.168.160.137 | CHANGED | rc=0 >>
2022-10-22T10:16:43.715352Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.28) initializing of server in progress as process 42021
2022-10-22T10:16:43.729133Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-10-22T10:16:44.704775Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-10-22T10:16:46.845493Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 1eP>h#nRO&;7

//配置服务启动脚本
[root@ansible ansible]# ansible 192.168.160.137 -a 'cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld'
[root@ansible ansible]# ansible 192.168.160.137 -a 'sed  -i "46cbasedir=/usr/local/mysql" /etc/init.d/mysqld'
[root@ansible ansible]# ansible 192.168.160.137 -a 'sed  -i "47cdatadir=/opt/data" /etc/init.d/mysqld'

//编写mysql配置文件和service文件
[root@ansible ansible]# vim scripts/mysql.sh 
#!/bin/bash

cat > /etc/my.cnf <<EOF
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve
EOF

cat > /usr/lib/systemd/system/mysqld.service <<EOF
[Unit]
Description=mysql server daemon
After=network.target sshd-keygen.target

[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
EOF
[root@ansible ansible]# chmod +x scripts/mysql.sh 
[root@ansible ansible]# ansible 192.168.160.137 -m script -a '/etc/ansible/scripts/mysql.sh'

[root@ansible ansible]# ansible 192.168.160.137 -a 'systemctl daemon-reload'
[root@ansible ansible]# ansible 192.168.160.137 -m service -a 'name=mysqld state=restarted'
[root@ansible ansible]# ansible 192.168.160.137 -a 'ss -anlt'
192.168.160.137 | CHANGED | rc=0 >>
State  Recv-Q Send-Q Local Address:Port  Peer Address:PortProcess
LISTEN 0      128          0.0.0.0:22         0.0.0.0:*          
LISTEN 0      128                *:3306             *:*          
LISTEN 0      128             [::]:22            [::]:* 

//修改数据库密码
[root@ansible ansible]# ansible 192.168.160.137 -a 'mysqladmin -uroot -p"1eP>h#nRO&;7" password 123456'
192.168.160.137 | CHANGED | rc=0 >>
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

//重启mysql服务
[root@ansible ansible]# ansible 192.168.160.137 -m service -a 'name=mysqld state=restarted'
[root@ansible ansible]# ansible 192.168.160.137 -a 'ss -anlt'
192.168.160.137 | CHANGED | rc=0 >>
State  Recv-Q Send-Q Local Address:Port  Peer Address:PortProcess
LISTEN 0      128          0.0.0.0:22         0.0.0.0:*          
LISTEN 0      128                *:3306             *:*          
LISTEN 0      128             [::]:22            [::]:*   

5. 管理php受管主机部署php服务

//安装依赖包
[root@ansible ansible]# ansible 192.168.160.139 -m yum -a 'name=gcc,gcc-c++,vim,make,wget,libxml2,libxml2-devel,openssl,openssl-devel,bzip2,bzip2-devel,libcurl,libcurl-devel,libicu-devel,libjpeg,libjpeg-devel,libpng,libpng-devel,openldap-devel,pcre-devel,freetype,freetype-devel,gmp,gmp-devel,libmcrypt,libmcrypt-devel,readline,readline-devel,libxslt,libxslt-devel,mhash,mhash-devel,php-mysqlnd state=present'
[root@ansible ansible]# ansible 192.168.160.139 -a 'yum -y install  http://mirror.centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-2.el8.x86_64.rpm'

//下载PHP并解压
[root@ansible ansible]# ansible 192.168.160.139 -a 'wget https://www.php.net/distributions/php-8.1.11.tar.gz'
[root@ansible ansible]# ansible 192.168.160.139 -a 'tar xf php-8.1.11.tar.gz -C /usr/src'

//编译安装php
#编译脚本
[root@ansible ansible]# vim scripts/php.sh
#!/bin/bash

cd /usr/src/php-8.1.11/
./configure --prefix=/usr/local/php8 --with-config-file-path=/etc --enable-fpm --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-openssl --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --enable-exif --enable-ftp --enable-gd --with-jpeg --with-zlib-dir --with-freetype --with-gettext --enable-json --enable-mbstring --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-readline --enable-shmop --enable-simplexml --enable-sockets --with-zip --enable-mysqlnd-compression-support --with-pear --enable-pcntl --enableposix 
[root@ansible ansible]# chmod +x scripts/php.sh 
[root@ansible ansible]# ansible 192.168.160.139 -m script -a '/etc/ansible/scripts/php.sh'
[root@ansible ansible]# ansible 192.168.160.139 -m shell -a 'cd /usr/src/php-8.1.11/ && make && make install'

//安装后配置
[root@ansible ansible]# ansible 192.168.160.139 -m shell -a 'echo "export PATH=/usr/local/php8/bin/:$PATH" > /etc/profile.d/php8.sh
[root@ansible ansible]# ansible 192.168.160.139 -m shell -a 'source /etc/profile.d/php8.sh'
[root@ansible ansible]# ansible 192.168.160.139 -a 'php -v'
192.168.160.139 | CHANGED | rc=0 >>
PHP 8.1.11 (cli) (built: Oct 22 2022 09:23:40) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.11, Copyright (c) Zend Technologies

//配置php-fpm
[root@ansible ansible]# ansible 192.168.160.139 -a '\cp /usr/src/php-8.1.11/php.ini-production /etc/php.ini'
[root@ansible ansible]# ansible 192.168.160.139 -a '\cp /usr/src/php-8.1.11/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm'
[root@ansible ansible]# ansible 192.168.160.139 -m file -a 'path=/etc/init.d/php-fpm mode=755'
[root@ansible ansible]# ansible 192.168.160.139 -a '\cp /usr/local/php8/etc/php-fpm.conf.default  /usr/local/php8/etc/php-fpm.conf'
[root@ansible ansible]# ansible 192.168.160.139 -a '\cp /usr/local/php8/etc/php-fpm.d/www.conf.default /usr/local/php8/etc/php-fpm.d/www.conf'

//启动php-fpm
[root@ansible ansible]# ansible 192.168.160.139 -a 'service php-fpm start'
192.168.160.139 | CHANGED | rc=0 >>
Starting php-fpm  done
[root@ansible ansible]# ansible 192.168.160.139 -a 'ss -anlt'
192.168.160.139 | CHANGED | rc=0 >>
State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0      128        127.0.0.1:9000      0.0.0.0:*          
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*          
LISTEN 0      128             [::]:22           [::]:*

//连接nginx和php
##生成php测试页面
[root@ansible ansible]# ansible 192.168.160.139 -m file -a 'path=/usr/local/nginx state=directory'
[root@ansible ansible]# ansible 192.168.160.139 -m file -a 'path=/usr/local/nginx/html state=directory'

[root@ansible ansible]# vim scripts/n-p.sh
#!/bin/bash

cat > /usr/local/nginx/html/index.php << EOF
<?php
     phpinfo();
?>
EOF

[root@ansible ansible]# chmod +x scripts/n-p.sh 
[root@ansible ansible]# ansible 192.168.160.139 -m script -a '/etc/ansible/scripts/n-p.sh' 

//修改nginx配置文件
[root@ansible ansible]# ansible 192.168.160.139 -a 'sed -i "36clisten = 192.168.160.139:9000" /usr/local/php8/etc/php-fpm.d/www.conf'
[root@ansible ansible]# ansible 192.168.160.139 -a 'sed -i "63clisten.allowed_clients = 192.168.160.132" /usr/local/php8/etc/php-fpm.d/www.conf'

[root@ansible ansible]# ansible 192.168.160.132 -a 'sed -i "45c                   index  index.php index.html index.htm;" /usr/local/nginx/conf/nginx.conf' 
[root@ansible ansible]# ansible 192.168.160.132 -a 'sed -i "65c     location ~ \.php$ {" /usr/local/nginx/conf/nginx.conf'
[root@ansible ansible]# ansible 192.168.160.132 -a 'sed -i "66c     root           html;" /usr/local/nginx/conf/nginx.conf' 
[root@ansible ansible]# ansible 192.168.160.132 -a 'sed -i "67c     fastcgi_pass   192.168.160.139:9000;" /usr/local/nginx/conf/nginx.conf
[root@ansible ansible]# ansible 192.168.160.132 -a 'sed -i "68c     fastcgi_index  index.php;" /usr/local/nginx/conf/nginx.conf' 
[root@ansible ansible]# ansible 192.168.160.132 -a 'sed -i "69c     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;" /usr/local/nginx/conf/nginx.conf'
[root@ansible ansible]# ansible 192.168.160.132 -a 'sed -i "70c      include        fastcgi_params;" /usr/local/nginx/conf/nginx.conf'
[root@ansible ansible]# ansible 192.168.160.132 -a 'sed -i "71c      }" /usr/local/nginx/conf/nginx.conf'

//重启nginx和php服务
[root@ansible ansible]# ansible 192.168.160.132 -m service -a 'name=nginx state=restarted'
[root@ansible ansible]# ansible 192.168.160.139 -a 'service php-fpm restart' 

访问web
在这里插入图片描述

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

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

相关文章

【单片机毕业设计】【mcuclub-jj-007】基于单片机的门铃的设计

最近设计了一个项目基于单片机的门铃&#xff0c;与大家分享一下&#xff1a; 一、基本介绍 项目名&#xff1a;门铃 项目编号&#xff1a;mcuclub-jj-007 单片机类型&#xff1a;STC89C52、STM32F103C8T6 具体功能&#xff1a; 1、通过人体热释电检测是否有人&#xff0c;当…

Java --- 创建SpringMVC项目

目录 一、什么是MVC 二、什么是SpringMVC 三、SpringMVC的特点 四、创建SpringMVC项目 4.1、开发环境 4.2、创建maven工程 4.3、配置web.xml文件 4.4、创建请求控制器 4.5、配置springMVC.xml文件 4.5、访问首页面 4.6、访问指定页面 一、什么是MVC MVC是一种软件架…

C++:C++的IO流

while (scanf("%s", buff) ! EOF)如何终止&#xff1f; 答&#xff1a;ctrl z换行 是规定&#xff0c;ctrl c 是发送信号杀死进程&#xff08;一般不建议ctrl c&#xff09;。 int main() {string str;while (cin >> str) // operator>>(cin, str){cou…

K_A01_001 基于单片机驱动WS2812 点灯流水灯 0-9显示

目录 一、资源说明 二、基本参数 三、通信协议说明 WS2812时序: 代码: 四、部分代码说明 1、接线说明 2、主函数 五、相关资料链接 六、数字提取格式 七、视频效果展示与资料获取 八、项目所有材料清单 九、注意事项 十、接线表格 一、资源说明 单片机型号 测试条件 模…

【一起学习数据结构与算法】优先级队列(堆)

目录一、什么是优先级队列&#xff1f;二、堆 (heap&#xff0c;基于二叉树)2.1 什么是堆&#xff1f;2.2 堆的分类2.3 结构与存储三、堆的操作3.1 堆创建3.2 插入元素3.3 弹出元素四、用堆模拟实现优先级队列五、堆的一个重要应用-堆排序六、经典的TOPK问题6.1 排序6.2 堆一、…

如何用两个晚上教女生学会Python

文章目录安装、需求引导和开发模型命令行计算器用温度指导穿衣VS Code 和女孩子的衣柜用遍历来挑选衣物交互课后作业事情的起因是这样的&#xff0c;知乎上有个妹纸加我&#xff0c;说要相亲。尽管我欣喜若狂&#xff0c;但恰巧在外出差&#xff0c;根本走不开。妹纸于是说要不…

自动化和半自动矢量化提取地物矢量轮廓

假期愉快&#xff08;这个假期加班了没&#xff1f;图片&#xff09;&#xff01;今天小助手来分享关于自动化和半自动化的矢量提取&#xff0c;使用的软件都是我们常用的软件。一是使用Global Mapper对遥感影像或矢量底图进行自动提取&#xff0c;二是基于天地图矢量底图使用A…

阶段性总结 | C语言

… &#x1f333;&#x1f332;&#x1f331;本文已收录至&#xff1a;技术之外的往事 更多知识尽在此专栏中&#xff01; &#x1f389;&#x1f389;&#x1f389;欢迎点赞、收藏、关注 &#x1f389;&#x1f389;&#x1f389;回顾过去 各位CSND的小伙伴们大家好&#xf…

C · 进阶 | 慎看!深剖文件操作,怕你停不下

啊我摔倒了..有没有人扶我起来学习.... 目录前言一、 什么是文件1.1 程序文件1.2 数据文件1.3 文件名二、文件的打开和关闭2.1 文件指针2.2 文件的打开和关闭三、文件的顺序读写3.0 有必要解释一下*3.1 fputc3.2 fgetc3.3 fprintf3.4 fscanf3.4.1来个小总结&#xff08;这里忽略…

双非本23秋招之路-从考研跑路到某安全大厂(无实习、项目)

文章目录双非本23秋招之路-从考研跑路到某安全大厂&#xff08;无实习、项目&#xff09;一、自我介绍二、简历准备三、刷题四、八股文五、项目方面六、关于实习七、面试方面八、秋招路程九、简历投递十、面经分享双非本23秋招之路-从考研跑路到某安全大厂&#xff08;无实习、…

springboot+jsp新闻发布投稿系统

本文采用JSP技术构建的一个管理系统&#xff0c;实现了一个新闻发布系统。新闻发布系统的主要实现功能包括&#xff1a;管理员&#xff1a;首页、个人中心、用户管理 、新闻分类管理 、新闻信息管理、新闻投稿管理、论坛管理、我的收藏管理、投诉建议管理、系统管理。前台首页&…

Python编程 print输出函数

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.输入与输出 1.print&#xff08;&#xff09;输出函数 2.sep 3.en…

【MySQL数据库和JDBC编程】第三章-第一节:MySQL的增删查改基础篇

文章目录一&#xff1a;INSET新增二&#xff1a;SELECT查询&#xff08;1&#xff09;全列查询&#xff08;2&#xff09;指定列查询&#xff08;3&#xff09;查询字段为表达式&#xff08;4&#xff09;起别名&#xff08;5&#xff09;去重&#xff08;DISTINCT&#xff09;…

微信小程序request:fail报错(包括不执行fail回调问题)

微信小程序request:fail报错&#xff08;包括不执行fail回调的问题&#xff09;1. 不执行fail回调的问题2. request:fail报错原因2.1 小程序未配置域名导致的错误2.2 微信小程序使用的服务器环境不支持TLS1.22.3 使用的SSL证书不信任2.4 SSL证书证书链缺乏2.5 域名未备案&#…

使用Spring框架进行Web项目开发(初级)

目录 前言 1. 为什么常规的Spring框架不适合Web项目呢&#xff1f; 2. 如何在Spring框架中创建容器&#xff1f; 3. Spring框架开发Web项目的步骤 3.1 创建maven项目 3.2 添加相应的依赖 3.3 在webapp目录下的web.xml中注册监听器 3.4 在webapp文件夹下的web.xml中配置…

【信息科学技术与创新】自然语言处理 NLP 计算机与智能 课程总结思考

深入了解 NLP 及课程总结反思 摘要 自然语言处理的历史发展自然语言处理的方法与相关应用关于数据智能科学技术导论这门课程的总结反思 Navigator深入了解 NLP 及课程总结反思一、自然语言处理的历史发展二、自然语言处理的方法与相关应用三、关于数据智能科学技术导论这门课…

【C++初阶】日期类实现、const成员函数、取地址及const取地址操作符重载

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【C学习与应用】 ✒️✒️本篇内容&#xff1a;日期类的代码实现、const成员函数的概念和作用、取地址及const取地址操作符重载 &#x1f6a2;&#x1f6a2…

去水印小程序

真正的大师,永远都怀着一颗学徒的心&#xff01; 一、项目简介 项目UI确实有点朴实无华&#xff0c;但并不影响她美丽的内在。这和人也一样&#xff0c;属于心灵美。 虽然&#xff0c;这个社会上的大多数人喜欢从一件事物的外表&#xff0c;去评判事物的好坏&#xff0c;即好…

vue支付项目-APP支付宝支付功能

⭐️⭐️⭐️ 作者&#xff1a;船长在船上 &#x1f6a9;&#x1f6a9;&#x1f6a9; 主页&#xff1a;来访地址船长在船上的博客 &#x1f528;&#x1f528;&#x1f528; 简介&#xff1a;CSDN前端领域优质创作者&#xff0c;资深前端开发工程师&#xff0c;专注前端开发…

FreeRTOS 软件定时器的使用

FreeRTOS中加入了软件定时器这个功能组件&#xff0c;是一个可选的、不属于freeRTOS内核的功能&#xff0c;由定时器服务任务&#xff08;其实就是一个定时器任务&#xff09;来提供。 软件定时器是当设定一个定时时间&#xff0c;当达到设定的时间之后就会执行指定的功能函数&…