feat: docs.pivoine.art
This commit is contained in:
337
Projects/docs.pivoine.art/DEPLOYMENT.md
Normal file
337
Projects/docs.pivoine.art/DEPLOYMENT.md
Normal file
@@ -0,0 +1,337 @@
|
||||
# Deployment Guide
|
||||
|
||||
This guide covers different deployment options for the Pivoine Docs Hub.
|
||||
|
||||
## Table of Contents
|
||||
- [Vercel (Recommended)](#vercel-recommended)
|
||||
- [Netlify](#netlify)
|
||||
- [Docker](#docker)
|
||||
- [Traditional VPS](#traditional-vps)
|
||||
|
||||
---
|
||||
|
||||
## Vercel (Recommended)
|
||||
|
||||
Vercel is the easiest way to deploy Next.js applications.
|
||||
|
||||
### Method 1: Git Integration
|
||||
|
||||
1. **Push your code to GitHub/GitLab/Bitbucket**
|
||||
2. **Import project on Vercel**:
|
||||
- Go to https://vercel.com
|
||||
- Click "Add New Project"
|
||||
- Import your repository
|
||||
- Configure settings:
|
||||
```
|
||||
Framework Preset: Next.js
|
||||
Build Command: pnpm build
|
||||
Install Command: pnpm install
|
||||
```
|
||||
3. **Deploy**: Vercel will automatically deploy your site
|
||||
|
||||
### Method 2: Vercel CLI
|
||||
|
||||
```bash
|
||||
# Install Vercel CLI
|
||||
pnpm add -g vercel
|
||||
|
||||
# Login
|
||||
vercel login
|
||||
|
||||
# Deploy
|
||||
vercel
|
||||
|
||||
# Deploy to production
|
||||
vercel --prod
|
||||
```
|
||||
|
||||
### Custom Domain Setup
|
||||
|
||||
1. Go to your project settings on Vercel
|
||||
2. Navigate to "Domains"
|
||||
3. Add `docs.pivoine.art`
|
||||
4. Configure DNS:
|
||||
```
|
||||
Type: CNAME
|
||||
Name: docs
|
||||
Value: cname.vercel-dns.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Netlify
|
||||
|
||||
### Deploy via Git
|
||||
|
||||
1. **Push your code to Git**
|
||||
2. **Connect to Netlify**:
|
||||
- Go to https://netlify.com
|
||||
- Click "Add new site" → "Import an existing project"
|
||||
- Choose your repository
|
||||
3. **Configure build settings**:
|
||||
```
|
||||
Build command: pnpm build
|
||||
Publish directory: .next
|
||||
```
|
||||
|
||||
### Deploy via CLI
|
||||
|
||||
```bash
|
||||
# Install Netlify CLI
|
||||
pnpm add -g netlify-cli
|
||||
|
||||
# Login
|
||||
netlify login
|
||||
|
||||
# Deploy
|
||||
netlify deploy --prod
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Docker
|
||||
|
||||
### Build and Run Locally
|
||||
|
||||
```bash
|
||||
# Build production image
|
||||
docker build -t pivoine-docs-hub .
|
||||
|
||||
# Run container
|
||||
docker run -p 3000:3000 pivoine-docs-hub
|
||||
```
|
||||
|
||||
### Docker Compose
|
||||
|
||||
```bash
|
||||
# Development
|
||||
docker-compose up
|
||||
|
||||
# Production (create docker-compose.prod.yml first)
|
||||
docker-compose -f docker-compose.prod.yml up
|
||||
```
|
||||
|
||||
### Deploy to Container Registry
|
||||
|
||||
```bash
|
||||
# Build and tag
|
||||
docker build -t your-registry/pivoine-docs-hub:latest .
|
||||
|
||||
# Push to registry
|
||||
docker push your-registry/pivoine-docs-hub:latest
|
||||
|
||||
# Pull and run on server
|
||||
docker pull your-registry/pivoine-docs-hub:latest
|
||||
docker run -d -p 3000:3000 your-registry/pivoine-docs-hub:latest
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Traditional VPS
|
||||
|
||||
Deploy to a traditional VPS (Ubuntu/Debian).
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Node.js 18.17+
|
||||
- pnpm
|
||||
- nginx (optional, for reverse proxy)
|
||||
- PM2 (for process management)
|
||||
|
||||
### Setup Steps
|
||||
|
||||
1. **Install dependencies on server**:
|
||||
```bash
|
||||
# Install Node.js via nvm
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
|
||||
nvm install 18
|
||||
nvm use 18
|
||||
|
||||
# Install pnpm
|
||||
npm install -g pnpm
|
||||
|
||||
# Install PM2
|
||||
npm install -g pm2
|
||||
```
|
||||
|
||||
2. **Clone and build**:
|
||||
```bash
|
||||
cd /var/www
|
||||
git clone your-repo-url pivoine-docs-hub
|
||||
cd pivoine-docs-hub
|
||||
pnpm install
|
||||
pnpm build
|
||||
```
|
||||
|
||||
3. **Run with PM2**:
|
||||
```bash
|
||||
pm2 start npm --name "docs-hub" -- start
|
||||
pm2 save
|
||||
pm2 startup
|
||||
```
|
||||
|
||||
4. **Configure Nginx** (optional):
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name docs.pivoine.art;
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:3000;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_set_header Host $host;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
5. **Enable site**:
|
||||
```bash
|
||||
sudo ln -s /etc/nginx/sites-available/docs-hub /etc/nginx/sites-enabled/
|
||||
sudo nginx -t
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
6. **Setup SSL with Certbot**:
|
||||
```bash
|
||||
sudo apt install certbot python3-certbot-nginx
|
||||
sudo certbot --nginx -d docs.pivoine.art
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Environment Variables
|
||||
|
||||
For production deployments, set these environment variables:
|
||||
|
||||
```bash
|
||||
NEXT_PUBLIC_SITE_URL=https://docs.pivoine.art
|
||||
NEXT_PUBLIC_BLOG_URL=http://pivoine.art
|
||||
NEXT_PUBLIC_CODE_URL=https://code.pivoine.art
|
||||
NODE_ENV=production
|
||||
```
|
||||
|
||||
### On Vercel/Netlify
|
||||
Add them in the project settings under "Environment Variables"
|
||||
|
||||
### On VPS
|
||||
Add to `.env.local` or export in your shell profile
|
||||
|
||||
---
|
||||
|
||||
## Post-Deployment
|
||||
|
||||
### Verify Deployment
|
||||
|
||||
- Check site loads: https://docs.pivoine.art
|
||||
- Test all links work
|
||||
- Verify responsive design on mobile
|
||||
- Check console for errors
|
||||
- Test performance with Lighthouse
|
||||
|
||||
### Monitoring
|
||||
|
||||
**Vercel**: Built-in analytics and monitoring
|
||||
|
||||
**Other platforms**: Consider adding:
|
||||
- Google Analytics
|
||||
- Plausible Analytics
|
||||
- Sentry for error tracking
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Build Fails
|
||||
|
||||
**Check Node version**:
|
||||
```bash
|
||||
node --version # Should be 18.17+
|
||||
```
|
||||
|
||||
**Clear cache**:
|
||||
```bash
|
||||
rm -rf .next node_modules
|
||||
pnpm install
|
||||
pnpm build
|
||||
```
|
||||
|
||||
### Site Not Loading
|
||||
|
||||
**Check service status**:
|
||||
```bash
|
||||
# PM2
|
||||
pm2 status
|
||||
|
||||
# Docker
|
||||
docker ps
|
||||
```
|
||||
|
||||
**Check logs**:
|
||||
```bash
|
||||
# PM2
|
||||
pm2 logs docs-hub
|
||||
|
||||
# Docker
|
||||
docker logs container-name
|
||||
```
|
||||
|
||||
### Domain Not Resolving
|
||||
|
||||
**Check DNS propagation**:
|
||||
```bash
|
||||
dig docs.pivoine.art
|
||||
nslookup docs.pivoine.art
|
||||
```
|
||||
|
||||
Wait 24-48 hours for full DNS propagation.
|
||||
|
||||
---
|
||||
|
||||
## Continuous Deployment
|
||||
|
||||
### GitHub Actions
|
||||
|
||||
Create `.github/workflows/deploy.yml`:
|
||||
|
||||
```yaml
|
||||
name: Deploy to Vercel
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
- run: pnpm install
|
||||
- run: pnpm build
|
||||
- uses: amondnet/vercel-action@v20
|
||||
with:
|
||||
vercel-token: ${{ secrets.VERCEL_TOKEN }}
|
||||
vercel-org-id: ${{ secrets.ORG_ID }}
|
||||
vercel-project-id: ${{ secrets.PROJECT_ID }}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Need Help?
|
||||
|
||||
- 📚 [Next.js Deployment Docs](https://nextjs.org/docs/deployment)
|
||||
- 🔗 [Vercel Documentation](https://vercel.com/docs)
|
||||
- 📧 Contact: http://pivoine.art
|
||||
|
||||
---
|
||||
|
||||
**Good luck with your deployment! 🚀**
|
||||
Reference in New Issue
Block a user