博客 / 詳情

返回

使用Docker Compose &Halo 搭建博客

博客搭建

  • 使用了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
  • 訪問域名即可

更新

  • 很簡單的步驟:
  1. 數據備份(重要):cp -r ./halo ./halo.archive
  2. 關停服務:docker-compose -f blog.yaml down
  3. 更新鏡像:docker pull halohub/halo
  4. 重啓服務:docker-compose -f blog.yaml up -d

引入Traefik

  • Traefik是雲原生時代與Docker、K8s都能配合使用的新一代網關產品,可使用Traefik替代Nginx,參考Treafik學習的案例篇章

補充

  • 推薦開啓兩步驗證的登錄方式,安全性高一點,可以在用户設置中添加
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.