使用 Solo 搭建个人博客的心得(docker 部署 +https 配置)

ReturnYG 的博客 为了想象中美好的生活而努力 本文由博客端 https://www.returnyg.xyz 主动推送

在自己捣鼓了大概两天之后,自己的博客算是基本搭建完成了 😄 ,这第一篇文章就讲讲这期间遇到的一些小问题以及如何解决的。❤️

为何选择 Solo 搭建博客

百度和谷歌了很久,搜到了很多种开源博客系统,包括基于 Java,PHP,node.js 等等很多个平台的。但其实搜的越多就越是知道自己到底想要什么风格的博客。我其实比较倾向于界面好看,有较稳定的社区,使用人群较多的平台。好看不用多说了,稳定的社区是为了在自己遇到问题时可以更快的解决问题。从咱们的社区来看,做的相当优秀。所以还是选择了 Solo。

基础搭建部分

我从零到有的时间花费的并不多,因为在搭建这个博客之前,我有使用 Halo,Hexo,Wordpress 等其他博客系统,所以对我来说搭一个能访问的站点并不难。我也是推荐看官方给出的教程视频来搭建就好了。

在搭建过程中遇到的问题是 docker 长长的启动代码,在这里,如果读者使用的是云服务器,我非常不建议使用云服务器商提供的远程连接。虽说阿里云现在的远程连接页也做得不错,但还是使用第三方软件输入命令不会出现较多的意外情况,如何使用第三方 SSH 工具网上的教程还是很多的。

话说回来,启动代码我建议复制到文档文件里,编辑好之后,再复制进 SSH 工具运行就好了,按照视频来应该是不会出错的。

基础配置

在搭建完成之后,在偏好设定--> 信息配置中,除了一些基本信息之外,统计代码应该放在 head 部分,ICP 和公安联网备案号应该放在页脚部分,两部分均可使用 HTML 代码。

在参数设置的 Favicon 这个地方,是我遇到的最大问题,因为目前的 Solo 的图片均不在本地存储和使用。但是我在社区中并没有找到哪里可以上传图片,然后在博客端使用,故我想在自己的服务器中存放一些少量我自用的图标或图片。

起初并未找到解决方案,后来在社区的一篇文章中得到灵感,使用 nginx 反向代理即可。步骤如下:

upstream backend {
	server localhost:8080;#此处换成你的Solo运行的端口
}
server {
	listen       80;
	server_name  www.example.com;#此处换成你的域名
	access_log off;
	location / {
		proxy_pass http://backend$request_uri;
		proxy_set_header  Host $http_host;
		proxy_set_header  X-Real-IP $remote_addr;
		client_max_body_size  10m;
	}
	location /upload/  {  #你想在域名后通过哪个标识访问本地资源
		alias /var/solo-upload/; #本地资源的存放路径,注意:要填写绝对路径给
	}
}

在这个配置中,也遇到了一个小坑,就是其中的 alias 和 root 用哪个,从原理上讲,两个都可以实现这个功能,但是 location 中指定的/upload/必须是在 root 指定的/var/solo-upload/目录中真实存在的。所以掌握了这一点,使用 root 还是 alias 都是可以的。

ok,这样本地的图片也可以通过链接的方式引用了,其实这也是早期 Solo 版本图片存放本地,之后升级为不再使用本地图片时,解决已发布文章的正常显示方法。

配置 ssl 证书

完成上面的步骤之后,网站是已经可以运行的了,但是没有 ssl 证书,不是 https 访问,总是会觉得少了点什么。所以不如一次到位,全都整好。

我使用的是免费的 ssl 证书,每个证书服务商提供的免费 ssl 证书都大同小异,申请完成后你会得到 example.crt 和 example.key 两个文件

你需要把这两个文件上传至服务器中,路径随你喜好但是你要记得,此处我举例路径为/etc/ssl/mycert/

配置 nginx

upstream backend {
    server localhost:8080;
}
server {

    listen       80;
    server_name  www.example.com;
    access_log off;
    return 301 https://$server_name$request_uri;#http请求全部转发至https访问
}
server {
    listen       443;  # 修改监听接口
    server_name  example.com www.example.com;
    charset utf8; # 修改默认字符
    ssl on;  # 开启ssl
  
    # 设定你的ssl证书
    ssl_certificate /etc/ssl/mycert/example.crt;#刚才让你上传的example.crt文件路径
    ssl_certificate_key /etc/ssl/mycert/example.key;#刚才让你上传的example.key文件路径

    # 原来http访问路径不需要改动
    location / {
        proxy_pass http://backend$request_uri;
        proxy_set_header  Host $host:$server_port;
        proxy_set_header  X-Real-IP  $remote_addr;
        client_max_body_size  10m;
    }
    location /upload/ {
        alias /var/solo-upload/;
    }
}

这样配置完成后,和之前配置 nginx 访问本地资源一样,nginx -t 检查是否语法有问题,无问题之后 nginx -s reload 即可。

最后要重启 docker,并切记的在启动代码中修改--server_scheme 的参数为 https,其他不需要修改。

再访问网站你可能会发现还是显示不安全,此处我出现这个问题的原因是,我配置 https 访问之前,设置的 Favicon 的路径是 http,修改为 https 就解决了。

总结

说起来都不是什么很大的问题,之所以还是会花这么多时间,其实就是自己的技术还是不到位,还有很大的学习空间,希望各位读者也可以继续努力,有能力自己解决小问题。如有问题,可评论提问,日常在线。

1 操作
ReturnYG 在 2020-08-29 15:43:16 更新了该帖

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...