抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

腾讯云上购买了一个新的轻量级服务器,于是乎需要重新搭建一下环境,特此记录

安装git

执行命令:yum install git

设置secret_token

原因:在Github的Webhook机制中设置secret_token来提高安全系数

  1. 将如下内容写到~/.bash_profile中:(注意修改SECRET_TOKEN为自己的token)
    1
    echo "export SECRET_TOKEN=自己在Github设置的Token" >> ~/.bash_profile
  2. 然后执行命令:source ~/.bash_profile

设置接收webhook的程序

我们需要有一个程序作为后台进程一直在监听Github发生过来的事件

  1. 直接编译代码为可执行程序后,直接放置到~/workspace目录下

  2. ~/workspace目录下创建conf目录并编写配置文件config.ini,内容如下:

    1
    2
    3
    4
    5
    6
    [server]
    host='0.0.0.0'
    port=8999

    [script]
    auto_update_script_path='./auto_update_script.sh'
  1. ~/workspace下编写脚本auto_update_script.sh,内容如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    #!/bin/bash
    # 本次部署的类型
    deploy_type=$1

    # 功能:杀死现在跑的容器并移除对应镜像
    function removeContainerAndImage() {
    # 0. 获取当前运行的容器id
    container_id=`docker ps -a | grep $1 | awk '{print $1}'`
    # 1. 获取容器的镜像名
    image_name=`docker images | grep $1 | awk '{print $3}'`

    # 2. 如果容器不为空
    if [[ ${container_id} != "" ]]; then
    echo "$1 container_id is" ${container_id} >> log.log
    # 2.1 停止当前运行的docker容器
    docker kill ${container_id}
    echo "succeed to stop container" >> log.log
    # 2.2 移除停止的docker容器
    docker rm ${container_id}
    echo "succeed to remove container" >> log.log
    fi

    # 3. 如果镜像不为空
    if [[ ${container_id} != "" ]]; then
    # 3.1 移除构建出的docker镜像
    docker rmi ${image_name}
    echo "succeed to remove images: ${image_name}" >> log.log
    fi
    }

    # 重新构建镜像并部署对应容器
    function buildImageAndDeployToContainer() {
    # 停止容器并移除镜像
    removeContainerAndImage $1
    # 删除之前部署的网站对应的目录
    rm -rf ./website/$1
    if [[ $1 = "blog" ]]; then
    # 部署博客
    echo "blog" >> log.log
    cd ~/nginx-proxy-manager/data
    rm -rf yirufeng.top
    git clone https://github.com/sivanWu0222/sivanWu0222.github.io.git -b master yirufeng.top
    elif [[ $1 = "basic" ]]; then
    # 部署计算机基础知识的docsify
    echo "basic" >> log.log
    # 克隆仓库, 将会把项目所有内容克隆到当前目录的repo目录下(如果repo目录不存在会创建)
    git clone https://github.com/sivanWu0222/BasicCompu.git ./website/$1/repo
    # 构建docker镜像
    docker build -f ./website/$1/repo/docs/Dockerfile -t docsify/$1 .
    # 运行docker镜像,通过-p来修改默认的3000端口避免端口冲突
    # -v表示将:前面的目录(宿主机的目录)映射到容器的/docs目录
    docker run -dp 9002:9002 --name=docsify-$1 -v $(pwd)/website/$1/repo/docs:/docs docsify/$1
    elif [[ $1 = "resume" ]]; then
    # 部署简历对应的网站
    echo "resume" >> log.log
    elif [[ $1 = "algo" ]]; then
    # 部署计算机基础知识的docsify
    echo "algo" >> log.log
    # 克隆仓库, 将会把项目所有内容克隆到当前目录的repo目录下(如果repo目录不存在会创建)
    git clone https://github.com/sivanWu0222/AlgoBook.git ./website/$1/repo
    # 构建docker镜像
    docker build -f ./website/$1/repo/docs/Dockerfile -t docsify/$1 .
    # 运行docker镜像,通过-p来修改默认的3000端口避免端口冲突
    # -v表示将:前面的目录(宿主机的目录)映射到容器的/docs目录
    docker run -dp 9001:9001 --name=docsify-$1 -v $(pwd)/website/$1/repo/docs:/docs docsify/$1
    else
    echo $1
    fi
    }

    # $1只能为blog、resume、basic、algo四种
    buildImageAndDeployToContainer $1
  2. 编写如下命令启动后台进程:
    1
    2
    chmod +x ~/workspace/main
    nohup ~/workspace/main > ~/workspace/main.log &

修改github对应仓库的webhook地址

安装docker-compose

  1. 执行命令即可:sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

