jar 和 war 包部署 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 方法1:war包直接放在tomcat的webapps目录下,当tomcat能运行的时候,会自动解压,再去访问自己war的那个地址 比如HomeAdmin.war放在那里,http://162.14.96.81:8080/HomeAdmin/这样就能直接访问 记得打开端口和防火墙 方法2:配置文件看本文的第五项,Tomcat配置。 http://162.14.96.81:8081/manager/html 打开,并且再要部署的war文件那个选择文件按钮,点击上传war,访问方式依旧和1一样 jar包只需要安装好jdk然后放在云文件夹的/nwa下新建一个文件夹myproject来装,比如C/S架构的服务器就可以直接放这里不断的去运行它。打开这个的终端 java -jar 文件名.jar 这个只能运行到终端没关闭,想不断运行则输入 nohup java -jar xxx.jar 这行输入即可关闭终端,也会一直保留,下面几行不用输入 ctrl+z #挂起到后台 bg #后台执行 ctrl+d 退出当前但程序还在 java -jar xxx.jar 只当前运行,关掉终端即关闭 (3)关闭进程 记得双开宝塔 ps -aux | grep java 找到 root 978 31.6 14.5 3067424 298600 ? Sl 09:23 0:12 java -jar myspringboot.jar 这个978就是pid kill -9 978 nohup java -jar luckyPic_Api-v1.jar --spring.profiles.active=prod & http://162.14.96.81:3737/doc.html
docker 安装及常用指令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 # 1、卸载旧版 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 2、需要的安装包 yum install -y yum-utils # 3、设置镜像的仓库(推荐使用阿里云的,十分的快) yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 更新yum软件包索引 yum makecache fast # 4、安装dokcer(docker-ce:社区版,ee:企业版) yum install docker-ce docker-ce-cli containerd.io # 5、启动docker systemctl start docker.service 停止docker (systemctl stop docker.service) # 6、是否安装成功,查看版本 docker --version / docker -v # 7、设置开机自启 systemctl enable docker # 8、创建自定义网络 docker network create --driver bridge --subnet 172.0.0.0/16 woniu_network # 1、卸载docker yum remove docker-ce docker-ce-cli containerd.io # 2、删除资源 rm -rf /var/lib/docker rm -rf /var/lib/containerd (2) docker rm -f 容器id 强制删除指定容器 docker rmi -f 镜像id 强制删除指定镜像 docker ps -a 查看所有的容器 docker exec -it 容器id bash 进入容器 docker images 查看已安装的镜像 docker start 容器id 启动容器 docker restart 容器id 重启容器 docker stop 容器id 停止当前正在运行的容器 docker rm 容器id # 删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -f docker pull 下载镜像 docker info 显示docker的系统信息,包括镜像和容器的数量 docker --help 帮助命令(查看所有的命令) docker search 搜索镜像 docker rmi -f 镜像id 镜像id 镜像id 删除多个镜像 docker rmi -f $(docker images -aq) 删除全部镜像 docker rm -f $(docker ps -aq) 删除所有的容器 docker ps -a -q|xargs docker rm 删除所有的容器 docker ps 查看正在运行的镜像 docker kill 容器id 强制停止当前容器
MYSQL5 版本安装以及 8 版本报 1251 错误的解决 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 1、安装mysql 先查看镜像 docker images 没有则 docker pull mysql:5.7.17 docker run -id --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=nwa999 mysql:5.7.17 不指定版本会安装8的版本,就1251错误 3307:3306:映射容器服务docker的 3306 端口到宿主机[linux系统]的 3307 端口,外部主机可以直接通过 宿主机ip:3307 访问到 MySQL 的服务。记得把腾讯云的防火墙3307端口打开 docker exec -it mysql bash 进入容器,必须先运行再进入才有mysql mysql -u root -p 能成功进入MySQL 2、查看mysql安装的版本 docker ps -a 可以看到mysql的容器id docker start 9d04478b1b1b 运行 docker exec -it 9d04478b1b1b bash 进入 mysql -h localhost -u root -p123456 进入数据库 select version();查看mysql版本,原先的是8点多版本出现加密规则问题 发现是8.0.31版本 3、报1251错误,原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。 先查看正在运行的容器id,接着进入这个查看的容器,不进入会发现mysql找不到 (1)查看 docker ps -a (2)进入这个查看的容器 docker exec -it CONTAINER ID bash (3)因为无法输入密码,直接这样登录即可 mysql -h localhost -u root -p123456 (4)使用数据库 use mysql (5)查看root select user,host from user where user='root'; (6)对远程连接进行授权 GRANT ALL ON *.* TO 'root'@'%'; (7)更改密码的加密规则 ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; (8)更改root的密码 mysql> ALTER USER 'root' @'%' IDENTIFIED WITH mysql_native_password BY '123456' ; (9)刷新权限,再次用客户端连接即可 flush privileges; 设置mysql最大连接数 方法1 重启就不行 docker exec -it mysql-master bash mysql -h localhost -u root -p123456 set GLOBAL max_connections=5202; 方法2 /nwa/mysql5.7/master/mysql下mysql.cnf末尾添加 ,效果好像不行 [mysqld] max_connections=5202 去navicat查看 show VARIABLES like 'max_conn%';
MYSQL 主从 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 1、先去云服务器安装下面2个数据库 主数据库: docker run -itd --name mysql-master -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.17; 从数据库: docker run -itd --name mysql-slave -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.17; 2、打开Navicat连接上面2个,在打开主的数据库,并且查询,输入下面代码 主数据库 CREATE user nwa@'%' IDENTIFIED by '123456'; 创建用户 %任何人都有权限访问 GRANT REPLICATION SLAVE ON *.* TO nwa@'%';赋予权限是从数据库的权限,能新建任何数据表 FLUSH PRIVILEGES;刷新、生效 SHOW GRANTS for nwa@'%'; 查看拥有权限 3、再去云服务器修改主从服务器的配置,先改主的设置 复制这个文件到外面的文件里,修改,修改完再复制回去 docker cp mysql-master:/etc/mysql /nwa/mysql5.7/master/ mysql --help | grep my.cnf 查看文件位置 4、修改这/nwa/mysql5.7/slave/mysql/mysql.conf.d里cnf结尾的文件,配置下,重点最后2行 [mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql # log-error = /var/log/mysql/error.log # By default we only accept connections from localhost # bind-address = 127.0.0.1 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 server-id = 100 log-bin = mysql-bin 5、修改完成后复制回去 docker cp /nwa/mysql5.7/master/mysql/mysql.conf.d/mysqld.cnf mysql-master:/etc/mysql/mysql.conf.d/ 6、再看一下原文件是否修改 docker exec -it mysql-master bash cd /etc/mysql/mysql.conf.d cat mysqld.cnf 7、同理设置从数据库,先复制,再修改,再复制 docker cp mysql-slave:/etc/mysql /nwa/mysql5.7/slave/ 修改配置文件 server-id = 101 log-bin = mysql-bin 再复制到容器里 docker cp /nwa/mysql5.7/slave/mysql/mysql.conf.d/mysqld.cnf mysql-slave:/etc/mysql/mysql.conf.d/ docker restart mysql-master 重启数据库 docker restart mysql-slave 以上docker里面主从设置完毕,再打开Navicat设置从数据库 STOP SLAVE; CHANGE MASTER TO MASTER_HOST='162.14.96.81', -- 宿主机ip MASTER_PORT=3309, -- mysql-master映射到宿主机的端口 MASTER_USER='nwa', -- 用户名 MASTER_PASSWORD='123456'; START SLAVE; 启动从数据库 SHOW SLAVE status; 检测从数据库状态 必须2给都是Yes 接下来主数据库创建表,从也会同步了 数据要用sql语句去删,别直接删除行,不然数据就不能同步了出现下面的错误! 如果状态里Slave_SQL_Running是no,则再Navicat从数据库查询下面 stop slave; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; start slave; SHOW SLAVE status; 检测从数据库状态 修改密码 docker exec -it mysql bash docker exec -it mysql-master bash docker exec -it mysql-slave bash mysql -h localhost -u root -pnwa999 set password for root@localhost = password('nwa999'); 这是只改本地,远程选下面 set password for 'root'@'%' =password('nwa999'); flush privileges; set password for 'root'@'%' =password('nwa741741'); 发现主从密码修改不掉
Linux 常用指令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息 ls [选项][目录或文件] -a 查看当前目录下的文件,包括隐藏文件 -l 长格式显示文件 -lh 以方便阅读的长格式显示 pwd 显示用户当前所在的目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd ~ 切换到家目录 cd / 切换到根目录 cd /home/lx/linux1/ 绝对路径:从家目录出发,直到想要去的目录 cd …/lx/ 相对路径:从当前目录出发,直到想去的目录 netstat -anp | grep 端口号 查看端口 mkdir [选项] [路径] 文件名 创建空目录 rmdir [-p] [路径] 目录名 -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除 touch 新建空文件 rm [选项] 文件名 - rm 有选项, rmdir 没有选项 - rmdir 只能删除空目录,不能删文件 - rm 带上选项-r可以删除非空目录 mv [选项] [路径] 旧文件名 [新路径][新文件名] mv命令是move的缩写,可以用来移动文件或者将文件改名(move(rename)files),是Linux系统下常用的命令,经常用来备份文件或者目录 选项 说明 -f force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖 -i 若目标文件 (destination) 已经存在时,就会询问是否覆盖 如果只移动不改名字,新名字可以不写 如果移动的同时改名字,新名字一定要写 cp [选项] [路径] 旧文件名 [新路径] 复制文件或目录 选项 说明 -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在 -i 或 --interactive 覆盖文件之前先询问用户 -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理 -R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 常用的几个命令: - i 切换到输入模式,以输入字符。 - x 删除当前光标所在处的字符。 - : 切换到底线命令模式,以在最底一行输入命令 在底线命令模式中,基本的命令有(已经省略了冒号): - q 退出程序 - w 保存文件 按ESC键可随时退出底线命令模式 grep 用于查找文件里符合条件的字符串 find 用来在指定目录下查找文件 kill 功能:用于删除执行中的程序或工作 kill [选项]/[信号] 进程号
Tomcat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 1、 docker pull tomcat:8 2、 docker run --name 给容器起名字 -p 主机端口:容器内部的端口 -d 启动的容器:容器的版本号 docker run --name tomcat8 -p 8081:8080 -d tomcat:8 其中--name tomcat8 可省略 3、 docker exec -it 容器id/容器名 bash 进入 4、 rm -r webapps mv webapps.dist/ webapps http://162.14.96.81:8081/ 即可访问页面,但是无法访问Manager App需修改配置 cd conf 5、安装vim,docker是基于linux,vim是其命令需要安装 apt-get update apt-get install vim clear清空页面 6、vim tomcat-users.xml进入编辑,键盘按下i 解除3行注释并且修改 <role rolename="tomcat"/> <role rolename="manager-gui"/> <user username="tomcat" password="tomcat" roles="manager-gui"/> <!-- <user username="both" password="<must-be-changed>" roles="tomcat,role1"/> <user username="role1" password="<must-be-changed>" roles="role1"/> --> </tomcat-users> 好了按下键盘esc 在输入:wq 7、exit 再进一次 docker exec -it tomcat8 bash cd webapps/ cd manager/ cd META-INF/ vim context.xml 输入键盘i编辑,修改成这样 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" /> 8、重启tomcat8即可 http://162.14.96.81:8081/manager/html 账号密码都是tomcat docker cp 0015300af648:webapps/ /nwa/ docker cp tomcat8:/webapps /nwa docker cp nginx01:/etc/nginx/ /nwa/nginx/ docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' tomcat8
Redis 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 (1)docker pull redis (2)在liunx里创建配置文件夹 /home/redis/myredis/data 创建这些文件夹即可 将myredis.conf放在data同级里,先放这个再配置其他 (3)启动redis容器 docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /home/redis/myredis/myredis.conf:/etc/redis/redis.conf -v /home/redis/myredis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass nwa999 –restart=always 总是开机启动 –log是日志方面的 -p 6379:6379 将6379端口挂载出去 –name 给这个容器取一个名字 -v 数据卷挂载 /home/redis/myredis/myredis.conf:/etc/redis/redis.conf 这里是将 liunx 路径下的myredis.conf 和redis下的redis.conf 挂载在一起。 /home/redis/myredis/data:/data 这个同上 -d redis 表示后台启动redis redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf –appendonly yes 开启redis 持久化 –requirepass 000415 设置密码 (4)查看运行日志并运行cli docker logs --since 30m myredis docker exec -it myredis redis-cli 因为加密无法直接set需要先 auth nwa999 config get requirepass 查看密码 (5)配置文件,复制保存为myredis.conf放data同级即可 # bind 192.168.1.100 10.0.0.1# bind 127.0.0.1 ::1# bind 127.0.0.1protected-mode no port 6379 tcp-backlog 511 requirepass nwa999 timeout 0 tcp-keepalive 300 daemonize no supervised no pidfile /var/run/redis_6379.pid loglevel notice logfile "" databases 30 always-show-logo yes save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir ./ replica-serve-stale-data yes replica-read-only yes repl-diskless-sync no repl-disable-tcp-nodelay no replica-priority 100 lazyfree-lazy-eviction no lazyfree-lazy-expire no lazyfree-lazy-server-del no replica-lazy-flush no appendonly yes appendfilename "appendonly.aof" no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes aof-use-rdb-preamble yes lua-time-limit 5000 slowlog-max-len 128 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 stream-node-max-bytes 4096 stream-node-max-entries 100 activerehashing yes hz 10 dynamic-hz yes aof-rewrite-incremental-fsync yes rdb-save-incremental-fsync yes (6)补充bug解决,springboot无法连接,密码加引号 spring: redis: port: 6379 # 服务器端口 host: localhost # r服务器地址 database: 0 # 数据库索引(默认0) password: '000415' #密码 jedis: pool: max-active: 50 # 连接池最大连接数(使用负值表示没有限制) max-wait: 3000ms # 连接池最大阻塞等待时间(使用负值表示没有限制) max-idle: 20 # 连接池中的最大空闲连接数 min-idle: 2 # 连接池中的最小空闲连接数 connect-timeout: 5000ms # 连接超时时间(毫秒) (7)修改密码 重装镜像
Nginx 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1、直接安装,没镜像自动装最新 docker run --name nginx01 -p 9091:80 -d nginx http://162.14.96.81:9091/ 2、创建linux下的目录1个 /nwa/nginx 3、复制nginx容器内的配置到挂载目录 docker cp nginx01:/etc/nginx/ /nwa/nginx/ docker cp nginx01:/usr/share/nginx/html /nwa/nginx docker cp nginx01:/var/log/nginx /nwa/nginx/log 4、安装新的nginx,顺便将其配置文件挂载到刚刚这个目录 docker run --name nginx04 -p 9094:80 -v /nwa/nginx/html:/usr/share/nginx/html -v /nwa/nginx/nginx/nginx.conf:/etc/nginx/nginx.conf -v /nwa/nginx/nginx/conf.d:/etc/nginx/conf.d -d nginx 然后修改/nwa/nginx/html下html内容,发现nginx4也会变化,说明成功 http://162.14.96.81:9091/ 下并不会有变化,因为它只是用来复制出文件,并没关联 http://162.14.96.81:9094/ 随着html改变改变,关联了外部的配置文件 5、nginx01配置完就没用了,删除 docker stop nginx01 docker rm nginx01
前后端项目部署 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 0、打算将vue项目部署到nginx04上面 1、先测试数据库部署到云,是否成功,成功即可将springboot项目pom.xml里<version>0.0.1-SNAPSHOT9999</version>对应上端口号,然后再打包成jar包放在云服务器,并启动,先用本地vue项目测试云后端,测试后端部署成功 nohup java -jar xxx.jar 2、vue项目本地打包前。Vue2配置config里 const { defineConfig } = require('@vue/cli-service') module.exports = defineConfig({ transpileDependencies: true, assetsDir: 'static', //打包配置文件 parallel: false, publicPath: './', devServer: { port: 9094, //这是vue启动的端口 // host: '192.168.1.101', //本地ip // open: true, proxy: { '/api': { // target: 'http://192.168.1.102:9999/', //这是本地服务器地址 // target: 'http://162.14.96.81:9999/', //这是本地访问的云服务器地址 target: 'http://162.14.96.81:9094/', //部署到云服务器对应nginx地址了 changeOrigin: true, ws: true, pathRewrite: { '^/api': '' } } } } }) npm run build打包成dist文件夹,并将文件夹内容拖进/nwa/nginx/html里面 http://162.14.96.81:9094/#/ 3、修改nginx配置文件/nwa/nginx/nginx/conf.d下的以conf后缀文件,3个配置点 upstream nwa { #配置1,对应后端端口 server 162.14.96.81:9999; } server { listen 80; listen [::]:80; server_name nwa; #配置2 #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } location /api/ { proxy_pass http://nwa/;#反向代理 配置3 } 4、验证配置是否正确 docker exec -it nginx04 bash nginx -t 会提示成功 nginx -s reload 再加载配置文件 5、再次http://162.14.96.81:9094/#/并且可以登录了 或者这样直接反向代理解决跨域问题 location /api { proxy_pass http://162.14.96.81:3737/; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
nacos 单机版安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 宝塔辅助安装 版本nacos-server-1.4.1.tar.gz 要对应springboot版本 而且必须需linux版本的安装包 (1)将压缩包直接拖到宝塔/nwa/nacos文件夹里面,然后解压 (2)配置mysql环境,/nwa/nacos/nacos/conf下的nacos-mysql.sql复制一下内容,然后我把数据放到了我的云数据库里面,nacos_config,新建查询,粘贴运行 (3)防火墙开放8848、9848、9849三个端口 nacos默认的端口为8848,由于Nacos2.0版本需要增加2个端口。进行一定偏移量自动生成(分别偏移了1000和1001) /nwa/nacos/nacos/conf里编辑application.properties文件 # # db.url.0=jdbc:mysql://162.14.96.81:3307/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true &useUnicode=true &useSSL=false &serverTimezone=UTC # db.user.0=root # db.password.0=nwa999 (4)在/nwa/nacos/nacos/bin下编辑startup.sh中主要根据当前服务器的配置修改JVM大小,比如:修改为1G或者更大 # =========================================================================================== # JVM Configuration # =========================================================================================== if [[ "${MODE}" == "standalone" ]]; then JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn512m" JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true" 改下面一行 JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn512m" (5) sh startup.sh -m standalone 启动 sh shutdown.sh 关闭 参考如下: https://blog.csdn.net/zhuocailing3390/article/details/123056124 docker pull nacos/nacos-server:1.4.1 mkdir -p /home/docker/nacos/conf \ mkdir -p /home/docker/nacos/logs \ mkdir -p /home/docker/nacos/data docker run -d -p 8848:8848 -p 9848:9848 \ --name nacos \ --restart=always \ --env MODE=standalone \ --env SPRING_DATASOURCE_PLATFORM=mysql \ --env MYSQL_SERVICE_HOST=162.14.96.81 \ --env MYSQL_SERVICE_PORT=3307 \ --env MYSQL_SERVICE_DB_NAME=nacos_config \ --env MYSQL_SERVICE_USER=root \ --env MYSQL_SERVICE_PASSWORD=nwa999 \ --env JVM_XMS=512m \ --env JVM_XMX=512m \ -v /home/docker/nacos/conf:/home/nacos/conf \ -v /home/docker/nacos/logs:/home/nacos/logs \ -v /home/docker/nacos/data:/home/nacos/data \ nacos/nacos-server:1.4.1 http://162.14.96.81:8848/nacos docker run -d -p 8848:8848 -p 9848:9848 -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /root/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties -v /root/nacos/logs:/home/nacos/logs --restart always --name nacos nacos/nacos-server:1.4.1 docker run -d -p 8848:8848 \ -e MODE=standalone \ -e PREFER_HOST_MODE=hostname \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=162.14.96.81 \ -e MYSQL_SERVICE_PORT=3307 \ -e MYSQL_SERVICE_DB_NAME=nacos_config \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=nwa999 \ -e MYSQL_DATABASE_NUM=1 \ -v /root/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \ -v /root/nacos/logs:/home/nacos/logs \ --restart always --name nacos nacos/nacos-server:1.4.1 docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server:1.4.1
维护 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 docker exec -it mysql-master bash docker exec -it mysql-slave bash mysql -h localhost -u root -p123456 mysql -h localhost -u root -pnwa999 set GLOBAL max_connections=5202; 去navicat查看 show VARIABLES like 'max_conn%'; 数据要用sql语句去删,别直接删除行,不然数据就不能同步了出现下面的错误! 如果状态里Slave_SQL_Running是no,则再Navicat从数据库查询下面 stop slave; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; start slave; SHOW SLAVE status; 检测从数据库状态 必须保持开发者的yml文件中都有主从配置,否则就会出现sqlNO的情况
阿里云服务器和 jdk1.8 安装 1 2 3 4 5 6 7 8 9 10 安装宝塔 https://blog.csdn.net/weixin_57024489/article/details/126671810 kpuyklbi 741741 yum list java-1.8* yum install java-1.8.0-openjdk* -y java -version
博客部署 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 1、直接安装,没镜像自动装最新 docker run --name nginx01 -p 80:80 -d nginx 2、创建linux下的目录1个 /nwa/nginxBlog 3、复制nginx容器内的配置到挂载目录 docker cp nginx01:/etc/nginx/ /nwa/nginxBlog/ docker cp nginx01:/usr/share/nginx/html /nwa/nginxBlog docker cp nginx01:/var/log/nginx /nwa/nginxBlog/log docker stop nginx01 docker rm nginx01 4、安装新的nginx,顺便将其配置文件挂载到刚刚这个目录,下面是一行 docker run --name nginx01 -p 80:80 -v /nwa/nginxBlog/html:/usr/share/nginx/html -v /nwa/nginxBlog/nginx/nginx.conf:/etc/nginx/nginx.conf -v /nwa/nginxBlog/nginx/conf.d:/etc/nginx/conf.d -d nginx 然后修改/nwa/nginxBlog/html下html内容,发现nginx1也会变化,说明成功 http://162.14.96.81/ 5、配置tomcat的反向代理 在/nwa/nginxBlog/nginx/conf.d下的文件下编辑 location /同级 location /HomeAdmin { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://162.14.96.81:8081/HomeAdmin; # 转发请求给 Tomcat 端口 } location /HomeClient { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://162.14.96.81:8081/HomeClient; # 转发请求给 Tomcat 端口 } docker exec -it nginx01 bash nginx -t 会提示成功 nginx -s reload 再加载配置文件
UI 组件库部署 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 docker run --name nginx02 -p 9094:80 -d nginx /nwa/nginxUi docker cp nginx02:/etc/nginx/ /nwa/nginxUi/ docker cp nginx02:/usr/share/nginx/html /nwa/nginxUi docker cp nginx02:/var/log/nginx /nwa/nginxUi/log docker stop nginx02 docker rm nginx02 docker run --name nginx02 -p 9094:80 -v /nwa/nginxUi/html:/usr/share/nginx/html -v /nwa/nginxUi/nginx/nginx.conf:/etc/nginx/nginx.conf -v /nwa/nginxUi/nginx/conf.d:/etc/nginx/conf.d -d nginx http://162.14.96.81:9094/ http://luckynwa.top/myui 访问这个会出现404,可以跳到主页就正常。解决不掉,老实用端口 location /myui { proxy_pass http://162.14.96.81:9094/index.html; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /assets { proxy_pass http://162.14.96.81:9094/assets; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
图床地址的反向代理 1 2 3 4 5 location /mypic { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://162.14.96.81:3737/; }
图片管理前端部署 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 docker run --name nginx03 -p 9095:80 -d nginx docker cp nginx03:/etc/nginx/ /nwa/nginxPic/ docker cp nginx03:/usr/share/nginx/html /nwa/nginxPic docker cp nginx03:/var/log/nginx /nwa/nginxPic/log docker stop nginx03 docker rm nginx03 docker run --name nginx03 -p 9095:80 -v /nwa/nginxPic/html:/usr/share/nginx/html -v /nwa/nginxPic/nginx/nginx.conf:/etc/nginx/nginx.conf -v /nwa/nginxPic/nginx/conf.d:/etc/nginx/conf.d -d nginx http://162.14.96.81:9095/ location /api { proxy_pass http://162.14.96.81:3737/; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } docker exec -it nginx03 bash nginx -t 会提示成功 nginx -s reload 再加载配置文件
80 端口部署多个项目 首先在一个 nginx 上,这个监控着 80 端口,其次需要有域名
域名有 1 级、2 级
比如 luckynwa.top 和头部加入 www 都是指向一个位置,这是 1 级
把 www 改成变得,还是 A 类型指向云服务 ip 即可
修改 nginx 配置,复制多个 serve 来监控 80 端口,不同前缀的值,每个 serve 都是一个服务,具体配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 server { listen 80; listen [::]:80; server_name WWW.luckynwa.top; location / { root /usr/share/nginx/html; index index.html index.htm; } location /HomeAdmin { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://162.14.96.81:8081/HomeAdmin; # 转发请求给 Tomcat 端口 } location /HomeClient { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://162.14.96.81:8081/HomeClient; # 转发请求给 Tomcat 端口 } location /mypic { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://162.14.96.81:3737/; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } server { listen 80; listen [::]:80; server_name myui.luckynwa.top; location / { root /usr/share/nginx/html/myui; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } server { listen 80; listen [::]:80; server_name mypic.luckynwa.top; location / { root /usr/share/nginx/html/mypic; index index.html index.htm; } location /api { proxy_pass http://162.14.96.81:3737/; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
负载均衡 Nginx 实现负载均衡的原理是将进入的客户端请求分发到多个后端服务器,以达到请求的平衡分配和提高整体系统性能的目的。
使用keepalived 管理两台 nginx,如果一台 nginx 挂了,可以切另一台 nginx
即用户访问一个域名时候,会代理到不同的后端服务器上,比如一个后端服务有 97、98、9999 都是,有空去测试
address:后端服务器的地址。可以是 IP 地址或域名。
parameters:可选的参数,用于调整负载均衡的行为。常用参数包括:
weight:定义服务器的权重,默认为 1。权重越高,Nginx 会将更多的请求发送到该服务器。例如:
1 2 server backend1.example.com weight=2; 类似 server 162.14.96.81:3740 weight=2;
max_fails:可选参数,定义服务器允许的最大失败次数,默认为 1。 fail_timeout:可选参数,定义服务器的故障超时时间,默认为 10s。 backup:可选参数,标记服务器为备份服务器。只有当所有其他服务器都不可用时,才会将请求发送到备份服务器。 down:可选参数,标记服务器为下线状态,不接收请求。
用 pic 的后端来做一个负载均衡单体项目测试 ,首先修改弄 3 个端口 3738,3739,3740 并打成 jar 包,部署到服务器并运行
java -jar lucky38.jar –spring.profiles.active=prod
java -jar lucky39.jar –spring.profiles.active=prod
java -jar lucky40.jar –spring.profiles.active=prod
修改 nginx 配置文件/nwa/nginx/nginx/conf.d 下的以 conf 后缀文件,3 个配置点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 upstream nwa { #配置1,对应后端端口 server 162.14.96.81:3738; server 162.14.96.81:3739; server 162.14.96.81:3740; } server { listen 80; listen [::]:80; server_name mypic.luckynwa.top; location / { root /usr/share/nginx/html/mypic; index index.html index.htm; } location /api { proxy_pass http://nwa/;#反向代理 配置3 } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
重新加载配置
1 2 3 docker exec -it nginx01 bash nginx -t 会提示成功 nginx -s reload 再加载配置文件
原先备份
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 server { listen 80; listen [::]:80; server_name mypic.luckynwa.top; location / { root /usr/share/nginx/html/mypic; index index.html index.htm; } location /api { proxy_pass http://162.14.96.81:3737/; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
测试成功!端口请求成功负载均衡 😆
Idea 插件之 Docker 自动部署项目到云服务器 用宝塔打开找到路径/usr/lib/systemd/system 下的 docker.service 文件编辑它
搜 ExecStart
原
1 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
改
1 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
去 shell 那输入,重新加载 docker 的配置
1 2 3 systemctl daemon-reload systemctl restart docker
再去安全那开发端口 2375 同步到外部云也开发
idea 安装插件 docker 并打开编辑配置它,选 tcp 里 socket
连接即可!感觉这个端口有点危险,换一个比较好
引入依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 <build > <plugins > <plugin > <groupId > com.spotify</groupId > <artifactId > docker-maven-plugin</artifactId > <version > 0.4.13</version > <dependencies > <dependency > <groupId > javax.activation</groupId > <artifactId > activation</artifactId > <version > 1.1</version > </dependency > </dependencies > <configuration > <dockerHost > http://162.14.96.81:23756</dockerHost > <imageName > sxl/${project.artifactId}</imageName > <dockerDirectory > src/main/docker</dockerDirectory > <resources > <resource > <targetPath > /</targetPath > <directory > ${project.build.directory}</directory > <include > ${project.build.finalName}.jar</include > </resource > </resources > </configuration > <executions > <execution > <id > build-image</id > <phase > package</phase > <goals > <goal > build</goal > </goals > </execution > </executions > </plugin > <plugin > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-maven-plugin</artifactId > </plugin > </plugins > </build >
在 src/main/docker 下创建文件 Dockerfile
1 2 3 4 5 6 7 8 9 10 FROM openjdk:8 -jreCOPY *.jar /app.jar EXPOSE 10086 ENTRYPOINT ["java" ,"-jar" ,"app.jar" ]
再去右侧 maven 树那边
项目下的 Lifecycle 中 package——->
去控制台里的 docker 插件中查看 images 中就能发现多了一个自己项目的镜像
—————->右键项目镜像——>创建容器—->名字看着来—–>最好是点击 Modify options 中的 Run options
然后输入名称 以及运行参数
Run 起来,这个后端项目的端口记得也去开放一下
如果是更新代码,删除掉 docker 里生成的项目镜像和它的缓存镜像,去 package 一下,再右键项目镜像,创建它即可
内网穿透 穿透资源放在 E:\other\装机必备软件\内网穿透
frp_0.46.1_linux_amd64.tar.gz 拷贝到 linux 服务器上 /nwa 下
1 2 cd /nwa tar -xvf frp_0.46.1_linux_amd64.tar.gz
解压后可以删除 frpc 相关的文件。frps 的都是服务端文件,frpc 的都是客户端文件
1 2 cd /frp_0.46.1_linux_amd64.tar.gz rm -f frpc*
修改服务端配置文件 frps.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [common] bind_port = 7000 vhost_http_port = 9988 dashboard_port = 7500 dashboard_user = admindashboard_pwd = adminlog_file = ./frps.loglog_max_days = 3
启动 frp 服务端
端口开放 7500、7000、9988、6000 这 4 个端口
http://luckynwa.top:7500 访问
1 2 cd /nwa/frp ./frps -c ./frps.ini &
客户端配置
解压,留下 4 个文件即可 frpc.exe | frpc.ini | frpc_full.ini | LICENSE
编辑 frpc.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [common] server_addr = 162.14 .96.81 server_port = 7000 [ssh] type = tcplocal_ip = 127.0 .0.1 local_port = 22 remote_port = 6000 [http-test] type = httplocal_ip = 127.0 .0.1 local_port = 1088 custom_domains = luckynwa.top
客户端启动命令:
http://luckynwa.top:7500/static/#/proxies/http可以看到有名称
去 springboot 项目打开一个测试一下即可
http://luckynwa.top:9988/ffee-wiring/doc.html
这种有缺点,一断开连接就无了。推荐用软件来弄
http://luckynwa.top:9988/home
服务器不断运行这个,使用 nohup 后台挂起服务并记录日志
1 nohup ./frpc -c frpc.ini > ./frpc.log 2>&1 &
http://47.98.230.128:7700
Smart-doc smart-doc 是一款接口文档生成工具,不会使用任何注解侵入业务代码中
注意:我们项目中的类、方法、属性,都必须使用文档注释!
resource 目录下新建一个 smart-doc.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 { "serverUrl" : "http://localhost:8080" , "pathPrefix" : "" , "allInOne" : true , "outPath" : "D://projectDoc" , "style" : "xt256" , "createDebugPage" : false , "revisionLogs" : [ { "version" : "1.0" , "revisionTime" : "2023-11-09 10:30" , "status" : "创建" , "author" : "luckyNwa" , "remarks" : "xxx管理系统" } ] }
“allInOne”: true 后,生成的文档中只会包含一个 index.html 文件。如果设置为 false,生成的接口文档会包括 api.html、dict.html 和 error.html 多个文件
“createDebugPage”: true,双击插件的 smart-doc:html 选项,即可生成带接口调用功能的接口文档,双击 debug-all.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 { "isStrict" : false , "style" : "xt256" , "pathPrefix" : "/ffee-wiring" , "showAuthor" : true , "requestFieldToUnderline" : true , "responseFieldToUnderline" : true , "inlineEnum" : true , "ignoreRequestParams" : [ "org.springframework.ui.ModelMap" ] , "requestHeaders" : [ { "name" : "token" , "type" : "string" , "desc" : "desc" , "value" : "token请求头的值" , "required" : false , "since" : "-" , "pathPatterns" : "/app/test/**" , "excludePathPatterns" : "/app/page/**" } ] }
pom.xml 文件的 plugins 标签中
1 2 3 4 5 6 7 8 9 10 11 <plugin > <groupId > com.github.shalousun</groupId > <artifactId > smart-doc-maven-plugin</artifactId > <version > 2.6.4</version > <configuration > <configFile > ./src/main/resources/smart-doc.json</configFile > <projectName > 员工系统接口文档</projectName > </configuration > </plugin >
项目右侧的 maven 打开,查找这个插件,双击 smart-doc:html 就可以生成 html 格式的接口文档
Torna 数据库 8.20 才没有问题
https://torna.cn/
安装到 dockek 里面
1 docker pull registry.cn-hangzhou.aliyuncs.com/tanghc/torna:1.23.2
1 mkdir /etc/torna && wget https://gitee.com/durcframework/torna/raw/master/install/application.properties -O /etc/torna/application.properties
1 2 3 4 vim /etc/torna/application.properties 修改数据库连接配置 3307的 nwa741741
1 2 3 4 5 docker run --name torna --restart=always \ -p 7700:7700 \ -e JAVA_OPTS="-server -Xms512m -Xmx512m" \ -v /etc/torna/application.properties:/torna/config/application.properties \ -d registry.cn-hangzhou.aliyuncs.com/tanghc/torna:1.23.2
端口记得打开,
http://162.14.96.81:7700 装不上,可能内存不够
application.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 server.port =7700 mysql.host =162.14.96.81:3307 mysql.schema =torna mysql.username =root mysql.password =nwa741741 torna.register.enable =true torna.jwt.timeout-days =365 torna.jwt.secret =CHezCvjte^WHy5^#MqSVx9A%6.F$eV torna.user.initial-password =123456 logging.file.name =log/server.log spring.servlet.multipart.max-file-size =20MB spring.servlet.multipart.max-request-size =100MB torna.push.allow-same-folder =true torna.push.print-content =false torna.view-config.response-hidden-columns =required,maxLength torna.view-config.init-order =10000