前言
好久没写文章了。主要原因是最近工作比较忙。此外,我还利用业余时间和几个男人一起去构建一个产品。目前还处于外部阶段,还会再开发几次。此功能稍后免费供您使用(此处“剧透”下哈,本产品为社区(含新村)智能管理的APP及后台管理软件)
我最近加入了一个新的项目组,做联邦学习业务
我仍在学习联邦学习。熟悉了之后,希望能写出关于这个话题的系列文章
这篇文章记录了我最近想和大家分享的内容
主要有以下几点(内容有点复杂)
私有服务器配置
之前写过一篇关于部署私服的文章
机票专属于您
另外 3 分
这里配置私服的访问地址和访问账号
注意是地址
地址与中心仓库地址等其他地址绑定
idea导出maven项目时,会从该地址下载相关依赖jar包
其实是从中央仓库和中央仓库的地址下载的
如果是包,从地址下载
如果是包,从地址下载
如果你还没有下载jar包,那就去中央仓库下载吧
自己开发的jar包,比如包,一开始肯定不在仓库地址
这种情况需要你自己上传
需要在包的pom文件中配置
可以通过命令上传到私服
jar包上传到私服地址
jar包上传到私服地址
问题一:
was cached in the local repository, resolution will not be reattempted until the update interval of nexus-aliyun has elapsed or updates are forced
解决方案
1、删除本地maven仓库中已经下载的相关依赖jar,启动新项目
2、mvn- 强制更新
3、在 pom 中配置总是强制更新策略
问题 2:
和这些代码类似,没有报错,但是一启动就报没有这个类
在这些情况下,将项目重新导出到idea以启动它
安装和使用安装
docker pull rabbitmq:management
docker run -d -p 5672:5672 -p 15672:15672 docker.io/rabbitmq:management
http://localhost:15672
默认帐户访客/访客
使用
配置
spring: rabbitmq: addresses: xx.xx.xx.xx connection-timeout: 15000 listener: simple: acknowledge-mode: manual concurrency: 2 max-concurrency: 4 retry: ####开启消费者重试 enabled: true ####最大重试次数(默认无数次) max-attempts: 3 ####重试间隔次数 initial-interval: 1000 prefetch: 4 password: guest publisher-returns: true template: mandatory: true username: guest virtual-host: / queue: test
这里需要注意的是队列名是queue:test
所以先通过接口创建队列
如果这个参数配置不正确问道私服权限的数据库账号和密码,会报错
Suppressed: java.lang.UnsatisfiedLinkError: no netty_transport_native_kqueue_x86_64 in java.library.path
还有一点是-host:/
这对应
如果这个参数配置不正确,会报错
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method: #method(reply-code=530, reply-text=NOT_ALLOWED - vhost xxx not found, class-id=10, method-id=40)
问题 3
错误报告
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'type' for exchange 'pay.notify.exchange' in vhost '/': received ''x-delayed-message'' but current is 'direct', class-id=40, method-id=10)
此错误表示列表中已存在名称“pay..”
自动删除这个,因为会手动创建,否则已经存在,会报错
问题 4
未配置延迟队列插件
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method: #method(reply-code=503, reply-text=COMMAND_INVALID - unknown exchange type 'x-delayed-message', class-id=40, method-id=10)
解决方案 1:
一个。下载插件
https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.8.0/rabbitmq_delayed_message_exchange-3.8.0.ez
b,复制到中间
docker cp rabbitmq_delayed_message_exchange-3.8.0.ez 6a56b1871ee3:/home
c。将插件复制到插件库中
在容器中,找到MQ插件的路径
我的是/opt//,把它放进去
d。在
中启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
注意不要带版本和.ez
e。确认插件是否安装
rabbitmq-plugins list
在插件列表中查看插件是否可用
解决方案 2:
下载插件后,启用插件编译一个新镜像
vim Dockerfile
From rabbitmq:3-managementCOPY rabbitmq_delayed_message_exchange-3.8.0.ez /pluginsRUN rabbitmq-plugins enable —offline rabbitmq_delayed_message_exchange
部署使用阿里云数据库创建库并为阿里云数据库分配权限
先创建数据库,再创建账号并指定数据库和访问权限
如果数据库安装在服务器上,则创建数据库账号并将账号分配给指定数据库的过程如下
1、以root账号登陆 mysql -u root -p
2、创建test账号insert into mysql.user(Host,User,Password) values(“%”,”test”,password(“1234”));
3、为test用户赋予权限
3-1、某个数据库的所有权限grant all privileges on testDB.* to test@localhost identified by ‘1234’;格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”;
3-2、部分权限grant select,update on testDB.* to test@localhost identified by ‘1234’;
3-3、授权test用户拥有所有数据库的某些权限*grant select,delete,update,create,drop on *.* to test@“%” identified by “1234”;
test用户对所有数据库都有select,delete,update,create,drop 权限。
4、
@“%” 表示对所有非本地主机授权,不包括localhost。(localhost地址设为127.0.0.1)
对localhost授权:加上一句grant all privileges on testDB.* to test@localhost identified by ‘1234’;即可。
5、查看某个账号的所有权限show grants for dev
6、删除指定账号Delete FROM user Where User=‘test’ and Host=‘localhost’;flush privileges;
7、删除数据库drop database testDB;
8、删除账户及权限:drop user 用户名@‘%’;drop user 用户名@localhost
9、修改指定用户密码mysql -u root -p
update mysql.user set password=password(‘新密码’) where User=“test” and Host=“localhost”;flush privileges;
10、 显示数据表结构describe 表名;11. 删除数据库和数据表drop database 数据库名;drop table 数据表名;
12、刷新系统权限表flush privileges;
阿里巴巴云redis
如果要使用阿里云的redis访问网段
不要为所选网络模式选择经典网络模式
并选择网段模式
这可能需要几分钟才能生效
但开放访问白名单
nohup java -jar /home/test-seceum-studio/${APP_NAME} -Xms256m -Xmx512m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:CompressedClassSpaceSize=128m --server.port=8085 >/home/test-seceum-studio/logs/seceum-studio.log 2>&1 &
Xms为jvm启动时分配的显存 Xmx为jvm运行过程中分配的最大显存 Xss为jvm启动的每个线程分配的显存大小,JDK中默认为256K1.4、JDK1.5+ is 1M-XX: size-Size 压缩开关指定这个参数不应该小于3G
使用Java 8以后,关于元空间的JVM参数有两个:-XX:MetaspaceSize=N和-XX:MaxMetaspaceSize=N对于64位JVM来说,元空间的默认初始大小是20.75MB,默认的元空间的最大值是无限MaxMetaspaceSize用于设置metaspace区域的最大值,这个值可以通过mxbean中的MemoryPoolBean获取到,如果这个参数没有设置,那么就是通过mxbean拿到的最大值是-1,表示无穷大
由于调整元空间的大小需要Full GC,这是非常昂贵的操作,如果应用在启动的时候发生大量Full GC,通常都是由于永久代或元空间发生了大小调整,基于这种情况,一般建议在JVM参数中将MetaspaceSize和MaxMetaspaceSize设置成一样的值,并设置得比初始值要大,对于8G物理内存的机器来说,一般我会将这两个值都设置为256M
阿里云端口被激活,内网无法访问怎么办
在阿里云上启动一个8080等端口,先在阿里云控制台安全组开放访问该端口
如果此后内网仍然被封锁
需要查看阿里云服务器是否开启了防火墙
如果启用,则需要允许访问此端口
停止防火墙systemctl stop firewalld.service允许对于8080端口的访问firewall-cmd —permanent —zone=public —add-port=8080/tcp开启防火墙systemctl start firewalld重启防火墙网络firewall-cmd —reload
启动:systemctl start firewalld查状态:systemctl status firewalld停止:systemctl disable firewalld禁用:systemctl stop firewalld
如果这个方法不能用,那么你服务器的防火墙应该是防火墙(IPv4),所以设置如下:
vim /etc/sysconfig/iptables# 加入如下代码-A INPUT -m state —state NEW -m tcp -p tcp —dport 8080 -j ACCEPT保存退出后重启防火墙service iptables restart
如果还没有生效
直接执行
iptables -I INPUT -p tcp —dport 8080 -j ACCEPT
就是这样
安装简介
安装工具-yyum-utils—
配置阿里源—-add-repo
删除缓存
安装yum-ce–skip—
项目打包流程介绍
编写Dockerfile
FROM frolvlad/alpine-oraclejdk8:slimVOLUME /tmpADD xxpay4spring-boot.war app.jarRUN sh -c 'touch /app.jar'RUN /sbin/ip route|awk '/default/ { print $3,"tdockerhost" }' >> /etc/hostsENV JAVA_OPTS=""ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
编译docker镜像sudo docker build -t xxpay4spring-boot:v1.0.0 .
打标签sudo docker tag xxpay4spring-boot:v1.0.0 registry.cn-shanghai.aliyuncs.com/mengfanxiao/xxpay4spring-boot:v1.0.0
上传到阿里云docker镜像库sudo docker push registry.cn-shanghai.aliyuncs.com/mengfanxiao/xxpay4spring-boot:v1.0.0
下载该镜像sudo docker pull registry.cn-shanghai.aliyuncs.com/mengfanxiao/xxpay4spring-boot:v1.0.0
启动该镜像docker run -d -p 8085:3020 registry.cn-shanghai.aliyuncs.com/mengfanxiao/xxpay4spring-boot:v1.0.0
部署项目
docker search tomcat docker pull tomcat docker run -d -p 8088:8080 —name tomcat —restart=always tomcat## 将war包复制进去docker tomcat中docker cp /usr/local/testJavaProject/test01.war 9fccf0236619:/usr/local/tomcat/webappsdocker run -p 8088:8080 -v /opt/project:/usr/local/tomcat/webapps -d tomcat
其他
已安装但无效如
yum install wget安装好了 wget 但没有生效bash: wget: command not found先yum remove wget 再yum install wget
将vue2项目打包成一个项目
服务部署前已经介绍过一篇文章
机票
先打包vue项目引入
先安装插件
1、在全局配置中添加
2、选择要安装的版本
3、安装插件
4、创建一个vue项目
5、配置vue项目git地址
6、选择协程单片机问道私服权限的数据库账号和密码,通过这些方法,当用户用Git管理Push代码到仓库时,可以手动调用任务
7、构建环境
8、添加构建步骤:执行Shell、
添加到执行shell:
#打印环境变量echo $PATH#检查NodeJS环境node -vnpm -v#默认在Git项目目录,我的前端代码都在Backstage目录下cd /var/lib/jenkins/workspace/seceum_studio_web#防止报chromedriver@2.37.0 install: `node install.js错误npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver#安装依赖npm install#打包npm run buildcd dist#rm -rf bodac.tar.gz #删除上次打包生成的压缩文件,打包的时候会自动删除整个dist文件夹无需这一步#将dist目录下所有文件打包成tar包tar -zcvf seceum_studio_web.tar.gz *#返回上级目录cd ../
注意:发布的项目源码在/var/lib///
目录
里面的逻辑是vue项目源码下载后编译打包的过程
9、在中添加:
cd /home/jenkins/seceum-studio-webrm -rf seceum_studio_webmkdir seceum_studio_webtar -zxvf dist/seceum_studio_web.tar.gz -C seceum_studio_web/rm -rf dist
这里的逻辑是读取刚刚打包好的tar.gz包,发送到目标服务器的指定目录,执行解压命令
注意这个目录需要自己创建/home//–web
但您需要授予权限,因为您可以使用 root 权限来创建自己的
访问这个目录默认是使用用户访问
所以root用户需要将文件夹分配给其他组,用户也可以更改查看权限
chmod-R777–web/
首先将vue打包的文件加载到项目中
1、项目部署完成后构建触发器手动启动项目部署
2、在编译java项目之前在中添加了执行shell步骤
cd /var/lib/jenkins/workspace/seceum_studio/src/main/resourcesrm -rf staticmkdir staticcp -R /var/lib/jenkins/workspace/seceum_studio_web/dist static
这个逻辑是
编译项目的结果是会生成一个dist目录。该目录下的文件为编译后的文件
将文件复制到下面的文件夹中
目前
dist目录下的所有文件都已经打包到项目中了
3、启动后
可能存在无法访问/index.html页面的情况
这是一个解决方案
a、查看vue项目配置的路径
这条路径的含义是
因为打包了vue项目,所以没有生成dist目录
有index.html等jscss文件等
如果截图配置为./
这样,index.html在访问jscss等文件时,会从index.html同级目录中找到
从index.html的上层目录查找cssjs文件时默认为../index.html
但是如果dist下的所有文件都加载到ROOT目录下
此路径配置无效,默认从ROOT目录读取
b.如果你使用shiro框架登录
那么你需要释放对这些文件的访问权限
结论
关于我接触了一段时间的内容,还有很多要分享的。这篇文章够长了。请继续关注下一篇文章。
最新评论