ReturnYG 的博客 ReturnYG 的博客

为了想象中美好的生活而努力

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

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

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

为何选择Solo搭建博客

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

基础搭建部分

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

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

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

基础配置

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

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

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

  • 在你的服务器上创建好你存放图片的文件夹,例如我的文件夹路径为 /var/solo-upload/,在这个文件夹中还有两个子文件夹,用于存放不同类型的图片,一个是myicon,另一个是myimages
  • 配置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都是可以的。

  • 配置完成后使用 nginx -t检测配置文件语法是否有问题,没有问题后就可以 nginx -s reload 使用新的配置文件了。
  • 这样在设置中设置Favicon路径时,例如我的文件放在本地/var/solo-upload/myicon/1.ico,就可以这样输入http://yourdomain.com/upload/myicon/1.ico

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就解决了。

总结

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


标题:使用Solo搭建个人博客的心得(docker部署+https配置)
作者:ReturnYG
地址:https://www.returnyg.xyz/articles/2020/08/29/1598667164979.html