首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >手摸手一小时从0搭建专属个人博客(视频教程)

手摸手一小时从0搭建专属个人博客(视频教程)

作者头像
一行Java
发布2022-04-07 10:42:55
发布2022-04-07 10:42:55
4330
举报

视频地址: https://www.bilibili.com/video/BV1xz4y1k783/

下面的文档为上面的视频笔记;可以配合视频教程使用。

教程介绍
个人博客

个人博客:https://lupf.cn

CSDN : https://lupengfei.blog.csdn.net/

为什么要有自己的博客?
  • 记录学习、开发心得;解决的问题、学习的知识;写出来和单纯装在脑子里是完全不一样的;记录一遍,影响更加深刻;
  • 分享精神(开源精神),帮助其他人解决相同的问题,分享有趣的知识;
  • 提升自身的level,扩大自己的影响力,结识更多的朋友;
  • 云服务降低了门槛;不需要自己搞机器、办固定IP;入门级别的阿里云、腾讯云几百块钱一年;成本很低,但是足够个人博客的使用了。
  • 审核机制的问题;某一些特殊的笔记,没办法发到共有的博客环境,那我们就可以放在主机的博客下面;
  • 面试、找工作的加分项
搭建面临的问题
  • 问题太多带来的恐惧 搭建的过程中不可避免的会出现问题,很多时候因为这些问题得不到有效的解决而被迫放弃;我想说的是,不要畏惧,直面问题刚一波,其实很多时候往往就是坚持一下,下一秒可能就找到解决方案了。
  • 了解的知识面不够全面 麻雀虽小,五脏俱全;一个博客平台,虽然支持的功能就那么多,但是包含了一整套业务流程;数据库、前端、后台都有,然而并不是所有开发人员这些都是了解的;因此,因为一些不会的因素,给整个搭建带来了一些障碍。
教程的目的

本教程的最终目的,就是带大家解决搭建过程中的会遇到的问题;从0开始的一步步去构建;详细的讲解每一个步骤的创建过程。不管你是在校大学生、前端开发、后端开发。都可以轻松的将个人博客搭建起来。

为什么选SOLO

gitbub地址:https://github.com/88250/solo

docker仓库地址:https://hub.docker.com/r/b3log/solo

solo是一个很轻量级的博客框架,搭建起来容易,一个服务,一个mysql就够了;

个人用了一年多,使用起来也比较的方便;

项目从10年开源,且作者对外宣称的是永久免费维护下去。所以也不用担心,用着用着,项目死了。

笔记

本教程所有的笔记,我会在个人博客里面整理成一篇文章;大家通过:https://lupf.cn 进入到博客;搜索 “ solo ”关键词即可看到;下面涉及到的每行指令;都会整理进去,方便大家自行搭建的时候使用。

教程的几个简单的章节

image-20201122222723484

Linux虚拟机搭建
本章面向的人群
  • 没有云服务器
  • 没有linux系统的物理机
  • 单纯想测试一下整个教程的可行性
搭建过程

详细教程:基于VirtualBox搭建Linux(CentOS)虚拟机环境(学习必备技能)

  • 创建虚拟机
  • 配置网络
  • 测试外网
  • 关闭防火墙
  • 修改主机名称
  • 安裝vim
  • 修改时间
Docker安装
为什么要用Docker
  • 跨平台性
  • 安装部署简单
  • 方便迁移
  • 资源隔离,服务与服务之间互不干扰
安装

详细教程:https://lupf.cn/articles/2019/11/23/1574503815568.html

  • 安装docker
  • 安装docker-compose
基础的镜像准备
mysql

创建目录

代码语言:javascript
复制
mkdir -p /opt/docker/mysql

下载镜像

代码语言:javascript
复制
docker pull mysql:5.7.13
solo

创建目录

代码语言:javascript
复制
mkdir -p /opt/docker/solo

下载镜像

代码语言:javascript
复制
docker pull b3log/solo
nginx

由于后面配置ssl证书的时候需要使用到一个朋友定制增强的一个nginx 所以这里一并给下载下来

创建目录

代码语言:javascript
复制
mkdir -p /opt/docker/nginx/conf/conf.d
mkdir -p /opt/docker/nginx/html
mkdir -p /opt/docker/nginx/logs

mkdir -p /opt/docker/ohttps-nginx/conf/conf.d
mkdir -p /opt/docker/ohttps-nginx/html
mkdir -p /opt/docker/ohttps-nginx/logs

下载镜像

代码语言:javascript
复制
docker pull nginx
docker pull ohttps/ohttps-nginx

查看下载的镜像

代码语言:javascript
复制
docker images
博客部署
运行服务

准备nginx的默认配置

代码语言:javascript
复制
docker run --name my-nginx -p 80:80 -d nginx

docker ps

docker cp f79:/etc/nginx/nginx.conf /opt/docker/nginx/conf/nginx.conf
docker cp f79:/etc/nginx/conf.d /opt/docker/nginx/conf
docker cp f79:/usr/share/nginx/html /opt/docker/nginx

docker cp f79:/etc/nginx/nginx.conf /opt/docker/ohttps-nginx/conf/nginx.conf
docker cp f79:/etc/nginx/conf.d /opt/docker/ohttps-nginx/conf
docker cp f79:/usr/share/nginx/html /opt/docker/ohttps-nginx

docker stop f79
docker rm f79

准备docker-compose.yml

代码语言:javascript
复制
version: "2"

