博客搭建
- 使用了Halo開源博客系統,因為是Java實現的,方便自己做定製,順便學習源碼
- 結合使用Docker Compose實現服務搭建
安裝docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- 如果出現網絡問題,直接用瀏覽器下載可執行文件放到
/usr/local/bin目錄下即可
準備配置文件
Nginx配置文件
mkdir -p /root/blog/halo && mkdir -p /root/blog/nginx/ \
echo 'server {
listen 80;
server_name blog.demoli.xyz;
rewrite ^(.*)$ https://blog.demoli.xyz$1 permanent;
}
location / {
proxy_pass http://halo:8090;
proxy_cache_bypass $http_upgrade;
# Proxy headers
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
# Proxy timeouts
proxy_connect_timeout 600s;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
}
}' >> /root/blog/nginx/nginx.conf
- 證書可以從阿里雲免費申請,綁定到對應的域名即可,並放置到
/root/blog/nginx/目錄下(可以自由修改,注意與下邊的yaml文件保持一致即可)
Halo配置文件
cd /root/blog/halo && wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
docker-compose yaml配置文件
version: '3.1'
services:
nginx:
image: nginx
container_name: nginx
restart: unless-stopped
ports:
- 443:443
- 80:80
volumes:
- /root/blog/nginx/nginx.conf:/etc/nginx/conf.d/blog.conf
- /root/blog/nginx/blog.demoli.xyz/:/etc/nginx/ssl/
halo:
image: halohub/halo
container_name: halo
restart: unless-stopped
volumes:
- /root/blog/halo:/root/.halo' >> /root/blog/blog.yaml
配置網絡與域名
- 只需要在域名提供商,為自己購買的域名,添加A類型的子域名記錄比如
blog.demoli.xyz,然後將解析值設置為自己服務器的公網IP即可
啓動並訪問服務
docker-compose -f blog.yaml up -d
- 訪問域名即可
更新
- 數據備份(重要):
cp -r ./halo ./halo.archive
- 關停服務:
docker-compose -f blog.yaml down
- 更新鏡像:
docker pull halohub/halo
- 重啓服務:
docker-compose -f blog.yaml up -d
引入Traefik
- Traefik是雲原生時代與Docker、K8s都能配合使用的新一代網關產品,可使用Traefik替代Nginx,參考Treafik學習的案例篇章
補充
- 推薦開啓兩步驗證的登錄方式,安全性高一點,可以在用户設置中添加