安装nginx-proxy-manager并进行相关设置

  1. 执行如下命令用于创建并初始化目录:

    1
    cd ~ && mkdir nginx-proxy-manager && cd nginx-proxy-manager
  2. 编写docker-compose.yml,内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    version: '3'
    services:
    app:
    image: 'jc21/nginx-proxy-manager:latest'
    network_mode: "host"
    restart: always
    ports:
    # Public HTTP Port:
    - '80:80'
    # Public HTTPS Port:
    - '443:443'
    # Admin Web Port:
    - '81:81'
    # Add any other Stream port you want to expose
    # - '21:21' # FTP
    environment:
    DISABLE_IPV6: 'true'
    # These are the settings to access your db
    # If you would rather use Sqlite uncomment this
    # and remove all DB_MYSQL_* lines above
    DB_SQLITE_FILE: "/data/database.sqlite"
    # Uncomment this if IPv6 is not enabled on your host
    # DISABLE_IPV6: 'true'
    volumes:
    # - ./Users/brittanysalas/.config/production.json
    - ./data:/data
    - ./letsencrypt:/etc/letsencrypt
  3. 执行命令进行部署:docker-compose up -d

  4. 防火墙打开端口:80、81、443、8099、9000、9001、9002、5230

  5. 进入到页面:ip:81

    1. 填写如下用户名和密码:
      • 用户名:admin@example.com
      • 密码:changeme
    2. 成功登入之后需要重新设置用户名、邮箱、密码:
      • Full Name: yirufeng
      • Nick name: yirufeng
      • Email: yirufeng@foxmail.com
      • 设置密码:$Pqe%gvG4yk5bz82WJZ6nxkS@R5eX@

建立并部署memos:

  1. ~目录进行操作,递归创建website/wiki并进入,编写docker-compose.yml,内容如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    version: "3.0"
    services:
    memos:
    image: neosmemo/memos:latest
    container_name: memos
    volumes:
    - ~/.memos/:/var/opt/memos
    ports:
    - 5230:5230
  2. 执行docker-compose up -d进行部署,
  3. 进入页面:ip:5230进行访问
    1. 输入用户名yirufeng以及密码skhXBqRa5VvyShFKP8Gxy9zy4ShXQ7Fr进行注册
    2. 在设置中可以修改语言以及其他的设置

建立博客站点

  1. 登录nginx proxy manager管理页面:ip:81

  2. 建立一个新Proxy Hosts,内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Domain names: yirufeng.top
    Scheme: http
    Forward Hostname / IP: 0.0.0.0
    Forward Port: 80


    SSL选项卡:
    请求一个新的SSL证书
    勾选Force SSL
    勾选HTTP/2 Support
    填入自己的邮箱
    勾选 I agree to.....


    Advanced选项卡,编辑如下内容并填写
    location / {
    root /data/yirufeng.top;
    }

    然后点击save进行请求

    等待一段时间就好

    其他都是默认
  3. 同时再建立一个新的ProxyHosts,内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    Domain names: www.yirufeng.top
    Scheme: http
    Forward Hostname / IP: 0.0.0.0
    Forward Port: 80

    勾选Cache Assets
    SSL中选择yirufeng.top,且勾选Force SSL和HTTP/2 Support

    其他都是默认

注意事项:

  1. 域名一定要解析到该服务器的IP地址
  2. 防火墙记得放行对应端口

建立wiki站点

  1. 登录nginx proxy manager管理页面:ip:81
  2. 建立一个新Proxy Hosts,内容如下:
    1
    2
    3
    4
    5
    6
    7
    Domain names: wiki.yirufeng.top
    Scheme: http
    Forward Hostname / IP: 0.0.0.0
    Forward Port: 5230


    其他都是默认

建立basic站点

  1. 登录nginx proxy manager管理页面:ip:81
  2. 建立一个新Proxy Hosts,内容如下:
    1
    2
    3
    4
    5
    6
    7
    Domain names: basic.yirufeng.top
    Scheme: http
    Forward Hostname / IP: 0.0.0.0
    Forward Port: 9092


    其他都是默认

建立algo站点

  1. 登录nginx proxy manager管理页面:ip:81
  2. 建立一个新Proxy Hosts,内容如下:
    1
    2
    3
    4
    5
    6
    7
    Domain names: algo.yirufeng.top
    Scheme: http
    Forward Hostname / IP: 0.0.0.0
    Forward Port: 9091


    其他都是默认

建立log站点

  1. 登录nginx proxy manager管理页面:ip:81
  2. 建立一个新Proxy Hosts,内容如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Domain names: log.yirufeng.top
    Scheme: http
    Forward Hostname / IP: 0.0.0.0
    Forward Port: 27199

    勾选Websockets Support

    Custom Locations选项卡添加:
    路径是:/vv/
    Scheme: http
    Forward Hostname / IP: 0.0.0.0
    Forward Port: 27199


    SSL选项卡:
    请求一个新的SSL证书
    勾选HTTP/2 Support
    填入自己的邮箱
    勾选 I agree to.....



    等待一段时间就好

    其他都是默认

建立resume站点

总结

到这里我们就已经搭建完成了博客、简历、计算机基础知识、算法、以及wiki和log站点的搭建

评论