博客项目遇到的问题

5-7问题:
docker在安装redis的时候全部按照默认的redis.conf配置,导致出现一个这样的问题。
Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: READONLY You can’t write against a read only replica.
在redis中主库可以进行读写,但是从库只能写
这个时候去打开docker中的redis文件夹下的redis.conf文件,在其中找到replica-read-only yes
把这里的yes改成no,这样就可以了。然后为了使配置文件生效,需要重新启动redis服务

docker ps //找到正在运行的redis
docker stop redis //这里得看下你的redis镜像叫啥
docker rm redis //移除这个镜像
docker run -d -p 6379:6379   --name="redis"  redis //启动redis服务
docker exec -it 容器id redis-cli //进入到redis
select 0 //没改动配置的话默认选择的是0
keys * //能返回空就说明没啥问题了

然后去前台刷新,发现用到redis的功能全部正常了。
包括我的登录用户的信息是到redis中,文章的viewcount也是先从mysql表中读到redis中,然后每访问一次某文章就给redis存放viewcount的key的值+1,然后过10s写进去mysql的表中的字段里。
所以之前每次redis读不到mysql中文章表的viewconut就是因为从库只能读不能写导致的,所以每次这个文章的浏览量都会被刷掉就是这个原因。

============================================
下面问题是5-8遇到的:
今天早上起来发现,redis又出现了同样的问题,我寻思昨天都已经把从库只读关掉了,怎么还是出错,然后通过一句句翻译redis.conf,然后我怀疑是不是因为在加载的时候是从从库中读取的。但是每当一点击文章的时候触发了主库的vaule+1,这个时候从库还没来得及更新,是错误数据。
但是这个数据又是可以容忍的,在redis中设置 replica-server-stale-data 为 yes。但是默认是yes,所以这也不是导致我出错的原因。
接着找到这个repl-diskless-sync-delay配置。repl-diskless-sync-delay 是 Redis 的一个配置选项,用于配置在无盘同步(diskless replication)启用时,主节点等待子进程传输 RDB 数据库文件到从节点的延迟时间。该选项的默认值是 5 秒。
我先改成0秒试一试,及时同步。出现问题之后再进行更新。
然后保存,重启redis,上次好像忘记挂载了,这次执行这个 命令,同时开启持久化操作,也有可能是上次启动redis的时候有些草率导致的。后续会继续更近这个任务的。

docker run -p 6379:6379 --name myredis -v /usr/local/docker/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

============================================
5.8晚上加上了redis密码的配置。所以我去idea改了下application之后重新部署。
修改了一下java后端代码之后,我重新打包,然后停掉博客的前台和后台的镜像,
docker stop blog
docker rm blog
然后将新的jar包放到原先的路径下,然后一直cd到admin然后ls发现下面有个admin.jar
然后重新构建镜像
docker build -t admin.jar .
构建blog_show同理。
这个时候还没有启动。需要去启动这两个容器.可能是因为我已经挂在过了,所以
代码入下:
docker run -d -p 8989:8989 --name admin admin
docker run -d -p 7777:7777 --name blog_show blog_show
然后docker ps
发现就有admin和blog_show这两个容器运行起来了
以防万一,我还是在将redis重新启动一下
docker stop redis //这里得看下你的redis镜像叫啥
docker rm redis //移除这个镜像
docker run -p 6379:6379 --name myredis -v /usr/local/docker/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 你的密码
docker ps发现现在都运行起来了
这个时候我再打开博客,发现可以正常运行了。
说明以后我的代码进行了修改之后就可以按照这样的方式去跟新。

==============================================
5.12 晚上 改动个人主页,修改端口的操作。
先停掉之前的容器
docker stop
docker rm
然后启动容器
docker run --name knowledgenginx
-v /knowledgebase/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /knowledgebase/nginx/html/service:/etc/nginx/html/service
-p 2900:2900
-d nginx:1.18.0
就可以了


5.18由于配置nginx操作不当,恢复不到原先的nginx配置了。所以进行了docker回滚。
回滚之后发现很多容器都被关掉了,所以重新启动的过程中,我把mysql给stop了,然后mysql中的数据全没了,所以blog_show就run不起来了。
然后我先把mysql启动起来
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
先保证能通过docker运行mysql,运行起来之后,
docker exec -it mysql bash进入到mysql的内部,
mysql -uroot -p 输入密码连接数据库
发现可以连接到了。

5.19我将blog.sql重新执行之后,就可以将blog_show启动了。
然后我把knowledgenginx监听80,提示port已经被监听了。然后我关掉blog_show之后继续监听80,还是监听不了。只能继续换回3000.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值