我之前分别用过Django和Hexo搭建网站,Django是python的web框架,Hexo是Node.js的,纯前端的玩意儿,配置起来相当折腾,后来我又听说了Halo不错,就尝试按官方文档部署了一套,Halo的官方文档是我见过写的最好的文档,基本照着文档就可以搞定,但还是有些细节我想在这里记录一下。
采用Next主题的网站效果截图:
还有其他多种主题效果,如Simple Bootstrap主题,
主打简洁风格,而且功能比Next多,该主题包含以下功能:
我是嫌麻烦,所以直接选择了最简单的Docker部署,我的京东云服务器是CentOS7.6的操作系统,具体安装Docker的步骤可以参见我写的笔记 CentOS7和8安装Docker ,安装完Docker之后,直接拉取镜像执行命令就初步OK了,具体步骤如下,
先下载配置文件
# 下载配置文件到 ~/.halo 目录
curl -o ~/.halo/application.yaml --create-dirs https://dl.halo.run/config/application-template.yaml
之后修改配置文件,将数据库改为mysql,我这里的mysql数据库也是用docker安装的,可以参考我的安装教程,Docker安装MySQL5.7和8,安装完mysql,这里的数据库halodb需要自己手动创建一下。
server:
port: 8090
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
# H2 Database 配置,如果你需要使用 MySQL,请注释掉该配置并取消注释 MySQL 的配置。
# driver-class-name: org.h2.Driver
# url: jdbc:h2:file:~/.halo/db/halo
# username: admin
# password: 123456
# MySQL 配置,如果你需要使用 H2Database,请注释掉该配置并取消注释上方 H2Database 的配置。
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3906/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: yourname
password: yourpassword
# H2 Database 的控制台相关配置,如果你使用的是 MySQL ,请注释掉下方内容。
# h2:
# console:
# settings:
# web-allow-others: false
# path: /h2-console
# enabled: false
#
halo:
admin-path: admin
cache: memory
docker pull ruibaby/halo
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo ruibaby/halo
完成以上操作你就可以通过 ip:端口 访问了,更新版本时,你只需要拉取最新的镜像,再重新创建镜像就OK了。
# 停止容器
docker stop halo
# 拉取最新的 Halo 镜像
sudo
# 创建容器
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo ruibaby/halo
如果你有域名,那么你还应该配置一下域名访问,具体如下:
先安装Nginx
# 添加 Nginx 源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 安装 Nginx
sudo yum install -y nginx
# 启动 Nginx
sudo systemctl start nginx.service
# 设置开机自启 Nginx
sudo systemctl enable nginx.service
再配置Nginx
# 下载 Halo 官方的 Nginx 配置模板
curl -o /etc/nginx/conf.d/halo.conf --create-dirs https://dl.halo.run/config/nginx.conf
# 使用 vim 编辑 halo.conf
vim /etc/nginx/conf.d/halo.conf
然后对其修改
server {
listen 80;
# 换成自己的域名
server_name example.com www.example.com;
location / {
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;
proxy_pass http://127.0.0.1:8090/;
}
}
修改完成之后,重新加载nginx配置
# 检查配置是否有误
sudo nginx -t
# 重载 Nginx 配置
sudo nginx -s reload
之后你就可以用你的域名访问了,例如:http://www.example.com
首先,你先要从你的云服务器厂商网站上申请免费的ssl证书,并下载下来,放到你的服务器里,再配置nginx的配置文件,做个指向就OK了。
vim /etc/nginx/conf.d/halo.conf
halo.conf 配置文件内容修改如下,
server
{
listen 443 ssl;
server_name xxxx.com www.xxxx.com;
ssl_certificate /root/ssl/your-domain.pem;
ssl_certificate_key /root/ssl/your-domain.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_buffer_size 128k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
proxy_pass http://127.0.0.1:8090;
}
}
server
{
listen 80;
server_name xxxx.com www.xxxx.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
修改完成之后老规矩,继续重新加载nginx配置
# 检查配置是否有误
sudo nginx -t
# 重载 Nginx 配置
sudo nginx -s reload
完事儿之后,你就可以用https访问你的网站了。例如:https://www.example.com