前情提要
拥有一个自己专属的技术博客,不像是CSDN之类的被随意塞垃圾广告,是搭建个人博客的原始动力。
目前有许多的相应解决方案,知名的有 Wordpress 、Hexo、Typecho,今天介绍一个冷面的 Halo
个人安装条件
- 树莓派4B-8G
- 公网ip
- Tplink路由器
Halo
Halo是相对于比较简单的轻量化私人博客平台,而且代码开源免费。采用了程序与用户配置分离的方式,极大的方便了我们的管理与维护,有较为完善的模板系统,支持自定义配置,支持在线安装和更新。
利用Docker安装Halo
首先,确保已经安装好了Docker,传送门。
# 创建 工作目录
mkdir ~/.halo && cd ~/.halo
# 下载示例配置文件到 工作目录
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
# 编辑配置文件,配置数据库或者端口等,如需配置请参考 配置参考
vim application.yaml
# 拉取最新的 Halo 镜像
docker pull halohub/halo:1.5.3
# 创建容器
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.5.3
打开 http://ip:8090 即可看到Halo的安装引导界面,注意这里我们的Halo占用的是8090端口。
这时候如果我们不考虑安全的情况下,我们可以利用路由器的虚拟服务器,直接将内外部端口进行映射即可实现外部访问。
例如,我们在路由器中添加一下映射,即可以实现 http://公网ip:8090 的外部访问。
我们还可以直接将外部的 80端口映射到8090端口,实现 http://公网ip 直接访问。
购买域名
为了不必每次都要输入IP地址才能实现了访问网站,通常将购买域名,并配合域名解析(可以白嫖),实现域名访问。
目前国内的BAT都有类似的服务,价格也很相近,这里我用的是腾讯(域名+域名解析+ssl),不详细的说明购买过程,对应网站都有详细说明。
当完成全部操作后,配置好域名与公网ip的绑定,就可以直接通过域名直接访问了
安装Nginx
如果比较刚,不管安不安全,这里往后的就不用操作了,已经毕业了。
但是为了确保我们网站与ip的安全,通常我们还需要对网站进行反向代理与SSL保护。而Nginx是最知名有效的。
# 安装gcc g++的依赖库
sudo apt-get install build-essential
sudo apt-get install libtool
# 安装pcre依赖库
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
# 安装zlib依赖库
apt-get install zlib1g-dev
# 安装ssl依赖库
apt-get install openssl
# 安装Nginx
sudo apt-get install nginx
安装完成之后,在浏览器输入本地的IP地址,出现以下画面说明Nginx安装成功
配置Nginx
下载Halo的配置文件
sudo curl -o /etc/nginx/conf.d/halo.conf --create-dirs https://dl.halo.run/config/nginx.conf
前面已经购买了ssl的服务,将会得到这些文件:
- demo.com_bundle.crt 证书文件
- demo.com_bundle.pem 证书文件
- demo.com.key 私钥文件
- demo.com.csr CSR 文件
将这些文件从本地目录拷贝到 Nginx 服务器的 /etc/nginx/conf.d 目录下
打开配置文件进行修改(仅需要修改提示的地方)
sudo vim /etc/nginx/conf.d/halo.conf
server {
listen 80;
# 将demo.com改为您自己的域名
server_name demo.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
listen 443 ssl;
# 改为您自己的域名
server_name demo.com;
client_max_body_size 1024m;
# 将证书文件存放路径和证书的密钥文件名替换成自己存放路径与证书的密钥文件名。
ssl_certificate /etc/nginx/conf.d/demo.com.pem;
ssl_certificate_key /etc/nginx/conf.ddemo.com.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_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;
# 改为自己的公网ip
proxy_pass http://公网ip:8090/;
}
}
完成后。检查配置是否有误,并重载 Nginx 配置。注意有时候ssl文件的权限不够,开放770权限即可
sudo nginx -t
sudo nginx -s reload
注意!!!
注意端口的配置,请开放你的443(SSL)、80(HTTP)端口的映射
评论区