主頁 > 軟體設計 > 從零部署halo博客

從零部署halo博客

2021-02-15 11:25:30 軟體設計

centos+docker+halo搭建個人博客

  • 從零部署halo博客
    • 準備作業
    • 安裝寶塔面板
    • 安裝Docker管理器
    • 下載并修改halo組態檔
      • ①直接使用本地資料庫
      • ②利用容器間的關聯使用容器中的資料庫
    • ==以下為注意事項!!!==
    • 配置域名訪問、SSL,使用 Nginx 進行反向代理

從零部署halo博客

此教程是使用寶塔+docker+mysql搭建個人博客,使用H2可上halo官網教程查閱

準備作業

  • 一臺云服務器
  • 一個域名(國內服務器需要備案,備案要很久,最好提前)
  • 域名實名,申請SSL證書
  • 域名決議

安裝寶塔面板

安裝前注意系統必須為沒裝過其它環境如Apache/Nginx/php/MySQL的新系統,以下使用centos系統安裝寶塔面板

  • 執行安裝命令
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安裝成功后會給你面板地址和管理員賬號和密碼,注意要在服務器后臺安全組或是防火墻中打開8888埠

面板登錄進去后會讓你一鍵部署環境(LNMP或LAMP,推薦LNMP)
安裝方式編譯安裝比極速安裝更加穩定,但安裝時間需要1到2小時,極速安裝10多分鐘,時間充裕推薦編譯安裝

  • halo官方要求mysql資料庫需要5.7+,8.0需要6RAM以上,推薦就5.7,php和phpmyadmin選最新,其他隨意

這里我進行編譯安裝時面板卡死了一次,任務串列是空的,服務器滿載,cpu使用率低,重登也是特別卡和慢,這時候就別等了,這里我重啟服務器后,問題解決,編譯安裝正常繼續運行

安裝Docker管理器

  • 在寶塔面板的軟體商店中直接安裝即可

下載并修改halo組態檔

  • 創建并進入作業目錄
mkdir ~/.halo && cd ~/.halo
  • 下載示例組態檔到作業目錄
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
  • 根據需要編輯組態檔,配置資料庫或者埠等
vim application.yaml

使用mysql本地資料庫的配置圖
application.yaml配置圖

  • 默認是使用的H2資料庫
  • 使用mysql資料庫則將H2配置打上注釋,將mysql配置注釋放開
  • 修改username和password為mysql的賬號和密碼,密碼在寶塔資料庫界面可查看
  • 若在容器中使用資料庫,則需要將127.0.0.1換成資料庫的容器名,埠為容器內部埠 例:將127.0.0.1:3306換成blog_mysql:3306
  • 以下根據個人需求配置:
    port為halo博客運行的埠
    admin-path為后臺管理的根路徑
    cache是設定快取資料的保存方式
    compression設定是否開啟壓縮,用Nginx等反向代理服務器時通常會默認開啟

下面根據個人 選擇一種進行配置

①直接使用本地資料庫

  • 進入msyql
mysql -u root -p
  • 創建halodb資料庫
create database halodb character set utf8mb4 collate utf8mb4_bin;

注意這里官方要求字符集為utf8mb4,排序規則為utf8mb4_bin

  • 拉取最新的 Halo 鏡像
docker pull halohub/halo

從 1.4.3 開始,Docker 鏡像已經轉移到 halohub 組織,不再是 ruibaby/halo

  • 創建halo容器并使用本地資料庫
docker run -itd --net host --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=always halohub/halo

引數說明:

  • -i, 即使沒有連接,也要保持標準輸入保持打開狀態,一般與 -t 連用
  • -t, 分配一個偽tty,一般與 -i 連用
  • -d,在后臺運行容器,并且列印容器id
  • - -name,容器名
  • - -net,指定容器的網路配置
    - -net=bridge 這個是默認值,連接到默認的網橋,
    - -net=host 容器使用本地主機的網路,它擁有完全的本地主機介面訪問權限
    - -net=container:NAME_or_ID 讓 Docker 使用其他容器的網路,共享IP和PORT等網路資源,兩者行程可以直接通過 lo 環回介面通信
    - -net=none 容器使用自己的網路,但是不進行網路配置,之后用戶可以自行配置
  • -p, 容器內部埠系結到指定的主機埠,主機埠:容器埠
  • -v, 掛載目錄,這里是將主機的目錄~/.halo掛載到容器的目錄/root/.halo上
  • - -restart=always,當docker重啟時,容器自動啟動

