服务器博客网站快速搭建

Halo建站

Halo1.5

第一步:获取服务器

选择一个服务器运营商,例如阿里云、腾讯云、华为云等等。

安装宝塔面板

Centos系统的安装命令

yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

Ubuntu/Deepin系统的安装命令

wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec

登录面板之后选择推荐安装内容

第二步:获取域名(可选)

购买自己喜欢的域名,进行备案等操作。(详情见域名厂商的文档)

第三步:使用Halo博客部署

**Halo官网地址:**https://halo.run
远程连接自己服务器并安装宝塔面板,我自己购买的服务器安装的Linux系统是Ubuntu22版本。

  1. 升级Ubuntu软件资源库
sudo apt update && sudo apt upgrade -y
  1. 命令行安装OpenJDK17
sudo apt install openjdk-17-jdk

对于JRE,运行以下命令进行安装

sudo apt install openjdk-17-jre
  1. 检查Java版本以验证安装是否成功
java --version
  1. 安装halo

    1. 在到宝塔面板的网站里创建一个PHP项目

      服务器宝塔面板创建PHP网站

    2. 进入网站根目录

      宝塔面板快速进入网站根目录

    3. 打开终端

      网站根目录打开命令行终端

    4. 下载halo安装包(这里使用的是halo的1.5版本)

      wget https://dl.halo.run/release/halo-1.5.3.jar -O halo.jar
      
    5. 创建halo工作目录

      Halo 所依赖的工作目录,在 Halo 运行的时候会在系统当前用户目录下产生一个 .halo 的文件夹,绝对路径为 ~/.halo。由于这个工作目录是固定的,所以上面所说的 运行包不限制所存放的位置

      mkdir ~/.halo && cd ~/.halo 
      
    6. 下载示例配置文件到工作目录

      wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
      

      测试运行 Halo,进入网站目录执行运行命令

      java -jar halo.jar
      

      PS:配置数据库或者端口等,如需配置请参考官方文档,别忘记在宝塔的防火墙或者服务器防火墙放行halo端口

    7. 使用Supervisor托管 Halo 进程

      软件商店里安装Supervisor进程守护管理器,打开设置,点击 添加守护进程 按钮。

      名称:随意
      运行目录:运行包的存放目录,按照实际情况填写,需要保证你所选的目录包含运行包。
      启动命令:输入java -server -Xms256m -Xmx256m -jar halo.jar 之后点击 确定 即可。

    8. 反向代理

      根据安装的Halo版本在官网找到对应配置(以1.5版本为例)

      文档地址:https://docs.halo.run/1.5/getting-started/install/other/bt-panel/

      配置步骤:

      1. 进入配置管理

        Halo网站配置反向代理

      2. 根据官方文档进行配置

        根据版本的官方文档配置反向代理

  2. 进入网站

在浏览器搜索栏输入之前的域名即可访问到网站,网站后台管理需要在网址后输入/admin进入后台管理

Halo2.7/2.8

Ubuntu系统安装Docker

环境配置
  1. 删除旧版本

    sudo apt-get remove docker docker-engine docker.io containerd runc
    
  2. 更新apt包索引:

    sudo apt-get update
    
  3. 安装包以允许apt通过 HTTPS 使用存储库:

    sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg-agent \
        software-properties-common
    
  4. 添加 Docker 的官方 GPG 密钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    

    9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88通过搜索指纹的最后 8 个字符,验证您现在拥有带指纹的密钥 。

    sudo apt-key fingerprint 0EBFCD88
    
  5. 添加软件源

    sudo add-apt-repository \
       "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
       $(lsb_release -cs) \
       stable"
    
  6. 更新apt包索引。

    sudo apt-get update
    
  7. 根据服务器商设置镜像加速

安装方法
  1. 安装最新版本的 Docker CE 和 containerd,或者转到下一步安装特定版本:

    sudo apt-get install docker-ce docker-ce-cli containerd.io
    
  2. 通过运行hello-world 映像验证是否正确安装了 Docker CE 。

    sudo docker run hello-world
    

至此docker安装完成

Halo在docker里部署

Halo2.7官方文档:使用 Docker 部署 | Halo 文档

服务器宝塔页面操作
  1. 软件商店安装Docker管理器

  2. 镜像管理获取镜像

  3. halo的镜像地址:Package halo (github.com)

  4. 命令:docker pull ghcr.io/halo-dev/halo:sha-cfe77c5

  5. 将命令粘贴获取即可

    宝塔面板可视化拉去docker镜像

使用命令创建Docker容器

请看注意事项

docker run \
  -it -d \
  --name halo \
  -p 8090:8090 \
  -v ~/.halo2:/root/.halo2 \
  halohub/halo:2.7 \
  --halo.external-url=http://localhost:8090/ \
  --halo.security.initializer.superadminusername=admin \
  --halo.security.initializer.superadminpassword=P@88w0rd
  1. --name halo这行代码的halo表示容器的名称可以自定义
  2. 注意:-p 8090:8090前面的端口是你服务器、宝塔面板共同开放的端口,第二个则是Halo的默认端口不修改
  3. --halo.external-url=http://localhost:8090/这条命令的地址是外部访问的端口号或者域名
  4. 最后两行代码里的用户名和密码可以自定义,后期登录后台使用
部署多个Halo

只需要修改上面代码里的容器名称、端口号

以及下方这条命令里的 ~/.halo2的名称,例如~/.halo2_1其他地方不变即可

-v ~/.halo2:/root/.halo2
配置网站反向代理

参照1.5配置修改即可 与宝塔面板配合使用 | Halo 文档

注意:需要将部分内容修改

修改前:

upstream halo {
    server 127.0.0.1:8090;
}

修改后:

upstream 新的服务名称,可以和之前部署halo的名字不一样 {
    server 127.0.0.1:新开放的端口号;
}

完整配置:使用时把汉字部分修改为你自己的

upstream 新的服务名称,可以和之前部署halo的名字不一样 {
    server 127.0.0.1:新开放的端口号;
}
server
{
    ...
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        proxy_pass http://新的服务名称;
        expires      30d;
        error_log /dev/null;
        access_log off;
    }
    
    location ~ .*\.(js|css)?$
    {
        proxy_pass http://新的服务名称;
        expires      12h;
        error_log /dev/null;
        access_log off; 
    }
    
    location / {
        proxy_pass http://新的服务名称;
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    ...
}

反向代理配置地方,在配置文件里参考1.5配置的地方根据2.7或2.8的官方文档配置