"概要:使用宝塔面板 +Tomcat 安装 Solo 博客的一次成功尝试的笔记。 零、前言 尽管不生产有价值的内容,甚至连写日记都难以坚持,但拥有一个自己的博客总是有趣的。 于是我购买域名,租用虚拟服务器,安装博客程序,终于能够从域名访问到自己的网站啦。 从最开始尝试网络上普遍推荐的 lnmp+Wordpress,以至于 .."

【笔记】如何使用宝塔面板 +Tomcat 搭建 Solo 博客。

概要:使用宝塔面板 +Tomcat 安装 Solo 博客的一次成功尝试的笔记。

零、前言

尽管不生产有价值的内容,甚至连写日记都难以坚持,但拥有一个自己的博客总是有趣的。
于是我购买域名,租用虚拟服务器,安装博客程序,终于能够从域名访问到自己的网站啦。
从最开始尝试网络上普遍推荐的 lnmp+Wordpress,以至于 OpenLiteSpeed、Typecho 等等并不那么主流的方案。对 Python 感兴趣的时候考虑过 Django,试图涉猎 Go 语言的时候看到 Hugo,而这次我试图使用 Github 上 Star 数名列前茅的 Solo 来重建自己空荡荡的博客 w。(项目地址:b3log/solo

正如知乎 dboy 君所指出的:个人博客选择 wordpress 还是 typecho 好呢?

你们这些孩子哪里是真为了写博客。
你们只是想体会换新工具的愉快感觉,顺便体会一下否定掉旧工具,觉得自己特别的小欣喜。

目前 Solo 官方推荐的安装方式为 Docker 安装,比较省事。(然而在使用宝塔面板时,我仅能运行 Docker 容器,却难以解决域名管理和端口的问题,向各位赐教。)
因执着于宝塔面板所提供的可视化(Windows 积习),本小白经过一些踩坑尝试,遂有此一篇笔记。

一、前期准备:服务器、域名、宝塔面板

服务器:购买或租用一个虚拟服务器,使用 SSH 登录。
域名:购买域名,设置 DNS 指向服务器 IP。
宝塔面板:参考宝塔面板官方网站的安装教程。安装 lnmp 环境。
(略)

二、安装博客程序 Solo

参考文章:宝塔面板 – Java 项目管理器安装 Solo 博客教程(大鸟博客)
由于我的宝塔面板 Java 项目管理器无法安装运行 Tomcat9,遂直接改用软件中心的 Tomcat9。

1、下载博客程序 Solo

(1)访问 Solo 的 Github-Release 页面:https://github.com/b3log/solo/releases ,获取最新 war 包地址。
(2)下载 war 包至服务器的 /www/server/tomcat/webapps/ 目录下,由于 Tomcat 的配置,war 包将自动被解压缩。(如未自动解压,尝试使用宝塔的文件管理器手动解压,或在 ssh 中执行 unzip 命令)

2、添加新网站

VBcOgO.md.png
如图所示,需要设置的地方有:
(1)域名
(2)根目录,设置为解压后 solo 所在路径
(3)创建一个 SQL 数据库,编码选择 utf8mb4。(也可以之后进入数据库菜单创建)
(注:此处选择 UTF-8 亦可使用,按网上的说法选择 utf8mb4 可以覆盖包括 emoji 在内的更多字符,因此直接 utf8mb4 就好啦。参考:清官谈 mysql 中 utf8 和 utf8mb4 区别等)
(4)Solo 是一个 Java 程序,PHP 设置为纯静态。

3、配置 Solo 程序

(1)将宝塔面板解压生成的 solo 目录及子目录所有者设置为 www(原本为 root),权限为 750。
(2)进入 solo/WEB-INF/classes 目录,修改 latke.properties 和 local.properties

latke.properties

#### Server ####
# Browser visit protocol
serverScheme=https  #按需设置为http或https(需配置SSL)
serverHost=shikkaku.com
 #访问域名,注意把注释#删除
#serverPort= #留空,不过其实默认被注释了。有些教程设置为Tomcat9默认端口8083后反向代理,此处不采用这一方案。

local.properties

#### MySQL runtime ####
runtimeDatabase=MYSQL
jdbc.username=shikkaku_com #数据库用户名
jdbc.password=yYaBYcP #数据库密码
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.URL=jdbc:mysql://localhost:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
#3306/solo?应该是要与自己的数据库名一致,此处数据库名为solo。宝塔创建的默认可能是shikkaku_com(域名),保持一致。

4、检查与发布

打开 Tomcat 确认其配置(在宝塔软件页面 Tomcat 管理 - 配置修改,或者直接打开 /www/server/tomcat/conf/server.xml)
确认以下代码无误:

      <Host autoDeploy="true" name="shikkaku.com" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
        <Context crossContext="true" docBase="/www/server/tomcat/webapps/solo-v3.6.2" path="" reloadable="true" />
#name=域名,docBase=solo程序路径。

宝塔面板 - 网站 - 点击网站名 - 开启 Tomcat,如图所示:
VBgJr4.md.png

好啦~折腾暂时告一段落,访问网站开始愉快写博客吧 w。
(然而真诚猜想不折腾面板,直接 docker+docker-compose 的部署应该是最轻松愉快的,舍近求远可谓极矣。修改本文时 solo 从 3.6.1 更新至 3.6.2,安装更新配置又折腾了几分钟 w。)
仅作为自己一番瞎折腾的一个记录。如能给诸位小白朋友们一点参考,幸甚至哉。
兴趣使然,不求甚解。啊,当时满脑子想的都是至少跑起来啊不要 404 不要 502 啊 Orz。

可选:

1、设置 SSL 安全证书

(1)确定域名解析生效且正确解析至服务器地址,关闭 CDN 等会导致 IP 指向其他 IP 地址的服务(文件验证可能可以规避这一点,诸君多福)。
(2)使用宝塔面板傻瓜布置。
Vcf7Bq.md.png
(图中域名为演示用临时新建的,请不要在意。)
(3)确认前述 Solo 配置中,solo/WEB-INF/classes/latke.properties 中 serverScheme=https
(4)完成!尝试使用 https://shikkaku.com 访问你的网站 ~!

2、Cloudflare 免费 CDN

网络上有很多介绍、推荐 Cloudflare 的文章,此处不赘述。
不才愚见,简单想象成一个加速访问的免费代理服务器就好啦。
使用 Cloudflare 的优点,大致有:(1)有免费版(2)隐藏服务器真实 IP,降低被攻击风险(3)缓存网站的静态内容,加速访问(4)说不定真的比直连快呢(5)据说国内备份主机域名可以使用与百度合作的特别版
建议:推荐在完成 Solo 配置和 SSL 配置后再进行设置,可以减少一些折腾。

1. 注册 Cloudflare 账号

访问 Cloudflare 官网,先免费注册一个账号~

2. 添加域名和 DNS 解析

添加自己的网站,并且设置 DNS 解析。(Cloudflare 君将成为 NameServer(名称服务器)!)

3. 更改域名的名称服务器

按 Cloudflare 的提示,去域名提供商那里把域名对应的 DNS(域名系统)修改为 Cloudflare 指定的 ray.ns.cloudflare.com 和 rose.ns.cloudflare.com(以官网为准,嗯。)

4. 设置 CDN 和 https

VcHPQU.md.png
DNS 中添加 A 记录,域名指向服务器 IP(图中马赛克部分)。右侧橘黄色小云为开启 CloudflareCDN 状态,可以点击变为灰色(关闭 CDN,直连,只提供 DNS 服务)。

VcHSJ0.md.png
在完成上述 1. 设置 SSL 安全证书 后,设置 SSL 为 Full。
关于 Flexible,Full,Strict 的区别,网络上有相关解释。
此处选择 Full,服务器与 Cloudflare 之间的数据传输通过 SSL 加密但不严格验证证书发行者,同时 Cloudflare 到网站访问者之间的数据传输也通过 SSL 加密。
可以避免 Flexible 服务器与 Cloudflare 之间的数据传输不通过 SSL 加密,则服务器设置为无 SSL 加密(Ngnix、Tomcat)。当访问者通过 https 访问网站时,可能出现静态内容(图片、JavaScript 看板娘)无法显示的情况。(推测为不安全的内容被过滤了)
而此处选择 Strict 则会导致服务器与 Cloudflare 之间无法连接,以至于网页无法访问。(免费的 SSL 玩家不能通过验证啦。)

5. 少女祈祷中 等就对了

Vcq0aj.md.jpg
随便放张图,啦啦啦啦啦。
更新名称服务器和开启 Cloudflare 功能需要一些时间。

3、动(Tomcat)静(Nginx)分离等。

  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。

    Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
    具体细节请浏览 B3log 构思

    630 引用 • 4842 回帖 • 714 关注
  • 宝塔面板
    3 引用 • 13 回帖
5 回帖   
请输入回帖内容...
  • honeymoe  

    话说自己的博客更新了以后可以直接推送到这边吗 orz。或者其实我想把这篇半成品帖子删除……?

    2 回复
  • 88250        

    点了推送以后就会推送到社区,不点的话不会推送的。这篇帖子留着吧,应该能帮助到其他人的 😄

    1 回复
  • iqvo      

    🤔 要‌删‌帖‌的‌话‌ 找 @88250 D‌大‌ ‌并‌说‌明‌删‌帖‌的‌理‌由

  • iqvo      

    哈哈哈 我刷新了下帖子就看见您回复了😅

  • honeymoe  

    感谢。
    在自己博客里选择「更新」修改文章的话并且同时选择推送的话,会使黑客派社区也同步更新文章,而不是另增一篇文章以至于新旧并存,是这样吗……