
每次树莓派出现故障,从镜像中恢复,都得搞半天,错误百出,人都麻了…
所以现在稍微整理一下目前系统项目存在的问题,以及需要优化和规范的点。
1、[easyblog]后台读取静态资源来自磁盘;当然,部署的时候,为了方便,该资源目录是存放在项目部署的根目录下,而项目目录下的资源【resources】其实几乎没有任何作用,最终要把它copy到指定的磁盘目录下,才可正常读取;关于resources文件夹位置,即配置文件中的root,存放静态资源的位置,该目录不会打包进jar中,因此必须选择一个地方存放。
2、源码更改后,要及时上传至github,同时对数据库做备份,以避免线上功能与本地开发环境不同步的问题
3、[easyblog]图片问题【大头】
博客的图片分有好几种形式,像是后台的、前台的、封面、markdown图片,其中前台、封面(文章、分类)、markdown图片,需要一起打包为静态资源,其读取的方式也有区别:除了markdown图片外,其他的图片需要前端加上一个前缀,这种方式太过于繁琐复杂,所以想对现有的逻辑进行优化。
目前想到的一种方式是,数据库中的图片路径不保留前缀,取而代之的是通过代理转发请求:在图片路径中添加标明项目的url参数,根据该参数使用代理转发请求到不同的项目,这样一来,简化了请求的同时,也简化了保存/上传图片的流程。
越简单,越不容易出现错误,很通俗易懂的道理。
其中,$arg_project表示要读取url中的project变量。
nginx配置
http {
# ...
map $arg_project $proxy_host {
default 127.0.0.1:8080;
easyblog 127.0.0.1:8080;
# project3 127.0.0.1:8081;
# 项目4...
}
# ...
server {
# ...
location ~ ^/(image|temp) {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET,OPTIONS';
add_header 'Access-Control-Allow-Headers' '*';
add_header 'Access-Control-Allow-Credentials' false;
add_header 'Access-Control-Max-Age' 1728000;
limit_req zone=rateLimit burst=10 nodelay;
proxy_pass http://$proxy_host;
}
}
# ...
}
至于线上数据库中的旧数据,则需要将其拉到本地,使用脚本修改后再上传,此后,url参数由前端自行添加。
注意,该种方式必须依赖于代理,否则将会导致读取图片失败,开发过程中也同样可以使用代理。
4、[easyblog-admin]配置文件
不再同项目文件一起打包,由外部以接口的形式提供,使得项目具有从外部进行微调整的能力,比较典型的是,需要修改接口地址时,无需再重新打包部署。
图1 配置信息接口
该请求必须在所有请求前完成,本次选择了在router.beforeEach()方法内完成。
同样地,开发时可用配套构建工具中的代理返回数据(webpack、vite等);线上则可通过nginx返回,当然开发时同样用nginx也不是不可以。
配置文件示例
{
"HOST": "http://localhost:80",
"PREFIX": "/easyblog/admin",
"OAUTH": {
"OAUTH_REDIRECT_URI": "http://localhost:9528/easyblog/admin/#/oauth2/callback",
"OAUTH_AUTHORIZATION_URI": "http://localhost:80/ya/oauth2/authorize",
"OAUTH_CLIENT_ID": "1"
}
}
图2 nginx中的配置(同在server内)
5、[easyblog-admin]Markdown文本与数据库内容不一致的问题
编辑文章时,没有做任何改动,但仍然提示保存,这是因为空格的问题。
markdown将文本读入编辑器后,会对其进行一些处理,比如,删除一些非必要的字符,如下:
图3 markdown文本空格示例
在1和2之间,存在两个空字符,而编辑器会将多余的空字符串处理(合并?),也就导致了在检测时,出现了不一致的问题。
这个问题甚至不需要处理,只需要在写文章时,注意不要留有多余的空格即可。
6、[easyblog]文章处于“待发布”状态,但发布后,状态没有修改为“已发布”
猜测该问题是由于之前直接修改数据库字段导致的,修改state字段后,由于没有更新过,此时last_updated_at仍然小于last_published_at,因此不符合发布后更新状态的条件。
7、[easyblog]修改模板文件后,发布文章失败
修改之前可以正常发布,修改后报错。
目前暂时就是这些。