docker默認的網路模式是bridge,因此默認容器內無法訪問本地127.0.0.1

②利用容器間的關聯使用容器中的資料庫

  • 拉取mysql5.7鏡像
docker pull mysql:5.7
  • 創建并啟動mysql容器
docker run --name blog_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=****** -d mysql:5.7
  • - -name,容器名
  • -e 設定環境變數,MYSQL_ROOT_PASSWORD為資料庫密碼,自行修改,用戶名默認root
  • 這里因為我主機已有mysql,所以映射埠到3307,這個自行決定
  • 進入容器
docker exec -it blog_mysql /bin/bash
  • 進入mysql并創建halo必要資料庫halodb,注意字符集和排序規則
mysql -u root -p
create database halodb character set utf8mb4 collate utf8mb4_bin;
  • 拉取最新的 Halo 鏡像
docker pull halohub/halo
  • 創建halo容器并使其關聯資料庫容器
docker run -itd --name halo --link blog_mysql -p 8090:8090 -v ~/.halo:/root/.halo --restart=always halohub/halo

引數說明:

  • -i, 即使沒有連接,也要保持標準輸入保持打開狀態,一般與 -t 連用
  • -t, 分配一個偽tty,一般與 -i 連用
  • -d,在后臺運行容器,并且列印容器id
  • - -name,容器名
  • - -link,指定容器間的關聯
  • -p, 容器內部埠系結到指定的主機埠,主機埠:容器埠
  • -v, 掛載目錄,這里是將主機的目錄~/.halo掛載到容器的目錄/root/.halo上
  • - -restart=always,當docker重啟時,容器自動啟動

PS:如果要使用外部資料庫管理工具遠程管理mysql,則需要用戶開啟遠程登錄功能

Grant all privileges on *.* to 'root'@'%' identified by ‘password’with grant option;
flush privileges;      重繪權限

*. * 為 資料庫.表 ,root為用戶,%代表所有主機 ,password處填寫用戶密碼

以下為注意事項!!!

創建并啟動halo容器后,會有20s左右的初始化建表時間,初始化后在資料庫halodb當中能看見自動創建的表,若沒有表,請檢查問題
Halo作業目錄的絕對路徑為 ~/.halo,這個作業目錄是固定的,Halo容器運行后里面通常包含下列目錄或檔案:
db:存放 H2 Database 的物理檔案,如果您使用 MySQL 資料庫,那么不會存在這個目錄
templates/themes:里面包含用戶所下載的主題
static:相當于網站的根目錄
logs:運行日志目錄
application.yaml:組態檔

放行埠80 443 8090!!!
云服務器防火墻和寶塔的防火墻兩邊都要放行!!!

到這里我們就可以以http://ip:8090的方式訪問halo安裝程式了
可以先配置好域名訪問和SSL再進行安裝

配置域名訪問、SSL,使用 Nginx 進行反向代理

  • 安裝 Nginx
    之前安裝LNMP時已安裝
  • 編輯組態檔

官方是下載模板再進行配置,這里使用全域

vim /www/server/nginx/conf/nginx.conf

在http的括號內加入以下代碼:

server {
    listen 80;
    server_name luoyunhao.com www.luoyunhao.com; #域名
    rewrite ^(.*)$ https://$host$1 permanent;
 
    client_max_body_size 1024m;
}
server {
    listen 443 ssl;
 
    server_name luoyunhao.com www.luoyunhao.com; #域名
 
    ssl_certificate /usr/local/xxxxxx.pem; #證書地址
    ssl_certificate_key /usr/local/xxxxxxx.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;
 
        proxy_pass http://127.0.0.1:8090/; #halo進入埠
    }
}
  • 修改域名
  • 用ftp將證書檔案放到云服務器中,配置好證書地址,第一個證書后綴不一定是pem
  • rewrite ^(.*)$ https://$host$1 permanent;是強制跳轉http到https
  • 修改后需要多載Nginx
在寶塔中重啟Nginx    或    nginx -s reload    

到這里,就可以使用域名訪問網站了!!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/259707.html

標籤:其他

上一篇:CUDA計算

下一篇:盤點關于程式員的那些經典案例

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more