本文教各位部署基于 Astro 的 🍥Fuwari 静态博客主题。
相关技术栈:Astro、Node.js、pnpm、Nginx
访问 Node.js 官方选择平台进行安装。
pnpm create fuwari@latest
编辑 src/config.ts 文件进行博客配置。
pnpm dev
使用命令 pnpm new-post <filename> 或者直接在 src/content/posts/ 目录中创建文件。
下列指令均需要在项目根目录执行:
| Command | Action |
|---|---|
pnpm install | Installs dependencies |
pnpm dev | Starts local dev server at localhost:4321 |
pnpm build | Build your production site to ./dist/ |
pnpm preview | Preview your build locally, before deploying |
pnpm check | Run checks for errors in your code |
pnpm format | Format your code using Biome |
pnpm new-post <filename> | Create a new post |
pnpm astro ... | Run CLI commands like astro add, astro check |
pnpm astro --help | Get help using the Astro CLI |
WordPress 站点部署教程涉及的技术栈:Docker、Nginx、MySQL、Redis、Cloudflare CDN
apt update
# 查看目前使用情况
swapon --show
# 创建 Swap 文件
fallocate -l 2G /swapfile
# 设置权限
chmod 600 /swapfile
# 配置 Swap 空间
mkswap /swapfile
# 激活 Swap
echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab
# 重启系统之后验证
swapon --show
free -mh
# 编辑文件
# 如果是 Debian 13 请使用这个路径 /etc/sysctl.d/sysctl.conf
vi /etc/sysctl.conf
# 添加以下行
vm.swappiness=10
# 应用变动
sysctl --system
请查看Nginx Proxy Manager 站点反代文档中的安装 Docker章节。
services:
db:
image: mysql:5.7
volumes:
- './db_data:/var/lib/mysql'
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_mysql_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: your_wordpress_password
redis:
image: redis:latest
restart: always
entrypoint: redis-server --appendonly yes --requirepass your_redis_password --maxmemory 512mb --maxmemory-policy allkeys-lru
ports:
- "6379"
volumes:
- './redis_data:/data'
- '/etc/timezone:/etc/timezone:ro'
wordpress:
depends_on:
- db
- redis
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: your_wordpress_password
WORDPRESS_DB_NAME: wordpress
WORDPRESS_CONFIG_EXTRA: |
/* Redis configuration */
define('WP_REDIS_HOST','redis');
define('WP_REDIS_PORT','6379');
define('WP_REDIS_PASSWORD','your_redis_password');
define('WP_CACHE_KEY_SALT','your_salt_key');
define('WP_CACHE',true);
REDIS_HOST: redis
volumes:
- './wp_content:/var/www/html/wp-content'
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- wordpress
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log combined;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# Set the maximum allowed file size for uploads
client_max_body_size 10M;
server {
listen 80;
server_name domain.local;
location / {
proxy_pass http://wordpress:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# Windows
ipconfig /flushdns
开源的个人订阅跟踪器
version: '3.0'
services:
wallos:
container_name: wallos
image: bellamy/wallos:latest
ports:
- "8282:80/tcp"
environment:
TZ: 'America/Toronto'
# Volumes store your data between container upgrades
volumes:
- './db:/var/www/html/db'
- './logos:/var/www/html/images/uploads/logos'
restart: unless-stopped