Linux Hugo部署指南

阅读时长: 3 分钟 654 字

第一部分:服务器端一次性配置

1. 安装 Nginx

sudo apt update
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

验证:

nginx -v
curl -I http://localhost

2. 建站点目录并设权限

# 建站点目录
sudo mkdir -p /var/www/mysite

# 设置属主和属组(把 <用户名> 换成你的登录用户名)
sudo chown -R <用户名>:www-data /var/www/mysite

# 设置权限
sudo chmod 755 /var/www/mysite
sudo chmod g+s /var/www/mysite
sudo find /var/www/mysite -type d -exec chmod 755 {} \;
sudo find /var/www/mysite -type f -exec chmod 644 {} \;

验证:

ls -ld /var/www/mysite
# 期望:drwxr-xr-x ... <用户名> www-data ... /var/www/mysite

3. 写站点配置

sudo tee /etc/nginx/sites-available/mysite > /dev/null << 'EOF'
server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/mysite;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
EOF

4. 启用站点 + 禁用默认站点

# 启用你的站点
sudo ln -sf /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/mysite

# 删除默认站点(否则 server_name 冲突)
sudo rm -f /etc/nginx/sites-enabled/default

5. 测试并重载

sudo nginx -t
sudo systemctl reload nginx

nginx -t 必须显示 successful 才算配置正确。

6. 放行防火墙

sudo ufw allow 'Nginx Full'
sudo ufw status

云服务器(阿里云/腾讯云/AWS)还要在控制台安全组里放行 80 端口。

7. 配置域名解析

到你的域名商(华为云/腾讯云/Cloudflare/Namecheap 等)添加 DNS 记录:

类型主机记录记录值
A@你的服务器公网 IP
Awww你的服务器公网 IP

8. 配置 HTTPS

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com

certbot 安装时已自动加了 systemd timer,验证一下:

sudo systemctl status certbot.timer
sudo certbot renew --dry-run

看到 Congratulations, all simulated renewals succeeded 就放心了。证书每 90 天自动续,不用管。


第二部分:本地更新推送服务器

1. 安装 cwRsync

由于 Windows 没有自带 rsync,所以需要安装 cwRsync。下载解压后将 bin 目录加入系统环境变量 PATH ,打开 PowerShell 或 CMD 输入 rsync --version 验证。

2. 配置 SSH

需要配置 SSH 免密登录,方便后续自动化部署。具体可以另找教程,这里不赘述。

3. 创建一键部署脚本

为了省去每次手动输入命令的麻烦,我们可以创建一个 Batch 脚本 deploy.bat 。

:: deploy.bat
@echo off
chcp 65001 >nul
setlocal

set SERVER=host_or_username@your_server_ip
set REMOTE=/var/www/mysite/
set RSYNC_RSH=your_cwrsync_path\bin\ssh.exe

echo [1/3] Building Hugo site...
hugo --minify
if errorlevel 1 (
    echo Hugo build failed.
    pause
    exit /b 1
)

echo [2/3] Syncing to server...
rsync -avz --delete --chmod=D755,F644 -c -e %RSYNC_RSH% public/ %SERVER%:%REMOTE%
if errorlevel 1 (
    echo Sync failed.
    pause
    exit /b 1
)

echo [3/3] Done.
pause

在每次更新网站内容后,运行 deploy.bat 即可自动构建并同步到服务器。

本网站已运行: 计算中...
备案 赣公网安备36072502000191 | 赣ICP备2024040374号
使用 Hugo 构建 · 主题 Stack 由 Jimmy 设计