本文記錄在 CentOS 7.6 系統上基於 Halo 快速搭建博客,博客系統不少,暫不與其它系統作比較,喜歡折騰就折騰。
Halo 有三種部署方式,我這裏選擇直接在物理機上部署,其它兩種是基於 Docker 和 Docker Compose。html
Halo 推薦建立一個 Halo 用戶,我這裏省略了這一步,麻煩。java
yum update -y
# 安裝 OpenJRE sudo yum install java-1.8.0-openjdk -y # 檢測是否安裝成功 java -version # 輸出以下即爲安裝成功 openjdk version "1.8.0_252" OpenJDK Runtime Environment (build 1.8.0_252-b09) OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
# 下載配置文件到 ~/.halo 目錄 curl -o ~/.halo/application.yaml --create-dirs https://dl.halo.run/config/application-template.yaml
# 使用 Vim 工具修改配置文件 vim ~/.halo/application.yaml
把配置文件裏的 username
和 password
修改一下,這個是你登陸管理後臺的帳號密碼,其它基本不用動,具體能夠看一下官網文檔說明。nginx
# 下載最新的 Halo 安裝包,{{version}} 爲版本號,不帶 v,更多下載地址請訪問 https://halo.run/archives/download.html wget https://dl.halo.run/release/halo-{{version}}.jar -O halo-latest.jar
寫此文時,Halo 的最新版本是v1.3.2
,因此個人下載命令爲:git
wget https://dl.halo.run/release/halo-1.3.2.jar -O halo-latest.jar
java -jar halo-latest.jar
看到如下輸出內容即爲啓動成功:github
# 下載 Halo 官方的 halo.service 模板 curl -o /etc/systemd/system/halo.service --create-dirs https://dl.halo.run/config/halo.service # 修改 halo.service vim /etc/systemd/system/halo.service
打開服務配置文件後能夠看到內容以下參數:apache
-Xms256m
:爲 JVM 啓動時分配的內存,請按照服務器的內存作適當調整,512 M 內存的服務器推薦設置爲 128,1G 內存的服務器推薦設置爲 256,默認爲 256。-Xmx256m
:爲 JVM 運行過程當中分配的最大內存,配置同上。YOUR_JAR_PATH
:Halo 安裝包的絕對路徑,例如 /www/wwwroot/halo-latest.jar
。個人服務器是 8 G 內存,而且安裝包的絕對路徑是 /root/halo-latest.jar
,因此我最終的配置是以下:vim
Description=Halo Service Documentation=https://halo.run After=network-online.target Wants=network-online.target [Service] Type=simple ExecStart=/usr/bin/java -server -Xms2048m -Xmx2048m -jar /root/halo-latest.jar ExecStop=/bin/kill -s QUIT $MAINPID Restart=always StandOutput=syslog StandError=inherit [Install] WantedBy=multi-user.target
順序執行如下命令,最後看到 Halo 的服務狀態:bash
# 修改 service 文件以後須要刷新 Systemd sudo systemctl daemon-reload # 使 Halo 開機自啓 sudo systemctl enable halo # 啓動 Halo sudo service halo start # 查看 Halo 的運行狀態 sudo service halo status
到此,已經能夠經過 IP:端口
訪問了,接下來咱們配置域名,使用 Nginx 做爲反向代理並配置 SSL 強制 HTTPS 訪問。服務器
由於我這臺服務器之後還須要用到 PHP 項目,因此不會按照官網的方式去配置,而是使用 LNMP 一鍵安裝腳本安裝 Nginx、PHP、MySQL 等其它軟件,並使用這個腳本結合阿里雲 DNS 配置 Let’s Encrypt 的 SSL 證書,用這個腳本很方便。網絡
在開始以前,先在服務器上安裝一個工具 screen
,這個工具能夠防止咱們在安裝 LNMP 的時候由於網絡忽然掉線或者不當心關掉了遠程鏈接工具而致使安裝中斷。
# 安裝 screen yum install -y screen # 啓動一個 screen 現場 screen -S lnmp # 若是真的掉線了,能夠從新鏈接到服務器上,前使用如下命令恢復安裝進程 screen -r lnmp
wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 && ./install.sh lnmp
安裝過程稍微有些漫長,具體須要看機器配置,鑑於你可能不須要這個東西,因此再也不描述。
# 添加虛擬主機,根據你本身的域名作相應調整 lnmp vhost add
Let’sEncrypt 免費通配符/泛域名SSL證書添加使用教程 - LNMP一鍵安裝包
咱們使用 Let’s Encrypt 結合域名服務商 API 的方式來配置 SSL 證書 。
由於個人域名是在阿里,因此去這裏獲取到 AccessKey ID
和 AccessKey Secret
,並在服務器執行如下命令:
export Ali_Key="你的 AccessKey ID" export Ali_Secret="你的 AccessKey Secret"
導入這兩個環境變量之後,就能夠使用如下命令來自動配置 SSL 證書了,Let’s Encrypt 的 SSL 證書有效期只有三個月,但 LNMP 一鍵安裝腳本已經爲咱們配置好了,過時以前會自動續期。
# 要把這個 ali 替換成你域名所在的服務商名稱 lnmp onlyssl ali
如此,Let’s Encrypt 的免費 SSL 證書就申請好了,接下來配置 SSL 證書和反向代理。
# 把 Nginx 反向代理的示例配置直接覆蓋到博客的虛擬主機配置上 cat /usr/local/nginx/conf/example/nginx-reverse-proxy-example.conf > /usr/local/nginx/conf/vhost/coderlxc.com.conf
修改其內容爲如下:
1 server { 2 listen 80; 3 #listen [::]:80; 4 server_name coderlxc.com www.coderlxc.com; 5 6 #若是須要http 301跳轉到 https 須要將下面行前面的 # 註釋去掉,並重載nginx 7 return 301 https://$host$request_uri; 8 9 access_log off; 10 } 11 12 server { 13 listen 443 ssl http2; 14 #listen [::]:443 ssl http2; 15 server_name coderlxc.com www.coderlxc.com; 16 17 ssl_certificate /usr/local/nginx/conf/ssl/coderlxc.com/fullchain.cer; 18 ssl_certificate_key /usr/local/nginx/conf/ssl/coderlxc.com/coderlxc.com.key; 19 ssl_session_timeout 5m; 20 ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; 21 ssl_prefer_server_ciphers on; 22 ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES -128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AE S256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5"; 23 ssl_session_cache builtin:1000 shared:SSL:10m; 24 # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048 25 # ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem; 26 27 location / { 28 proxy_pass http://127.0.0.1:8090; 29 proxy_http_version 1.1; 30 proxy_cache_bypass $http_upgrade; 31 proxy_set_header Upgrade $http_upgrade; 32 proxy_set_header Connection "upgrade"; 33 proxy_set_header Host $host; 34 proxy_set_header X-Real-IP $remote_addr; 35 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 36 proxy_set_header X-Forwarded-Proto $scheme; 37 proxy_set_header X-Forwarded-Host $host; 38 proxy_set_header X-Forwarded-Port $server_port; 39 } 40 41 access_log off; 42 }
3000
端口調整爲Halo 監聽的 8090
端口。至此,SSL 證書和和反向代理都已經配置好了,並強制 HTTP 跳轉到 HTTPS。
保存修改並退出後,檢查一下 Nginx 的配置文件是否有問題,從新加載 Nginx 配置文件:
# 檢查 Nginx 配置是否有誤 nginx -t # 從新加載 Nginx 配置文件 lnmp nginx reload
訪問博客域名,便可以看到 Halo 的安裝嚮導。