Ubuntu Server安装

镜像文件下载

访问网址Get Ubuntu | Download | Ubuntu下载Ubuntu Server的镜像

  1. 访问官网,点击下载服务器版本的镜像

img

  1. Ubuntu有稳定版和最新版,我选择最新版

img

  1. 下载完的镜像文件模样如是

img

VMware安装Ubuntu Server

这里我选择使用VMware来安装Ubuntu Server,也可以安装在 物理/云 服务器上,安装过程与VMware安装大致相同,可以为鉴。

新建虚拟机

  1. 打开VMware,在空白处右键->新建虚拟机

img

  1. 选择典型安装

img

  1. 选择稍后安装操作系统

img

  1. 再选择Ubuntu 64位

img

  1. 选择安装名字以及安装路径,可根据提示更改虚拟机新建的默认位置,以便日后新建虚拟机

img

  1. 容量20G即可,磁盘容量设置不会占用相应大小的物理磁盘空间,视虚拟机中的文件多少而定

img

  1. 可以自定义设置硬件参数,设置完点击完成即可完成创建

img

  1. 双击CD/DVD打开设置界面,选择镜像的目录,设置完后即可开启虚拟机了

img
img

  1. 开启虚拟机

img

安装Ubuntu Server

  1. 选择第一项

img

  1. 语言选择英语,按回车

img

  1. 键盘配置默认即可,选择Done回车

img

  1. 安装类型选择“最小安装”,使用Tab键或上下两个箭头键选择,使用Enter(回车)键确认选择

img

  1. 网络配置,系统会自动获取(DHCP)IP地址,获取地址后选择Done,回车

img

  1. 代理不配置,直接Done,回车

img

  1. Ubuntu存档镜像配置,镜像源默认为Ubuntu官方镜像源,由于地理位置关系,访问可能会很慢

因此,可以使用清华镜像源

https://mirrors.tuna.tsinghua.edu.cn/ubuntu/
清华大学开源软件镜像站 的ubuntu地址

img

  1. 引导式存储配置,磁盘分区默认选择Use an entire disk(使用整个磁盘),即全盘分区。

如果是在重装系统时,不想让一些磁盘分区不被格式化,便不要使用此项。
img

  1. 存储配置,即分区预览,若赞同这般分区,便选择Done,回车

img

  1. 这时会弹出提示框

毁灭性动作确认
一旦选择下面的“继续”将开始安装过程,将导致选定要格式化的磁盘上的数据将会丢失。
您将无法返回到此屏幕或以前的屏幕
是否继续?

询问我们是否确认,我们选择Continue,回车

  1. 配置文件设置,输入服务器系统的详细信息。

名称:
服务器名称:
(Pick a username)用户名:
密码:
将会使用它们来登录服务器。选择Done,然后按Enter键即可继续。
img

  1. SSH设置,勾选Install OpenSSH Server,再Done,回车

img

  1. 安装软件,这里我们不安装软件。直接使用Table键选择Done,回车

img

  1. 安装完成后选择Reboot Now

img

  1. 之后会出现几行FAILED提示,直接回车,重启系统

img

  1. 登录,完成后进入登录界面,输入 在Pick a username处创建的用户名和密码登录。因为我把用户名改成luanshang了,所以我这里用luanshang登录。

img
至此,Ubuntu Server安装完成!

软件环境安装

使用终端工具SSH连接服务器,启动MobaXterm
MobaXterm下载页面:MobaXterm free Xserver and tabbed SSH client for Windows

  • 新建一个会话(两个Session都是新建会话),选择SSH连接。

img

  • 在Ubuntu Server使用命令ip address查看IP地址。

img
将查看到的IP地址输入到“基础SSH设置”的Remote host(远程主机)处。此项为必填项
右边的Specify username(指定用户名)为非必选项,可不填。
填完后选择OK。建立连接如果弹出确认框就选Accept。若是首次使用该软件,它可能会弹出主密码设置选项,可以设置主密码,也可以取消设置。这样在输入密码后会记住密码,以便下次连接之时快速建立连接。
之后输入用户名和密码即可建立SSH连接。

软件环境

Halo 理论上可以运行在任何支持 Docker 及 Java 的平台。

Docker

必须在运行环境安装好 Docker 环境,目前 Halo 的默认安装运行方式均使用容器。

JRE(可选)

目前 Halo 的默认及推荐安装方式为 Docker 容器运行,使用 jar 包运行的方式需要用户自行构建 jar 包。
当前版本(2.0)需要 JRE 17 的版本,推荐使用 OpenJDK 17。

  • 查看是否安装Java
luanshang@shang:~$ java -version
-bash: java: command not found
#这说明java并未安装,接下来进行Java安装
  • Ubuntu安装jre环境可以直接使用apt软件源里面的安装包安装
