博客搭建(二):服务器搭建及部署

2022-01-18 19:03:28 浏览数 (1)

本教程以 Linux CentOS 7.x 为例,配置部署并运行 Halo,其他 Linux 发行版大同小异。

写在前面

  1. 需要有一台服务器(可以去阿里云购买)。
  2. 具备一定的 Linux 基础。

环境要求

为了在使用过程中不出现意外的事故,给出以下推荐的服务器配置:

  • CentOS 7.x
  • 512 MB 以上内存

连接服务器

使用 SSH 方式连接到远程服务器,这里以阿里云服务器为例,如:

代码语言:javascript复制
ssh root@39.106.37.193

提示如下信息,表示连接成功,同时我们可以用 ls -a 命令来查看服务器上的内容,如:

代码语言:javascript复制
➜  ~ ssh root@39.106.37.193
root@39.106.37.193's password: 
Last login: Mon Aug  3 16:44:09 2020 from 27.18.213.222
 
Welcome to Alibaba Cloud Elastic Compute Service !
 
[root@pengzhenjin ~]# ls -a
.   .bash_history  .bash_profile  .cache   .cshrc  .pip  .pydistutils.cfg  .tcshrc
..  .bash_logout   .bashrc        .config  .halo   .pki  .ssh              .viminfo

更新软件包

请确保服务器的软件包已经是最新的。

代码语言:javascript复制
sudo yum update -y

安装 Java 运行环境

代码语言:javascript复制
# 安装 OpenJREsudo yum install java-1.8.0-openjdk -y # 检测是否安装成功java -version

当然,这只是其中一种比较简单的安装方式,你也可以用其他方式,并不是强制要求使用这种方式安装。

创建 Halo 用户

我们推荐创建一个低权限的用户运行 halo:

代码语言:javascript复制
# 创建 halo 用户sudo useradd -m halo # 直接登录该用户sudo su halo

安装并运行 Halo

Halo 的整个应用程序只有一个 Jar 包,且不包含用户的任何配置,它放在任何目录都是可行的。需要注意的是,Halo 的整个额外文件全部存放在 ~/.halo 目录下,包括 application.yaml(用户配置文件),template/themes(主题目录),upload(附件上传目录),halo.db.mv(数据库文件)。一定要保证 ~/.halo 的存在,你博客的所有资料可都存在里面。所以你完全不需要担心安装包的安危,它仅仅是个服务而已。

代码语言:javascript复制
# 安装 OpenJRE
sudo yum install java-1.8.0-openjdk -y
 
# 检测是否安装成功
java -version

如看到以下日志输出,则代表启动成功,如:

代码语言:javascript复制
run.halo.app.listener.StartedListener    : Halo started at         http://127.0.0.1:8090
run.halo.app.listener.StartedListener    : Halo admin started at   http://127.0.0.1:8090/admin
run.halo.app.listener.StartedListener    : Halo has started successfully!

提示: 以上的启动仅仅为测试 Halo 是否可以正常运行,如果我们关闭 ssh 连接,Halo 也将被关闭。要想一直处于运行状态,请继续看下面的教程。

进阶配置

上面我们已经完成了 Halo 的整个配置和安装过程,接下来我们对其进行更完善的配置,比如:需要开机自启?更简单的启动方式?

实现以上功能我们只需要新增一个配置文件即可,也就是使用 Systemd 来完成这些工作。

如果当前用户为 halo 用户,则需要退出 halo 用户,进入一个拥有管理员权限的用户下:

代码语言:javascript复制
# 查看当前登录用户
whoami
 
# 退出 halo 登录,进入一个有管理员权限的用户
su xxx 或者直接 exit
代码语言:javascript复制
# 下载 Halo 官方的 halo.service 模板
sudo curl -o /etc/systemd/system/halo.service --create-dirs https://dl.halo.run/config/halo.service

下载完成之后,我们还需要对其进行修改。用 vim 命令打开 halo.service 文件,如:

代码语言:javascript复制
# 修改 halo.service
sudo vim /etc/systemd/system/halo.service

打开之后,我们可以看到如下信息:

代码语言:javascript复制
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target
 
[Service]
Type=simple
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar YOUR_JAR_PATH
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog
 
StandError=inherit
 
[Install]
WantedBy=multi-user.target

参数说明:

  • -Xms256m:为 JVM 启动时分配的内存,请按照服务器的内存做适当调整,512 M 内存的服务器推荐设置为 128,1G 内存的服务器推荐设置为 256,默认为 256。
  • -Xmx256m:为 JVM 运行过程中分配的最大内存,配置同上。
  • YOUR_JAR_PATH:Halo 安装包的绝对路径,例如:/home/halo/halo-latest.jar

管理服务(即:halo.service)

修改完 halo.service 文件之后,需要刷新 Systemd,让 halo.service 重新加载,如:

代码语言:javascript复制
# 刷新 Systemd,重新加载 halo.service
sudo systemctl daemon-reload
 
# 使 Halo 开机自动启动
sudo systemctl enable halo

提示:Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。systemctl 命令是 Systemd 的主命令,用于管理系统。

代码语言:javascript复制
# 启动 Halo
sudo service halo start
 
# 重启 Halo
sudo service halo restart
 
# 停止 Halo
sudo service halo stop
 
# 查看 Halo 的运行状态
sudo service halo status

完成以上操作后,即可通过 IP:端口 访问了。

更新 Halo

代码语言:javascript复制
# 备份数据
cp -r ~/.halo ~/.halo.bak
 
# 备份旧的安装包
mv halo-latest.jar halo-latest.jar.bak
 
# 下载最新的 Halo 安装包,{{version}} 为版本号,不带 v,更多下载地址请访问 https://halo.run/archives/download.html
wget https://dl.halo.run/release/halo-{{version}}.jar -O halo-latest.jar
 
# 测试是否能够正常启动
java -jar halo-latest.jar
 
# 重启应用
service halo restart

0 人点赞