使用 rsync 部署
假設
- 運行 Web 服務器的 Web 主機。這可以是共享托管環境或 VPS。
- 可通過 SSH 訪問您的 Web 主機
- 使用 Hugo 構建的功能齊全的靜態網站
劇透是,您可以使用如下命令部署整個網站:
hugo && rsync -avz --delete public/ www-data@ftp.topologix.fr:~/www/正如您將看到的,我們將此命令放入 shell 腳本文件中,使構建和部署變得像執行 ./deploy 一樣簡單。
將 SSH 密鑰復制到主機
為了使登錄到服務器更安全且減少交互,您可以上傳 SSH 密鑰。如果您已將 SSH 密鑰安裝到服務器,可以跳到下一節。
首先,安裝 ssh 客戶端。在 Debian 發行版上,使用以下命令:
sudo apt-get install openssh-client然後生成您的 ssh 密鑰。首先,在主目錄中創建 .ssh 目錄(如果不存在):
~$ cd && mkdir .ssh & cd .ssh接下來,執行此命令生成名為 rsa_id 的新密鑰對:
~/.ssh/$ ssh-keygen -t rsa -q -C "For SSH" -f rsa_id系統將提示您輸入密碼短語,這是額外的保護層。輸入您想使用的密碼短語,然後在提示時再次輸入,或者留空如果您不想使用密碼短語。不使用密碼短語可讓您非交互式地傳輸文件,因為登錄時不會提示您輸入密碼,但安全性稍低。
為了簡化登錄,使用以下命令將 Web 主機的定義添加到文件 ~/.ssh/config,將 HOST 替換為 Web 主機的 IP 地址或主機名,將 USER 替換為傳輸文件時登錄 Web 主機使用的用戶名:
~/.ssh/$ cat >> config <<EOF
Host HOST
Hostname HOST
Port 22
User USER
IdentityFile ~/.ssh/rsa_id
EOF然後使用 ssh-copy-id 命令將您的 ssh 公鑰復制到遠程服務器:
~/.ssh/$ ssh-copy-id -i rsa_id.pub USER@HOST.com現在您可以輕松連接到遠程服務器:
~$ ssh user@host
Enter passphrase for key '/home/mylogin/.ssh/rsa_id':現在您可以使用 SSH 密鑰登錄,讓我們創建一個腳本來自動化部署 Hugo 網站。
Shell 腳本
在 Hugo 目錄的根目錄創建一個名為 deploy 的新腳本:
~/websites/topologix.fr$ editor deploy添加以下內容。將 USER、HOST 和 DIR 值替換為您自己的值:
#!/bin/sh
USER=my-user
HOST=my-server.com
DIR=my/directory/to/topologix.fr/ # 您的網站文件應存放的目錄
hugo && rsync -avz --delete public/ ${USER}@${HOST}:~/${DIR} # 這將刪除服務器上本地 public 目錄中不存在的所有內容
exit 0注意 DIR 是遠程用戶主目錄的相對路徑。如果您必須指定完整路徑(例如 /var/www/mysite/),您必須在命令行中將 ~/${DIR} 更改為 ${DIR}。大多數情況下您不需要這樣做。
保存並關閉,使 deploy 文件可執行:
~/websites/topologix.fr$ chmod +x deploy現在您只需輸入以下命令即可部署和更新您的網站:
~/websites/topologix.fr$ ./deploy您的網站構建並部署:
Started building sites ...
Built site for language en:
0 draft content
0 future content
0 expired content
5 pages created
0 non-page files copied
0 paginator pages created
0 tags created
0 categories created
total in 56 ms
sending incremental file list
404.html
index.html
index.xml
sitemap.xml
posts/
posts/index.html
sent 9,550 bytes received 1,708 bytes 7,505.33 bytes/sec
total size is 966,557 speedup is 85.86您也可以在此部署腳本中 Incorporate 其他處理任務。