第一部分:服务器端一次性配置
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 |
| A | www | 你的服务器公网 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 即可自动构建并同步到服务器。