Triển khai
Một bản build pyssg là một thư mục thuần các file tĩnh (mặc định là public/),
nên nó host ở đâu cũng được. Hướng dẫn này bao quát các công thức dựng sẵn cho ba
nền tảng miễn phí phổ biến nhất. Cấu hình sao-chép-dán nằm trong
recipes/deploy/.
Hai điều cần kiểm tra trước
Phục vụ từ gốc domain. pyssg phát ra các liên kết tuyệt-đối-từ-gốc (/blog/,
/style.css), nên trang phải nằm tại gốc của một domain. Một domain tùy chỉnh,
một trang user/org dạng <user>.github.io, một subdomain Netlify và một subdomain
*.pages.dev đều thỏa điều kiện. Một project site trên GitHub Pages tại
user.github.io/<repo>/ phục vụ từ một subpath và hiện chưa được hỗ trợ -- điều
đó cần tính năng base_url, đang được theo dõi trong roadmap.
Đặt một URL chính tắc (canonical) cho site để các plugin Sitemap và RSS phát ra URL tuyệt đối:
Config(..., options={"base_url": "https://your-domain.example"})
GitHub Pages
- Sao chép
recipes/deploy/github-pages/deploy.ymlthành.github/workflows/deploy.yml. - Sao chép
recipes/deploy/github-pages/.nojekyllvào gốc dự án (nó ngăn GitHub chạy output qua Jekyll). - Trong repo, đặt Settings -> Pages -> Source thành "GitHub Actions".
- Push lên
main. Workflow build bằng uv và xuất bản artifact:
- uses: astral-sh/setup-uv@v5
- run: uv run --python 3.13 --with "pyssg[plugins] @ git+https://github.com/magiskboy/pyssg.git" pyssg build
- uses: actions/upload-pages-artifact@v3
with:
path: public
Với một domain tùy chỉnh, thêm một file CNAME chứa domain của bạn vào public/
(ví dụ bằng một mục StaticFiles).
Netlify
Sao chép recipes/deploy/netlify/netlify.toml vào gốc dự án và kết nối repository
trong Netlify. Image của Netlify có sẵn Python nhưng không có uv, nên bản build
dùng pip:
[build]
command = "pip install 'pyssg[plugins] @ git+https://github.com/magiskboy/pyssg.git' && pyssg build"
publish = "public"
[build.environment]
PYTHON_VERSION = "3.13"
Cloudflare Pages
Tạo một dự án Pages từ repository của bạn và đặt:
- Build command:
pip install "pyssg[plugins] @ git+https://github.com/magiskboy/pyssg.git" && pyssg build - Build output directory:
public - Environment variable:
PYTHON_VERSION = 3.13
Thích triển khai theo CI hơn? Dùng recipes/deploy/cloudflare-pages/deploy.yml,
file này build trong GitHub Actions và upload bằng Wrangler (cần các secret
CLOUDFLARE_API_TOKEN và CLOUDFLARE_ACCOUNT_ID).
Các host khác
Mọi host tĩnh đều dùng được: build cục bộ bằng pyssg build và upload public/.
Các công thức ở trên được mô tả bởi một manifest deploy.toml nhỏ cho mỗi đích,
nên thêm nền tảng mới rất dễ -- xem
README của recipes.