Includes FastAPI+Jinja2+HTMX+SQLite implementation with seed categories, plus deployment templates. Co-authored-by: Cursor <cursoragent@cursor.com>
3.0 KiB
3.0 KiB
서버에서 바로 실행 배포 가이드 (도커 없이)
목표: prompt.ncue.net → (Nginx 리버스프록시) → localhost:3000(Next.js)
1) 서버 준비
- Node.js LTS 설치(권장 20.x 이상)
- PostgreSQL은 외부(
ncue.net/all_prompt) 사용 git,build-essential(일부 패키지 빌드 필요 시) 설치
2) 코드 배포(예시)
cd /opt
sudo git clone <YOUR_REPO_URL> all-prompt
cd /opt/all-prompt/apps/web
sudo npm ci
3) 환경변수 설정
.env를 생성한다(예: /opt/all-prompt/apps/web/.env).
DATABASE_URL="postgresql://ncue:<PASSWORD>@ncue.net:5432/all_prompt?schema=public"
NEXT_PUBLIC_SITE_URL="https://prompt.ncue.net"
NODE_ENV="production"
PORT=3000
4) DB 스키마 적용(1회)
이미 DB에 테이블이 있다면 생략 가능.
A안(권장): psql로 DDL 적용
export PGPASSWORD="<PASSWORD>"
psql -h ncue.net -U ncue -d all_prompt -f db/schema.sql
B안: Prisma db push(DDL 대신 Prisma 기준)
npm run prisma:generate
npm run db:push
5) 시드 데이터(1회)
npm run db:seed
6) 빌드/실행
npm run build
npm run start
이제 http://localhost:3000에서 동작해야 한다.
7) systemd로 상시 실행
7.1 서비스 유저(권장)
sudo useradd -r -s /usr/sbin/nologin allprompt || true
sudo chown -R allprompt:allprompt /opt/all-prompt
7.2 유닛 파일 생성
/etc/systemd/system/allprompt-web.service
[Unit]
Description=all prompt (모프) Next.js web
After=network.target
[Service]
Type=simple
User=allprompt
WorkingDirectory=/opt/all-prompt/apps/web
Environment=NODE_ENV=production
Environment=PORT=3000
EnvironmentFile=/opt/all-prompt/apps/web/.env
ExecStart=/usr/bin/npm run start
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
적용:
sudo systemctl daemon-reload
sudo systemctl enable --now allprompt-web
sudo systemctl status allprompt-web
8) Nginx 리버스프록시로 prompt.ncue.net 연결
8.1 Nginx 설치 및 서버블록
/etc/nginx/sites-available/prompt.ncue.net
server {
listen 80;
server_name prompt.ncue.net;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
활성화:
sudo ln -s /etc/nginx/sites-available/prompt.ncue.net /etc/nginx/sites-enabled/prompt.ncue.net
sudo nginx -t && sudo systemctl reload nginx
8.2 HTTPS(권장): Let’s Encrypt
sudo apt-get update
sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d prompt.ncue.net
9) 배포 후 확인
https://prompt.ncue.net/api/healthhttps://prompt.ncue.net/entitieshttps://prompt.ncue.net/prompts