services:
  mysql:
    container_name: solo-mysql
    image: mysql:5.7.13
    restart: always
    volumes:
      - /opt/docker/solo/mysql/data:/var/lib/mysql
      - /opt/docker/solo/mysql/logs:/logs
      - /opt/docker/solo/mysql/conf:/etc/mysql/conf.d
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      TZ: "Asia/Shanghai"
    command: --max_allowed_packet=32505856
  solo:
    container_name: solo
    image: b3log/solo:latest
    restart: always
    ports:
      - "8080:8080"
    environment:
      RUNTIME_DB: "MYSQL"
      JDBC_USERNAME: "root"
      JDBC_PASSWORD: "123456"
      JDBC_DRIVER: "com.mysql.jdbc.Driver"
      JDBC_URL: "jdbc:mysql://solo-mysql:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"
    command: --listen_port=8080 --server_port= --server_scheme=http --server_host=192.168.1.232
  nginx: 
    container_name: solo-nginx
    image: nginx:latest
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /opt/docker/nginx/conf/conf.d:/etc/nginx/conf.d
      - /opt/docker/nginx/html:/usr/share/nginx/html
      - /opt/docker/nginx/logs:/var/log/nginx

启动服务

此时的启动肯定会报错 因为数据库还没有,还没有创建

代码语言:javascript
复制
docker-compose -f docker-compose.yml up
  • 创建数据库 docker ps | grep mysql docker exec -it 容器id /bin/bash mysql -uroot -p create database solo default character set utf8mb4 collate utf8mb4_general_ci; create user 'root'@'127.0.0.1' identified by '123456'; grant all privileges on *.* to 'root'@'127.0.0.1'; flush privileges;

调整服务为后台进程

代码语言:javascript
复制
docker-compose -f docker-compose.yml up -d

停止并关闭服务

代码语言:javascript
复制
docker-compose -f docker-compose.yml down

测试本地方位

http://192.168.1.231:8080

配置nginx

上面运行的服务通过自身监听的端口已经可以访问了;由于默认是监听的8080端口;通常情况下我们是希望通过80或者443端口进行访问的;因此,在这里就部署一个nginx,并监听80或者443端口;然后通过反向代理代理到solo服务去;

进入配置文件目录

代码语言:javascript
复制
cd /opt/docker/nginx/conf/conf.d

添加配置文件

vim default.conf

代码语言:javascript
复制
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://solo:8080;
    }
https证书的配置

注册账号

添加chame记录

参考视频

生成证书

配置域名解析

参考视频

代码语言:javascript
复制
// 刷新dns指令
ipconfig /flushdns

添加部署节点(nginx)

调整docker-compose

第一处修改 solo服务,--server_scheme修改为https;--server_host=blog.writee.cn 第二处修改;nginx的镜像修改为ohttps/ohttps-nginx 第三处修改;设置nginx自动更新证书的id和token;上面步骤申请到的 第四处修改;修改持久化文件映射的路径

代码语言:javascript
复制
version: "2"

services:
  mysql:
    container_name: solo-mysql
    image: mysql:5.7.13
    restart: always
    volumes:
      - /opt/docker/solo/mysql/data:/var/lib/mysql
      - /opt/docker/solo/mysql/logs:/logs
      - /opt/docker/solo/mysql/conf:/etc/mysql/conf.d
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      TZ: "Asia/Shanghai"
    command: --max_allowed_packet=32505856
  solo:
    container_name: solo
    image: b3log/solo:latest
    restart: always
    ports:
      - "8080:8080"
    environment:
      RUNTIME_DB: "MYSQL"
      JDBC_USERNAME: "root"
      JDBC_PASSWORD: "123456"
      JDBC_DRIVER: "com.mysql.jdbc.Driver"
      JDBC_URL: "jdbc:mysql://solo-mysql:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"
    command: --listen_port=8080 --server_port= --server_scheme=https --server_host=blog.writee.cn
  nginx: 
    container_name: solo-nginx
    image: ohttps/ohttps-nginx
    restart: always
    ports:
      - "80:80"
      - "443:443"
    environment:
      PUSH_NODE_ID: "push-1xlpm40g5p85n9gz"
      PUSH_NODE_TOKEN: "16d2e1584b25bf22888586a51ff86dcf"
    volumes:
      - /opt/docker/ohttps-nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /opt/docker/ohttps-nginx/conf/conf.d:/etc/nginx/conf.d
      - /opt/docker/ohttps-nginx/html:/usr/share/nginx/html
      - /opt/docker/ohttps-nginx/logs:/var/log/nginx

重启服务

代码语言:javascript
复制
docker exec -t 容器id nginx -t
docker exec -t 容器id nginx -s reload

查看证书

代码语言:javascript
复制
docker ps | grep nginx

docker exec -it 容器id /bin/bash

cd /etc/nginx/certificates
ls

nginx配置域名及证书

vim blog.conf

代码语言:javascript
复制
server {
  listen       80;
  server_name blog.write.cn;
  return 301 https://$server_name$request_uri;
}

server {
  server_name blog.write.cn;
  listen 443 ssl http2;

  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_certificate_key /etc/nginx/certificates/cert-9dxel0446w04j7o1/cert.key;
  ssl_certificate /etc/nginx/certificates/cert-9dxel0446w04j7o1/fullchain.cer;
  ssl_session_timeout 5m;
  ssl_protocols TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
  ssl_session_cache builtin:1000 shared:SSL:10m;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_pass http://solo:8080;
  }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一行Java 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 教程介绍
    • 个人博客
    • 为什么要有自己的博客?
    • 搭建面临的问题
    • 教程的目的
  • 为什么选SOLO
  • 笔记
  • 教程的几个简单的章节
    • Linux虚拟机搭建
      • 本章面向的人群
      • 搭建过程
    • Docker安装
      • 为什么要用Docker
      • 安装
    • 基础的镜像准备
      • mysql
      • solo
      • nginx
    • 博客部署
      • 运行服务
      • 配置nginx
    • https证书的配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档