总结一下搭建个人网站《曼云古籍在线识别》的完整流程

发布时间 2023-03-22 19:13:34作者: 包建强

继2年前开发出一个标注工具PaddleOCRLabel之后,我就开始炼丹之旅,全面all in人工智能,历时一年,终于炼成了第一颗“丹”——针对于古籍的ocr识别模型。经过400万图片的验证,目前对四库全书版的古籍识别度较高,大约是99.8%。

以下链接是实际效果:https://www.ocr666.top

 

 

 

有了模型,接下来就是搭建上面这个网站,把成果展示给用户。于是我大约花了三周时间,完成了一次个人建站的过程。整体原则是在不耽误性能的前提下,花最少的( $ _ $ ),最终花了150元左右。我总结一下这次建站的心得,除了写前端代码和后台服务,其他都是第一次接触,所以有很多心得分享:

 

1.购买服务器

天翼云。1核2G,40G硬盘,又额外买了40G硬盘。共计130元。好处是没有流量限制。

注意,如果要域名备案,就一定是用自己的身份证实体验证来购买服务器。

不小心多买了一块40G的硬盘,否则又能节省30元左右 。但好处是借此学会了linux挂载新硬盘的技术。

 

2.购买域名

域名要和服务器在一家厂商买,否则不能备案。这里仍然旋转天翼云。top后缀的,24元。明年续费也便宜。

在域名解析页面,配置服务器ip和域名的映射,这里第一次接触cname和a。

 

3.备案

备案流程就是填写几个表格,然后用一个小程序人脸识别,就完事了,一小时左右完成。

但是审核流程就很久了,大约花了2周时间。先后提交了2次,第一次被拒,花了一周。修改后,再次提交,又等了一周。

天翼云的免费备案服务做得很到位。有任何问题直接打电话去问客服。有一次凌晨提交的工单,半夜12点半客服就打过来解决问题了。

 

4.制作网站

基于react,用了1周时间。后台搭建nginx,把做好的react项目,直接上传到服务器,把80端口指向该目录即可。

后台有两个服务。一个用nodejs,一个用python的flask+tornado。

数据库用mysql,基于docker。

 

5.优化网站界面

一开始网站做的很low,后来找了一个高大上的网站模板,把模板塞进现有react项目中,用了一周时间。

 

6.申请https证书

1)申请免费https是个很麻烦的是

七牛云有免费的,缺点是单域名的,优点是可以申请多个。

先申请一个。申请后要去买域名的网站,在域名解析页面,填写该证书对应的信息。

 

2)在服务器配置证书

下载https证书,上传到服务器。

nginx中配置。并把http的请求也转发到443端口。

这里注意,精简版的nginx不支持https。要下载源代码版本的nginx,重新编译即可。

 

3)修改所有代码

把原先所有访问ip:port的地方,全都改为https://域名 的方式。

注意:https网页只能访问https的接口。

 

7.网站统计

这里使用umami这个开源项目,在服务器搭建。有几个坑:

1)初始化时,需要手动在mysql创建数据库,然后去编写那个.env脚本,才能执行成功。

2)把监控代码植入到react网站项目中,放到html的header中。因为umami是ip:3000这样的访问url,放到https的网站中,不能访问,为此需要为umami再次申请一个免费的https证书。

接下来就是著名的在nginx中反向代理配置二级域名的技术了,终于在这里派上用场了。有了这个二级域名,就可以把他塞进html的header中。

 

8.安装宝塔平台。

宝塔的免费版,基本就够用了。

1)使用其中的ftp服务,把400万张图片,大于40G,上传到服务器。因为家里是千兆网络,速度很快。

2)不要使用其中的nginx,自己在本地搭建。因为我直接在nginx中,默认指定react项目为443接口,所以不需要额外在宝塔中创建网站了。

3)在宝塔的“软件商店”菜单中,下载免费的"进程守护管理器"。在里面创建2个项目,分别指向nodejs后台服务和python flask后台服务。进程守护管理器的好处是,一旦接口因为不确定原因崩溃了,可以自动重启。


9.网站SEO

这里用到百度站长。

1)登录进入百度站长页面,获取属于自己的token。然后把网站的所有链接url,推送到百度。

他提供了一个接口,每天可以推送3000个url。

为此我编写了2个python脚本,第一个脚本生成网站8万静态页的url,第二个脚本负责每天推送3000个url到百度。

宝塔中有一个定时任务功能,在里面配置第二个脚本即可。

 2)因为react项目是按照SPA做的,页面内点击按钮切换内容,url不会发生变化。为此需要重构react项目,比如详情页,要让他支持直接输入详情页的url,参数中带id,就可以跳转到这个id对应的详情页面。只有这样,才能把8万多详情页的url推送到百度。

 

任重而道远,接下来就不再花时间做网站了,而是把更多精力投入到ai上,对算法进行优化。

与君共勉。