#查看apt软件源中的Java包
apt list | grep -i java
#查看apt软件源中的openjdk包
apt list | grep -i openjdk

#安装Java21版本的包
sudo apt install openjdk-21-jdk -y
#安装Java需要root权限,故使用sudo。 -y为yes,在选择时自动选择yes
  • 再查看Java是否安装
luanshang@shang:~$ java -version
openjdk version "21" 2023-09-19
OpenJDK Runtime Environment (build 21+35-Ubuntu-1)
OpenJDK 64-Bit Server VM (build 21+35-Ubuntu-1, mixed mode, sharing)
#显示Java版本为21版本,安装成功

PostgreSQL(可选)

也可以使用系统自带的 H2 Database 数据库,无需安装。但不推荐在生产环境中使用 H2 Database。

Web 服务器(可选)

如果你部署在生产环境,那么你很可能需要进行域名绑定,这时候我们推荐使用诸如 NginxCaddy 之类的 Web 服务器进行反向代理。但需要注意的是,目前 Halo 不支持代理到子目录(如:halo.run/blog)。

Wget(可选)

后续的文档中,我们会使用 wget 为例,用于下载所需要的文件,所以请确保服务器已经安装好了这个软件包。当然,下载文件不限制工具,如果你对其他工具熟悉,可以忽略。

  • 安装Wget
#安装Wget
sudo apt install wget

#查看Wget版本
wget --version
#查出来的信息有点多
GNU Wget 1.21.3 built on linux-gnu.

-cares +digest -gpgme +https +ipv6 +iri +large-file -metalink +nls
+ntlm +opie +psl +ssl/openssl

Wgetrc:
    /etc/wgetrc (system)
Locale:
    /usr/share/locale
Compile:
    gcc -DHAVE_CONFIG_H -DSYSTEM_WGETRC="/etc/wgetrc"
    -DLOCALEDIR="/usr/share/locale" -I. -I../../src -I../lib
    -I../../lib -Wdate-time -D_FORTIFY_SOURCE=2 -DHAVE_LIBSSL -DNDEBUG
    -g -O2 -ffile-prefix-map=/build/wget-Wg7LHK/wget-1.21.3=.
    -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects
    -fstack-protector-strong -Wformat -Werror=format-security
    -DNO_SSLv2 -D_FILE_OFFSET_BITS=64 -g -Wall
Link:
    gcc -DHAVE_LIBSSL -DNDEBUG -g -O2
    -ffile-prefix-map=/build/wget-Wg7LHK/wget-1.21.3=. -flto=auto
    -ffat-lto-objects -flto=auto -ffat-lto-objects
    -fstack-protector-strong -Wformat -Werror=format-security
    -DNO_SSLv2 -D_FILE_OFFSET_BITS=64 -g -Wall -Wl,-Bsymbolic-functions
    -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,-z,now
    -lpcre2-8 -luuid -lidn2 -lssl -lcrypto -lz -lpsl ../lib/libgnu.a

Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://www.gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Originally written by Hrvoje Niksic <hniksic@xemacs.org>.
Please send bug reports and questions to <bug-wget@gnu.org>.

VIM(可选)

后续的文档中,我们会使用 vim 为例,用于修改一些必要的配置文件,所以同样请确保服务器已经安装了这个软件包。当前,修改文档也不限制工具,如果你对其他编辑软件熟悉,也可以忽略。

  • 安装Vim
#安装Vim,自动选择yes
sudo apt install vim -y

#查看Vim安装版本
vim -version
VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Oct 16 2023 18:21:01)
Garbage after option argument: "-version"
More info with: "vim -h"

Docker安装

  1. 更新apt库
# 更新本地存储库的软件包信息
sudo apt update
# 升级所有已安装的软件包到它们的最新版本
sudo apt upgrade
# 升级系统中的所有软件包,解决依赖关系,并在必要时删除或添加新的软件包
sudo apt full-upgrade
  1. 安装Docker依赖
sudo apt-get install \
   apt-transport-https \
   ca-certificates \
   curl \
   gnupg-agent \
   software-properties-common
  1. 软件源配置
    设置docker国内镜像(方便快速拉取镜像启动项目)使用sudo vim /etc/docker/daemon.json命令新建或编辑文件

注意: 我这里使用的是中国科技大学的镜像源,还可以使用阿里云的源,但是需要登录阿里云,阿里云镜像服务里点击 “创建我的镜像容器” 来生成自己专属的加速地址,如果有需要可以自己登录阿里云生成,这里不多赘述。

输入以下内容:

