博客搭建

编程 / 2022-08-30

简介

先尝试写一篇搭建这个博客的过程来练练手哇!
搭建这个博客的过程,总共耗了我两三天吧

购买服务器

想要搭建一个网站,无论什么样的肯定是要一台服务器的哇
想要自己电脑做服务器的可以88了,自己搞出来的服务器各方面都是惨不忍睹的。

服务器的选择方面,我尝试过阿里云和腾讯云,我比较推荐腾讯云
虽然两者都有学生的优惠价格,但是阿里云的网页的控制台我觉得太卡太卡了,而且ui设计方面没有腾讯云清楚明了,所以都给我冲腾讯云。
腾讯云官网
学生优惠地址

这里有三款的优惠供我们选择。
9WZGSV~I2RD%

对于简单搭个网站的或者java程序员放点中间件的2G4核的服务器已经够用了,但是如果你的需求比较高比如还要放一些ES、微服务包这些资源大户的话就别省,上4核8G,当然我不觉得你有这水平还没有公司的服务器给你玩。

操作系统

操作系统选择CentOS8.2-Docker20-nspR Docker全家桶或者其他centOS和docker版本都可以,这个是腾讯云特有的,如果不是腾讯云就用CentOS8.X或CentOs7.X都可以,只不过要自行安装docker和docker-compose
docker和docker-compose安装

创建服务器后

TP{3DNW[TT)2H_HY]G$@P@X
这里显示的就是分配给你的公网IP

