1. 编写目的
我们既希望能够使用hexo这样简洁的博客管理框架,又想让自己的博客在其他web服务器上运行,也就是说,使用hexo生成静态网页在tomcat这样服务器上运行。
因为我们不希望把80端口完全让给hexo,我们可能需要展示别的项目。
另外我们如果只是生成静态文件然后复制粘贴到tomcat的webapp/ROOT 文件夹中去,也会遇到一些问题,比如如何写文章等。
下面就是一个解决方法。
2. 概述
- 云服务器上搭建node npm 环境。推荐参考这个博客:
https://blog.csdn.net/smileyan9/article/details/86708978 - 服务器上安装hexo,安装hexo-admin插件。
- 云服务安全组保证打开某个端口给hexo发布博客,并且初步测试完成云服务器上的hexo博客展示。
- 配置hexo自己的博客,将静态生成文件地址改为自己80端口服务器的地址(tomcat为例:tomcat/webapp/ROOT)
- 执行hexo g命令,将静态文件生成到目标地址。
- 访问自己服务器的80端口,查看hexo的博客。
- 在hexo运行端口写博客,然后再次执行hexo g命令。
3. 过程
刚刚再次测试了一下,上面的步骤是没有问题的,为了检测方便,具体过程如下:
-
在某个路径下执行 hexo init yan 指令,初始化一个文件夹,起名为yan。
-
配置hexo的public。表示执行 hexo -g 时生成静态文件的路径。
编辑 _config.yml 文件,找到 public_dir 标签,在后面写上自己的tomcat的路径(特别要注意,是webapp/ROOT路径)。

-
配置好了后,执行 hexo g 指令,让hexo 生成静态文件到tomcat的webapp/ROOT文件夹下,执行后效果如下:

这个时候需要可以查看index.html,可以看到依赖的css等文件都是这样的格式 /css/style.css ,也就是说使用的是绝对路径,所以这个时候,我们需要启动tomcat,然后再访问tomcat的根路径 localhost:8080/
可以看到效果如下:

也就是说我们的目标实现了!
Smileyan 2019年4月22日
2020.4.24 补充
补充内容:
- 运行环境: centOS
- 运行效果: 80端口部署的是tomcat,hexo 使用的是4000端口,用户通过使用admin插件写博客并发布到tomcat中。也就是说写博客使用的是4000端口,但是外界可以通过80端口进行访问。
- 这样的好处也很明显:告别命令行,部署方便,不占用80端口。
方法如下:
-
安装admin插件,修改_config.yml文件,配置密码。
-
配置发布路径,即hexo生成html文件的路径。这个时候需要配置路径到tomcat的webapps里面的相关路径。例子如下:
修改_config.yml文件,找到publish_dir,修改一下,如下:public_dir: /root/apache-tomcat-8.5.54/webapps/ROOT -
添加脚本文件,在这个脚本文件中写部署指令,这里以
publish.sh为例,在与_config.yml同级的目录下添加这个文件,内容如下:hexo g -d -
把这个文件改成可执行文件,命令如下:
chmod a+x publish.sh -
修改
_config.yml文件,配置使用deployCommand指令:admin: username: root password_hash: $dfdfdAX4CYPjREOWYZJ2cdHUvmeBlqtNepsH3RrBJ/LesG secret: dxgbfsd deployCommand: './publish.sh' -
使用方法:启动tomcat与hexo项目后,登录admin,然后每次写博客、修改博客、删除博客,都需要运行一下自己写的脚本文件,表示生成静态html文件到tomcat的webapps某个文件夹中去。如图所示:

如果没有什么异常,输出内容大致如下:

最终访问tomcat对应的路径即可看到部署成功了。可能会遇到的问题:
- 没有让脚本成为可执行文件。因为很多博客是windows环境,然而如果使用的是linux环境的话,都需要指定一下,让这个文件成为可执行文件。很简单,命令如下所示。
- 指定的脚本的路径有问题。推荐使用绝对路径测试一下,成功后,再考虑使用相对路径测试。
2029.4.24 17:24
本文介绍如何在云服务器上使用Hexo生成静态博客,并将其部署到Tomcat服务器上,实现80端口访问。涉及Hexo环境搭建、admin插件使用及自动化部署脚本。
1895

被折叠的 条评论
为什么被折叠?