{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

编辑完之后保存退出,分别输入以下两条命令:

  1. 重载文件
sudo systemctl daemon-reload
  1. 重启docker服务
sudo systemctl restart docker

使用sudo systemctl status docker命令查看docekr服务运行状态。
在输出结果中看到active (running) 字样表示docker服务正常运行,如果看到failed,请检查上述步骤是否操作错误。
配置Docker的软件源(若设置了第三方镜像源,则不用输入此命令)

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"
  1. 添加Docker官方GPG密钥

执行以下命令来添加Docker官方的GPG密钥,添加完成显示OK

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  1. 安装Docker(Docker-CE)
sudo apt-get install docker-ce docker-ce-cli containerd.io

验证

sudo docker --version

创建Docker目录

sudo mkdir -p /etc/docker

设置Docker开机自启

systemctl enable docker.service

参考:docker compose halo快速搭建博客系统_docker 博客系统-CSDN博客
配置用户组(可选)默认情况下,只有root用户和docker组的用户才能运行Docker命令。我们可以将当前用户添加到docker组,以避免每次使用Docker时都需要使用sudo。

注:重新登录才能使更改生效。

sudo usermod -aG docker $USER
  1. 运行Docker

验证安装
我们可以通过启动docker来验证我们是否成功安装。命令如下:

sudo systemctl start docker
sudo systemctl status docker
sudo systemctl enable docker
  1. 重启Docker
sudo systemctl restart docker

验证是否成功
因为我们之前没有拉取过hello-world,所以运行命令后会出现本地没有该镜像,并且会自动拉取的操作。

sudo docker run hello-world

img

  1. 查看版本

我们可以通过下面的命令来查看docker的版本

sudo docker version

img
查看镜像
上面我们拉取了hello-world的镜像,现在我们可以通过命令来查看镜像,命令如下:

sudo docker images

出现以下情况,即表示我们成功在Ubuntu系统上安装了docker。

luanshang@shang:~$ sudo docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    9c7a54a9a43c   6 months ago   13.3kB

Docker Compose安装

Docker-Compose 安装
官方文档:Overview of installing Docker Compose
Docker Compose官网版本参考:Compose file version 3 reference

以下安装方式,选择一种即可

快速安装

安装

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.3.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

修改权限

sudo chmod +x /usr/local/bin/docker-compose

查看版本

docker-compose -v

完成安装

离线安装

所有版本安装包下载Releases · docker/compose
选择一个版本
img
进入后往下拉,选择对应版本:
img
将文件上传到linux后,移动到与环境变量相关的指定位置

sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

添加可执行权限
为 docker-compose 文件添加可执行权限。

sudo chmod +x /usr/local/bin/docker-compose

测试
通过 docker-compose version 测试安装是否成功。

sudo docker-compose version

Halo部署

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

Halo、MySQL、Nginx部署

编辑compose.yaml文件

sudo vim /halo/compose.yaml

必须修改的自定义配置,修改以下参数:

  • 服务器或虚拟机ip:halo.external-url 中的 ip 设置,我写的配置中是 8.130.97.145,需要修改为你自己的服务器ip地址。

可选修改的自定义配置,找到下面的参数所在位置修改:
超级管理员账号密码

  • 账号 halo.security.initializer.superadminusername,我写的配置中是 admin
  • 密码 halo.security.initializer.superadminpassword ,我写的配置中是 123456

mysql的root用户密码,以下两个参数的值都需要修改且必须保持一致

  • spring.r2dbc.password,我写的配置中是 123456
  • MYSQL_ROOT_PASSWORD,我写的配置中是 123456

根据以上介绍,自定义修改配置项

services:
  halo:
    image: halohub/halo:2.4.0
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./halo:/root/.halo2
    ports:
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=123456
      - --spring.sql.init.platform=mysql
      # 外部访问地址,我的服务器 ip 为8.130.97.145,此处需要修改为你自己的服务器或虚拟机 ip
      - --halo.external-url=http://8.130.97.145:80/
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=123456

  halodb:
    image: mysql:8.0.31
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    command: 
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
    ports:
      - "3306:3306"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=halo

  halonginx: # 服务名称,用户自定义
    image: nginx:1.23.4  # 镜像版本
    container_name: halonginx
    # 链接到其它容器,能在 nginx.conf 反向代理配置时使用
    links:
      - halo
    networks:
      halo_network:
    ports:
      - 80:80  # 暴露端口
    volumes: # 挂载
      - /halo/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
    privileged: true # 这个必须要,解决nginx的文件调用的权限问题
    
networks:
  halo_network:

容器编排

# 1.进入 halo 目录
cd /halo

# 2.容器编排
sudo docker-compose up -d

查看状态

sudo docker ps

访问测试

访问网站(浏览器访问):输入compose.yaml文件中配置的IP地址。
img
点击右上角的地球图标,进入超级管理员登录页面,控制台页面也可以通过IP地址/console的方式登录
img
输入在compose.yaml中输入的用户名和密码
img
img
然后就是初始化,站点名称随意。

点击Halo即可返回网站主页
img


原文链接:halo搭建炫酷个人博客快速部署:docker+docker-compose+nginx_halo博客主题_是谢添啊的博客-CSDN博客