然后立刻修改密码
SK2Z(M7@O~M7T2JMA38%@U2

通过XShell远程连接Linux界面

下载XSell,自己寻找办法
创建新会话
image

image-1661851337282
主机一栏填你的公网ip,端口号默认22,22是Linux的SSH的默认链接端口
然后输入之前重置密码的那个账号密码,一直确定就行。至此你就拥有了一个自己的Linux服务器

创建mysql容器

image-1661851550519
Linux中~标志就代表你的root目录下面
我们直接在root目录下操作,逐行执行

mkdir mysql
cd mysql
mkdir conf
mkdir data
cd ..            #回到mysql目录下
vim docker-compose.yaml #配置docker-compose文件,确保安装上了docker和docker-compose

docker-compose.yaml:内容如下

version: '3'
services:
  mysql:
    container_name: mysql
    restart: always
    network_mode: bridge
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
    image: "mysql:5.7.26"
    privileged:
      true
    volumes:
      - ./conf:/etc/mysql/conf.d
      - ./data:/var/lib/mysql
    ports:
      - "3306:3306"

配置中具体的意思就不多赘述了,需要学会docker

	docker-compose up

启动mysql docker容器

然后去到腾讯云控制台打开防火墙
image-1661851978250
image-1661851990349
image-1661852018411
打开防火墙的端口让外网访问
然后就可以用Mysql的连接工具输入公网ip和3306端口号连接进入该数据库,当然也可以直接进入容器内进行sql操作,看个人选择
然后执行sql:

create database halodb character set utf8mb4 collate utf8mb4_bin;

这条sql必须是sql脚本执行,不要自己创一个名字叫halodb的数据库,我创建的时候就遇到这个坑,导致我halo安装的时候出现网络不可用的报错,有可能是没设置好对的字符集,所以给我老老实实。

开始进行halo的安装!

mkdir ~/.halo && cd ~/.halo
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml   #下载模板
vim application.yaml

修改里面的配置,里面的公网ip,也可以自己自定义内网局域网,直接桥接到mysql的容器当中也是可以的,内网桥接才是正确的做法,有兴趣的可以自己百度,或许我以后会出集群配置的分享的时候也会讲到。

server:
  port: XXXX #你设定的端口号

  # Response data gzip.
  compression:
    enabled: true
spring:
  datasource:

    # H2 database configuration.
    #driver-class-name: org.h2.Driver
    #url: jdbc:h2:file:~/.halo/db/halo
    # username: admin
    #    password: 123456

    # MySQL database configuration.
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://你自己的公网ip:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 123456

  # H2 database console configuration.
  # h2:
  # console:
  #   settings:
  #     web-allow-others: false
  #   path: /h2-console
  #   enabled: false

halo:

  # Your admin client path is https://your-domain/{admin-path}
  admin-path: admin

  # memory or level
  cache: memory

docker pull halohub/halo:1.5.4
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.5.4

运行后,halo会自动在之前的mysql数据库中的halodb数据库建表,不需要我们操心。
至此就完成了halo服务的安装,可以输入

docker ps

查看docker容器服务,记得同样的操作去防火墙开放8090端口号

然后,在浏览器中输入你的公网ip+:+端口号(8090)+/admin 可以进入管理员控制面板,设定账号密码后,我们就在这里写我们的博客。

没有/admin就是用户界面

编辑自己的halo主题!

我们可以在主题仓库中寻找我们自己想要的主题,当然有别的渠道也是可以的,官网的主题仓库并没有很多主题,自己写是最牛的。

主题仓库中的主题都是保存在github上的,直接下载github上对于项目的压缩包就可以了,打不开github的童鞋就莫得办法了

image-1661918157819

image-1661918330974
在这里将下载好的压缩包放入就能加载对应的主题了

切换主题过后也不是直接就能用的,主题只是一个框架,具体的内容还是要自己补充的。
image-1661918504614
有一些主题要求开启api服务
image-1661918539421
设置自己的Access Key在这里
image-1661918615780
填入一样的key就开启了。

由于每一个主题的作者编写的设置变量都是不一样的,想要把主题调整成自己想要的样子,是需要一定的前端功底的,在主题编辑中查看源码,得知每一个设置对应的显示在前端的字段是什么,是比较重要的。

当然最简单的就是将你所能找到的设置都填一次看看有没有变化就好了。

注:页面选项中每一个页面都代表了一个路由,懂得都懂~

配置域名和https连接

以上步骤全部做完之后,我们自己是可以用了,但是想要公开出去给大家伙看的话,一定要做的就是配置域名和https连接,因为直接暴露ip和端口号是一件非常危险的事情,是会被攻击的,且ip使用的http协议是明文协议,同样十分危险。所以我采用的是使用nginx反向代理我的域名。

购买域名

腾讯云的首页搜索域名

image-1661919057845
image-1661919107845

选择域名注册

image-1661919137444

搜索自己想要的域名,并完成购买。

申请SSL证书

在控制台我的域名当中

image-1661919348365

先申请解析DNS服务,腾讯给的指引非常完善,按部就班申请到ssl证书就可以了,ssl证书需要审批,需要等待1~2天左右,会以短信的形式通知你。

申请成功后,在浏览器中输入你的域名+:+端口号就可以直接访问你的博客了,但是端口号还是暴露出来了。

配置Nginx

还是在root目录下操作

    cd ~
    mkdir ngnix
    mkdir -p conf/log conf/www conf/ssl
    vim docker-compose.yaml

docker-compose.yaml内容如下:

version: '3'
  
services:
  services:
    image: nginx
    container_name: nginx-ssl
    restart: always
    ports:
      - 443:443
      - 80:80
    volumes:
      - ./conf/log:/etc/nginx/logs
      - ./conf/www:/etc/nginx/html
      - ./conf/ssl:/cert
      - ./conf/nginx.conf:/etc/nginx/nginx.conf

nginx反向代理域名不知道docker的中转的,所以要直接配置在443和80上。

	cd conf
    vim nginx.conf
#user  nobody;
worker_processes  8;
worker_rlimit_nofile 12000;
events {
    use epoll;
    worker_connections  12000;
    multi_accept    on;
}

http  {

    include     mime.types;
    default_type        application/octet-stream;


    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

     server {
        # https 监听端口,https端口不可使用docker端口转发,宿主机与容器内端口需配置一致,否则无法访问
        listen      443 ssl;
        server_name  www.bwhsite.site;
        root         /etc/nginx/html;


        # 以下为证书文件
        ssl_certificate      /cert/www.bwhsite.site_bundle.pem;
        ssl_certificate_key  /cert/www.bwhsite.site.key;
         #请按照以下协议配置
        ssl_protocols TLSv1.2 TLSv1.3;
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ssl_session_timeout  5m;

        access_log  logs/access.log;

        #开启索引功能
        autoindex on;
        # 关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)
        autoindex_exact_size off;
        autoindex_localtime on;   # 显示本机时间而非 GMT 时间
         location / {
             proxy_pass http://www.bwhsite.site:XXXX; #你的Halo端口号
             proxy_redirect default;
        }
         # 解决跨域问题
         add_header Access-Control-Allow-Origin '*';

  }
   server {
    listen 80;
    #请填写绑定证书的域名
    server_name www.bwhsite.site;
    #把http的域名请求转成https
    return 301 https://$host$request_uri;
   }
}

在SSL证书下来后,在腾讯云我的证书中
image-1661927506724

下载nginx的证书
image-1661927536524

解压过后,上传至服务器中
打开XShell,点击这个
image-1661927599109

image-1661927621136

生成一个新的会话
image-1661927649589

这是一个sftp的文件传输协议,有兴趣可以学习一下他的使用
在该会话中,输入

    cd /root/nginx/conf/ssl
    put    #就打put然后回车,会让你选择文件,选择ssl下载后的压缩包解压出来的4个文件选上

回到原来的会话中去

    vim nginx.conf  #安照注释将域名全部改为自己的域名
  cd ..     #回到nginx目录
  docker-compose up   #启动容器
  docker ps  #查看

记得把
image-1661928048312
修改成域名

然后就可以在浏览器中直接输入你的域名试试能不能跳转到你的博客吧!

注:查看腾讯云防火墙是否开启了443和80端口

粤ICP备2022112743号 粤公网安备 44010502002407号